Skip to content

Schema Reference

JSON Schema for the TRACE v0.2 Trust Record. Source: schema/trace-claim.json.

Every field typed integer here is bounded to -9007199254740991 through 9007199254740991, and no field is typed number. That is not a size limit on the data; it is what spec section 3.2.2 can canonicalize unambiguously, since RFC 8785 serializes numbers through an IEEE 754 double and two integers outside that range can share one. A value that needs to be larger is carried as a string. The same bound applies to members a cnf.jwk carries that this schema does not name.

Top-level fields

Field Type Required Description
eat_profile string yes EAT profile URI. Must be tag:agentrust-io.com,2026:trace-v0.2
iat integer yes Issued-at timestamp (Unix epoch seconds)
subject string yes Workload identity. A SPIFFE SVID naming a trust domain and a workload path within it, or a DID with a lowercase method name and a method-specific identifier. A bare prefix is not an identity
model object yes Model artifact binding
runtime object yes Execution environment binding
policy object yes Governance policy binding
data_class string yes Data sensitivity classification
tool_transcript object yes Tool-call audit summary
delegation object no A2A profile: link to the delegating hop's Trust Record
origin object no Where the evidence came from, when that is not this runtime
references array no Facts outside this record that it points at. Assurance-neutral
build_provenance object yes Build-time artifact provenance
appraisal object yes Verifier judgment
transparency string no Registry or SCITT anchor for the record. Optional below Level 2, where an unanchored record has no receipt to name. Use null, never ""
cnf object yes Confirmation method: contains the jwk signing key
signature string yes Base64url Ed25519 / ES256 / ES384 signature over the canonical record with only signature absent; cnf is included

model

Binds the model artifact used in this session.

Field Type Required Description
provider string yes Model provider (e.g., example-provider)
model_id string yes Model identifier (e.g., example-model-1)
version string yes Model version or date stamp
weights_digest string no SHA-256 digest of model weights artifact
aibom_uri string no URI to the AI Bill of Materials (SPDX/CycloneDX)

runtime

Binds the execution environment. Platform-specific fields vary by TEE type.

Field Type Required Description
platform string yes One of: intel-tdx, amd-sev-snp, azure-cvm-sev-snp, nvidia-h100, nvidia-blackwell, aws-nitro, arm-cca, google-confidential-space, tpm2, software-only
measurement string yes Hardware measurement hash (sha384: for SEV-SNP/TDX, sha256: for TPM)
rim_uri string no Reference Integrity Manifest URI for hardware verification
firmware_version string no TEE firmware version
nonce string no Freshness nonce: ties this record to a specific attestation challenge

policy

Binds the governance policy in force during this session.

Field Type Required Description
bundle_hash string yes sha256: digest of the Cedar policy bundle bytes
enforcement_mode string yes enforce or silent (advisory)
version string no Policy bundle version string
policy_uri string no URI to the policy bundle for inspection

data_class

String. Sensitivity classification applied to the data processed in this session.

Defined values: public, internal, confidential, restricted, secret.

Custom values are allowed and should follow your organization's data classification policy.

tool_transcript

Audit summary of tool invocations during the session.

Field Type Required Description
hash string yes sha256: of the canonical JSON of the full AuditEntry list
call_count integer yes Number of tool invocations recorded
transcript_uri string no URI to the full per-call transcript (may be encrypted)

delegation

A2A profile. Present when this execution acted on authority delegated by another agent; absent on a root (non-delegated) execution. A chain of records linked this way forms an offline-verifiable delegation DAG: a verifier walks parent_record_hash from a leaf record back to the root and confirms each hop acted under a credential in the delegation chain.

Field Type Required Description
parent_record_hash string yes sha256:/sha384: digest of the parent hop's Trust Record
credential_id string yes Identifier of the delegation credential this hop acted under

origin

Absent means the runtime produced its own record, which is what every hardware profile is and what a consumer assumes. Present means something else assembled the record from evidence it did not itself measure.

It exists because runtime.platform: "software-only" is ambiguous on its own: it is the honest value for a dev-mode record, where nothing attested the execution, and for a record transcribed from another vendor's control plane, where the party asserting the evidence also wrote the log.

Field Type Required Description
kind string yes self, third-party-control-plane, or log-import
producer string yes Identifier of the system that produced the source evidence
source_event_id string no Identifier of the source event in that system
ingested_at integer no Unix time the evidence was ingested; iat is when this record was issued

A record whose kind is not self must carry runtime.platform: "software-only". An importer holding someone else's log has no quote to present, so a hardware platform on such a record is untrue rather than stronger. Both the reference model and schema/trace-claim.json reject the combination.

references

An array of pointers to facts held outside this record: an authorization decided before execution, a human approval, a behavioural trace. What the signature attests is that this record points there, not the truth of what it points at.

origin records where evidence came from and can lower assurance. references records what a record points at and cannot. Before the block existed, a record that needed to name something external had to use origin and take runtime.platform: "software-only" with it, which said something untrue about how the evidence was obtained.

Field Type Required Description
rel string yes Registered values: authorized-intent, approval-outcome, behavior-trace. A registry rather than a closed set, so the schema does not restrict which relation is named: only that one is: the value must be non-empty
id string yes Identifier of the referenced fact within the resolver's system
resolver string yes Identifier of the party obliged to resolve id
retention string no ISO 8601 duration the resolver undertakes to keep id resolvable. An undertaking only; nothing enforces it
digest string no sha256: or sha384: digest of the referenced object, when the producer holds it at issue time

rel is open where origin.kind is closed. Section 3.1.1 says kind is a closed set "because the value of the field is that a verifier can key on it"; section 3.1.2 calls rel's values a registry and does not say that, so a new relation is a spec change and not also a schema change.

Spec section 3.1.2 also binds verifiers: one must not reject a record because an entry cannot be resolved, and must not treat a resolved entry as attested evidence. A reference that could invalidate a record would hand whoever controls the target a way to invalidate evidence they do not hold. Both are verifier behaviour, so neither the schema nor the reference model can enforce them; they are conformance-suite rules. What the schema and the model do enforce is the shape, and that a producer who cannot name a resolver cannot emit an empty one.

build_provenance

Build-time provenance binding the deployed artifact.

Field Type Required Description
slsa_level integer yes SLSA provenance level (0 to 3)
builder string no Builder identity URI (e.g., GitHub Actions SLSA generator)
digest string yes sha256: digest of the built artifact
provenance_uri string no URI to the SLSA provenance document (e.g., Rekor entry)
provenance_depth string no Depth the issuer claims: surface, builder or transitive. Absent is read as surface

appraisal

Verifier judgment on the evidence in this record.

Field Type Required Description
status string yes One of: affirming, warning, contraindicated, none
verifier string yes URI of the verifier that produced this appraisal
policy_ref string no URI to the appraisal policy applied
timestamp integer no Unix epoch seconds when appraisal was performed
provenance_depth_verified string no Depth this verifier actually ran: surface, builder or transitive

transparency

String. URI of the SCITT transparency log entry anchoring this record. Omitted, or null, when the record is not anchored at issuance: anchoring may happen asynchronously. Never an empty string: the reference model rejects one (min_length=1).

cnf

Confirmation method. Contains the signing key bound to this record.

Field Type Description
jwk object JWK-format public key used to verify signature

For TEE-issued records, this key was generated inside the measured enclave and its private half never leaves it. The hardware measurement in runtime cryptographically binds this key to the TEE.

Wire formats

TRACE v0.2 supports two wire formats:

JSON (primary): signed JSON object with signature as a top-level field.

CBOR-COSE (constrained devices): COSE_Sign1 structure with TRACE claims as the payload. Defined in §3.2 of the spec: deferred to a future profile for constrained-device deployments.

Example: AMD SEV-SNP

{
  "eat_profile": "tag:agentrust-io.com,2026:trace-v0.2",
  "iat": 1750676142,
  "subject": "spiffe://trust.example.org/agent/payments-processor/prod",
  "model": {
    "provider": "example-provider",
    "model_id": "example-model-1",
    "version": "20251001"
  },
  "runtime": {
    "platform": "amd-sev-snp",
    "measurement": "sha384:c9e4b1d2e3f4a5b6c7d8e9f0a1b2c3d4e5f6...",
    "rim_uri": "https://kdsintf.amd.com/vcek/v1/Milan/cert_chain",
    "firmware_version": "1.53.0"
  },
  "policy": {
    "bundle_hash": "sha256:b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1...",
    "enforcement_mode": "enforce",
    "version": "1.2.0"
  },
  "data_class": "confidential",
  "tool_transcript": {
    "hash": "sha256:d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3...",
    "call_count": 3
  },
  "build_provenance": {
    "slsa_level": 2,
    "builder": "https://github.com/slsa-framework/slsa-github-generator/...",
    "digest": "sha256:e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4..."
  },
  "appraisal": {
    "status": "affirming",
    "verifier": "https://trust-authority.example.org"
  },
  "transparency": "https://registry.agentrust-io.com/claim/trace-2026-06-23T09:15:42Z",
  "cnf": {
    "jwk": { "kty": "EC", "crv": "P-256", "x": "...", "y": "..." }
  },
  "signature": "base64url..."
}

See the full example files in examples/.