AAuth -11: six access-mode diagrams - #7
Merged
Merged
Conversation
The four mode diagrams all opened with `HTTPSig w/ agent_token` + `POST /authorize`, which -11 no longer permits: an agent MUST present a person token at a resource's authorization endpoint, and a resource MUST have verified one before it issues a resource token. Every authorization flow therefore starts at the PS's person token endpoint. - Identity Based: unchanged. - Resource Managed: "AAuth Access Token" is now the session token, the one credential a resource issues for its own consumption. Returned in `AAuth-Access`, presented back in `Authorization: AAuth`, with `authorization` in the signature's covered components — not DPoP, which the old copy claimed. - Person Identity: new. Person token from `POST person_token_endpoint`, presented via `Signature-Key` in place of the agent token; the resource serves on the person's identity alone. No resource token, no auth token. - Person Server Managed: `POST /person` first, `/authorize` signed with the person token, resource token carries `ps`/`sub`/`person_token_jti`, and the PS hop is `POST /auth_token` (the metadata field `token_endpoint` was renamed `auth_token_endpoint`). - Federated: same, plus the PS calling the AS's `auth_token_endpoint`. - Per-Call: new, from R3 -02. The resource challenges an `r3_per_call` invocation with a resource token whose `r3_uri`/`r3_s256` reference a per-call proposal; the AS fetches it and evaluates the parameters, the PS puts them to the person, and the resource verifies the retry against what was approved. Six diagrams push the shared diagram height from 516 to 644, so a short diagram trailed 440px of dangling lifeline through the reserved space. Lifelines now stop just past the last message; the box stays one height so switching tabs does not shift the page. llms.txt: five access modes, not four, named as -11 names them; four token types plus the session token. Dropped the pin to draft-hardt-oauth-aauth-protocol-01. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FmiCqDjRUSx6zb1N4gZPXE
Deploying with
|
| Status | Name | Latest Commit | Updated (UTC) |
|---|---|---|---|
| ✅ Deployment successful! View logs |
aauth-dev | e1d7224 | Aug 12 2026, 01:32 PM |
This was referenced Aug 12, 2026
Merged
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Six access-mode diagrams for AAuth -11, replacing four that describe a flow the protocol no longer permits.
Why
All four existing mode diagrams opened with
HTTPSig w/ agent_token+POST /authorize. -11 does not permit that: an agent MUST present a person token at a resource's authorization endpoint, and a resource MUST have verified one before it issues a resource token. So every authorization flow now starts at the PS's person token endpoint, and every diagram that showed otherwise was teaching the wrong thing.wwwis the public explanation of AAuth. A diagram here that contradicts the fleet is worse than no diagram.The six
AAuth-Access, presented back inAuthorization: AAuth, withauthorizationin the signature's covered components. Not DPoP, which the old copy claimed.POST person_token_endpoint, presented viaSignature-Keyin place of the agent token; the resource serves on the person's identity alone. No resource token, no auth token.POST /personfirst,/authorizesigned with the person token, resource token carriesps/sub/person_token_jti, and the PS hop isPOST /auth_token(the metadata fieldtoken_endpointwas renamedauth_token_endpoint).auth_token_endpoint.r3_per_callinvocation with a resource token whoser3_uri/r3_s256reference a per-call proposal; the AS fetches it and evaluates the parameters, the PS puts them to the person, and the resource verifies the retry against what was approved.Layout
Six diagrams push the shared diagram height from 516 to 644, which left a short diagram trailing 440px of dangling lifeline through the reserved space. Lifelines now stop just past the last message; the box stays one height so switching tabs does not shift the page.
llms.txtFive access modes, not four, named as -11 names them; four token types plus the session token. Dropped the pin to
draft-hardt-oauth-aauth-protocol-01— -11 is not on the datatracker (404; -10 is latest), so this points at the document page and the editor's copy rather than pinning a revision that does not exist.This is one coordinated wave
Twelve PRs across twelve repositories implement AAuth -11 and R3 -02, built in parallel worktrees that could not see each other and reconciled in one integration pass.
Merging any one alone breaks the others. For this repo the coupling is documentary rather than functional, which does not make it optional:
aauth.devdocuments a protocol that no live service speaks. The Person Identity and Per-Call diagrams describe flows onlyhellocoop/mockincan currently serve./authorize— the exact thing every resource in the wave now answers with401 requirement=person-token.mainauto-deploys. There is no staging, and this is the public site.The twelve PRs
hellocoop/mockindickhardt/AAuthaauth-dev/packages-js@aauth/protocol1.0.0 (new),@aauth/agent3.0.0,@aauth/resource2.0.0, five more.aauth-dev/proxy@aauth/proxy1.0.0 — the agent-proxy core.hellocoop/aauth-proxyhellocoop/proxy-mcp@aauth/proxy^1.0.0; AP metadata cleanup.aauth-dev/notesaauth-dev/whoamiaauth-dev/web-agent-demo(playground)202deferred path.aauth-dev/playground-popupaauth-dev/registryaauth-dev/wwwRelated and already open:
aauth-dev/explorer#5 reworks the explorer for -11 / R3 -02.Background:
AAUTH-11-INTEGRATION.md(the integration ledger) andAAUTH-11-PACKAGE-CONTRACT.md(the pinned interface contract the parallel work packages were built against).Ordering constraints for the wave
@aauth/protocol1.0.0 needs a manual first publish — npm will not register a trusted publisher for a name absent from the registry.@aauth/proxy1.0.0 must publish before the fleet servesaccess_mode: person-token. 0.4.0 hard-fails on an unrecognized value.HelloCoop/Walletsvr/issuer/sign.js:32must shipEd25519in the same window.const alg = useEdDSA ? 'EdDSA' : 'RS256',useEdDSA = isAAuthType(typ), so everyaa-auth+jwtandaa-person+jwtperson.hello.coopissues today isEdDSA. Every verifier in this wave rejects it. RS256 stays for OIDC.Not covered
There are no tests here — it is a Svelte site. Two things a reviewer should know:
hellocoop/mockinis the only thing in the world that does. So these diagrams are drawn from the specification and the implementations, not from an observed trace.mission_endpointis unimplemented by agreement across the wave, andmission_s256travels only inside PS-issued tokens.Known-deferred, recorded so it is not lost
src/lib/walkthrough.mdstill narrates the -10 three-party flow. Left alone deliberately — rewriting it would describe events that@aauth/fetchandwhoami.aauth.devdo not emit yet. It should be revisited once the fleet is live on -11.+page.svelte~737–758 nests an<a>inside an<a>, throwingnode_invalid_placement_ssron every render. Pre-existing and unrelated to -11 — noted here only so a reviewer seeing it in the logs does not attribute it to this PR.