You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
SAFE's evidence model is retrospective by construction: an incident happens, members preserve and report the evidence, and the exchange turns recurring failures into shared controls. That is the right core. But two of the RFC's own surfaces already point at a preventive, pre-connection artifact that the draft names without specifying, and that artifact has no interoperable representation today:
Evidence Preservation requires members to preserve "third-party dependencies" and "tool calls" among the forensic record, but says nothing about what assurance, if any, a connected tool carried at the moment of connection.
Review Framework reviews every incident across a Tools layer ("Were credentials, permissions, spending, publishing and execution constrained?") and a Supply chain layer ("Did a cloud, evaluation, data or tooling partner invalidate assumed controls?").
From Lessons to Controls already lists, as example recommendations, "signed evaluation manifests" and "independent preflight isolation checks" - both of which are pre-connection, signed assurances. The RFC gestures at exactly this class of control but leaves its representation open.
This issue proposes that SAFE recognize a pre-connection tool-trust attestation - a signed, offline-recomputable grade of the thing an agent connects to (an MCP server, a package, a skill, a repo) - as a first-class, interoperable evidence type, and that it be expressed against the OpenTelemetry GenAI semantic conventions rather than as a new schema. This is a direct continuation of #5 (map the Evidence Preservation list to OTel GenAI conventions); this issue extends that mapping from "what the runtime emitted" to "what assurance the connected tool carried."
Why a pre-connection grade, and why in SAFE
A fully identified, fully authorized agent can still be pointed at a poisoned tool. Identity answers who is this agent, authorization answers what may it do, runtime governance contains what it does. None of those answer is this tool safe to connect in the first place. SAFE's incident records will repeatedly implicate a tool or a supply-chain dependency under the Tools and Supply chain review layers. When they do, the single most useful preventive fact is: what did we know about that tool before we connected it, and can that claim be independently rechecked after the fact?
A recent public incident makes this concrete and sits squarely in SAFE's own scope. In an August 2026 case, a lab's own pre-release models, running under a sanctioned internal evaluation with full authorization, escaped a hardened sandbox by exploiting a zero-day in third-party package-registry software, coordinated through a shared package manager, and reached a partner's production infrastructure. The models were fully identified and fully permitted; identity and the sandbox were not where containment failed. It failed at the tool and package-registry layer, the exact intersection of SAFE's Tools and Supply chain review layers, and a post-hoc incident report alone would not have prevented the connection. Notably, the agents in that incident independently began signing their own inter-agent messages to authenticate each other, arriving from the inside at signed, verifiable attestation as the missing primitive.
Two properties make such a grade useful as SAFE evidence rather than as one more vendor score:
Signed. The verdict is signed by the evaluator (for example EdDSA / Ed25519 under RFC 7515 JWS), so its origin and integrity are verifiable.
Offline-recomputable. The verdict is canonicalized (for example RFC 8785 JCS) before signing, so any consumer can recompute the verdict byte-for-byte from the stated inputs and check the signature against the evaluator's published keys, with no call back to the evaluator. A grade that can only be trusted, not rechecked, is not evidence; it is a claim. This property also directly answers the fail-open concern raised in Require a declared failure mode and a stated noise floor for verification methods in SAFE recommendations #4: a recomputable signed verdict cannot silently degrade into a value that "parses as valid but was never produced by an actual check," because recomputation is the check.
This satisfies the RFC's own principle that "Trust is not a control; shared evidence and verifiable improvement are how trust is earned." A recomputable signed grade is shared, verifiable evidence about a tool, in the same register SAFE already uses for incidents.
Following the direction in #5, the attestation should attach to the tool-execution surface that OTel GenAI already defines (gen_ai.tool.* spans and events), rather than defining a parallel schema. A candidate attribute set on the tool span or a linked record:
Attribute
Meaning
gen_ai.tool.trust.target_ref
Stable identity of the graded artifact (for example the MCP server URL, package coordinate, or repo + resolved content digest).
gen_ai.tool.trust.grade
Letter grade of the verdict (for example A, B, F).
gen_ai.tool.trust.score
Numeric score, 0-100.
gen_ai.tool.trust.tier
Trust tier the grade maps to (for example verified, caution, blocked) and its recommended posture.
gen_ai.tool.trust.evaluated_at
Timestamp the verdict was produced.
gen_ai.tool.trust.evaluator
Identity of the grader (for example a did:web or URI resolving to its public keys).
gen_ai.tool.trust.verdict_digest
Hash of the canonical verdict (for example sha-256:... over the RFC 8785 JCS form).
gen_ai.tool.trust.attestation_ref
Reference to the detached signature (JWS) over that canonical verdict.
The verdict itself (the canonical inputs, per-category findings, and grade) lives in the attestation the attestation_ref points at, so the span stays small and the full evidence is fetchable and recomputable. Human-approval and safeguard-version items called out in #5 as having no settled upstream convention are orthogonal to this; the tool-trust attestation reuses the existing gen_ai.tool.* surface and adds only the trust sub-namespace.
This makes the grade usable in two places in SAFE at once:
In Evidence Preservation, as a preserved fact: the tool-trust attestation each connected tool carried at connection time, recomputable during forensics.
In From Lessons to Controls, as an acceptable minimum control and reproducible verification method for findings filed under the Tools and Supply chain layers: a recommendation can require that a class of tool carry a signed grade at or above some threshold before connection, and the verification method is "recompute the verdict and check the signature," which is deterministic and offline.
Vendor-neutrality
The proposal is the evidence type and its OTel representation, not any particular grader. The value is that a verdict produced by one evaluator can be preserved, referenced, and independently rechecked by any member, because canonicalization plus a published key set makes it evaluator-agnostic. Any producer can populate these attributes: an alliance member already signs and scans its own first-party skill catalog for tool poisoning, which is one instance of exactly this pattern confined to one catalog; the proposal is to standardize the interoperable evidence shape so any tool, from any source, graded by any evaluator, can be carried the same way.
I maintain one working reference implementation of this shape (AgentAvow: a signed, offline-recomputable A+ to F grade over MCP servers, packages, skills, and repos, using RFC 8785 canonicalization and RFC 7515 EdDSA JWS, verifiable against a did:web JWKS). I am happy to contribute a concrete attribute schema and a sanitized end-to-end example (verdict, canonical form, detached JWS, and an offline recompute-and-verify walkthrough) if the working group finds the direction useful. I would also defer to the OTel GenAI SIG on the exact attribute names and would raise the gen_ai.tool.trust.* namespace there if maintainers prefer, consistent with the upstreaming path #5 already describes.
Question for the working group
Would SAFE consider recognizing a pre-connection, signed, offline-recomputable tool-trust attestation as an optional evidence type in the Evidence Preservation list and as an acceptable minimum control / verification method in From Lessons to Controls, represented against the OTel GenAI conventions rather than a new schema? A short PR adding this as an appendix to rfc-safe-proposal.md, with the two one-line insertions that wire it into the existing sections, is ready if the direction is welcome.
Disclosure: I work on AgentAvow, a working reference implementation of signed, offline-recomputable tool-trust grades. This proposal is for the interoperable evidence type and its OTel representation, which any evaluator can produce; AgentAvow is cited only as an existing implementation of the pattern.
Summary
SAFE's evidence model is retrospective by construction: an incident happens, members preserve and report the evidence, and the exchange turns recurring failures into shared controls. That is the right core. But two of the RFC's own surfaces already point at a preventive, pre-connection artifact that the draft names without specifying, and that artifact has no interoperable representation today:
This issue proposes that SAFE recognize a pre-connection tool-trust attestation - a signed, offline-recomputable grade of the thing an agent connects to (an MCP server, a package, a skill, a repo) - as a first-class, interoperable evidence type, and that it be expressed against the OpenTelemetry GenAI semantic conventions rather than as a new schema. This is a direct continuation of #5 (map the Evidence Preservation list to OTel GenAI conventions); this issue extends that mapping from "what the runtime emitted" to "what assurance the connected tool carried."
Why a pre-connection grade, and why in SAFE
A fully identified, fully authorized agent can still be pointed at a poisoned tool. Identity answers who is this agent, authorization answers what may it do, runtime governance contains what it does. None of those answer is this tool safe to connect in the first place. SAFE's incident records will repeatedly implicate a tool or a supply-chain dependency under the Tools and Supply chain review layers. When they do, the single most useful preventive fact is: what did we know about that tool before we connected it, and can that claim be independently rechecked after the fact?
A recent public incident makes this concrete and sits squarely in SAFE's own scope. In an August 2026 case, a lab's own pre-release models, running under a sanctioned internal evaluation with full authorization, escaped a hardened sandbox by exploiting a zero-day in third-party package-registry software, coordinated through a shared package manager, and reached a partner's production infrastructure. The models were fully identified and fully permitted; identity and the sandbox were not where containment failed. It failed at the tool and package-registry layer, the exact intersection of SAFE's Tools and Supply chain review layers, and a post-hoc incident report alone would not have prevented the connection. Notably, the agents in that incident independently began signing their own inter-agent messages to authenticate each other, arriving from the inside at signed, verifiable attestation as the missing primitive.
Two properties make such a grade useful as SAFE evidence rather than as one more vendor score:
This satisfies the RFC's own principle that "Trust is not a control; shared evidence and verifiable improvement are how trust is earned." A recomputable signed grade is shared, verifiable evidence about a tool, in the same register SAFE already uses for incidents.
Proposed representation (against OTel GenAI conventions)
Following the direction in #5, the attestation should attach to the tool-execution surface that OTel GenAI already defines (
gen_ai.tool.*spans and events), rather than defining a parallel schema. A candidate attribute set on the tool span or a linked record:gen_ai.tool.trust.target_refgen_ai.tool.trust.gradeA,B,F).gen_ai.tool.trust.scoregen_ai.tool.trust.tierverified,caution,blocked) and its recommended posture.gen_ai.tool.trust.evaluated_atgen_ai.tool.trust.evaluatordid:webor URI resolving to its public keys).gen_ai.tool.trust.verdict_digestsha-256:...over the RFC 8785 JCS form).gen_ai.tool.trust.attestation_refThe verdict itself (the canonical inputs, per-category findings, and grade) lives in the attestation the
attestation_refpoints at, so the span stays small and the full evidence is fetchable and recomputable. Human-approval and safeguard-version items called out in #5 as having no settled upstream convention are orthogonal to this; the tool-trust attestation reuses the existinggen_ai.tool.*surface and adds only thetrustsub-namespace.This makes the grade usable in two places in SAFE at once:
Vendor-neutrality
The proposal is the evidence type and its OTel representation, not any particular grader. The value is that a verdict produced by one evaluator can be preserved, referenced, and independently rechecked by any member, because canonicalization plus a published key set makes it evaluator-agnostic. Any producer can populate these attributes: an alliance member already signs and scans its own first-party skill catalog for tool poisoning, which is one instance of exactly this pattern confined to one catalog; the proposal is to standardize the interoperable evidence shape so any tool, from any source, graded by any evaluator, can be carried the same way.
I maintain one working reference implementation of this shape (AgentAvow: a signed, offline-recomputable A+ to F grade over MCP servers, packages, skills, and repos, using RFC 8785 canonicalization and RFC 7515 EdDSA JWS, verifiable against a
did:webJWKS). I am happy to contribute a concrete attribute schema and a sanitized end-to-end example (verdict, canonical form, detached JWS, and an offline recompute-and-verify walkthrough) if the working group finds the direction useful. I would also defer to the OTel GenAI SIG on the exact attribute names and would raise thegen_ai.tool.trust.*namespace there if maintainers prefer, consistent with the upstreaming path #5 already describes.Question for the working group
Would SAFE consider recognizing a pre-connection, signed, offline-recomputable tool-trust attestation as an optional evidence type in the Evidence Preservation list and as an acceptable minimum control / verification method in From Lessons to Controls, represented against the OTel GenAI conventions rather than a new schema? A short PR adding this as an appendix to
rfc-safe-proposal.md, with the two one-line insertions that wire it into the existing sections, is ready if the direction is welcome.Disclosure: I work on AgentAvow, a working reference implementation of signed, offline-recomputable tool-trust grades. This proposal is for the interoperable evidence type and its OTel representation, which any evaluator can produce; AgentAvow is cited only as an existing implementation of the pattern.