ADR-006: Agent Identity and Authentication
Status: Accepted Date: 2026-03-20
Context
Agents query the trust authority to retrieve trust signals. The authority needs to know who is asking — for rate limiting, audit trails, and accountability.
The ideas.md specifies that agent identity uses a did:web identifier carried as a JWT header.
Decision
Use DID-based identity. Agents MAY present a did:web Decentralized Identifier as a signed JWT in the Authorization header to identify themselves to the trust authority. Agent identification is optional per-request — authorities MUST NOT gate access on identity.
How It Works
- The agent operator gets certified by a identity authority supporting the Trust Signals for Agent Interactions Protocol (TSAI)
- The agent operator hosts a DID Document at their domain (per the
did:webmethod specification) - The DID Document contains the agent's public key
- For each request, the agent creates a JWT signed with its private key
- The JWT includes the
did:webidentifier as theiss(issuer) claim - The agent sends the JWT in the
Authorization: Bearer <jwt>header - The trust authority resolves the
did:webto the DID Document, retrieves the public key, and verifies the JWT signature
JWT Claims
{
"iss": "did:web:agent.example.org",
"iat": 1711000000,
"exp": 1711003600,
"aud": "authority.example.org"
}
| Claim | Description |
|---|---|
iss | The agent's did:web identifier |
iat | Token issued-at timestamp |
exp | Token expiration (short-lived, recommended 1 hour) |
aud | The trust authority's domain |
Implementation Details
The did:web method and JWT mechanics are defined by the TSAI protocol. Agent identification is optional per-request — agents MAY present a did:web JWT in the Authorization header, and authorities MUST NOT gate access on identification. The mechanics of DID resolution and JWT verification follow the TSAI specification.
Authority Behavior
- Authorities MUST accept requests without an
Authorizationheader — identification is never a prerequisite - When a JWT is presented, authorities MUST validate it; a rejected JWT returns
401 Unauthorized. A missing JWT MUST NOT return401. - The authority SHOULD log the agent's
did:webidentifier on each identified response (audit trail) - The authority MAY enforce rate limits using an implementation-defined strategy
- The authority MAY maintain an allowlist of accepted agent identities
Options Considered
A. Anonymous access. No agent identification. Zero friction. The authority cannot rate-limit, audit, or hold agents accountable. Abuse risk is high in an automated environment where agents make rapid queries.
B. API key. Agents register and receive a key. Simple. Requires centralized registration — the authority must manage key issuance. Ties agents to the authority's registration system.
C. DID-based identity (chosen). Self-sovereign — agents control their own identity by hosting a DID Document. Cryptographic proof of identity. No centralized registration required. Ties identity to a domain the operator controls (via did:web). Aligns with the TSAI protocol's identity layer.
D. Tiered (anonymous read, authenticated write). Reading is open; writing requires authentication. Reduces friction for read-only agents. Two authentication paths to specify and maintain. Given that the authority logs all interactions for the audit trail, anonymous reads would create gaps in the log.
Consequences
- Agents can query all authorities without a
did:webidentity — identification is never required - Agents that have a
did:webidentity MAY present it; authorities MAY use it for logging, rate-limit tuning, or response tailoring (all implementation-defined) - The authority does not manage agent registration — identity is self-sovereign
- The audit trail is complete for identified requests; unidentified requests have no cryptographic agent identity to log
- Rate limiting strategy is implementation-defined
- A future revision may introduce access gates under a deliberately chosen framing — see the roadmap
References
- ADR-002 — Verification Endpoint Schema (request format)
- ADR-005 — Trust Authority Model (authority behavior)
context/threat-model.md— T8: Sybil Attacks (DID-based identity mitigates)- W3C DID Core Specification
did:webMethod Specification- TSAI protocol — JWT mechanics, DID resolution, agent identity certification