AAuth Specification Changelog
September 9, 2026 · View on GitHub
High-fidelity record of what changed between the vendored AAuth specification
snapshots in this repository. Each snapshot is a self-contained folder; see
SPEC-VERSION.md for source commits and metadata.
Entries are grouped by snapshot folder, so every document in a release (protocol, R3, bootstrap, and companion documents) is listed together and a companion change travels with the protocol version it shipped in.
Section and line references in the v02/ entry point into the draft-02 files
under v02/ (commit feda56b); references in the v08/ entry point
into the draft-08 files under v08/ (commit dd2b852); references in the
v09/ entry point into the draft-09 files under v09/ (commit
90089f8); references in the v10/ entry point into the draft-10 files under
v10/ (commit 9dee49f). Anchors in parentheses (e.g. #sub-agents)
are the spec's own kramdown anchors and are stable across line shifts.
| Snapshot | Protocol | Bootstrap | R3 | Interop profile | Events | Source commit |
|---|---|---|---|---|---|---|
v01/ | draft-01 | draft-01 | draft-00 | — | — | c090879 (2026-05-11) |
v02/ | draft-02 | draft-01 (unchanged) | draft-00 (revised) | — | — | feda56b (2026-06-09) |
v08/ | draft-08 | draft-01 (unchanged) | draft-00 (unchanged) | new | — | dd2b852 (2026-06-25) |
v09/ | draft-09 | draft-01 (unchanged) | draft-00 (revised) | unchanged | draft-00 (new) | 90089f8 (2026-07-05) |
v10/ | draft-10 | draft-02 (revised) | draft-01 (revised) | unchanged | draft-00 (revised) | 9dee49f (2026-08-06) |
The SDK code targets
v10/(draft-10) after the separately verified 2026-09-09 migration. The snapshot was vendored 2026-09-08 and remains byte-unchanged. All four access modes and local four-party sub-agent scenarios are implemented; optional exclusions and incomplete external authorization interop remain explicit. See SPEC-VERSION and the migration evidence. Historical per-snapshot entries below describe their original publication state.
Contents
v10/— AAuth draft-10 snapshotv09/— AAuth draft-09 snapshotv08/— AAuth draft-08 snapshotv02/— AAuth draft-02 snapshotv01/— AAuth draft-01 snapshot (baseline)
v10/ — AAuth draft-10 snapshot
The latest upstream snapshot, vendored 2026-09-08 for reference. It bundles protocol draft-10 with R3 draft-01, Bootstrap draft-02, revised AAuth Events draft-00, the unchanged Interoperability Demo Profile, and HTTP Signature Keys draft-08.
The SDK continues to target draft-08. Draft-09 and draft-10 migrations are separate implementation work.
Protocol (draft-10)
Published as IETF
draft-hardt-oauth-aauth-protocol-10
(commit 9dee49f, source frontmatter date 2026-06-17, IETF publication date
2026-08-06). The author's verbatim draft-10 changelog is reproduced below.
1. Fully specified algorithms and keys
The HTTP Message Signatures profile now requires algorithms to be explicit and
unambiguous (#signature-algorithms, #keying-material):
- Every conveyed or referenced key MUST carry a fully specified
alg. Ed25519replaces the deprecated polymorphicEdDSA;none, symmetric algorithms, and algorithms prohibited by the JOSE registry MUST NOT be used.- A verifier MUST reject a key whose
ktyorcrvdisagrees withalg. - Every
cnf.jwkand every AAuth server key selected fromjwks_urifollows these rules. Unselected JWKS members do not need to use supported algorithms. - The HTTP Signature
algparameter MUST NOT be sent and is ignored if present; the selected key determines the algorithm.
2. Signature verification and errors
Verification and error behavior now align with HTTP Signature Keys draft-08
(#verification, #authentication-errors):
- Defined failures include
unsupported_scheme,unsupported_algorithm,invalid_key,issuer_missing, andissuer_mismatchin addition to existing signature and JWT errors. - Signature failures are authentication failures and always use
401; theSignature-Errorheader is the machine-readable carrier. unsupported_schemeandunsupported_algorithmcan advertise accepted values throughAccept-Signature-SchemeandAccept-Signature-Alg.- A
403means authentication succeeded but authorization failed, so it MUST NOT carrySignature-Erroror eitherAccept-Signature-*header. - Metadata discovery explicitly rejects a missing or mismatched
issuer.
The protocol also adds designated-expert instructions for its Requirement,
Capability, and Platform registries (#designated-expert-instructions).
3. Revocation identity and routing
Token revocation is keyed by the pair (iss, jti), because jti is unique only
within an issuer's namespace (#token-revocation):
- Revocation requests carry both
issandjti; recipients MUST store revocation state under the pair. - A PS or AS revokes an auth token at the resource that received it.
- An AP revokes its agent token at the PS's
revocation_endpoint; the PS denies later use and should revoke auth tokens issued or provided for that agent. - Identity-based access cannot always receive that push, so exposure remains bounded by token lifetime when no resource revocation endpoint is reachable.
4. Directed subject handling
Federation rules prevent directed person identifiers from crossing trust boundaries as if they were globally meaningful:
- A downstream issuer MUST NOT copy
subfrom an upstream auth token. - It MAY issue its own directed
subonly after its own authenticated federation step maps the person into the downstream resource's namespace. - Person identifiers MUST NOT appear in
act; that chain identifies agents.
5. Account binding
The new optional account parameter distinguishes multiple accounts that the
same person may hold at one resource (#account-binding):
- The authorization request names an account in the resource's own namespace.
- The resource echoes it into the resource token, and the PS or AS copies it into the auth token.
- The resource enforces the claim per account, and audit records retain the account covered by the authorization.
- The value selects an existing resource account; it is not an authentication hint and has no protocol-defined structure.
R3 (draft-01)
R3 advances from draft-00 to draft-01 and incorporates the protocol changes:
- The R3 document gains optional
account, copied from the authorization request and resource token. Itsdisplayshould name the account in terms the person recognizes rather than exposing an opaque resource identifier. - Operation identifiers are explicitly scoped to a vocabulary's advertised discovery endpoint.
- The new
urn:aauth:vocabulary:openapi-gatewayvocabulary qualifies operations with(service, operationId)for multi-service gateways. - JWT examples use
Ed25519, includealgincnf.jwk, and correct token types toaa-resource+jwtandaa-auth+jwt. - The R3 Vocabulary Registry gains designated-expert instructions.
AAuth Events (revised draft-00)
Events remains draft-00 but changes resource-to-AP delivery to match the Signature Keys model:
- Event tokens now use
scheme=self-jwt: the resource issues the JWT and signs the HTTP request with the same discoverable JWKS key, so the token has nocnfclaim. - Subscribe-token examples use fully specified
Ed25519and carryalgincnf.jwk. - The draft adds open-network and
self-jwtdesign rationale and points its protocol-family references at the Datatracker document pages.
Bootstrap (draft-02)
Bootstrap advances from draft-01 to draft-02. Its token examples replace
EdDSA with Ed25519, add alg to cnf.jwk, and reference the protocol through
its Datatracker document page. The enrollment guidance is otherwise unchanged.
Interoperability Demo Profile (unchanged)
interop-demo-profile.md is byte-identical to v09/.
HTTP Signature Keys (draft-08)
Bumped draft-06 → draft-08 (published 2026-08-05). Draft-07 was editorial only. Draft-08 is not backward compatible with draft-07 and includes these implementation-relevant changes:
- Algorithms now come from required, fully specified JWK
algvalues.EdDSA,none, symmetric algorithms, and key/algorithm mismatches are forbidden. Accept-Signature-SchemeandAccept-Signature-Algreplace thesigkeyparameter;supported_algorithmsis removed fromSignature-Error.- Covering
signature-keyis now mandatory for signers and verifiers;expis mandatory forjwtandself-jwt; malformed JWT rejection and cache limits become mandatory. - The new
jwksscheme directly fetches a JWKS URL that serves as both identity and key location. Discovery addsissuer_missingandissuer_mismatcherrors. - Optional assertion caching adds the
cachedscheme,Signature-Key-Cache, andcache_miss, with bounded verifier state. - Unknown schemes and unsupported algorithms have defined negotiation and error behavior, and selected JWKS keys are validated independently of other members.
Author's verbatim changelog (draft-10)
Reproduced from the Document History section of
v10/draft-hardt-oauth-aauth-protocol.md:
draft-hardt-oauth-aauth-protocol-10
- Adopted the fully-specified
Ed25519of [@!RFC9864] in place of theEdDSAit deprecates.algis REQUIRED and MUST be fully specified;EdDSA,none, and symmetric algorithms MUST NOT be used; a verifier MUST reject a key whosektyorcrvdisagrees with itsalg. Addresses issue #57.- A
cnfJWK MUST carry a fully-specifiedalg, as MUST every key at an AAuth server'sjwks_uri. A verifier MUST select the key matchingkidwithout requiring the other JWKS members to be usable.- Aligned verification and error mapping with [@!I-D.hardt-httpbis-signature-key]: added
unsupported_scheme,unsupported_algorithm,invalid_key,issuer_missing, andissuer_mismatch; pinned signature failures to401; a403MUST NOT carrySignature-Erroror eitherAccept-Signature-*header; thealgsignature parameter MUST NOT be used.- Revocation identifies a token by
(iss, jti), and recipients key revocation state by that pair. An agent provider revokes an agent token at the PS'srevocation_endpoint. Addresses issues #59 and #60.- A downstream issuer MUST NOT copy a directed
subfrom an upstream token, MAY emit one only from its own authenticated federation step, and MUST NOT place a person identifier inact. Addresses issue #41.- Added the OPTIONAL
accountparameter on the authorization endpoint request, echoed in the resource token and copied into the auth token, binding an authorization to one of several accounts a resource may hold for the same person. Addresses issue #52.
v09/ — AAuth draft-09 snapshot
The latest upstream snapshot, vendored 2026-07-19 for reference. It bundles protocol draft-09 with a revised R3 (draft-00), the unchanged bootstrap (draft-01) and Interoperability Demo Profile, the new AAuth Events companion (draft-00), and HTTP Signature Keys draft-06.
The SDK continues to target draft-08. This snapshot is the immutable input to the separate draft-09 migration.
Protocol (draft-09)
Published as IETF
draft-hardt-oauth-aauth-protocol-09
(commit 90089f8, source frontmatter date 2026-06-17, IETF publication date
2026-07-04). The author's verbatim draft-09 changelog is reproduced below.
1. Clarification response discriminator
Clarification-chat POSTs to a pending URL are now explicitly typed
(#clarification-chat):
- The body MUST include
action=clarification_responsewhen answering the user's question, oraction=updated_requestwhen replacing the resource request. - A server MUST reject a missing or unrecognized
actionwith400 Bad Request. - Both wire examples now carry the discriminator, removing the draft-08
inference from whether
clarification_responseorresource_tokenhappened to be present.
2. RFC 9457 error responses
The token-endpoint-specific JSON format became a common AAuth problem-details
format (#error-responses, #error-response-format):
- Error bodies use RFC 9457
application/problem+json. - The AAuth
errorcode remains REQUIRED as an extension member; the standarddetailmember replaceserror_description. - Standard RFC 9457 members MAY be present, but receivers MUST use
error, nottype, to determine AAuth behavior. - Authorization, interaction, mission-status, token-endpoint, and polling
errors now reference or demonstrate the common format. Authentication failures
continue to use the HTTP Signature Keys
Signature-Errorheader.
3. AAuth Events integration
The protocol now introduces its Events companion at the core integration points:
- The protocol overview names asynchronous event delivery through the AP, and the AP role gains event-router behavior.
- Agent metadata (
#metadata-documents) gains optionalevent_endpoint, which is required when an AP supports AAuth Events. - IANA considerations register the companion's
aa-subscribe+jwtandaa-event+jwttoken types.
4. Editorial and implementation-status changes
- Hand-maintained source references for HTTP Signature Keys and Bootstrap were removed in favor of the references resolved by the publication toolchain; the citations remain.
- The acknowledgments add Lukas Friman and Sanjay Dalal.
AAuth Events (new companion draft)
draft-hardt-aauth-events.md is a new standards-track companion source at
draft-00 (source date 2026-06-24). It defines AP metadata, subscribe tokens,
public and protected registration, event tokens, resource-to-AP delivery,
AP-to-agent routing, and AsyncAPI discovery. It is included because both the
protocol and revised R3 reference it.
At copy time the Events source was present at the pinned protocol tag but had no
dedicated Git tag or published Datatracker revision. The snapshot therefore pins
the exact companion source from protocol tag
draft-hardt-oauth-aauth-protocol-09 rather than a moving branch.
R3 (revised)
R3 remains draft-00 but its AsyncAPI vocabulary changed:
actionis now OPTIONAL rather than REQUIRED; when present it issendorreceive, and event subscriptions usereceive.- A granted AsyncAPI subscription operation now hands off registration and delivery to AAuth Events using a subscription ticket URL and subscribe token.
Bootstrap and Interoperability Demo Profile (unchanged)
draft-hardt-aauth-bootstrap.mdremains draft-01 and is byte-identical tov08/.interop-demo-profile.mdis byte-identical tov08/.
HTTP Signature Keys (draft-06)
Bumped draft-05 → draft-06
(published 2026-07-02).
Draft-06 adds the self-jwt scheme: a self-issued JWT whose issuer and signer
are the same party, using the issuer's discovered JWKS key for both the JWT and
HTTP signature and carrying no cnf claim.
The protocol draft-09 publication resolves its Signature Keys reference to draft-06. This snapshot intentionally vendors that revision rather than the newer draft-07.
Author's verbatim changelog (draft-09)
Reproduced from the Document History section of
v09/draft-hardt-oauth-aauth-protocol.md:
draft-hardt-oauth-aauth-protocol-09
- Clarification chat: added a required
actiondiscriminator (clarification_response/updated_request) to the agent's POST responses on the pending URL, so the response type is explicit rather than inferred from key presence.- Error responses: adopted RFC 9457 problem details — error bodies use
Content-Type: application/problem+jsonwith the AAuth error code as a requirederrorextension member;error_descriptionreplaced by the RFC 9457detailmember; added token endpoint and polling error examples.
v08/ — AAuth draft-08 snapshot
The latest upstream snapshot, vendored 2026-06-25 for reference. It bundles protocol draft-08 with the unchanged R3 (draft-00) and bootstrap (draft-01), adds the new informational Interoperability Demo Profile, and bumps the HTTP Signature Keys draft to draft-05.
The SDK now targets draft-08 (migrated 2026-06-25). The entries below measure draft-08 against the prior draft-02 baseline (
v02/) — they double as the migration's change catalogue. TheAAuth-Accessopaque-token flow (resource-managed access) is implemented (see.agent/plans/2026-06-25-aauth-access-token-flow/).
Protocol (drafts 03–08)
Published as IETF
draft-hardt-oauth-aauth-protocol-08
(commit dd2b852, document date 2026-06-17). draft-08 is the cumulative result of
six published drafts (03 → 08). Grouped below by theme; the author's verbatim
per-draft changelog is reproduced at the end. Anchors in parentheses are the
spec's own kramdown anchors.
1. Agent-delegation restructure
The multi-hop and sub-agent material was reorganized under a single umbrella, and the sub-agent subsections were consolidated.
- New top-level section
# Agent Delegation(#agent-delegation) now contains## Multi-Hop Resource Access(#multi-hop) and## Sub-Agents(#sub-agents), both previously top-level sections in draft-02. - The draft-02 sub-agent subsections (Sub-Agent Identity, Single-Level Depth,
Parent-Mediated Authorization, Delegation Chain Examples) collapsed into a
single
## Delegation Chain(#delegation-chain). - New
## PS Approval Endpoint Authentication(#ps-approval-endpoint-auth).
2. Auth-token act semantics (drafts 04–05)
The delegation-chain claim was reworked so the act chain identifies agents, not
subjects, and is omitted when there is no delegation.
act.subreplaced byact.agentwithin eachactnode (issue #47).actis now OPTIONAL — absent in direct authorization.act.agentidentifies the immediate upstream agent (the delegator, not the presenter); nesting records the full chain. Verification steps, sub-agent issuance, PS upstream-token construction, and the delegation-chain examples were updated to match.
3. Call chaining and routing (draft-08)
Call-chaining gained explicit token-binding and routing rules.
- Upstream token
audMUST equal theissof the intermediary's agent token. - PS-vs-AS routing is derived from the upstream auth token
(
mission.approveroriss), not the calling agent'spsclaim. - A PS MUST require a mission to remain in the loop for four-party upstream chains.
4. Interactions (drafts 03, 07–08)
- New
## Interaction Callback Errors(draft-07) defining the?error=redirect wire format —access_denied,user_abandoned,server_error,temporarily_unavailable,interaction_expired— and the PS mapping to polling errors. Resource-Initiated Interaction now references it and specifies PS behavior on error callbacks. - Interaction code is now described as a correlation identifier, not an authorization credential (draft-08): the code alone MUST NOT authorize the decision.
- Crockford base32 citation updated to
[@?I-D.crockford-davis-base32-for-humans](draft-03).
5. Metadata (draft-03)
- New common-fields table at the top of the Metadata Documents section
covering all four well-known files; documented intentional RFC 9728 divergences
(
issuernotresource; unprefixed field names). - New
documentation_urifield onaauth-agent.json,aauth-person.json, andaauth-access.json.
6. PS approval auth and implementation clarity (draft-06)
An implementation- and interop-driven clarity pass (feedback from Joshua Gay):
- Mission-reference dereference boundary and
approver/s256syntax rules. - Agent keying material restricted to
scheme=jwt. AAuth-Requirementparameter shape and unknown-value behavior;AAuth-Accesstoken grammar (token68);AAuth-Capabilitiesforward-compatibility.- JWKS same-
kidrefresh and egress admission. - Auth-token verification split into JWT trust vs. request-context binding
with structured
cnf.jwkfailure ordering. - New PS approval-endpoint authentication security consideration and a freshness/replay policy subsection.
- The Interoperability Demo Profile was extracted to a standalone non-normative document (see below).
R3 and Bootstrap (unchanged)
Both are byte-identical to the v02/ snapshot:
- R3 stays at draft-00 (
draft-hardt-aauth-r3.md). - Bootstrap stays at draft-01 (
draft-hardt-aauth-bootstrap.md) — byte-identical acrossv01/,v02/, andv08/.
Interoperability Demo Profile (new)
interop-demo-profile.md is new in this snapshot — a non-normative document
extracted from the protocol spec in draft-06. It describes the minimum live
surfaces for an end-to-end interop demo: PS mission approval, AAuth-Mission
presentation and resource-token echo, resource-token issuance, auth-token issuance
and presentation, and parent-mediated sub-agent handling.
HTTP Signature Keys (draft-05)
Bumped draft-04 → draft-05 (draft-hardt-httpbis-signature-key-05.txt). The
Signature Keys spec is now maintained in its own repository
(https://github.com/dickhardt/signature-key); the protocol references its
editor's copy via [@!I-D.hardt-httpbis-signature-key]. draft-05 names a second
author (T. Meunier, Cloudflare) and a Signature-Error header for structured
error reporting.
Author's verbatim changelog (drafts 03–08)
Reproduced from the Document History section of
v08/draft-hardt-oauth-aauth-protocol.md:
draft-hardt-oauth-aauth-protocol-08
- Call chaining: upstream token
audMUST equal theissof the intermediary's agent token; routing to PS or AS is derived from the upstream auth token (mission.approveroriss), not the calling agent'spsclaim; PS MUST require a mission to remain in the loop for four-party upstream chains.- Interaction code: added that the code is a correlation identifier, not an authorization credential; the code alone MUST NOT authorize the decision.
draft-hardt-oauth-aauth-protocol-07
- Added
Interaction Callback Errorssection defining the?error=wire format for callback redirects (access_denied,user_abandoned,server_error,temporarily_unavailable,interaction_expired) and the PS mapping to polling errors. Updated Resource-Initiated Interaction to reference the new section and specify PS behavior on error callbacks. Added Joshua Gay to Acknowledgments.draft-hardt-oauth-aauth-protocol-06
- Implementation and interoperability clarity driven by feedback from Joshua Gay (sidecat): mission reference dereference boundary and
approver/s256syntax rules; agent keying material restricted toscheme=jwt;AAuth-Requirementparameter shape and unknown-value behavior;AAuth-Accesstoken grammar (token68);AAuth-Capabilitiesforward-compatibility; JWKS same-kidrefresh and egress admission; auth token verification split into JWT trust and request-context binding with structuredcnf.jwkfailure ordering; PS approval endpoint authentication security consideration; freshness and replay policy subsection. Interoperability demo profile extracted to a standalone non-normative document.draft-hardt-oauth-aauth-protocol-05
- Auth tokens:
actis OPTIONAL, absent in direct authorization;act.agentidentifies the immediate upstream agent (the delegator), not the presenter; nesting records the full chain. Updated verification steps, sub-agent issuance, PS upstream token construction, and delegation chain examples accordingly. Replaced the "sub-agent calls a chained resource" example with "sub-agent inside a chain."draft-hardt-oauth-aauth-protocol-04
- Auth tokens: replaced
act.subwithact.agentwithin eachactnode; see issue #47.draft-hardt-oauth-aauth-protocol-03
- Metadata: added a common-fields table at the top of the Metadata Documents section covering all four well-known files; documented intentional RFC 9728 divergences (
issuernotresource; unprefixed field names).- Metadata: added
documentation_uritoaauth-agent.json,aauth-person.json, andaauth-access.json.- Interaction code: updated Crockford base32 citation to
[@?I-D.crockford-davis-base32-for-humans].
v02/ — AAuth draft-02 snapshot
The release that bundles protocol draft-02 with the revised R3 (draft-00) and the unchanged bootstrap (draft-01). Everything in this folder is listed together so an R3 or bootstrap change travels with the protocol version it shipped in.
Protocol (draft-02)
Published as IETF draft-hardt-oauth-aauth-protocol-02. Grouped below by theme. New wire identifiers and their first-introduction counts (v01 → v02) are noted to make the surface area auditable.
1. Sub-agents (new)
An orchestrating agent can spawn short-lived workers under a single user consent, while each sub-agent stays individually identifiable for audit and revocation.
- New top-level section
# Sub-Agents(#sub-agents, v02 line 1728) with subsections Sub-Agent Identity (1732), Single-Level Depth (1752), Parent-Mediated Authorization (1761), and Delegation Chain Examples (#delegation-chain-examples, 1776). - New agent-token claim
parent_agent(0 → 18 occurrences) — marks an agent as a sub-agent and names its parent; registered in the JWT Claims registry. - New PS/AS token-endpoint body parameter
subagent_token(0 → 13) — the parent obtains auth tokens on the sub-agent's behalf. A sub-agent MUST NOT call the PS directly. - Single-level depth rule: a sub-agent MUST NOT have sub-agents of its own.
+reserved as the sub-agent local-part delimiter (e.g.aauth:planner.7f3c+search1@vendor.example); parties rely onparent_agent, not local-part parsing, for protocol decisions.- Auth-token
actclaim nests to record the full delegation chain (agent → parent → … ), shown in Delegation Chain Examples.
2. Drop-in adoption path (new)
Identity-based access replaces API keys; resource-managed access wraps an existing OAuth/consent flow. Discovery lets an agent go from hostname to a working API call.
- New resource-metadata field
access_mode(0 → 10): one ofagent-token,aauth-access-token, orauth-token, letting an agent plan its first call without a speculative challenge. Advisory — runtimeAAuth-Requirementremains authoritative. - New section
## Drop-In Replacement for API Keys and OAuth(#drop-in-migration, v02 line 2481). - New walkthrough
### Consuming a Resource End to End(#consuming-a-resource, 2490). - New section
## Agent Token Required(#requirement-agent-token, 732) addingrequirement=agent-token(401) (0 → 5) — distinct fromrequirement=auth-token; asks for the agent's own identity token with no PS/AS involved. jwks_urirelaxed in resource metadata: REQUIRED only when the resource issues resource tokens or makes signed calls (an identity-only resource MAY omit it).- Bootstrapping guidance: resources SHOULD publish
access_modeand an R3 vocabulary.
3. Tighter interaction handling
PS-relayed user interactions, clearer terminal vs. non-terminal errors, and a fully specified interaction-code format.
- Terminal error renamed:
interaction_required→user_unreachable(0 → 6). Published draft-02 error table lists it as 403 (#token-endpoint-error-codes, v02 line 2194).Note: the earlier planning note
v01/upcoming-changes-02.md§2 proposed status 400 for this error. The published draft uses 403. The SDK's forward-lookingTokenErrorCode.UserUnreachablewas modeled at 400; it was reconciled to 403 in the draft-02 migration (Phase 1). - New non-terminal error
interaction_unavailable(424) (0 → 6) — the PS declining to relay a specific interaction; the agent falls back to directing the user itself. Defined in new section### Interaction Endpoint Errors(#interaction-endpoint-errors, 1265; table row at 1271). - PS-first interaction relay: new
#### Relaying Through the Person Server(#interaction-relay, 2022) — the agent SHOULD relay to the PS's interaction endpoint before directing the user itself. - New interaction parameter
max_wait(0 → 4) bounding how long the PS holds a relay's deferred response; clarified completion polling for resource-hosted interactions (status: "interacting"). - New
#### Interaction Code Format(#interaction-code-format, 2004): Crockford base32 alphabet (0 → 8) omittingI L O U, ≥40 bits of entropy, presentational hyphens stripped before case-insensitive compare, single-use, mandatory rate-limiting, and expiry bound to the pending interaction — documented as the brute-force defense in Interaction Code Misdirection.
4. PS token-endpoint parameters (new)
prompt(OPTIONAL) — OIDC valuesnone/login/consent/select_account, per OpenID Core §3.1.2.1 (v02 line 886). (v01 had nopromptparameter.)capabilities(OPTIONAL) — array of capability values; the request-body equivalent of theAAuth-Capabilitiesheader, which is not used on PS endpoints (v02 line 889). Without a mission, this is how the PS learns the agent's capabilities.
5. Clarifications and hardening
- Mission reference: the
{approver, s256}pair is now a named concept (0 → 6 "mission reference"), used consistently for themissionclaim in resource and auth tokens — distinct from the full mission blob. - Metadata host-binding: a fetched metadata document's
issuerMUST match the URL it was retrieved from (prevents host-poisoned metadata). - Optional Markdown
descriptionfield added to every well-known metadata document (agent, person, access, resource). - Call chaining: clarified the intermediary signs with its own key and that
upstream_tokenis a body parameter (neither presented viaSignature-Keynor used as the signing key). - HTTP Message Signatures: added rationale for the mandated covered
components (
@method,@authority,@path,signature-key). - Security: new
## Non-Repudiation and Audit After Key Rotation(v02 line 2617); clarified the agent token is AAuth's minimum credential (identity Signature-Key schemes only — pseudonymhwk/jkt-jwtare not an AAuth access mode). WWW-Authenticate: AAuth never conveys its own requirements viaWWW-Authenticate, leaving a resource's existing challenges available alongsideAAuth-Requirement.
6. Editorial
- Removed the empty "Clarification Flow" subsection.
- Renamed "Why Four Adoption Modes" → "Why Four Resource Access Modes".
- Diagrams use snake_case
agent_token/auth_token. - Resource-access challenge sections ordered weakest-to-strongest; distinct
anchors added to appendix flow diagrams (
#flow-call-chaining,#flow-interaction-chaining).
R3 (draft-00, revised)
The R3 (Rich Resource Requests) draft kept its -00 version value but its
content was revised between snapshots. Section-level changes (v01 → v02):
- New
## Operations Spanning Multiple Definitions(#operations-spanning-definitions). - New top-level section
# Per-Call Proposals(#per-call-proposals) with subsections Proposal Document, Flow, and Large and Sensitive Payloads. - Explicit anchors added to
# R3 Document(#r3-document) and## Content Addressing(#content-addressing).
Bootstrap (draft-01, unchanged)
Byte-identical between the v01/ and v02/ snapshots. Retained in both folders
so each is self-contained.
Author's verbatim changelog (protocol)
Reproduced from the Document History section of
v02/draft-hardt-oauth-aauth-protocol.md:
draft-hardt-oauth-aauth-protocol-02
- Added sub-agents: agent token
parent_agentclaim, single-level depth, parent-mediated authorization with asubagent_tokenparameter, and the+sub-agent local-part delimiter; registeredparent_agentin the JWT Claims registry.- Renamed the terminal
interaction_requirederror touser_unreachable; addedinteraction_unavailable(424) and PS-first interaction relay; clarified completion polling for resource-hosted interactions; added themax_waitinteraction parameter.- Added
capabilitiesand OIDCpromptrequest parameters to the PS token endpoint.- Added
requirement=agent-token(401); ordered the resource-access challenge sections weakest-to-strongest.- Added an
access_moderesource-metadata field, a "Drop-In Replacement for API Keys and OAuth" section, and a "Consuming a Resource End to End" walkthrough; relaxedjwks_urito be required only when the resource issues resource tokens or makes signed calls.- Added an OPTIONAL Markdown
descriptionfield to each well-known metadata document.- Metadata: require the returned
issuerto match the URL it was fetched from.- Call chaining: clarified that the intermediary signs with its own key and
upstream_tokenis a body parameter.- Added rationale for the mandated covered components in the HTTP Message Signatures profile.
- Added a Security Consideration on non-repudiation after key rotation; clarified that the agent token is AAuth's minimum credential (identity Signature-Key schemes only; pseudonym
hwk/jkt-jwtnot an AAuth mode).- Bootstrapping: pointer to the AAuth Bootstrap document; resources SHOULD publish
access_modeand an R3 vocabulary.- Diagrams: use snake_case
agent_tokenandauth_token.- Named the
{approver, s256}pair the "mission reference" and used it consistently for themissionclaim in resource and auth tokens, distinct from the full mission blob.- Stated that AAuth never conveys its own requirements via
WWW-Authenticate, leaving a resource's existing challenges available alongsideAAuth-Requirement.- Specified the interaction
codeformat: Crockford base32 alphabet, ≥40 bits of entropy, presentational hyphens stripped before case-insensitive comparison, single use, mandatory rate-limiting, and expiry bound to the pending interaction; documented the entropy/rate-limit rules as the brute-force defense in Interaction Code Misdirection and made the fourcodeexamples consistently hyphenated.- Editorial consistency pass: trimmed redundant mode walkthroughs, removed the empty "Clarification Flow" subsection, and added distinct anchors to the appendix flow diagrams.
v01/ — AAuth draft-01 snapshot (baseline)
The baseline the v02/ entries are measured against: protocol draft-01,
bootstrap draft-01, R3 draft-00. Pinned to source commit c090879
(2026-05-11); see SPEC-VERSION.md.
This folder also retains upcoming-changes-02.md —
the planning notes that tracked the confirmed draft-02 deltas before the -02 draft
was published, now superseded by the v02/ snapshot above.