An atlas of agent assurance
Seven families of mechanisms that make claims about AI agents, the mechanisms inside each, what each establishes, what none of them establishes alone, and where the public evidence artifacts sit
Version 0.4-preview. GitHub star counts were read at 2026-10-01 07:04:40 UTC; project sizes, statuses and releases at 2026-09-27 00:40 to 01:00 UTC. Dated experiments carry separate source pins and claim-ledger rows.
When an AI agent does something that matters, several different systems will later make a statement about it. An identity system says who the agent was. A policy engine says the action was allowed. A sandbox says what the agent could reach. A trace says what the agent reported doing. A signed receipt says which bytes were issued. An evaluation says how the agent’s model behaved on tests. A regulation says what should have been true.
Each of those statements is useful, and each answers a different question for a different party. This atlas lays them side by side. Its data file counts 7 families, 45 named projects and standards, and 18 mechanisms, with the public artifacts that address the one cell no family fills.
Every project or standard named in the family sections below is a standard, law or program of a recognized public, standards or industry body; an independent evaluation organization; or an organization-owned project measured at 5,000 GitHub stars or more. Every figure carries its read date. Each list is a representative sample of its family. Smaller projects that do the same work are counted by the mechanisms they implement rather than named.
The map in one table
| family | the question it answers | a working instance establishes | it cannot establish on its own |
|---|---|---|---|
| 1. Identity and delegated authority | Who or what is acting, for whom, under which delegated authority? | A credential from a trusted issuer is bound to an identity and a delegated scope | What was done with the authority, or whether an action matched the principal’s intent |
| 2. Policy, mediation and admission | Was the action permitted, mediated or refused under a stated policy, and may a relying party accept its evidence? | A request that reached the enforcement point was evaluated and allowed or denied | Anything about requests that bypassed the point, or what happened after an allow |
| 3. Containment | Which resources and channels could the workload reach? | Execution was bounded to certain calls, files and destinations | What happened inside the boundary, or that the boundary was in place for a given run |
| 4. Observation and tracing | What was seen while the workload ran, and from which vantage? | What the instrumentation emitted, correlated and timed | That the events occurred independently of the emitter, or that nothing is missing |
| 5. Records, receipts and transparency | How are observations encoded, signed, committed, ordered, retained and disclosed? | Integrity and origin of bytes; with a log, that the history was not rewritten | That the described events occurred, that the record is complete, or that the signer observed anything |
| 6. Conformance and evaluation | What did testing establish about behavior or reader agreement? | Measured behavior of one version, under one harness, at one time | Behavior in deployment, or that the deployed system is the one tested |
| 7. Governance, requirements and vocabulary | What is required, reported or asserted, and in which stable terms? | Obligations, risk categories and routes to conformity | That any obligation was met |
The families map onto the three jobs that Three Jobs, Not One separates. Families 1 and 2 carry the policy job: the decision on what may be attempted. Family 3 does the containment job: enforcing a boundary the agent’s code does not control. Families 4 and 5 are where systems usually attempt the evidence job. The table shows why neither finishes it: the party a trace describes writes the trace, and a signature fixes bytes without saying what they describe happened. Evaluation and governance are complementary roles. The evaluators and regulators who work in them scrutinize the other families. Neither role can stand in for any of them.
Who writes the record
One question separates these mechanisms: who writes the record each one produces. The table uses the witness-scope terms of the agent evidence vocabulary: self is the observed party, or the system that runs it; peer is a party alongside it with its own stake, such as a gateway operator or an evaluator paid by the developer it evaluates; external is a party outside the observed system’s control. The writer given for each mechanism is this atlas’s reading of a typical deployment, not a property of the software.
| mechanism | family | writer | establishes | cannot establish |
|---|---|---|---|---|
| Workload identity document (for example a SPIFFE SVID) | 1. Identity and delegated authority | external issuer, about the workload | The issuer attested the workload’s identity at issuance, within the trust domain that issued it | Anything the workload did afterwards, or identity across organizations; the OpenID Foundation writes that identity rooted in one infrastructure does “not naturally extend across organizations that do not share visibility or control over infrastructure” |
| Delegated token (OAuth token exchange) | 1. Identity and delegated authority | external issuer | Who delegated what scope to whom, as the issuer recorded it | That a call used the scope for the delegated purpose |
| Policy decision (OPA, Kyverno) | 2. Policy, mediation and admission | peer (the decider) | The decision for the input the decider was given | That the input described the real action, that the action went through the decider, or that a requirement nobody wrote as a policy was enforced |
| Gateway or proxy mediation | 2. Policy, mediation and admission | peer (the gateway operator) | Requests and responses that crossed the gateway | Traffic that took another path, effects downstream of the response, or the gateway operator’s honesty, since the operator holds the gateway’s log and keys |
| OS sandbox (seccomp, Landlock, Bubblewrap) | 3. Containment | none by default | A bound on system calls and paths, if configured as claimed | That it was configured as claimed for a given run |
| User-space kernel or microVM (gVisor, Firecracker, Kata) | 3. Containment | none by default | A stronger isolation boundary than a shared kernel | What ran inside it |
| Platform attestation (a TEE or measured-boot quote) | 3. Containment | external (the hardware root), about launch state | The measured software state at launch | Behavior after launch |
| Distributed trace (OpenTelemetry) | 4. Observation and tracing | self | What the instrumented code reported | Occurrence independent of the emitter, completeness, or integrity |
| Signed statement in an envelope (in-toto, DSSE) | 5. Records, receipts and transparency | whoever holds the key | The key holder signed these bytes and no others | That the key holder observed what the bytes describe. The APS/PriorSeal fixture run leaves PriorSeal signatures unexercised and a rehashed authorization survives at that target. The observer consumer replay checks signed history, authority and replay before admission, under author-produced PEER fixture pins; it establishes no independent custody |
| Canonicalization (RFC 8785) | 5. Records, receipts and transparency | not a record | One byte form per JSON value, so signatures agree across implementations | That two parsers read the same document the same way, unless inputs with two readings are refused first; or that an implementation used RFC 8785. A pinned AGT transcript experiment distinguishes Unicode and numeric byte paths on six inputs |
| Transparency log (Sigstore, Certificate Transparency, SCITT) | 5. Records, receipts and transparency | external log operator, about submissions | An entry was included, and the log’s history was not rewritten | That everything that should have been submitted was |
| Trusted timestamp (RFC 3161) | 5. Records, receipts and transparency | external time authority | The bytes existed before a time | When the described event happened |
| Build provenance (SLSA) | 5. Records, receipts and transparency | the builder | The builder’s claims about how an artifact was built | How the artifact behaves at runtime |
| Benchmark or red-team evaluation (Inspect, garak, promptfoo) | 6. Conformance and evaluation | peer or external evaluator | Behavior of the tested version on the tested tasks | That the deployed system is the tested one, or behavior on untested tasks |
| Embedded third-party evaluator (AEF-1 conditions) | 6. Conformance and evaluation | external evaluator, with the developer’s access | An outside assessment of practices and incidents the evaluator could see | Events for which no trustworthy record exists |
| Conformance test vectors | 6. Conformance and evaluation | the corpus maintainer | Independent implementations give the same answers on the same cases | That an implementation computed its answers rather than printed a known key |
| Regulatory obligation or standard | 7. Governance, requirements and vocabulary | not a record | What must be shown, and to whom | That it was shown |
| Record from an observer outside the agent’s reach (the open cell) | the open cell | external | If built as specified: an action as seen from a vantage the agent could not reach, bound to what was observed. No deployed instance has yet demonstrated it | Actions outside the declared coverage, or the observer’s own honesty |
The “writer” column shows one pattern. Every mechanism that records the agent’s actions in deployment comes from the agent’s own side or from a peer with a stake in the outcome. Every mechanism written from the outside records something other than those actions: an identity, a launch state, a log inclusion, a timestamp, a test result, or an assessment of what the developer let the evaluator see.
1. Identity and delegated authority
- Question
- Who or what is acting, for whom, under which delegated authority?
- Establishes
- That a request carried a credential bound to an identity a trusted issuer vouched for, and, through delegation or token exchange, the principal on whose behalf it was issued and the scope it was granted.
- Cannot establish
- That the holder is the agent it claims to be once a key or token leaves its workload; what the agent did with the authority; or whether a particular action matched what the principal intended. An identity makes an actor accountable only when some other record says what the actor did.
| project or standard | status read 2026-09-27; stars read 2026-10-01 07:04:40 UTC |
|---|---|
| IETF WIMSE working group | Active working group; seven working-group drafts, including an AI identity management draft |
| OAuth 2.0 Token Exchange, RFC 8693 | Proposed Standard. OAuth 2.1 is still a working-group draft |
| MCP authorization | Specification version 2026-07-28, which states that authorization is optional for MCP implementations. MCP is an Agentic AI Foundation project; 9,355 stars |
| Keycloak | Open-source identity and access management; 37,078 stars |
| Ory Hydra | OpenID Connect and OAuth 2.1 provider; 17,581 stars |
- Seam to family 2 (policy, mediation and admission)
- The policy engine decides on the identity it is shown. That identity usually names a workload, not a task. When a user delegates to an agent, which calls a tool, which calls a sub-agent, the token at the enforcement point often carries the agent’s own identity and a broad scope. The human principal, the narrowing at each hop and the purpose of the call are lost or merely asserted. The resulting decision allows “this workload may call this tool”. The two families leave open whether the call was within what the user delegated for this task. No record answers that question for the user who delegated.
2. Policy, mediation and admission
- Question
- Was the action permitted, mediated or refused under a stated policy, and may a relying party accept its evidence?
- Establishes
- That a request which reached an enforcement point was evaluated against a stated policy, and allowed or denied.
- Cannot establish
- Anything about requests that never passed through that point, anything about what happened after an allow, or that the policy was right. The decider writes the decision log, so the log reports the decision and nothing about the effect.
| project or standard | status read 2026-09-27; stars read 2026-10-01 07:04:40 UTC |
|---|---|
| Open Policy Agent | CNCF Graduated (2021); Gatekeeper is its Kubernetes admission controller; 12,297 stars |
| Kyverno | CNCF Graduated (2026-03-16); 8,206 stars |
| agentgateway | Agentic proxy for AI agents and MCP servers; a Linux Foundation project, per its README; 5,111 stars |
- Seam to family 3 (containment)
- The policy engine evaluates the action as declared at the gateway. Containment governs what the process can actually reach. Whatever the agent does without crossing the gateway, such as code it runs inside an allowed tool, a direct socket, or a file a later step reads, is invisible to the policy engine. The decision and the effect happen in different places at different times, and nothing binds one to the other, so a decision log cannot tell anyone what an allowed action did.
3. Containment
- Question
- Which resources and channels could the workload reach?
- Establishes
- That execution was restricted: the system calls, files, network destinations and memory it could touch were bounded, which bounds the damage a misbehaving agent can do.
- Cannot establish
- What happened inside the allowed boundary. A sandbox limits what a process can reach and keeps no record of what it did. It cannot show by itself that it was in place for a particular run; that needs attestation by a party outside it. An escape it did not detect looks the same as no escape.
| project or standard | status read 2026-09-27; stars read 2026-10-01 07:04:40 UTC |
|---|---|
| Firecracker | Secure and fast microVMs for serverless computing; 37,082 stars |
| Wasmer | WebAssembly runtime; describes itself as sandboxes for apps and AI agents; 21,110 stars |
| gVisor | Application kernel for containers; 19,471 stars |
| Wasmtime | A Bytecode Alliance project; 18,674 stars |
| E2B | Secure environments with real-world tools for agents; 14,066 stars |
| Bubblewrap | Unprivileged OS-level sandbox; 8,884 stars |
| Kata Containers | An OpenInfra Foundation project; 8,848 stars |
| microsandbox | Branchable microVMs for any workload; 8,491 stars |
| Anthropic sandbox-runtime | Filesystem and network restrictions on arbitrary processes at the OS level, without a container; 5,406 stars |
- Seam to family 4 (observation and tracing)
- The contained process is also the process that reports on itself. Traces come from instrumentation inside the sandboxed workload, so a denied connection, a killed process, or a tool that did something other than what it logged produces no span. The trace still looks complete. Containment and observation sit at different vantage points, and the operator running both has to reconcile two partial views by hand.
4. Observation and tracing
- Question
- What was seen while the workload ran, and from which vantage?
- Establishes
- What the instrumentation emitted: correlated spans, timings and attributes, as reported.
- Cannot establish
- That the events happened independently of the party emitting them; that nothing is missing, since tracing has no concept of a missing span and sampling drops spans by design; or that the record is intact, since spans are unsigned and can change anywhere in the collection pipeline.
| project or standard | status read 2026-09-27; stars read 2026-10-01 07:04:40 UTC |
|---|---|
| OpenTelemetry generative-AI semantic conventions | OpenTelemetry is CNCF Graduated (2026-05-11); the generative-AI and agent-span conventions are marked “Development” |
| Langfuse | Agent evaluation and observability platform; 35,253 stars |
| MLflow tracing | Tracing is one part of MLflow; 28,205 stars |
| Arize Phoenix | AI observability and evaluation; 11,668 stars |
| OpenTelemetry Collector | Receives, processes and exports telemetry; 7,623 stars |
| OpenLLMetry | OpenTelemetry instrumentation for LLM applications; 7,463 stars |
- Seam to family 5 (records, receipts and transparency)
- Signing a trace fixes its bytes and changes nothing about whether the trace is true or complete. Whatever the emitter omitted before signing remains omitted. The signed version now carries more authority than the unsigned one did.
5. Records, receipts and transparency
- Question
- How are observations encoded, signed, committed, ordered, retained and disclosed?
- Establishes
- Integrity and origin of bytes: the holder of a key signed these bytes and no others. A transparency log adds that an entry was included at a point in the log’s history and that the history was not rewritten, which prevents equivocation for anyone who checks.
- Cannot establish
- That what the bytes describe occurred; that the set of records is complete; that their content is true; or that the signer observed anything at all.
| project or standard | status read 2026-09-27; stars read 2026-10-01 07:04:40 UTC |
|---|---|
| in-toto attestation framework, with the DSSE envelope | in-toto is CNCF Graduated (2025-02-10); attestation specification v1.2; DSSE protocol version 1.0.2 |
| Sigstore cosign | Code signing and transparency for containers and binaries; an OpenSSF project; 6,340 stars |
| IETF SCITT | RFC 9943 (architecture) and RFC 9942 (COSE receipts): Proposed Standards, June 2026 |
| C2PA | A Joint Development Foundation project; specification 2.4 current |
| Certificate Transparency, RFC 9162 | Experimental RFC (2021) |
| JSON Canonicalization Scheme, RFC 8785 | Informational RFC; a signature over JSON that anyone re-serializes depends on agreed canonical bytes |
- Seam to family 6 (conformance and evaluation)
- A receipt proves which bytes were issued. An evaluation measures how a system behaved. Deployments rarely bind the two: an evaluation result seldom names, by digest, the weights, scaffold, tools, configuration and grader it ran against. A production receipt seldom points back to the evaluation that licensed the deployment. Where no digest binds them, the deployer’s statement that “this deployed agent is the one that was evaluated” is all a regulator or a customer receives.
6. Conformance and evaluation
- Question
- What did testing establish about behavior or reader agreement?
- Establishes
- Measured behavior of a specific system version, under a specific harness and task set, at a specific time.
- Cannot establish
- Behavior in deployment; that the evaluated system is the deployed one, unless the two are bound by digest; the absence of capabilities it did not test; or the soundness of its own result, unless someone else can recompute it from preserved inputs.
| project or standard | status read 2026-09-27; stars read 2026-10-01 07:04:40 UTC |
|---|---|
| promptfoo | Tests and red-teams prompts, agents and retrieval pipelines; 25,605 stars |
| EleutherAI lm-evaluation-harness | Few-shot evaluation framework for language models; 14,105 stars |
| NVIDIA garak | LLM vulnerability scanner; 9,395 stars |
| Inspect | Developed by the UK AI Security Institute (a government body) with Meridian Labs; 2,904 stars |
| METR | A research nonprofit that measures whether and when AI systems might pose catastrophic risks |
| NIST CAISI | US government center for AI standards and evaluation; runs an AI Agent Standards Initiative |
| MLCommons AILuminate | Benchmarks covering 12 hazard categories |
| OWASP AI Testing Guide | Version 1 published November 2025 |
- Seam to family 7 (governance, requirements and vocabulary)
- Governance texts name outcomes such as record-keeping, testing, logging and third-party assessment, without fixing an evidence format, a required vantage, or a way for a regulator to re-check a result. The European harmonised standards that would give a presumption of conformity are, on CEN-CENELEC’s own page, still under development. Operating conditions for evaluator independence have been written down, AEF-1 among them; no comparable text says how a third party re-checks the evidence an evaluator produces, so the evaluator’s client relies on the evaluator’s report of that evidence.
7. Governance, requirements and vocabulary
- Question
- What is required, reported or asserted, and in which stable terms?
- Establishes
- Obligations, risk categories, process requirements and routes to conformity.
- Cannot establish
- That any obligation was met. Several instruments are voluntary, and several rest on standards not yet published. None specifies evidence that a distrusting party could re-check.
| project or standard | status read 2026-09-27; stars read 2026-10-01 07:04:40 UTC |
|---|---|
| EU AI Act, Regulation (EU) 2024/1689 | In force; consolidated version of 27 July 2026 |
| NIST AI Risk Management Framework 1.0 | Voluntary; under revision |
| NIST AI 600-1, Generative AI Profile | Published July 2024 |
| CEN-CENELEC JTC 21 | Joint technical committee; harmonised standards for the AI Act under development |
| California SB 53 | Chaptered: Chapter 138, Statutes of 2025 |
| AI Evaluator Forum, AEF-1 | Minimum operating conditions for independent third-party evaluation, version 1 |
| OWASP Top 10 for Agentic Applications | 2026 edition, December 2025 |
| Linux Foundation Agentic AI Foundation | Announced December 2025; working groups include identity and trust, and observability and traceability |
- Seam back to family 1 (identity and delegated authority)
- Accountability obligations end in a person or an organization. The record that would show which principal authorized which agent action is not something any of these instruments requires in a checkable form. The chain from “this obligation applies to the deployer” back to “this delegation authorized this call” is closed by documentation alone, which leaves the regulator reading the deployer’s own account.
The open cell
Across the “cannot establish” column, one question is never answered: did this action happen as recorded, seen from a vantage the agent could not reach, and is anything missing? Each family supplies part of an answer: identity names who acted, policy records the decision, containment bounds the reach, tracing carries the actor’s own account, receipts fix the bytes, and evaluation measures a tested version, while governance requires that an answer exist. No family includes a record of the action made from beyond the agent’s reach.
Signing more records does not close that cell; the seam between tracing and receipts shows why, since a signature fixes a self-report’s bytes without changing who wrote it. Where the cell can be closed at all, closing it takes records made from a vantage the observed party does not control, bound to what they observed, with an explicit statement of what they do not cover and a rule for what a missing record means. The rest of this site works in that cell. The version ledger lists each piece with its status.
Where the public evidence artifacts sit
My vocabulary, conformance corpus and admission rules address that cell. Two Rust crates supply the byte handling of family 5 that they rest on. The last column follows each README’s statement of what the repository does not do.
| artifact | family | release and read time; status label | what it does | what it does not do |
|---|---|---|---|---|
| agent-evidence-vocabulary | 5, feeding 7 | v0.3.0; read 2026-10-01 07:04:40 UTC draft | A closed, versioned vocabulary for what an evidence claim means: observer vantage, directness, witness scope (self, peer, external), coverage denominator, and what the record does not assert | It defines words. It neither verifies nor observes anything |
| agent-evidence-vectors | 5 into 6 | v0.16.0; read 2026-10-01 07:04:40 UTC published | A conformance corpus, reference verifier, GitHub Action and PyPI package. The historical v0.13.0 baseline below contains 817 vectors in 13 corpora; that count is not a v0.16.0 census | It does not observe execution. A clean run shows a verifier printed the right answers, not that it computed them |
| agent-evidence-admission | 2, consuming 5 | no release yet; read 2026-10-01 07:04:40 UTC draft | Admission rules in four policy engines (OPA, two Kyverno dialects, and Sigstore’s policy-controller) that admit or refuse a workload on its execution evidence | “These rails evaluate an already-verified statement. They do not verify one.” |
| jcs-admit | 5, bytes | 0.1.1 on crates.io; read 2026-10-01 07:04:40 UTC published | Refuses JSON with more than one reading (duplicate members, excess nesting, invalid strings) before RFC 8785 canonicalization | It hands number formatting to another crate |
| dsse | 5, envelope | 0.1.1 on crates.io; read 2026-10-01 07:04:40 UTC published | A standalone Rust implementation of the DSSE envelope that refuses six permissive behaviors | “Implements the envelope and nothing else”; key management is out of scope |
The conformance corpora
The historical baseline at release v0.13.0 of agent-evidence-vectors carries 817 vectors in 13 corpora. Each corpus tests one specification or one contract; several test specifications written by others, so that anyone can check independent implementations of those specifications against the same cases.
| corpus | members | split | what it tests |
|---|---|---|---|
vectors |
275 | 61 accept, 212 reject, 2 indeterminate | The Adversarial Execution Evidence predicate, version 0.7 (the reference verifier’s own corpus) |
vectors-w3c-report |
232 | 116 accept, 116 reject | Version 0.1 of the per-check report format of the W3C agent-conformance community group |
vectors-ai-agent-action |
61 | 41 accept, 20 reject | An AI Agent Action predicate proposed for the in-toto attestation framework by another author |
vectors-observed-effect |
52 | 9 accept, 42 reject, 1 indeterminate | The Observed Effect predicate (a draft): a change observed from a vantage the observed party does not control |
vectors-acs-core |
34 | 11 accept, 22 reject, 1 indeterminate | The mandatory profile of a published agent control standard |
vectors-ai-generation |
34 | 9 accept, 12 reject, 13 proposed | A third-party in-toto predicate recording how an artifact was produced by an AI pipeline |
vectors-anchor-stream |
32 | 12 accept, 20 reject | A third-party append-only anchor stream and its digest sidecar |
vectors-scitt-cose |
27 | 6 accept, 17 reject, 4 indeterminate | Carriage of an evidence statement as an IETF SCITT transparent statement (RFC 9943, RFC 9942) |
vectors-aci |
26 | 1 accept, 21 reject, 4 indeterminate | A third-party draft specification, one check per normative sentence |
vectors-mcp-record-contract |
15 | 7 accept, 8 reject | The run record behind a claim that two MCP implementations agree |
vectors-receipt-signature |
13 | 6 accept, 4 reject, 3 indeterminate | Verifiers of signed decision receipts in the shape of an individual IETF draft |
vectors-artifact-binding |
8 | 2 verified, 4 failed, 2 not established | Binding an evaluation result to the artifacts and grading inputs it names |
vectors-mcp-response-phase |
8 | 5 accept, 3 reject | Whether an MCP gateway runs its response-phase policy on an operation’s completion |
Standards work in review, and public listings
These are my contributions to other bodies’ work, listed where the repository meets the naming rule above: a pull request to each of two projects and an Internet-Draft. No body had merged or adopted any of them when I read their states. Each carries the state I read.
| where | what | state, read 2026-09-27 |
|---|---|---|
| OWASP/CheatSheetSeries#2332 | A cheat sheet on verifying third-party agent execution evidence | open open, unmerged; changes requested |
| a2aproject/A2A#2246 | Nesting-bound vectors for the protocol’s canonicalization appendix | open open, unmerged; review required |
| IETF draft-gilda-wimse-agent-audit-record | An audit record format for AI agent authorization decisions | individual draft individual draft, not adopted by a working group |
| listing | what | state, read 2026-09-27 |
|---|---|---|
| OECD.AI Catalogue of Tools and Metrics for Trustworthy AI | The conformance suite is listed as a tool | published |
| W3C public-agent-conformance mailing list | The conformance-suite deliverable, posted to the community group’s public list on 12 September 2026 | published |
Checking this page
- A “cannot establish” line is the limit of its family. The projects listed under a family are measured against that line alone.
- Star counts measure attention, and they drift. I read each status from the body’s own page or repository. The re-derive tool in the site’s repository re-reads each count, and the claim ledger gives the time of each read.
- The atlas data is published as
data/atlas.tomlin the same repository, one node per project, mechanism and artifact with its link and measurement, so any source that emits the same shape can regenerate the page.