Standards Alignment & IETF Strategy — Agent Delegation Authorization
Verified against primary IETF sources, August 17, 2026. This document decides
what we reuse, what we invent, where we take it, and how we get it adopted.
Companion to the Internet-Draft draft-asor-wimse-agent-delegation-chain (published revision -00, posted 2026-08-27; current working revision source draft-asor-wimse-agent-delegation-chain-01.md)
and the DevX review (DEVX-REVIEW.md).
The one thing to internalize
We are not first, and that is the good news. Enforced, monotonic,
offline-verifiable attenuation across agent delegation chains is one of the most
active corners of the IETF right now — roughly sixteen individual drafts, two of
them near-twins of our design, and a multi-vendor umbrella draft
(draft-klrc-aiagent-auth, authored across Defakto/AWS/Zscaler/Ping/OpenAI/Okta)
heading for WIMSE adoption. None is WG-adopted yet, so the mechanism slot is
still open. The real risk is becoming the seventeenth redundant
capability-token draft the working group ignores. The winning move is
convergence plus one narrow, well-justified differentiator backed by running
code, not a fresh standalone land-grab. Everything below
serves that.
What we reuse vs. what we invent (the whole strategy in one table)
An IETF reviewer rejects anything that reinvents crypto or overlaps existing work. So we invent exactly one thing and profile everything else.
| Layer | We REUSE (don't touch) | Standard |
|---|---|---|
| Token container | JWT + JWS; parallel CWT/COSE binding via a CDDL model | RFC 7519 / 7515; 8392 / 9052 / 8949 / 8610 |
| Access-token profile | at+jwt claim discipline (iss,exp,aud,sub,iat,jti) |
RFC 9068 |
| Authority representation | authorization_details as a top-level claim |
RFC 9396 (Rich Authorization Requests) |
| Holder binding / PoP | cnf confirmation claim + DPoP proof; mTLS optional |
RFC 7800 / 8747; 9449; 8705 |
| Delegation identity/history | act / may_act / actor_token |
RFC 8693 (Token Exchange) |
| Cross-org hop | Identity Chaining (Token Exchange + JWT assertion) | draft-ietf-oauth-identity-chaining (RFC-Ed queue) |
| Revocation at scale | Token Status List + short TTL; RFC 7009 endpoint optional | draft-ietf-oauth-status-list; RFC 7009 |
| Signatures | Ed25519 mandatory, ES256 alternate, ML-DSA permitted; fully-specified algs | RFC 8032/8037; 9864; 9964 |
| Identity substrate | WIT / WPT (workload identity + proof tokens); SPIFFE | draft-ietf-wimse-workload-creds, -wpt |
| We INVENT (only this) | the cryptographically-linked, subsumption-enforced, offline, multi-hop attenuation chain + its verification algorithm | our draft |
The invented layer is legitimate to invent because RFC 8693 provably cannot do
it: its nested act chain is informational history only ("a consumer MUST
only consider the top-level claims and the current actor"), so it cannot enforce
that hop N's authority ⊆ hop N−1's, offline, at depth ≥ 2. That single
sentence — "8693 can't do it, here is the minimal addition" — is our cleanest
gap argument and the spine of the draft's introduction.
The competitive draft map (know your neighbors)
Convergence requires knowing exactly who is already here. All individual, none adopted, as of Aug 2026:
draft-niyikiza-oauth-attenuating-agent-tokens(Tenuo) — our near-twin. JWT + RFC 9396 +par_hash(SHA-256 of the parent JWS Signing Input) chainingdel_depth/del_max_depth+cnf/DPoP + monotonic attenuation, offline. Rust reference impl ("warrants"). This is prior art we must cite and a co-authorship target — not something to silently duplicate.draft-coetzee-oauth-spt-txn-tokens(SPT-Txn) — the most complete rival. CAT→CT→TXN tiers; five invariants (monotonic scope, chain intersection, monotonic TTL, bounded depth, full-chain byte-commitment against splicing); intent binding via SHA-256 over RFC 8785 JCS; Token Status List revocation; PQ agility. Study its five invariants; our invariants must match or exceed and our delta must be explicit.draft-klrc-aiagent-auth(the umbrella) — a composition BCP (the "AIMS" stack) reusing WIMSE + OAuth primitives, multi-vendor, heading for WIMSE adoption as the anchor document. Align hardest here: become the attenuation mechanism this umbrella points to. Fighting it is fatal; complementing it is the fast path.draft-reece-wimse-cross-org-delegation— a requirements draft whose R1 literally mandates recursive attenuation ("each hop conveys a subset… no hop exceeds its predecessor"). Our single best anchoring hook: position the draft as "the mechanism that satisfies Reece R1."draft-sweeney-wimse-credential-delegation— enforces subset at an online Delegation Server. Our differentiator vs. Sweeney is explicit: offline, issuer-free chain verification. Do not undercut it by mandating online infrastructure.draft-munoz-wimse-authorization-evidence("Permit" records, SCITT COSE),draft-nennemann-wimse-ect(execution-history DAG),draft-ni-wimse- ai-agent-identity(agent↔owner identity binding) — all complementary layers we plug into, not compete with: evidence/audit, execution history, and identity respectively.draft-prakash-aip— puts Biscuit (protobuf + Datalog) at the IETF as a chained-capability option. Forces us to explicitly justify a JOSE-native format over Biscuit's wire format (we do: reviewer familiarity + no new envelope; see the draft's rationale).
The review bar we must clear (already on the record)
The OAuth WG's critique of the attenuation approach (Neil Madden, June 2026) is the exact bar. Our Security Considerations pre-empt every point:
- "Why not just use macaroons?" — because macaroons verify with the root secret (symmetric HMAC), so every enforcement point must hold the minting key; no public/offline verification at an untrusted edge. We use public-key signatures (Ed25519), verifiable with only the root public key.
- "Nothing is removed when deriving a token, so the parent stays valid." —
the sharpest attack. Attenuation produces a new child token but does not
invalidate the parent; a holder of the parent still has the parent. We
address it three ways: (a) parent tokens are short-TTL and holder-bound
(
cnf), so a leaked parent is both time-boxed and non-replayable without the key; (b) chain byte-commitment (child commits to the parent's exact bytes) makes splicing a different parent detectable; (c) Token Status List lets an issuer revoke a parent (and, by policy, its subtree) early. - Intermediate-token replay / PoP gaps. — every hop is
cnf-bound and requires a per-request DPoP proof; a captured intermediate token is unusable without its bound key. - RFC 2693 (SDSI/SPKI) precedent. — we cite it as the standards-track ancestor and explain what we reuse from the modern stack instead.
Plus the SPT-Txn-class concerns we adopt proactively: chain splicing (bound by
byte-commitment), unbounded depth (hard del_max_depth), and confused
deputy (each hop's authority is the meet, and tool audience is pinned).
Where it goes: WIMSE, on OAuth primitives
Primary WG home: WIMSE (Workload Identity in Multi-System Environments,
Security Area). It is the gravity well for agent identity/authz, it is about to
adopt draft-klrc-aiagent-auth as its anchor, it hosts the Reece requirements
draft we answer, and it owns the WIT/WPT identity substrate our tokens bind to.
Coordinate with OAuth, whose primitives (RAR, Token Exchange, Status List,
DPoP) we normatively reference and where the two twin drafts live. Concrete
shape: a WIMSE profile that normatively references OAuth primitives,
socialized on both lists.
Avoid: the agentproto BoF (it explicitly scoped authorization out), GNAP
(RFC 9635 — richer but near-zero deployment; building on it signals NIH), and
opening a new BoF (unnecessary with two live homes).
The five moves that most increase acceptance
- Ship running code + interop, matching the bar already set. A permissively
licensed reference verifier, published offline-verification test vectors
(canonicalized per RFC 8785 JCS), and a second independent implementation.
Tenuo has a Rust impl; the A2A project already runs cross-implementation CI
vectors.
attenu-guardis our reference implementation — this is why it exists and why it must be excellent. - Profile, don't reinvent (the table above). Every layer cites the standard it reuses; we invent only the chain + verification algorithm.
- Anchor to existing consensus artifacts. Frame the draft as "the
mechanism satisfying
draft-reece-wimse-cross-org-delegationR1" and "the attenuation companion todraft-klrc-aiagent-auth." Recruit a WIMSE chair/AD champion early (Responsible AD: Charles Eckel). - Converge with incumbents. Reach out to Niyikiza (Tenuo), Coetzee (SPT-Txn), Sweeney, and the klrc authors before submitting. A merged, multi-implementer draft is dramatically more adoptable than a parallel one — multi-vendor co-authorship is precisely the pattern that got Txn-Tokens and Identity Chaining through.
- Enter the process cleanly and narrowly. Post to the WIMSE + OAuth lists now; request a WIMSE interim before IETF 127; submit a tight -01 before the Nov 2, 2026 I-D cutoff; request a WG slot (by Oct 2, 2026) for IETF 127, San Francisco, week of Nov 14, 2026; bring a one-slide gap analysis vs. Txn-Tokens/RAR/Identity-Chaining and a live offline-verify demo.
What repels a working group (do not do)
A boil-the-ocean mega-draft (identity + attestation + delegation + revocation + PQ in one) — WGs adopt narrow composable documents; keep our normative core to chain construction + verification algorithm + revocation binding. NIH / overlap — do not re-solve cross-domain chaining, context propagation, revocation lists, or the composition umbrella. Vendor-branded framing — neutral terminology (no "Attenu" claims, no company-named tokens), full IPR disclosure, BSD/MIT reference code. Mandating online infrastructure — it contradicts our offline-verification differentiator. Weak Security Considerations — replay, PoP, splicing, depth, confused-deputy, revocation latency each addressed head-on. Cold-dropping the draft — socialize on the lists first, then submit.
Timeline
- Now (Aug–Sep 2026): finalize the -01, maintain the Python and TypeScript reference verifiers and shared vectors, continue convergence with the nearby draft authors, and bring the revision to the WIMSE and OAuth lists.
- BoF proposals close Sep 18, 2026; WG session requests close Oct 2, 2026; I-D submission cutoff Nov 2, 2026.
- Ask WIMSE chairs for an interim before IETF 127 (they offered).
- IETF 127, San Francisco, week of Nov 14, 2026 — present with running code.
- Realistic individual-draft → RFC: ~2–4 years even when healthy. Adoption
(becoming
draft-ietf-wimse-…) is the near-term win that matters commercially — it is the "we are the standard" proof for customers and acquirers, and it is achievable in the 2027 timeframe if convergence works.