| Internet-Draft | Agent Authority Transition Receipts | September 2026 |
| Watts | Expires 16 March 2027 | [Page] |
Autonomous agents increasingly act across administrative and security domains using workload identities, OAuth credentials, delegated authorization, attestations, and policy engines. Existing mechanisms can establish identity, delegation, or access rights, but deployments still lack a common artifact that records which policy and which evidence were evaluated when an operation moved into an authorized, denied, revoked, or expired authority state.¶
This document defines an Agent Authority Transition Receipt (AATR), a signed, non-bearer receipt that cryptographically binds an agent operation to the principal, policy, evidence set, decision, audience, validity interval, and predecessor authority state used for that decision. AATR intentionally separates evidence from authorization and authorization from execution. Missing or indeterminate required evidence fails closed. AATR is designed to compose with OAuth, workload identity, remote attestation, transparency services, and agent-specific delegation protocols rather than replace them.¶
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 16 March 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.¶
Agentic software can discover services, invoke tools, delegate work, and act asynchronously on behalf of people and organizations. The Internet security stack already provides strong mechanisms for authentication, authorization, delegation, workload identity, and remote attestation. However, a recurring operational gap remains: after a policy engine consumes one or more pieces of evidence and decides whether an operation is authorized, there is no broadly interoperable receipt format that binds the decision to the exact policy, evidence, action, and authority state evaluated at that time.¶
This document addresses that gap with the Agent Authority Transition Receipt (AATR). AATR is not a new identity system, not a replacement for OAuth access tokens, not an attestation format, and not a delegation protocol. It is a decision receipt.¶
The design follows a non-collapse rule: evidence is not authorization, authorization is not execution, and successful execution is not proof that authorization was valid. Each promotion between those layers requires an explicit decision and a verifiable artifact.¶
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.¶
AATR models authorization as a state transition rather than as a property inferred from successful execution. The normal decision sequence is:¶
PROPOSED -> EVALUATED -> AUTHORIZED
\-> DENIED
AUTHORIZED -> REVOKED
AUTHORIZED -> EXPIRED
¶
An implementation MUST NOT issue an AUTHORIZED transition if any required evidence is missing, invalid, failed, or indeterminate. Indeterminate evidence is not permission.¶
AATR does not define execution-state transitions. An authorized operation can still fail to execute, and an executed operation can still be shown later to have relied on invalid or stale authority. Execution receipts can be layered separately.¶
The AATR Claims Set is a JSON object. The security-relevant claims defined by this document are shown below. Additional claims MAY be present, but a verifier MUST NOT treat an unknown extension as satisfying a required evidence predicate.¶
| Claim | Requirement | Description |
|---|---|---|
| ver | REQUIRED | AATR version. This document defines "1". |
| rid | REQUIRED | Receipt identifier derived from the canonical core claims. |
| iss | REQUIRED | Identifier of the issuing PDP or authority service. |
| aud | REQUIRED | Intended relying party or resource audience. |
| principal | REQUIRED | Identifier of the represented principal. |
| agent | REQUIRED | Identifier of the acting agent or workload. |
| request_id | REQUIRED | Stable identifier for the proposed operation. |
| action_digest | REQUIRED | Digest over the security-relevant operation parameters. |
| from | REQUIRED | Previous authority state. |
| to | REQUIRED | New authority state. |
| policy | REQUIRED | Policy identifier, version, and digest. |
| evidence | REQUIRED | Array of evidence references and evaluation states. |
| iat | REQUIRED | Issuance time. |
| exp | REQUIRED for AUTHORIZED | Authority expiration time. |
| nonce | RECOMMENDED | Freshness value bound to the operation. |
| prev | OPTIONAL | Predecessor AATR identifier for chained transitions. |
| reason | RECOMMENDED | Stable machine-readable decision reason code. |
Each evidence entry MUST identify the evidence type, digest, status, and the policy predicate it is intended to satisfy. The status vocabulary defined by this document is SATISFIED, FAILED, UNKNOWN, and MISSING.¶
An AUTHORIZED AATR MUST contain only SATISFIED status for every evidence predicate marked required by the referenced policy. A relying party MUST reject an AUTHORIZED AATR if it cannot determine that all required predicates were satisfied.¶
Raw evidence SHOULD NOT be embedded when a digest and an access- controlled reference are sufficient. This reduces correlation and disclosure risk.¶
The receipt identifier is computed over a canonical JSON
representation of the core claims using the JSON Canonicalization
Scheme [RFC8785]. The rid claim itself and
signature container are excluded from this calculation.¶
core = AATR claims excluding "rid" and signature container canonical = JCS(core) digest = SHA-256(canonical) rid = "sha256:" || lowercase-hex(digest)¶
SHA-256 is used as specified by [RFC6234]. Implementations that introduce other digest algorithms require an explicit algorithm identifier and downgrade protections.¶
An AATR MUST be integrity protected by a signature
mechanism that identifies the issuing authority. This document
profiles JSON Web Signature (JWS) [RFC7515] for the
initial representation. The JWS payload is the UTF-8 encoding of
the AATR Claims Set including rid.¶
A verifier MUST validate the signature, issuer, audience, time bounds, receipt identifier, predecessor linkage when present, action digest, policy digest, and evidence predicates before accepting the receipt.¶
The alg value "none" MUST NOT be accepted.
Algorithm agility follows the JOSE registries. Deployments
SHOULD use algorithms that meet their current
security policy and key-management requirements.¶
aud identifies the current relying party.¶
rid from the RFC 8785 canonical core and compare it in constant time where practical.¶
iat, exp, and local freshness policy.¶
request_id and action_digest match the operation under consideration.¶
from to to transition is permitted by local transition policy and predecessor state.¶
{
"ver": "1",
"rid": "sha256:4f8e...d021",
"iss": "https://authority.example.net/pdp",
"aud": "https://api.example.com",
"principal": "acct:alice@example.net",
"agent": "spiffe://example.net/agent/finance-helper",
"request_id": "req-7c91d4",
"action_digest": "sha256:05bd...ab10",
"from": "EVALUATED",
"to": "AUTHORIZED",
"policy": {
"id": "payments.transfer",
"version": "12",
"digest": "sha256:c1aa...9204"
},
"evidence": [
{
"type": "delegation",
"digest": "sha256:18c2...7731",
"predicate": "principal_delegation",
"status": "SATISFIED"
},
{
"type": "workload-attestation",
"digest": "sha256:99a4...33ef",
"predicate": "approved_runtime",
"status": "SATISFIED"
}
],
"iat": 1789273200,
"exp": 1789273260,
"nonce": "CzX7wqYq2WmV0g",
"reason": "policy-permit"
}
¶
The example is illustrative. The receipt does not itself grant bearer access to the resource. The resource server can require an OAuth access token or another authorization credential in addition to the AATR.¶
AATR is designed as a narrow composition layer.¶
An AATR is evidence of an authority decision, not a bearer credential. Possession of a valid AATR alone MUST NOT cause a resource server to grant access unless a separate protocol explicitly profiles AATR as part of its authorization exchange.¶
This distinction prevents receipt laundering, where an audit artifact is replayed as though it were an access token.¶
An issuer can revoke authority by issuing a later AATR that transitions the same operation or authority lineage to REVOKED. Relying parties that accept chained AATRs MUST define how they discover later receipts or revocation status.¶
Evidence that was fresh when an earlier decision was issued can later become stale. Therefore a relying party MUST NOT assume that an old AUTHORIZED AATR remains usable beyond its expiration or local freshness policy.¶
AATR can correlate principals, agents, actions, policies, and evidence. Implementations SHOULD minimize receipt contents, avoid embedding natural-language prompts or raw private evidence, use audience restriction, and apply retention controls.¶
Digests can still leak information when the underlying value comes from a low-entropy space. Implementations MUST NOT assume that a digest automatically anonymizes the referenced data.¶
Cross-domain deployments should consider pairwise or scoped identifiers when a globally stable identifier is unnecessary.¶
AATR is security-sensitive because relying parties can use it to decide whether a prior authorization decision is trustworthy. Implementations must address at least the following threats.¶
This version of the document requests no IANA actions. A future revision that standardizes a dedicated media type or registry will specify those actions explicitly.¶
AATR can be introduced without replacing an existing authorization stack. A deployment can begin by issuing receipts in audit-only mode, compare them against existing policy decisions, and later require verified receipts at selected high-consequence enforcement points.¶
This incremental profile is particularly useful for agentic workflows spanning multiple trust domains, where identity, delegation, attestation, and authorization are already produced by different systems.¶
Agentic systems increasingly combine identity, delegation, attestation, policy, and automated execution. AATR adds a narrow missing object: a verifiable receipt that says which authority state changed, for which operation, under which policy, using which evidence. By keeping evidence, authorization, and execution distinct, deployments can make high-consequence agent actions easier to audit, revoke, compare across domains, and reason about without requiring a new identity system or a new authorization token format.¶
The author thanks the IETF community members working on OAuth, workload identity, remote attestation, software transparency, and emerging agent authorization for the protocol foundations that make a narrow receipt layer possible.¶