curl, jq, and openssl. Full TEE quote verification additionally needs a DCAP verifier
library, noted where it applies.
For the concepts behind each step, see How Confidential AI works.
Prerequisites
1. Fetch the attestation report with a fresh nonce
api_versionisaci/1.attestation.freshness.stale_afteris in the future.attestation.report_datais derived from yourNONCEand the keyset (a DCAP verifier confirms the quote and this binding). See Attestation report.attestation.source_provenancematches the gateway release you trust.
Verifying
attestation.evidence.quote against Intel DCAP collateral, and the keyset endorsement,
requires a verifier library. The platform publishes verifier tooling; this guide covers the checks you can
reproduce with shell tools. The workload_id, workload_keyset_digest, freshness, and signature
checks below do not need DCAP.2. Make a request and capture the receipt id
response.json; its bytes are what the receipt commits to.
3. Fetch the signed receipt
GET /v1/aci/receipts/{id} returns the bare canonical receipt:
4. Confirm the receipt belongs to the attested gateway
The receipt must come from the same workload you attested in step 1:5. Check the bound hashes
Theevent_log records the request and response hashes. Confirm the response hash matches the bytes
you received:
request.received.body_hash event records the gateway-observed request body (for an
E2EE request, that is the decrypted body).
6. Verify the signature
The receipt’ssignature covers the canonical receipt bytes. Verify it with the official verifier
helper, which confirms the signature under a receipt_signing_keys entry from the attested keyset:
7. Read the upstream verification result
- Confidential model:
resultisverified,requiredistrue, andsession_idis present. The upstream enclave was verified and the channel bound before your prompt was forwarded. - Routed model:
resultisfailed,requiredisfalse, and there is nosession_id. The upstream was not attested.
What a passing verification proves
- The gateway is a specific reviewed workload in a genuine TEE (steps 1, 4).
- The response you received is exactly the response the gateway signed (step 5).
- The receipt is signed by a key bound to that workload (step 6).
- For a confidential model, the model ran on a verified, channel-bound upstream (step 7).