<!-- Attenuated delegation and OAuth/WIMSE: what is reused, what is new — Attenu. Source: https://github.com/attenu-io/attenu-guard/blob/main/docs/STANDARDS-ALIGNMENT.md · Rendered: https://attenu.io/docs/standards/ · Updated 2026-08-30 -->

# 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](https://datatracker.ietf.org/doc/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) chaining
  + `del_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:

1. **"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.
2. **"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.
3. **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.
4. **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

1. **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-guard` is our reference implementation — this is why it
   exists and why it must be excellent.
2. **Profile, don't reinvent** (the table above). Every layer cites the standard
   it reuses; we invent only the chain + verification algorithm.
3. **Anchor to existing consensus artifacts.** Frame the draft as *"the
   mechanism satisfying `draft-reece-wimse-cross-org-delegation` R1"* and *"the
   attenuation companion to `draft-klrc-aiagent-auth`."* Recruit a WIMSE
   chair/AD champion early (Responsible AD: Charles Eckel).
4. **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.
5. **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.
