| Internet-Draft | WAG | August 2026 |
| Carleton | Expires 4 February 2027 | [Page] |
This document profiles the Agent Identity Management System (AIMS) framework for agent platforms that host many agent instances per customer. Each agent is identified by an opaque, non-reassignable agent identifier; the agent obtains access tokens by presenting a JWT authorization grant (RFC 7523), signed by the platform's per-tenancy issuer, in the assertion parameter at the authorization server protecting the resource server. Trust is established once, by reference to the issuer's published metadata and keys; agent creation requires no per-agent step at the authorization server or resource server; and authorization is expressed over platform-asserted agent properties that resource servers map locally to permissions. This profile addresses agents acting on their own behalf; access on behalf of a user or other principal is out of scope, though the design is intended to compose with existing delegation mechanisms in which the agent appears as the actor.¶
This note is to be removed before publishing as an RFC.¶
Status information for this document may be found at https://datatracker.ietf.org/doc/draft-carleton-workload-authz-grant/.¶
Source for this draft and an issue tracker can be found at https://github.com/pcarleton/draft-carleton-workload-authz-grant.¶
This note is to be removed before publishing as an RFC.¶
This document is an early, exploratory individual draft, published to solicit discussion of the deployment pattern it describes. It is not a working group document, does not describe a shipped or committed design, and does not represent a position or roadmap of the author's employer. Every aspect of it is subject to change or withdrawal, including whether this profile should exist as a separate document at all. Most sections are placeholders. Issues and pull requests: https://github.com/pcarleton/draft-carleton-workload-authz-grant.¶
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.¶
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.¶
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."¶
This Internet-Draft will expire on 4 February 2027.¶
Copyright (c) 2026 IETF Trust and the persons identified as the document authors. All rights reserved.¶
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Revised BSD License.¶
Agent platforms increasingly host many agent instances per customer, created and retired at the cadence at which the customer organizes its work -- per channel, repository, or pipeline. An individual agent may persist for weeks or months, but the person creating it is typically not the person authorized to provision credentials at the resource servers it will access. Per-agent credentials are therefore not issued in practice, and deployments collapse to a single credential shared across all agents of an installation -- the pattern [AIMS], Section 7, identifies as an antipattern -- at the cost of any attribution of an individual agent's actions at the resource server.¶
Existing workload identity federation [WIMSE-ARCH] addresses an analogous problem between an organization's workloads and infrastructure providers, but its claim and policy semantics are defined per provider rather than portably, and it has not been applied between agent platforms and SaaS resource servers. The Model Context Protocol's proposed Workload Identity Federation extension [MCP-WIF] defines the corresponding wire mechanics for MCP servers; this profile is intended to be interoperable with it.¶
This document specifies a profile of [AIMS] for that deployment pattern. Agent platforms are the motivating deployment, and the terminology throughout uses "Agent"; the mechanism itself is not agent-specific and applies to any platform hosting workloads that need federated access to third-party resource servers. The mechanism is called the Workload Authorization Grant (WAG): a platform-signed JWT authorization grant asserting a workload's identity and platform-asserted properties. Trust in the platform's issuer is established once, by reference, and thereafter agents are accepted on first presentation with no per-agent registration step.¶
A design goal of this profile is a minimal adoption path for services that already operate an OAuth deployment: supporting it requires changes only at the authorization server's token endpoint, which accepts the JWT authorization grant from allowlisted issuers. The access tokens the authorization server issues are unchanged in format and semantics, and resource servers continue to trust their authorization server exactly as they do today.¶
[AIMS] remains the base specification for anything not restated here. This profile constrains [AIMS] as follows:¶
| AIMS component | Here | Relationship |
|---|---|---|
| Identifiers (Sec. 6) | Section 4 | Constrained: opaque, immutable, non-reassignable agent identifier, RECOMMENDED to be a Workload Identifier [WIMSE-ID], carried as sub |
| Credentials (Sec. 7), Authentication (Sec. 9) | Section 5 | Constrained: [RFC7523] JWT authorization grant (assertion), platform-signed; no per-agent credential; client identity deliberately unspecified |
| Credential Provisioning (Sec. 8) | Section 7 | Constrained: platform-internal |
| Authorization (Sec. 10, case 10.4.2) | Section 8 | Added: standard property claims; by-reference trust (Section 6) |
| Monitoring/Remediation (Sec. 11) | Section 11 | TODO |
| Policy (Sec. 12), Compliance (Sec. 13) | -- | Inherited |
TODO. A reader arriving from WIMSE or SPIFFE will ask where the Workload Identity Token and the SPIFFE ID are in this design. Explain: why the assertion is an [RFC7523] authorization grant rather than a WIMSE WIT; how the Agent Identifier's RECOMMENDED [WIMSE-ID] URI form relates to a SPIFFE ID; and what changes if the Platform's issuer is backed by a SPIFFE/WIMSE-style workload identity plane rather than operated as a standalone OAuth issuer.¶
In scope: agents acting on their own behalf ([AIMS], Section 10.4.2). Out of scope: on-behalf-of access, legacy integration via static credentials, runtime attestation, agent-to-agent protocols. This profile deliberately does not specify on-behalf-of flows; the design is intended to compose with delegation mechanisms in which the agent appears as the actor rather than the subject (e.g., the act claim and actor_token parameter of [RFC8693], or [IDJAG]), and that composition is left to future documents.¶
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.¶
The service that hosts Agents and operates the per-tenancy issuers that vouch for them.¶
A hosted workload with its own Agent Identifier, context, and configuration.¶
A Platform-asserted attribute carried as a claim in the authorization grant.¶
The OAuth authorization server at which Agents present authorization grants and obtain access tokens; commonly, but not necessarily, operated by the same vendor as the Resource Server it protects.¶
The service holding customer resources, accessed with the access tokens the Authorization Server issues.¶
The customer's identity provider (optional).¶
The human who performs one-time trust establishment.¶
TODO: diagram. One-time trust establishment by the Customer Administrator (Section 6); agent creation by end users with no interaction with the Resource Server (Section 7); per-request JWT authorization grant (Section 5).¶
An Agent's identity has three units: the tenancy's issuer, which signs assertions about the Agent; the Agent Identifier, opaque, unique within the issuer, immutable, and never reassigned, carried as the assertion's sub (Section 5); and claims, carrying everything else (Section 8). Renaming an Agent MUST NOT change its Agent Identifier. Resource Servers MUST NOT parse or pattern-match the Agent Identifier for authorization; single-agent policy is an exact match on it.¶
The Agent Identifier MAY be, and is RECOMMENDED to be, a Workload Identifier URI [WIMSE-ID] with an opaque path; a bare opaque string is also permitted. URI form costs no opacity -- the path remains meaningful only to the issuing Platform -- and carries the trust boundary inside the identifier's authority component, which is what relying parties that evaluate only subject and audience need (Section 11). When the Agent Identifier is a URI, the Authorization Server validates its authority component against the allowlisted issuer's tenancy once, at token issuance; Resource Servers treat the complete identifier as an opaque, exact-match string regardless of form and MUST NOT derive trust from its components.¶
The Customer Administrator once records, at the Authorization Server, an allowlist entry binding one issuer to one tenancy: the issuer identifier, from which the issuer's metadata and JWK Set location are discovered per [OIDC-DISCOVERY] (retrieved over https [RFC9525]), and the tenancy's initial Property-to-permission mapping for the Resource Server (Section 8). Establishment is by reference; no keys or secrets are transferred, and key rotation is by JWK Set update alone. Platforms serving multiple customers MUST use a distinct issuer per tenancy: the issuer is the trust boundary the allowlist expresses, and a shared issuer would move tenancy enforcement into claim evaluation at every Authorization Server -- including relying parties that can evaluate only subject and audience (Section 11). The proposed MCP Workload Identity Federation extension [MCP-WIF] recommends (SHOULD) that authorization servers rely only on issuing keys bound to a single tenant; this profile deliberately tightens that boundary to a per-tenancy issuer MUST.¶
Multi-issuer operation is scoped by issuer throughout. An Authorization Server MUST resolve and cache keys per allowlist entry and MUST NOT merge key sets across issuers, and it MUST interpret sub and jti only within the scope of the presenting iss. A Resource Server that keeps a Property-to-permission mapping (Section 8) likewise scopes it by iss. An Agent Identifier is unique within its issuer, not globally: policy and audit records are keyed on the (iss, sub) pair, or on the complete URI-form identifier, which carries the tenancy in its authority component.¶
Creating an Agent is Platform-internal and MUST NOT require any ahead-of-time interaction with the Resource Server, the Authorization Server, an Enterprise IdP, or the Customer Administrator. The Authorization Server first learns that an Agent exists when the Agent presents its first authorization grant: it MUST accept a previously-unseen Agent Identifier presented as sub under an allowlisted issuer, and authorization -- at the Authorization Server and the Resource Server alike -- is via Section 8, never identifier structure. Agents are not dynamically registered clients [RFC7591].¶
Optionally, a Platform MAY project Agents into an Enterprise IdP (e.g., as [SCIM-AGENT] resources) for inventory and lifecycle governance. Such projection MUST NOT be required ahead of time: performing it just in time, including synchronously during first token issuance, is acceptable. TODO: BYO-IdP deployment model.¶
TODO. Initial standard property claims: name, a human-readable display name as in an OpenID Connect ID Token [OIDC-CORE] (mutable, and never a key for authorization or attribution -- that is the Agent Identifier); namespace, groups, roles, and an optional ctx naming the collaboration context; additional attributes use collision-resistant claim names per [RFC7519], Section 4.3. TODO: whether an Agent needs a human-usable, "@"-referenceable address within the Platform, analogous to sharing a document with an email address, distinct from both name and the opaque Agent Identifier; noted here, deliberately unsolved. A Resource Server keeps a local, administrator-controlled mapping from Property predicates to permissions; possession of a Property is not itself authorization. Deny semantics do not travel. TODO: worked example.¶
TODO. The Authorization Server logs jti at token issuance; Resource Servers log the Agent Identifier (sub) and referenced Properties; internal fan-out via [TXN-TOKENS] rather than forwarding the access token.¶
Retirement is expressed by cessation: the Platform stops signing assertions for a retired Agent, so residual access is bounded by the remaining lifetime of any outstanding assertion plus the lifetime of any access token already issued. Assertion and access-token lifetimes SHOULD be chosen with this bound in mind. No signal yet informs an Authorization Server that an Agent Identifier is permanently retired; that gap is shared with neighboring workload identity ecosystems, whose common baseline is likewise short credential lifetimes plus ceasing issuance (Section 11).¶
Broader lifecycle management is out of scope for this document. In particular, resources that come to be owned by an Agent (documents, records, long-lived artifacts) need succession planning when the Agent is retired; this profile makes the retirement event's access consequences legible, but does not manage its downstream effects.¶
Relying parties that authorize only on subject and audience (e.g., cloud IAM federation trust policies) and cannot evaluate Property predicates; URI-form Agent Identifiers (Section 4) carry the tenancy inside the identifier for this case, but the residual gap is unassessed.¶
Proof-of-possession: the authorization grant is bearer; see Section 5.¶
Issuer placement: issuer operated by the Platform versus by the Enterprise IdP, with the Platform obtaining assertions by token exchange [RFC8693] with the IdP; client authentication is redundant in the former case and load-bearing in the latter; what, if anything, client_id means in each case.¶
Staleness and retirement signaling in place of per-agent revocation (issuer- or Property-scoped epoch versus event push versus lifetime alone, Section 10); a gap shared with neighboring workload identity ecosystems.¶
Addressing: whether an Agent needs a human-usable, "@"-referenceable address (to share a resource with an agent the way one shares with an email address), distinct from the display name and the Agent Identifier.¶
TODO: unseen agent identifiers under trusted issuers; issuer allowlist as the trust boundary; tenant confusion at multi-issuer Authorization Servers (Section 6); bearer-assertion theft and assertion lifetime; Platform as root of trust; credential non-exposure to the model; automated trust establishment.¶
This document has no IANA actions at this time; provisional claim names (Section 8) may be registered in a future revision.¶
The author thanks Kevin Kelley, Aaron Parecki, Brian Campbell, Pieter Kasselman, Nick Steele, Emily Lauber, and Maxwell Gerber for discussions that shaped this document. This profile builds directly on the Agent Identity Management System framework [AIMS] and would not exist without it. Further acknowledgments will be added in a future revision.¶