Most AI agents still authenticate with static API keys or shared service account secrets, which cannot say which agent made a call, cannot be bound to the caller and are rarely rotated. The IETF WIMSE (Workload Identity in Multi System Environments) working group is standardising a different base: each workload gets a URI identifier in a trust domain, a short-lived credential bound to a key it holds, and a per-request proof of possession. In September 2026 the group adopted its first agent-specific document, the AI Identity Management System (AIMS) draft, which treats agents as workloads and composes WIMSE with OAuth. This guide explains the WIMSE building blocks as they stand in the current drafts, how they apply to agents, what is stable enough to design around and what is still moving. It is for identity architects, platform engineers and agent builders. All document statuses were checked on the IETF datatracker on 27 October 2026; every WIMSE document is still an Internet-Draft and can change.
Key takeaways
- Agents are workloads. The WIMSE AIMS draft gives each agent exactly one WIMSE identifier (which may be a SPIFFE ID) and short-lived, key-bound credentials, and treats static API keys as the pattern to move away from.
- Three pieces do the work. A Workload Identifier (URI), a Workload Identity Token (WIT, a JWT binding the identifier to a public key) or an X.509 workload certificate, and a per-request proof: mutual TLS, a Workload Proof Token (WPT) or an HTTP Message Signature.
- Identity is not authority. WIMSE says who the agent is. What it may do on whose behalf still comes from OAuth: delegated access tokens, token exchange, Transaction Tokens and human approval through CIBA.
- Design to the architecture, not to draft details. Header names and claims have already changed between versions (the WPT moved to the Authorization header in -02). Build abstraction around token handling and track the drafts.
- Keep credentials away from the model. AIMS states the LLM must never have access to agent credentials. Put signing keys and token handling in the agent runtime or a sidecar, never in the prompt or tool context.
Where the WIMSE drafts stand
| Document | Version and date | Status on datatracker | What it defines |
|---|---|---|---|
| draft-ietf-wimse-arch | -08, 6 July 2026 | WG document, Informational | Architecture: trust domains, identifiers, credentials, provisioning, context propagation, delegation, gateways, AI intermediaries |
| draft-ietf-wimse-identifier | -04, 23 October 2026 | WG document | Workload Identifier URI format |
| draft-ietf-wimse-workload-creds | -02, 2 July 2026 | WG document | Workload Identity Token (WIT) and Workload Identity Certificate |
| draft-ietf-wimse-wpt | -02, 27 August 2026 | WG document, Standards Track | Workload Proof Token (application-layer proof of possession) |
| draft-ietf-wimse-http-signature | -08, 20 October 2026 | WG document, Proposed Standard intended | Workload-to-workload authentication with RFC 9421 HTTP Message Signatures |
| draft-ietf-wimse-mutual-tls | -03, 24 October 2026 | WG document | Workload authentication using mutual TLS |
| draft-ietf-wimse-workload-identity-practices | -07, 22 September 2026 | Submitted to IESG (AD Evaluation), Informational | Current workload identity practices; closest to publication |
| draft-ietf-wimse-aims | -00, 15 September 2026 | WG document, Informational | AI Identity Management System: agent identity built from WIMSE and OAuth |
| draft-ni-wimse-ai-agent-identity | -03, 30 September 2026 | Individual draft (no WG adoption) | WIMSE applicability to agents, binding agent identity to an accountable owner |
The working group's document list also shows more than a dozen related individual drafts on agent delegation chains, mandates, per-call tool proofs and authorisation evidence. Individual drafts carry no IETF standing until adopted. For the wider picture see the IETF Agent Identity and Authorisation Drafts Tracker; for WIMSE as a general workload architecture see the WIMSE Workload Identity Architecture Guide.
The building blocks
Workload Identifier
- Format: an absolute URI with the trust domain as the authority and a non-empty path, for example
wimse://agents.example.com/finance/invoice-agentor a SPIFFE IDspiffe://example.com/agent/invoice. Query, fragment, user information and port are not allowed. - Rules: each trust domain must coordinate assignment across its issuers; identifiers should be stable and not reassigned to a different workload; an identifier counts as authenticated only when it comes from a verified credential, never from a plaintext header.
- Privacy: the draft cautions that identifiers can reveal topology or naming conventions. Avoid user names or customer names in agent paths.
Workload Identity Token (WIT)
- Format: a JWT with
typwit+jwt(media typeapplication/wit+jwt), signed by the identity server with an asymmetric algorithm;noneis prohibited. - Claims:
subcarries the Workload Identifier,expis mandatory,cnf.jwkholds the workload's public key (withalg), andissandjtiare recommended or optional for audit and revocation. - Not a bearer token: the workload must prove possession of the matching private key each time it presents the WIT, which travels in the
Workload-Identity-Tokenheader, not in Authorization. - Lifetime: the draft recommends WITs on the order of hours, refreshed regularly, ideally with a new key pair each time, because WITs generally cannot be revoked on demand.
Proof of possession options
| Option | Layer | How it proves the key | Strengths | Limits |
|---|---|---|---|---|
| Mutual TLS with a Workload Identity Certificate | Transport | TLS handshake with an X.509 certificate | Mature, widely supported, works with service meshes | Terminates at proxies and load balancers, so the end service may not see the agent's identity |
| Workload Proof Token (WPT) | Application | A short-lived JWT (typ wpt+jwt) signed with the WIT key, sent as Authorization: WPT | Survives intermediaries; binds to the WIT (wth), audience (aud) and, where present, a Transaction Token (tth) or other tokens (oth) | Replay protection relies on jti caches, which are hard to share across validators |
| HTTP Message Signatures (RFC 9421 profile) | Application | Signature over @method, @path, @query and key headers, tagged wimse-workload-to-workload | Covers request integrity including the body via Content-Digest; optional signed responses | More implementation work; @authority deliberately not covered so proxies can rewrite it, so audience comes from wimse-aud |
For the transport option see the mTLS Guide; for the related OAuth proof-of-possession mechanism see the DPoP Guide.
Applying WIMSE to AI agents
The AIMS draft describes an agent as a workload that loops between a model and external tools, services and resources, and lays out a stack: identifier, credentials, provisioning, authentication, authorisation, monitoring and remediation, with policy and compliance across all of them. The architecture draft adds a section on AI and ML intermediaries that treats agentic systems as delegated workloads that must keep propagated context within the scope of the delegation and re-scope it at each hop.
- One identifier per agent instance class: give each distinct agent (purpose, owner, code version family) its own identifier so logs and policy can tell them apart. Decide whether ephemeral sub-agents get their own identifiers or act under the parent's; AIMS assigns exactly one WIMSE identifier per agent.
- Provisioning with posture: AIMS folds attestation into provisioning as posture assessment that gates issuance, renewal and credential attributes. In practice that means the identity server checks where the agent runs (cluster, node, image digest) before issuing a WIT. See the Workload Attestation Guide.
- Credentials outside the model: the runtime or a sidecar holds the private key and mints proofs; the model only asks for tool calls. This also stops prompt injection from exfiltrating the key.
- Authentication per hop: the agent presents WIT plus proof to each tool or API; mTLS where the path is direct, WPT or HTTP signatures where gateways sit in between.
- Owner binding: the individual draft draft-ni-wimse-ai-agent-identity proposes a dual-identity credential carrying both the agent and its accountable owner, with owner countersignature through agent-mediated, owner-mediated or server-mediated issuance. It is not adopted and its security considerations are still a placeholder, so treat it as a design idea, not a specification.
Identity versus delegated authority
A WIT says "this is the invoice agent in example.com". It does not say "acting for Alice, allowed to approve invoices under 500 pounds". AIMS keeps that in OAuth 2.0, and the pieces fit together as follows.
| Need | Mechanism named in AIMS | Status |
|---|---|---|
| Agent acting for a user | Authorization code grant; delegated access token, JWT access tokens per RFC 9068 or introspection | Published RFCs |
| Agent acting on its own account | Client credentials or JWT grants, with the WIMSE credential as client authentication | Published RFCs; WIMSE client authentication profiles still drafts |
| Carrying user and request context through internal services | Transaction Tokens, bound into the WPT via tth | OAuth WG draft. See the OAuth Transaction Tokens (Txn-Tokens) Guide. |
| Downscoping per hop | Token exchange (RFC 8693) | Published RFC. See the OAuth Token Exchange and Delegation Guide. |
| Crossing trust domains | Cross-domain identity and authorisation chaining | OAuth WG draft. See the OAuth Identity and Authorization Chaining Across Domains Guide. |
| Human approval of a risky action | CIBA | OpenID final specification. See the Human-in-the-Loop for AI Agents Guide. |
| Revoking or attenuating access fast | Shared Signals (CAEP, RISC) | OpenID; see the Shared Signals Framework Guide |
Multi-hop delegation, where agent A asks agent B to call tool C, is the most active area: several individual WIMSE drafts propose attenuated delegation chains and mandates. Until one is adopted, use token exchange at each hop with narrower scope and audience. See Delegation Chains and Attenuated Authority for AI Agents.
WIMSE compared with what teams use today
| Approach | Identity granularity | Bound to caller | Lifetime | When it fits |
|---|---|---|---|---|
| Static API key per agent | Per key, often shared | No (bearer) | Months or never expires | Third-party SaaS that offers nothing else; vault and rotate |
| Cloud workload identity federation | Per cloud role or service account | Platform-specific | Minutes to hours | Agents in one cloud calling that cloud's APIs. See the Workload Identity Federation Guide. |
| SPIFFE and SPIRE SVIDs | Per workload, attested | Yes (X.509-SVID with mTLS) | Short, auto-rotated | Kubernetes and mixed estates today. See the SPIFFE and SPIRE Guide. |
| WIMSE WIT plus proof | Per workload URI | Yes (key in cnf) | Hours for the WIT, minutes for proofs | Cross-system and through-proxy agent traffic; pilots now, production when drafts settle |
| OAuth access token only | Per client and user | Only with DPoP or mTLS | Minutes to hours | Authorisation layer on top of any of the above |
Small versus large organisations: a small team running agents on one cloud gets most of the benefit today from cloud workload identity plus vaulted, rotated keys for SaaS. Large estates with many clusters, partners and gateways benefit most from WIMSE's trust-domain model and application-layer proofs, and should pilot with SPIFFE-compatible identifiers so they can move to WIT formats later.
How to implement
- Inventory agent credentials: list every agent, the credentials it uses, where they are stored and whether the model or tool context can read them.
- Name a trust domain and identifier scheme: choose a fully qualified trust domain and a path convention per agent; avoid personal data in paths.
- Stand up issuance with attestation: start with SPIRE or a cloud workload identity service and issue short-lived credentials only to attested agent runtimes.
- Move secrets out of the model's reach: keys and tokens live in the runtime or a sidecar that signs requests; tools receive results, not credentials.
- Pick the proof mechanism per path: mTLS inside the mesh; WPT or HTTP signatures through gateways. Wrap it in a library so a draft change is one update.
- Layer OAuth for authority: exchange for narrowly scoped, audience-bound access tokens per tool call; add Transaction Tokens for internal chains.
- Pilot in parallel: WIT headers are separate from Authorization in the credentials draft, so they can run alongside existing bearer tokens during migration. Log and compare before enforcing.
- Enforce and roll back safely: enforce per service once the pilot shows clean results; keep the old credential path disabled but available for one release, and never extend WIT lifetimes to work around issuance failures.
Detection and measurement
- Log: WIT issuance (identifier, attestation result, key thumbprint, expiry), proof validation failures by reason (expired, audience mismatch,
wthmismatch, replayedjtior nonce), token exchanges per hop. The WPT draft says raw WPT values must not be logged by default; log hashes orjti. - Alert: the same identifier presenting from two unexpected locations; proofs signed by a key not in the current WIT; bearer use of a WIT without proof; static keys reappearing for an agent that has moved to WIMSE. Theft and replay map to T1528 Steal Application Access Token and T1550.001 Application Access Token.
| Metric | Target |
|---|---|
| Agents with a unique workload identifier | 100% of production agents |
| Agent calls authenticated with key-bound credentials rather than static keys | Rising each quarter |
| Median WIT or SVID lifetime | Hours or less |
| Proof validation failures caused by clock skew or misconfiguration | Falling after pilot |
| Agent credentials readable from model context or tool output | Zero |
Framework mapping
| Framework | Reference | Relevance |
|---|---|---|
| NIST SP 800-53 Rev. 5 | IA-9 Service Identification and Authentication, IA-5, SC-8, SC-12, AU-10 | Service identity, authenticator lifecycle, protected transport, key management, attributable actions |
| NIST CSF 2.0 | PR.AA-01, PR.AA-03, PR.AA-04 | Credentials managed, services authenticated, identity assertions protected and verified |
| ISO/IEC 27001:2022 Annex A | A.5.16 Identity management, A.5.17 Authentication information, A.8.24 Use of cryptography | Workload identities and key handling |
| MITRE ATT&CK v20 | T1528, T1550.001, T1552.001 Credentials In Files, T1606 Forge Web Credentials | Theft, reuse, discovery and forging of agent credentials |
Common failure patterns
- Treating the WIT as a bearer token: accepting it without checking the proof removes the whole point of key binding.
- Trusting identifiers from headers: reading an agent identifier from a plain header or a gateway annotation instead of a verified credential, which the identifier draft explicitly rules out.
- Keys in the agent's context: private keys or tokens passed into prompts, environment variables visible to tools or files the model can read (T1552.001).
- Identity used as authorisation: granting a tool full access because the caller is "the finance agent", with no delegated user context or scope.
- Coding to draft details: hard-coding header names or claim sets from one draft version; the WPT header changed in -02.
- Per-node replay caches only: the HTTP signature draft notes that unshared replay caches let a replay to another cluster member succeed; keep proof lifetimes very short.
Practitioner checklist
- Record every agent's credentials and remove any the model or tools can read.
- Define a trust domain and identifier convention; one identifier per agent.
- Issue short-lived, key-bound credentials only after attestation of the runtime.
- Choose mTLS, WPT or HTTP signatures per path and wrap them in a shared library.
- Use OAuth token exchange for narrow, audience-bound authority per hop.
- Reject WITs without valid proof, and validate the WIT before checking the proof.
- Log issuance and validation without raw tokens; alert on replay and key mismatch.
- Track the WIMSE drafts on datatracker each quarter and update this design note.
Standards and references
- IETF: WIMSE working group documents
- IETF: WIMSE Architecture (draft-ietf-wimse-arch)
- IETF: AI Identity Management System (draft-ietf-wimse-aims)
- IETF: WIMSE Workload Credentials (draft-ietf-wimse-workload-creds)
- IETF: WIMSE Workload Proof Token (draft-ietf-wimse-wpt)
- IETF: WIMSE Workload-to-Workload Authentication with HTTP Signatures
- IETF: Workload Identifier (draft-ietf-wimse-identifier)
- IETF: WIMSE Applicability for AI Agents (individual draft)
Related NHI Mgmt Group resources: Workload Identity Federation Guide · Agent Identity Standards Tracker · AI Agent Credential Lifecycle and Rotation Guide · Agentic AI Identity Guide