Auditor and Notified Body guide for evaluating SWT3 Trust Mesh deployments. Evidence requirements, verification checklists, and regulatory mapping.
If you have limited time, these five checks cover 80% of a Trust Mesh assessment:
mode: strict set in .swt3.yaml? Permissive mode logs warnings but does not block. Production must be strict.require_signature: true enabled? Without signatures, any process can impersonate any agent. All credentials cap at BASIC (level 1).procedure_id = AI-TRUST.1. Active deployments produce these on every agent handoff. If absent, trust mesh is configured but not being used.key_env: references (good) vs. inline key: values (finding).The SWT3 Trust Mesh is a protocol for mutual compliance verification between AI agents. Before two agents exchange data, invoke tools, or share context, each presents a cryptographic credential proving its compliance posture. The receiving agent verifies the credential locally and assigns a trust level from 0 (DENIED) to 4 (SOVEREIGN).
Think of it as a TLS handshake for compliance. TLS ensures the server you are talking to is who it claims to be. Trust Mesh ensures the agent you are sharing data with has active guardrails, valid attestations, and a verified identity. The critical difference: Trust Mesh verifies compliance posture, not transport identity. An agent can have a valid TLS certificate and zero guardrails. Trust Mesh catches that gap.
Trust Mesh evidence falls into three categories. Understanding which type of evidence you are reviewing determines how much independent verification is required.
| Boundary | What It Means | Trust Mesh Examples | Assessor Action |
|---|---|---|---|
| FULL | The SDK produces complete, independently verifiable evidence. The anchor contains all information needed to confirm the event occurred. | AI-TRUST.1 anchor (verification result), AI-TRUST.2 anchor (handshake checks), credential signature | Verify the anchor at /verify. Recompute the fingerprint. Confirm factors match expected values. |
| PARTIAL | The anchor records that an event occurred, but the assessor must verify the policy intent behind the configuration. | Trust mesh configuration (.swt3.yaml), trusted tenant list, required procedures list | Review the configuration file. Verify that policy choices (which tenants to trust, which procedures to require) align with the organization's risk posture. |
| POINTER | The anchor records that a governance event occurred. The substance of the event is maintained outside the protocol. | Deny list maintenance, revocation notification delivery, key rotation events | Confirm the event anchor exists. Then independently verify the substance: was the deny list actually updated? Was the revoked agent actually blocked? |
Determine which agents in the deployment use Trust Mesh. Ask for an agent inventory: agent IDs, tenant membership, expected trust levels, and which agents communicate with each other.
Request the following artifacts:
Run the 15-point configuration checklist. Verify sample anchors at the public verify endpoint. Check factor values against the interpretation table. Look for patterns: all-PASS is suspicious (may indicate the mesh is not actually blocking anything); regular FAIL anchors with deny_listed reasons indicate active enforcement.
Apply your framework's assessment methodology. Trust Mesh evidence maps to multiple regulatory controls (see Section 12). The evidence supports but does not replace the assessor's professional judgment on control satisfaction.
Every Trust Mesh verification mints two anchors. The factors encode the verification outcome.
| Factor | Name | PASS Example | FAIL Example | Meaning |
|---|---|---|---|---|
factor_a | Constant | 1 | 1 | Always 1 (reserved for future use) |
factor_b | Granted | 1 | 0 | 1 = trust granted, 0 = denied |
factor_c | Trust Level | 3 | 0 | 0=denied, 1=basic, 2=verified, 3=attested, 4=sovereign |
Reading the anchor: SWT3-E-CLOUD-AI-AITRUST1-PASS-1786825895-a1b2c3d4e5f6
The verdict (PASS/FAIL) in the anchor token reflects factor_b. A PASS anchor with factor_c=2 means the counterpart was granted VERIFIED trust. A FAIL anchor with factor_c=0 means the counterpart was denied.
| Factor | Name | Healthy Example | Concern Example | Meaning |
|---|---|---|---|---|
factor_a | Checks Performed | 6 | 3 | Total verification checks run |
factor_b | Checks Passed | 6 | 2 | Checks that passed |
factor_c | Granted | 1 | 0 | 1 = trust granted, 0 = denied |
What to look for: A healthy deployment shows factor_a = factor_b in AI-TRUST.2 (all checks passing). If factor_b < factor_a, some checks failed. If the overall result is still PASS (the agent was granted trust despite failed checks), investigate which checks were skipped and whether the minimum trust level is set appropriately.
factor_b = 0 (denied). These are the enforcement events. A deployment that has never denied a verification may not be actively enforcing trust policy.
| Artifact | Purpose | Evidence Boundary |
|---|---|---|
| .swt3.yaml configuration | Trust policy: mode, minimum level, signing, procedures | PARTIAL |
| AI-TRUST.1/TRUST.2 anchors | Proves agents are actively verifying each other | FULL |
| Trust verification logs | Verification outcomes: grants, denials, trust levels | FULL |
| Key attestation records | Keys bound to valid compliance anchors | FULL |
| Liveness logs | Challenge-response pairs proving live key possession | FULL |
| Deny list and revocation records | Organization responds to compromised agents | POINTER |
| Agent inventory | All agents, tenant membership, expected trust levels | PARTIAL |
Review the .swt3.yaml trust_mesh section against these 15 items. The developer configures this file; the assessor reviews it. See Implementation Guide Section 6 for what each field does.
| # | Check | Expected (Production) | Severity if Missing |
|---|---|---|---|
| 1 | Is mode set to strict? | strict | HIGH |
| 2 | Is min_trust_level at least 2? | 2 or higher | HIGH |
| 3 | Is require_signature enabled? | true | HIGH |
| 4 | Is freshness_window set and reasonable? | 86400 or less | MEDIUM |
| 5 | Are trusted_tenants explicitly listed? | Non-empty list | HIGH |
| 6 | Are signing_keys registered for all agents? | One per agent | HIGH |
| 7 | Are keys referenced via key_env (not inline)? | key_env syntax | HIGH |
| 8 | Is require_intra_tenant_signing enabled? | true | MEDIUM |
| 9 | Is rate_limit_max_failures set? | 5-20 | MEDIUM |
| 10 | Is verify_boolean_claims enabled? | true | LOW |
| 11 | Are required_procedures defined? | At least AI-INF.1, AI-GRD.1 | MEDIUM |
| 12 | Is per_level_freshness configured for SOVEREIGN? | 300 seconds or less | LOW |
| 13 | Are deny lists present? | Present (may be empty) | LOW |
| 14 | Is the config file under version control? | Git-tracked | MEDIUM |
| 15 | Does the deployed config hash match the reviewed copy? | Exact match | HIGH |
For each trust level the deployer claims to enforce, verify the following evidence:
Red flag: All agents at BASIC in production. No cryptographic identity verification is occurring.
require_signature: true is setRed flag: Signing keys stored in application code rather than a secrets manager.
verify_boolean_claims: true, claimed procedures are presentRed flag: Key attestations bound to anchors that are months old.
Red flag: SOVEREIGN claimed but no liveness mechanism configured.
You can independently verify a Trust Mesh credential signature without installing the SDK.
{agentId}:{tenantId}:{anchorFingerprint}:{anchorTimestampMs}:{isSigned}:{hasHW}:{hasGuardrails}:{clearingLevel}:{sortedProcedures}
Booleans are 1 or 0. Procedures are sorted alphabetically and joined with commas.
echo -n "classifier-v2:acme-prod:a1b2c3d4e5f6:1786825895000:1:0:1:1:AI-GRD.1,AI-INF.1" \ | openssl dgst -sha256 -hmac "your-signing-key"
The output hex digest must match the credentialSignature field exactly. Any mismatch indicates tampering, a wrong key, or a message format error.
A complete Trust Mesh deployment with the Witness Middleware produces two independent evidence streams:
| Stream | Procedure | What It Proves | When It Fires |
|---|---|---|---|
| Trust Verification | AI-TRUST.1 + AI-TRUST.2 | Counterpart compliance was verified before interaction | Before the tool call |
| Tool Witnessing | AI-TOOL.1 | The tool call occurred with cryptographic integrity | After the tool call completes |
What to check: For a given agent interaction, both AI-TRUST.1 and AI-TOOL.1 anchors should appear in the ledger with timestamps showing that trust verification preceded the tool call. If AI-TOOL.1 anchors exist but AI-TRUST.1 anchors are absent, tool calls are being witnessed but counterparts are not being verified (a gap). If AI-TRUST.1 exists but AI-TOOL.1 is absent, the Witness Middleware is not installed (tool calls are unwitnessed).
/verify without access to AI-TOOL.1 data, and vice versa. Neither evidence stream depends on the other.
All agent credentials are unsigned, capping trust at BASIC. Any process that can read the tenant ID can impersonate any agent.
Remediation: Enable require_signature: true and distribute signing keys to all agents.
Trust mesh mode is set to permissive or monitor. Failed verifications are logged but do not block execution.
Remediation: Set mode: strict for production environments.
Signing keys appear as plaintext strings rather than key_env references.
Remediation: Replace inline keys with key_env: ENV_VAR_NAME. Store keys in a secrets manager.
Freshness window exceeds 7 days. Agents could operate on week-old compliance evidence.
Remediation: Reduce to 24 hours (86400). Use per-level freshness for higher trust levels.
Deny lists are empty with no deny events in 90 days.
Remediation: Establish a deny list update procedure. Configure on_deny_event() hooks.
Rate limiting disabled. A compromised agent can attempt unlimited verifications.
Remediation: Set rate_limit_max_failures to 5-20 with a 60-second window.
AI-TOOL.1 anchors present in the ledger but no AI-TRUST.1 anchors. Tool calls are being witnessed but counterparts are not being verified before the call.
Remediation: Implement trust mesh verification before tool dispatch. See Implementation Guide Section 10.
Agents claim SOVEREIGN trust level but no challenge-response liveness mechanism is configured.
Remediation: Implement challenge-response liveness for SOVEREIGN-level agents.
| Trust Mesh Evidence | EU AI Act | NIST AI RMF | NIST 800-53 | CMMC |
|---|---|---|---|---|
| Agent identity verification | Art. 9(2)(c) | Map 1.1 | IA-2 | IA.L2-3.5.1 |
| Credential signing | Art. 15(4) | Manage 2.4 | IA-5 | IA.L2-3.5.7 |
| Freshness windows | Art. 9(4)(a) | Measure 2.5 | CA-7 | CA.L2-3.12.3 |
| Deny lists / revocation | Art. 9(7) | Manage 4.1 | AC-2 | AC.L2-3.1.2 |
| Trust level enforcement | Art. 15(1) | Manage 1.3 | AC-3 | AC.L2-3.1.1 |
| Key attestation | Art. 15(4) | Manage 2.2 | IA-5(2) | IA.L2-3.5.10 |
| Challenge-response liveness | Art. 15(4) | Manage 2.3 | SC-8 | SC.L2-3.13.8 |
| Configuration under VCS | Art. 17(1)(d) | Govern 1.4 | CM-3 | CM.L2-3.4.3 |
| Rate limiting | Art. 15(3) | Manage 2.4 | SC-5 | SC.L1-3.13.1 |
An auditor can verify Trust Mesh evidence using three tools: the SWT3 anchor, the public verify endpoint, and openssl.
https://sovereign.tenova.io/verify and paste the anchor token. The verify page recomputes the SHA-256 fingerprint and confirms it matches.For the full protocol specification including all denial codes and security properties, see the Protocol Reference. For implementation details, see the Implementation Guide.