<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.43 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-asor-wimse-agent-delegation-chain-02" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <front>
    <title abbrev="Agent Delegation Chain">Verifiable Attenuated Delegation for AI Agent Chains</title>
    <seriesInfo name="Internet-Draft" value="draft-asor-wimse-agent-delegation-chain-02"/>
    <author initials="R." surname="Asor" fullname="Rafael Asor">
      <organization>Attenu</organization>
      <address>
        <email>rafael.asor@gmail.com</email>
        <uri>https://attenu.io/</uri>
      </address>
    </author>
    <date year="2026" month="October" day="15"/>
    <area>Security</area>
    <workgroup>WIMSE</workgroup>
    <keyword>agent</keyword>
    <keyword>delegation</keyword>
    <keyword>attenuation</keyword>
    <keyword>authorization</keyword>
    <keyword>capability</keyword>
    <abstract>
      <?line 59?>

<t>AI agents increasingly delegate tasks to other agents. Each delegation should
convey only a subset of the delegating party's authority, that subset should be
bounded in scope, magnitude, and time, and any enforcement point should be able
to verify -- offline, with no call to an authorization server -- that a token
presented at hop N carries authority no greater than the token at hop N-1, back
to a trusted root, and that every hop acts under the same accountable
principal. OAuth 2.0 Token Exchange (RFC 8693) models two-party delegation and
records prior actors in a nested "act" claim, but that claim is informational
only and cannot enforce attenuation across a chain of depth two or more. This
document defines the Agent Delegation Chain: a profile of OAuth 2.0 JWT access
tokens (RFC 9068) that carries authority as Rich Authorization Requests (RFC
9396), binds the chain to one principal and names the agent acting at each hop,
links each delegation to its parent by a cryptographic byte-commitment, and
specifies a deterministic offline verification algorithm that enforces
monotonic attenuation, bounded depth, monotonic expiry, and principal
invariance. It reuses existing JOSE, proof-of-possession (RFC 9449), and
status-list machinery (the OAuth Status List draft) and introduces no new
cryptography.</t>
    </abstract>
  </front>
  <middle>
    <?line 80?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>An AI agent that receives a task from a user or another agent frequently
decomposes it and delegates sub-tasks to further agents or tools. In production
deployments this produces delegation chains of depth greater than two. The
security requirement is a single invariant: the authority exercised at any hop
<bcp14>MUST</bcp14> be a subset of the authority granted at the hop that delegated to it, and
this <bcp14>MUST</bcp14> be verifiable by the enforcement point that ultimately honors a tool
call, without that point contacting an authorization server.</t>
      <section anchor="the-gap-in-existing-mechanisms">
        <name>The gap in existing mechanisms</name>
        <t>OAuth 2.0 Token Exchange <xref target="RFC8693"/> defines delegation and impersonation
semantics and a nestable "act" claim. However, <xref target="RFC8693"/> Section 4.1 states
that a recipient considers only the top-level claims and the current (outermost)
actor; the nested chain is history for audit, not enforced authority. Token
Exchange also normally contacts the authorization server at each hop. Neither
property supports offline, enforced, depth &gt;= 2 attenuation.</t>
        <t>Cross-domain identity chaining (see <xref target="I-D.ietf-oauth-identity-chaining"/>) and
transaction tokens address related but distinct problems (crossing trust domains
and propagating immutable context within one domain, respectively) and
explicitly do not provide chained cryptographic attenuation.</t>
        <t>Capability systems that do provide offline attenuation -- macaroons
<xref target="Macaroons"/>, Biscuit <xref target="Biscuit"/> -- either verify with a shared secret
(macaroons: symmetric HMAC, so every verifier holds the minting key) or use a
non-IETF wire format (Biscuit: protocol buffers with an embedded Datalog engine).
The historical standards-track ancestor is SDSI/SPKI <xref target="RFC2693"/>.</t>
        <t>This document fills the gap by reusing the JOSE/OAuth stack and adding only the
chain linkage, the principal binding, and the subsumption-enforcing verification
algorithm. It is designed as the attenuation mechanism satisfying requirements
R1 and R5 of <xref target="I-D.reece-wimse-cross-org-delegation"/> and as a companion to
<xref target="I-D.ietf-wimse-aims"/>, whose placement of the acting agent in "client_id" and
the on-behalf-of party in "sub" this profile follows. It shares its approach
with, and is intended to converge with,
<xref target="I-D.niyikiza-oauth-attenuating-agent-tokens"/> and
<xref target="I-D.coetzee-oauth-spt-txn-tokens"/>. Its offline verification model is
complementary to the online Delegation Server and synchronous revocation model
in <xref target="I-D.sweeney-wimse-credential-delegation"/>. The two are halves of one
design, separated by a single axis: whether a server is in the path. The
in-token mechanisms this document requires -- constraints carried in the token,
parent-hash verification, and a child expiry bounded by its parent's -- are how
a verifier with no network reconstructs what such a server would otherwise know
first-hand; where a server is in every hop, they are redundant rather than
absent. The verifier-side evaluation rules of <xref target="I-D.jackson-wimse-evaluation"/>
describe the receiving half of the same problem; this document cites that work
informatively, and no requirement here depends on it.</t>
      </section>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

<dl>
        <dt>Delegation Token (DT):</dt>
        <dd>
          <t>An OAuth 2.0 JWT access token <xref target="RFC9068"/> profiled by this document, carrying
the authority granted to one agent at one hop of a chain.</t>
        </dd>
        <dt>Delegation Chain:</dt>
        <dd>
          <t>An ordered sequence of Delegation Tokens DT_0, DT_1, ... DT_n, where DT_0 is
the root, and each DT_i (i &gt; 0) is linked to DT_{i-1} by the mechanism in
<xref target="chain-linkage"/>. A chain is one path. An agent that holds tokens issued
along several paths holds several chains; see <xref target="several-chains"/>.</t>
        </dd>
        <dt>Principal:</dt>
        <dd>
          <t>The party accountable for the chain: the party whose grant every token in
the chain acts under. Carried in "sub", identical at every hop
(<xref target="token-format"/>).</t>
        </dd>
        <dt>Acting Agent:</dt>
        <dd>
          <t>The agent that holds, and acts under, one Delegation Token. Carried in
"client_id", which names the agent acting at each hop.</t>
        </dd>
        <dt>Authority:</dt>
        <dd>
          <t>The set of permitted scope values carried by an "agent_delegation"
authorization detail in the "authorization_details" claim <xref target="RFC9396"/>,
together with the constraints in <xref target="constraints"/>.</t>
        </dd>
        <dt>Attenuation:</dt>
        <dd>
          <t>The construction of a child Delegation Token whose Authority is a subset of
its parent's, per the subsumption rules in <xref target="subsumption"/>.</t>
        </dd>
        <dt>Enforcement Point:</dt>
        <dd>
          <t>The component that verifies a Delegation Chain and permits or denies an action.</t>
        </dd>
        <dt>Verifier:</dt>
        <dd>
          <t>Any component that runs the algorithm of <xref target="verify"/>, whether or not it is
presented with an action. An Enforcement Point is a Verifier that is
presented with an action and decides it.</t>
        </dd>
      </dl>
    </section>
    <section anchor="token-format">
      <name>Token Format</name>
      <t>A Delegation Token is a JWT <xref target="RFC7519"/> signed with JWS <xref target="RFC7515"/> using a
fully-specified algorithm <xref target="RFC9864"/>. Implementations <bcp14>MUST</bcp14> support Ed25519
<xref target="RFC8032"/> <xref target="RFC8037"/> and <bcp14>MAY</bcp14> support ES256 and, for post-quantum readiness,
ML-DSA <xref target="RFC9964"/>. The token uses the "application/at+jwt" header type of
<xref target="RFC9068"/> and includes the claims that profile requires: "iss", "exp", "aud",
"sub", "client_id", "iat", and "jti". The protected header <bcp14>SHOULD</bcp14> contain
"c14n": "JCS" as an informational label. Verifiers <bcp14>MUST NOT</bcp14> rely on this field.
The canonicalization of the protected header and payload JSON is the JSON
Canonicalization Scheme (JCS) <xref target="RFC8785"/>: producers <bcp14>MUST</bcp14> serialize both with
JCS before base64url encoding, and verifiers <bcp14>MUST</bcp14> reject either decoded byte
string unless it is exactly the JCS serialization of the parsed object.
Verifiers <bcp14>MUST</bcp14> also reject duplicate object member names, non-finite numbers,
and lone UTF-16 surrogates. Because JCS numbers are IEEE 754 binary64 values,
an integer whose magnitude exceeds 2^53-1 is not represented exactly; producers
<bcp14>MUST NOT</bcp14> emit one, and verifiers <bcp14>MUST</bcp14> reject a token carrying one as malformed.</t>
      <t>The <xref target="RFC9068"/> claims carry the following meaning in a Delegation Token:</t>
      <dl>
        <dt>sub:</dt>
        <dd>
          <t><bcp14>REQUIRED</bcp14>. The Principal. <xref target="RFC9068"/> Section 2.2 makes "sub" the resource
owner where one exists; in a Delegation Chain the resource owner is the party
whose grant the chain acts under, and the same value <bcp14>MUST</bcp14> appear in every
DT_i of the chain. A verifier denies a chain in which any DT_i carries a
"sub" that differs from DT_0's (<xref target="verify"/>, step 3). A chain whose DT_0
carries no "sub", or a "sub" that is not a non-empty string, is malformed.</t>
        </dd>
        <dt>client_id:</dt>
        <dd>
          <t><bcp14>REQUIRED</bcp14>. The Acting Agent at this hop, as a string. It identifies which
software exercised the authority; "sub" identifies whose grant it exercised.
The value <bcp14>MAY</bcp14> be a workload identifier as defined by
<xref target="I-D.ietf-wimse-identifier"/>; this document places no requirement on its
format beyond being a string.</t>
        </dd>
        <dt>aud:</dt>
        <dd>
          <t><bcp14>REQUIRED</bcp14>. The audience, as <xref target="RFC7519"/> Section 4.1.3 defines it: a string,
or an array of one or more strings. A token whose "aud" is absent, null, or
an empty array is malformed. The Enforcement Point applies the audience check
of <xref target="RFC9068"/> Section 4 to DT_n (<xref target="verify"/>, step 8); this document places
no requirement on the audience of DT_i for i &lt; n beyond presence and shape.</t>
        </dd>
        <dt>iss, exp, iat, jti:</dt>
        <dd>
          <t><bcp14>REQUIRED</bcp14>, as in <xref target="RFC9068"/>. "exp" is additionally subject to the monotonic
expiry rule of <xref target="subsumption"/>. "jti" identifies the token instance for the
purposes of <xref target="chain-linkage"/> and of per-lifetime constraints
(<xref target="constraints"/>).</t>
        </dd>
      </dl>
      <t>In addition, a Delegation Token contains:</t>
      <dl>
        <dt>authorization_details:</dt>
        <dd>
          <t><bcp14>REQUIRED</bcp14>. An array of authorization detail objects <xref target="RFC9396"/> expressing the
Authority. See <xref target="authority"/>.</t>
        </dd>
        <dt>cnf:</dt>
        <dd>
          <t><bcp14>REQUIRED</bcp14>. A confirmation claim <xref target="RFC7800"/> binding the token to the holder's
key, proven per DPoP <xref target="RFC9449"/>. See <xref target="binding"/>.</t>
        </dd>
        <dt>del_depth:</dt>
        <dd>
          <t><bcp14>REQUIRED</bcp14>. A non-negative integer; the position of this token in the chain.
DT_0 has del_depth 0.</t>
        </dd>
        <dt>del_max_depth:</dt>
        <dd>
          <t><bcp14>REQUIRED</bcp14> in DT_0. A positive integer; the maximum permitted chain length.
<bcp14>MUST NOT</bcp14> be increased by any child (see <xref target="subsumption"/>).</t>
        </dd>
        <dt>par_hash:</dt>
        <dd>
          <t><bcp14>REQUIRED</bcp14> in every DT_i with i &gt; 0; <bcp14>MUST</bcp14> be absent in DT_0. The base64url-encoded
SHA-256 digest of the parent token's JWS Signing Input (<xref target="RFC7515"/> Section 5.1),
i.e. of the exact bytes "ASCII(BASE64URL(parent JOSE Header)) || '.' ||
ASCII(BASE64URL(parent JWS Payload))". This is the byte-commitment that binds a
child to one specific parent and prevents chain splicing.</t>
        </dd>
      </dl>
      <section anchor="principal">
        <name>Principal and Acting Agent</name>
        <t>A Delegation Chain answers two questions that a holder key alone does not: who
is accountable for what the chain does, and which agents took part. The first
is answered by "sub", which names the Principal and is invariant along the
chain: a child token is issued under the same grant as its parent, so it names
the same Principal, and a token that names a different one is not a member of
the chain. The second is answered by "client_id", which names the agent acting
at each hop. Together they make a chain auditable as well as verifiable.</t>
        <t>The "par_hash" commitment (<xref target="chain-linkage"/>) already prevents a child from
being re-parented onto a different token. It does not, by itself, prevent a
child from carrying a different "sub" than its parent, because the child is a
new token with its own payload. The invariance check in step 3 of <xref target="verify"/> is
what closes that gap, and it is a comparison of two strings, not new
machinery.</t>
        <t>This revision defines no transition mode for chains shaped by the previous
revision. A chain whose tokens carry no "client_id" or no "cnf", or whose
"aud" is null, is malformed under this revision. A verifier that also accepts
such chains under the previous revision's rules does so outside this document
and reports which revision's rules it applied.</t>
      </section>
    </section>
    <section anchor="authority">
      <name>Authority Representation</name>
      <t>For this profile, Authority is expressed by an authorization detail object
<xref target="RFC9396"/> whose "type" is "agent_delegation". A Delegation Token <bcp14>MUST</bcp14> carry
exactly one authorization detail object, and its type <bcp14>MUST</bcp14> be
"agent_delegation"; a token carrying a second detail, or a detail of any other
type, is malformed (<xref target="detail-types"/>). The object contains a
<bcp14>REQUIRED</bcp14> "scopes" member: an array of strings, where each string names one
permitted operation. An empty array conveys no permitted operation. Numeric and
enumerated bounds ("ceilings") that <xref target="RFC9396"/> does not standardize are carried
in the "constraints" member defined here. The object <bcp14>MUST NOT</bcp14> carry members
other than "type", "scopes", and "constraints"; a verifier that encounters
another member <bcp14>MUST</bcp14> reject the token as malformed, because it would otherwise
report success on a detail it had not fully read.</t>
      <section anchor="scopes">
        <name>Scope Syntax and Wildcards</name>
        <t>Each member of "scopes" <bcp14>MUST</bcp14> match the following ABNF <xref target="RFC5234"/>:</t>
        <artwork><![CDATA[
lower          = %x61-7A
digit          = %x30-39
segment        = lower *(lower / digit / "_" / "-")
literal-scope  = segment "." segment *("." segment)
wildcard-scope = segment *("." segment) ".*"
opaque-scope   = 1*( %x21 / %x23-29 / %x2B-5B / %x5D-7E )
scope          = literal-scope / wildcard-scope / opaque-scope
]]></artwork>
        <t>The "opaque-scope" form is the "scope-token" of <xref target="RFC6749"/> Section 3.3 with
the asterisk (%x2A) removed. It exists so that a chain can carry a scope string
issued by an OAuth authorization server under that server's own naming, which
the two structured forms do not admit.</t>
        <t>A verifier classifies each scope value by its bytes alone, trying the forms in
this order: a value that matches "literal-scope" is a literal scope; otherwise,
a value that matches "wildcard-scope" is a wildcard scope; otherwise, a value
that matches "opaque-scope" is an opaque scope. A value that matches none of
the three, for example one that contains an asterisk anywhere other than as a
complete final segment following a dot, is invalid. Thus <tt>crm.read</tt> is a
literal scope, <tt>crm.*</tt> is a wildcard scope, <tt>User.Read</tt> and <tt>openid</tt> are opaque
scopes, and the bare value <tt>*</tt>, the partial-segment form <tt>crm.re*</tt>, and the
non-terminal form <tt>crm.*.read</tt> are invalid. A producer <bcp14>MUST NOT</bcp14> emit an invalid
scope. A verifier that encounters one <bcp14>MUST</bcp14> reject the Delegation Token as
malformed before evaluating subsumption. There is no case folding: <tt>User.Read</tt>
and <tt>user.read</tt> are two different scopes.</t>
        <t>The covering relation between a parent scope and a child scope is:</t>
        <ul spacing="normal">
          <li>
            <t>A parent literal scope covers only an identical child scope.</t>
          </li>
          <li>
            <t>A parent wildcard scope covers any child scope, literal or wildcard, whose
value begins with the parent value after removing only the final <tt>*</tt> and
retaining the dot. Therefore <tt>crm.*</tt> covers "crm.read", "crm.x.y.z", and
<tt>crm.x.*</tt>; it does not cover the bare name "crm" or the adjacent namespace
"crmx.read". Wildcard coverage is segment-bounded and extends to any depth
below the named prefix, and a wildcard covers a narrower wildcard under its
prefix.</t>
          </li>
          <li>
            <t>A parent opaque scope covers only a byte-identical child scope. No wildcard
scope covers an opaque scope, and an opaque scope covers no wildcard scope.</t>
          </li>
        </ul>
        <t>One consequence of classifying by bytes alone is stated here so that
deployments can plan for it: a scope string issued by an authorization server
that happens to match "literal-scope" is treated as a literal scope, and a
wildcard over its prefix covers it. A deployment that needs such a scope to
match exactly should not grant a wildcard over its prefix; doing so also gives
up wildcard coverage for every other scope under that prefix. This document
provides no registry by which a verifier could tell a dotted provider string
from a structured literal, and does not add one.</t>
        <t>This covering relation belongs to the "agent_delegation" authorization detail
type; see <xref target="detail-types"/> for how the relation is bound to the type.</t>
      </section>
      <section anchor="constraints">
        <name>Constraint Vocabulary</name>
        <t>The "constraints" member is an array of objects. Each object contains a
<bcp14>REQUIRED</bcp14> "key" member, a string identifying the constrained dimension, and
exactly one typed constraint value, whose member name is the constraint type.
A constraint object is closed: its members are "key", that one type member,
and any member the type's definition adds ("order" for "rank"). A constraint
object carrying any other member is malformed, and a verifier <bcp14>MUST</bcp14> reject the
token. This document defines:</t>
        <ul spacing="normal">
          <li>
            <t>"max" : a number. The value of the associated quantity in one authorized
action <bcp14>MUST NOT</bcp14> exceed it (e.g. {"key": "max_rows", "max": 5000}). It is
measured per action: nothing in this type aggregates across actions, tokens,
siblings, or a subtree.</t>
          </li>
          <li>
            <t>"max_lifetime" : a number. The sum of the associated quantity over every
action authorized under the token carrying it, identified by "jti", <bcp14>MUST NOT</bcp14>
exceed it (e.g. {"key": "max_calls", "max_lifetime": 50}). It is measured per
token lifetime. A re-issued token (<xref target="chain-linkage"/>) is a new "jti" and
starts a new total; an issuer that needs a bound to span re-issuance issues
the new token with the bound reduced by the amount already consumed.</t>
          </li>
          <li>
            <t>"max_subtree" : a number. The sum of the associated quantity over every
action authorized under the token carrying it and under every token
descended from it <bcp14>MUST NOT</bcp14> exceed it. It is measured per subtree. Enforcing
it requires accounting across tokens; see <xref target="fanout"/> for what an offline
verifier can and cannot do with it.</t>
          </li>
          <li>
            <t>"min" : a number. The value of the associated quantity in one authorized
action <bcp14>MUST NOT</bcp14> be less than it (e.g. {"key": "tenure_years", "min": 2}).
Where "max" carries a ceiling tightened downward, "min" carries a floor
tightened upward.</t>
          </li>
          <li>
            <t>"one_of" : an array. The associated value <bcp14>MUST</bcp14> be a member.</t>
          </li>
          <li>
            <t>"not_one_of" : an array. The associated value <bcp14>MUST NOT</bcp14> be a member.</t>
          </li>
          <li>
            <t>"prefix" : a string. The associated value <bcp14>MUST</bcp14> have it as a prefix.</t>
          </li>
          <li>
            <t>"rank" : a string naming a position in an ordered enumeration. The constraint
object additionally carries an "order" member: an array of two or more
distinct strings listing the enumeration from least to most permissive, of
which "rank" <bcp14>MUST</bcp14> be one (e.g. {"key": "egress", "rank": "internal", "order":
["none", "internal", "any"]}). The associated value <bcp14>MUST</bcp14> be a member of
"order" whose position does not exceed that of "rank". The ordering travels
with the constraint so that a verifier needs no registry entry per key; a
constraint of type "rank" that lacks "order", or whose "rank" is not a member
of "order", is malformed.</t>
          </li>
        </ul>
        <t>The three measurement scopes -- per action, per token lifetime, per subtree --
are distinct constraint types because they are enforced by different machinery:
a per-action bound is decided from the request alone, a per-lifetime bound
needs a running total held by the component that authorizes actions under that
token, and a per-subtree bound needs a total that spans tokens. A producer <bcp14>MUST
NOT</bcp14> emit a cumulative bound under the "max" type. A per-action "max" on a
quantity that exists only as a running count, such as a count of calls, bounds
nothing, since each action contributes one; a producer bounds a count with
"max_lifetime" or "max_subtree". A verifier that holds only
the chain checks that a child's per-lifetime and per-subtree bounds are no
wider than its parent's (<xref target="subsumption"/>); whether the spend is under the
bound is checked only where the running total is held, and an enforcement
point that has no access to that total denies (<xref target="verify"/>, step 8). The
running total is supplied by the component that holds it, through a channel
separate from the request's own parameters; a value the request asserts
about its own total is not a total.</t>
        <t>Within one authorization detail object, the pair (key, type) identifies a
constraint. A detail <bcp14>MUST NOT</bcp14> carry two constraints with the same key and the
same type, and a verifier <bcp14>MUST</bcp14> reject a token that does as malformed, rather
than choosing one of them. Two constraints with the same key and different
types (for example a "min" and a "max" on one quantity, forming a range) are
permitted and are evaluated independently.</t>
        <t>The registry in <xref target="iana"/> allows new constraint types. A verifier that encounters
an unknown constraint type <bcp14>MUST</bcp14> treat the action as denied (fail-closed), never
as unconstrained.</t>
      </section>
      <section anchor="subsumption">
        <name>Subsumption Rules</name>
        <t>An Authority C is subsumed by an Authority P (written C &lt;= P) if and only if all
of the following hold:</t>
        <ol spacing="normal" type="1"><li>
            <t>Every scope in C's "agent_delegation" detail is covered by at least one
scope in P's "agent_delegation" detail according to <xref target="scopes"/>, and</t>
          </li>
          <li>
            <t>for every constraint (key, type) present in P, a constraint with the same
key and the same type is present in C whose admissible set is a subset of
P's: for "max", "max_lifetime", and "max_subtree", C.value &lt;= P.value; for
"min", C.value &gt;= P.value; for "one_of", C's array is a subset of P's; for
"not_one_of", C's array is a superset of P's; for "prefix", C's string
begins with P's; for "rank", C's "order" is identical to P's, element for
element, and the position of C's "rank" in it does not exceed the position
of P's, and</t>
          </li>
          <li>
            <t>a constraint (key, type) present in P <bcp14>MUST NOT</bcp14> be absent in C (absence means
unbounded, which is not a subset), and</t>
          </li>
          <li>
            <t>C.exp &lt;= P.exp (monotonic expiry), and</t>
          </li>
          <li>
            <t>C.del_max_depth &lt;= P.del_max_depth.</t>
          </li>
        </ol>
        <t>No inference is made across constraint types: a "max_lifetime" in C does not
satisfy a "max" in P, and a "max" in C does not satisfy a "max_lifetime" in P,
whatever their values. A verifier that does not implement the type of a
constraint present in P cannot evaluate rule 2 for it; it <bcp14>MUST</bcp14> treat the chain
as not subsumed unless C carries a constraint with the same key and type whose
JCS serialization <xref target="RFC8785"/> is byte-identical to P's, and even then the action
is denied at step 8 of <xref target="verify"/> under the fail-closed rule of <xref target="constraints"/>.</t>
        <t>Attenuation is the construction of C as the greatest lower bound (meet) of P and
a request R under these rules. Because the meet can only narrow, C &lt;= P holds by
construction for every R.</t>
      </section>
      <section anchor="detail-types">
        <name>Authorization Detail Types and the Verifier</name>
        <t><xref target="RFC9396"/> does not maintain a registry of authorization detail type values;
its Section 2.1 recommends that an API designer use a collision-resistant
namespace under the designer's control, such as a URI. The type value
"agent_delegation" is the one this document and its test vectors use; whether
a later revision moves it to a URI-form value under such a namespace is an open
question, and the wire value is unchanged by this revision.</t>
        <t>The covering relation a verifier applies at step 4 of <xref target="verify"/> is specified
per authorization detail type. For "agent_delegation" it is the relation in
<xref target="scopes"/> together with the constraint rules of <xref target="subsumption"/>. Another
authorization detail type, if defined, specifies its own relation, and that
relation is what a verifier applies to details of that type. The type selects
the relation.</t>
        <t>A verifier <bcp14>MUST</bcp14> evaluate every authorization detail object in every DT_i, or
reject the token. A detail whose type the verifier does not implement is one it
cannot evaluate, and the token <bcp14>MUST</bcp14> be rejected as malformed; a verifier that
skips a detail it does not understand has reported success on a token it did
not read. The verifier classifies detail types when it parses a token, before
step 1 of <xref target="verify"/>, so that DT_0 is subject to the rule as every other token
is. Under this revision the only type a token may carry is "agent_delegation",
and it may carry exactly one detail (<xref target="authority"/>); a later revision may
define chains whose tokens carry details of several types, and the per-type
binding of the covering relation stated above is what such a definition would
build on. A resource server <bcp14>SHOULD</bcp14> declare the types it implements in the
"authorization_details_types_supported" member of its protected resource
metadata (<xref target="RFC9728"/>, Section 2), so that an issuer can learn which chains it will accept.
<xref target="I-D.jackson-wimse-evaluation"/> states the same process-every-entry-or-refuse
rule from the verifier's side; the requirement here stands on its own.</t>
        <t>Which chains a verifier accepts across deployments is a trust decision the
verifier already makes by the root keys it holds (<xref target="verify"/>, step 1); two
verifiers that both implement "agent_delegation" apply the same covering
relation to the same chain.</t>
      </section>
      <section anchor="vocabulary">
        <name>Open Issue: Scope Vocabulary</name>
        <t>Subsumption is syntactic. Two deployments that both implement
"agent_delegation", and attach different meanings to the same scope verbs, both
verify the same chain clean and read it differently, because nothing in the
token says what "crm.read" permits. A profile or registry of common operation
verbs would close that gap. This document states the limit and supplies
neither.</t>
        <t>A companion document that does supply one is expected to take the result of
the native verification in <xref target="verify"/> as an input rather than re-implement it;
to map a scope family to an action definition explicitly; and, where a mapping
is ambiguous, to refuse rather than resolve. A companion document is cited from
this one when it is an Internet-Draft, so that every reader can cite it by a
stable name.</t>
      </section>
    </section>
    <section anchor="chain-linkage">
      <name>Chain Linkage</name>
      <t>Each child token commits to its parent by "par_hash" (<xref target="token-format"/>). This
binds the child to the parent's exact serialized bytes, so a child cannot be
re-parented onto a different (e.g. broader) token: doing so changes the parent's
Signing Input and thus its SHA-256 digest, which no longer matches the child's
"par_hash". The digest is over the already-serialized JWS Signing Input; the
protected header and payload that form that input are JCS <xref target="RFC8785"/> as required
by <xref target="token-format"/>.</t>
      <t>The commitment is to a parent token instance, not to a parent identity. A
child's chain carries the parent instance the child commits to. When a parent
is re-issued -- for example refreshed before expiry with a new "jti", "iat",
and "exp" -- the re-issued token is a different token, outside the chain of any
child issued under the previous instance. Re-issuing a parent therefore does
not invalidate its existing children: they continue to verify with the instance
they were issued under until that instance expires or a token in their chain is
revoked (<xref target="revocation"/>), and a child presented together with a re-issued
parent instead of the instance it commits to is denied at step 2 of
<xref target="verify"/>. The operational consequence for the refresh rate is in
<xref target="latency"/>. A parent identity that survives re-issuance is not defined by this
document.</t>
    </section>
    <section anchor="verify">
      <name>Offline Verification Algorithm</name>
      <t>An Enforcement Point presented with a Delegation Chain DT_0 ... DT_n and an
attempted action A, and holding the trusted root public key(s), <bcp14>MUST</bcp14> perform the
following, denying on the first failure:</t>
      <ol spacing="normal" type="1"><li>
          <t>Verify the JWS signature of every DT_i using a fully-specified algorithm
<xref target="RFC9864"/>. The verifier <bcp14>MUST</bcp14> hold a local list of accepted algorithms, and
<bcp14>MUST</bcp14> deny the chain if the "alg" of any DT_i is not on that list, even where
the signature verifies. The verifier <bcp14>MUST</bcp14> take the algorithm from its own
configuration for the key, and <bcp14>MUST</bcp14> deny if the "alg" header names a
different one. DT_0 <bcp14>MUST</bcp14> verify under a trusted root key.</t>
        </li>
        <li>
          <t>For each i &gt; 0, compute SHA-256 of DT_{i-1}'s JWS Signing Input and compare,
in constant time, to DT_i's "par_hash". Any mismatch: deny.</t>
        </li>
        <li>
          <t>Check chain shape, depth first. Depth: DT_0.del_depth == 0; DT_i.del_depth
== i; n &lt; DT_0.del_max_depth. Then principal: DT_0.sub is a non-empty
string, and for every i, DT_i.sub is identical to DT_0.sub. Otherwise deny.</t>
        </li>
        <li>
          <t>For each i &gt; 0, verify DT_i.Authority &lt;= DT_{i-1}.Authority under rules 1,
2, 3, and 5 of <xref target="subsumption"/>. A token carrying a second detail, or a
detail of a type other than "agent_delegation", was rejected as malformed
when it was parsed (<xref target="detail-types"/>). Any violation: deny.</t>
        </li>
        <li>
          <t>Check time: for every i, nbf (if present) &lt;= now &lt;= exp, and exp is monotonic
non-increasing along the chain (rule 4 of <xref target="subsumption"/>). Otherwise deny.</t>
        </li>
        <li>
          <t>Verify holder binding: the presenter proves possession of the key in DT_n.cnf
via a valid DPoP proof <xref target="RFC9449"/> bound to this request. Otherwise deny.</t>
        </li>
        <li>
          <t>Check revocation: consult the Token Status List <xref target="I-D.ietf-oauth-status-list"/>
reference in each DT_i (if present) against a cached list. A cached status
answer is trusted for its time to live, so the window in which a revoked
token is still honored is that time to live and no longer. A status
reference that is present but whose list cannot be fetched, or whose cached
answer has outlived its time to live and cannot be refreshed, is UNKNOWN,
and the verifier <bcp14>MUST</bcp14> deny: unknown is not not-revoked. If any DT_i is
revoked, deny (and, by local policy, treat the whole subtree as revoked). A
token issued with no status reference is a choice made at issuance
(<xref target="revocation"/>) and is not denied on that account.</t>
        </li>
        <li>
          <t>Authorize A against DT_n: confirm that the Enforcement Point is identified by
DT_n's "aud" as <xref target="RFC9068"/> Section 4 requires; then check A against
DT_n.Authority: its scope, every per-action constraint ("max", "min",
"one_of", "not_one_of", "prefix", "rank"), and every cumulative constraint
("max_lifetime", "max_subtree"). A cumulative constraint is checked where
the running total it is measured over is held: by the Enforcement Point
itself, or by a component that holds that total and authorizes A on the
Enforcement Point's behalf (<xref target="fanout"/>). The total reaches the check
through a channel separate from the request's own parameters, never from
the request: a cumulative constraint is evaluated against that total only,
and a per-action constraint against the request only, so a name the two
share cannot let one stand in for the other. An Enforcement Point that
neither holds the running total for a cumulative constraint DT_n carries
nor has A authorized by a component that does <bcp14>MUST</bcp14> deny. Permit only if A
is within DT_n.Authority on every count.</t>
        </li>
      </ol>
      <t>The algorithm is deterministic, side-effect free, and requires no network call
except the (cacheable, offline-checkable) status list of step 7. The one
exception is the cumulative-constraint check of step 8, which belongs to the
component holding the running total and lies outside that guarantee. The order of
steps 1 to 5 is the order in which a chain presented without an action can be
checked (<xref target="without-request"/>); steps 6 and 8 need the request, and step 7 needs
the status list.</t>
      <section anchor="without-request">
        <name>What Verification Establishes</name>
        <t>A Verifier is not always an Enforcement Point. An auditor re-checking a
recorded chain, an issuer validating a parent before minting a child, or a
component that holds a chain but no request, can run steps 1 to 5 and, if a
status list is available, step 7. <xref target="_table-conclusions"/> states what such a
Verifier may and may not conclude.</t>
        <table anchor="_table-conclusions">
          <name>What a Verifier may conclude, by the steps it performed</name>
          <thead>
            <tr>
              <th align="left">Property</th>
              <th align="left">Chain alone (steps 1-5, 7)</th>
              <th align="left">With the request (steps 6, 8)</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Every token is well-formed, JCS-canonical, and signed under an accepted algorithm</td>
              <td align="left">yes</td>
              <td align="left">yes</td>
            </tr>
            <tr>
              <td align="left">DT_0 is signed under a trusted root key</td>
              <td align="left">yes</td>
              <td align="left">yes</td>
            </tr>
            <tr>
              <td align="left">Each child commits to the parent instance presented with it</td>
              <td align="left">yes</td>
              <td align="left">yes</td>
            </tr>
            <tr>
              <td align="left">Depth is bounded and the Principal is unchanged along the chain</td>
              <td align="left">yes</td>
              <td align="left">yes</td>
            </tr>
            <tr>
              <td align="left">Each hop's Authority is a subset of its parent's</td>
              <td align="left">yes</td>
              <td align="left">yes</td>
            </tr>
            <tr>
              <td align="left">Every token is within its validity window at the instant checked</td>
              <td align="left">yes</td>
              <td align="left">yes</td>
            </tr>
            <tr>
              <td align="left">No token in the chain is revoked, within the status list's time to live</td>
              <td align="left">yes, if the list is reachable</td>
              <td align="left">yes, if the list is reachable</td>
            </tr>
            <tr>
              <td align="left">The presenter holds the key DT_n is bound to</td>
              <td align="left">no</td>
              <td align="left">yes</td>
            </tr>
            <tr>
              <td align="left">A specific action is permitted</td>
              <td align="left">no</td>
              <td align="left">yes</td>
            </tr>
            <tr>
              <td align="left">A per-lifetime total is within bound</td>
              <td align="left">no</td>
              <td align="left">only where the total is held; otherwise step 8 denies</td>
            </tr>
            <tr>
              <td align="left">A per-subtree total is within bound</td>
              <td align="left">no</td>
              <td align="left">only where the total is held (<xref target="fanout"/>); otherwise step 8 denies</td>
            </tr>
          </tbody>
        </table>
        <t>The "subset" row holds for the constraint types the Verifier implements. A
constraint type it does not implement fails closed under the rule in
<xref target="subsumption"/>, so it can turn a "yes" into a "no" and never the reverse.</t>
        <t>A Verifier that has not performed step 6 has established that the chain is
valid, not that the party presenting it is its holder, and <bcp14>MUST NOT</bcp14> report the
chain as authorizing anything. A Verifier that has not performed step 8 has
established the leaf Authority as a set and <bcp14>MUST NOT</bcp14> report any action as
permitted. Such a Verifier <bcp14>SHOULD</bcp14> report its result as the chain's validity
together with the steps it did not perform.</t>
      </section>
      <section anchor="outcomes">
        <name>Verification Outcomes</name>
        <t>Independent implementations are compared by their outcomes on shared test
vectors (<xref target="vectors"/>), and the comparison is only as good as the agreement on
how a denial is named. A verifier <bcp14>SHOULD</bcp14> report a denial under the name that
<xref target="_table-outcomes"/> gives for the check that failed, which is the vocabulary the
test vectors declare; since the algorithm denies on the first failure, one
denial carries one name. A verifier <bcp14>MAY</bcp14> add detail of its own beside the name. The names are
not carried in any token and have no effect on the wire.</t>
        <table anchor="_table-outcomes">
          <name>Verification outcome names</name>
          <thead>
            <tr>
              <th align="left">Name</th>
              <th align="left">Step</th>
              <th align="left">Meaning</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">malformed</td>
              <td align="left">parse</td>
              <td align="left">a token is not three base64url parts, a claim this document requires is absent or of the wrong shape, an integer's magnitude exceeds 2^53-1, a scope is invalid, a constraint is malformed or repeated, a detail carries an unknown member, a token carries more than one detail, or a detail type is not "agent_delegation"</td>
            </tr>
            <tr>
              <td align="left">non_canonical</td>
              <td align="left">parse</td>
              <td align="left">a decoded header or payload is not the JCS serialization of what it parses to</td>
            </tr>
            <tr>
              <td align="left">duplicate_member</td>
              <td align="left">parse</td>
              <td align="left">a JSON object repeats a member name</td>
            </tr>
            <tr>
              <td align="left">non_finite</td>
              <td align="left">parse</td>
              <td align="left">a number is NaN or an infinity, which JSON and JCS do not represent</td>
            </tr>
            <tr>
              <td align="left">signature_invalid</td>
              <td align="left">1</td>
              <td align="left">a signature does not verify, the algorithm is not on the verifier's list, the algorithm differs from the one configured for the key, or DT_0 is not under a trusted root key</td>
            </tr>
            <tr>
              <td align="left">par_hash_mismatch</td>
              <td align="left">2</td>
              <td align="left">a child's commitment does not match the parent presented with it</td>
            </tr>
            <tr>
              <td align="left">depth_invalid</td>
              <td align="left">3</td>
              <td align="left">a del_depth is out of sequence or the chain exceeds del_max_depth</td>
            </tr>
            <tr>
              <td align="left">principal_altered</td>
              <td align="left">3</td>
              <td align="left">a token's "sub" differs from DT_0's</td>
            </tr>
            <tr>
              <td align="left">not_narrower</td>
              <td align="left">4</td>
              <td align="left">a child's Authority is not subsumed by its parent's under rules 1, 2, 3, or 5</td>
            </tr>
            <tr>
              <td align="left">expired</td>
              <td align="left">5</td>
              <td align="left">a token is outside its validity window, or its expiry exceeds its parent's (rule 4)</td>
            </tr>
            <tr>
              <td align="left">holder_binding_failed</td>
              <td align="left">6</td>
              <td align="left">the proof of possession is absent or invalid for this request</td>
            </tr>
            <tr>
              <td align="left">revoked</td>
              <td align="left">7</td>
              <td align="left">a token in the chain is revoked</td>
            </tr>
            <tr>
              <td align="left">status_unknown</td>
              <td align="left">7</td>
              <td align="left">a status reference is present and its current status cannot be established</td>
            </tr>
            <tr>
              <td align="left">audience_mismatch</td>
              <td align="left">8</td>
              <td align="left">DT_n's "aud" does not identify the Enforcement Point</td>
            </tr>
            <tr>
              <td align="left">scope_not_granted</td>
              <td align="left">8</td>
              <td align="left">the action's scope is not covered by DT_n's scopes</td>
            </tr>
            <tr>
              <td align="left">ceiling_exceeded</td>
              <td align="left">8</td>
              <td align="left">the action violates a constraint of DT_n</td>
            </tr>
            <tr>
              <td align="left">unknown_constraint</td>
              <td align="left">8</td>
              <td align="left">DT_n carries a constraint of a type the verifier does not implement</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="several-chains">
        <name>Several Chains Reaching One Agent</name>
        <t>This document defines the verification of one chain. An agent may hold
Delegation Tokens issued along more than one path from one or more roots, and
so hold more than one chain. For each request the presenter presents one chain,
the Enforcement Point verifies that chain alone, and the action is permitted
only if that chain permits it. An Enforcement Point <bcp14>MUST NOT</bcp14> combine the
Authority of tokens from different chains, and a chain that fails verification
has no effect on the evaluation of another chain the same agent presents. A
presenter holding several valid chains chooses which to present; one valid
chain that permits the action suffices. <xref target="I-D.jackson-wimse-evaluation"/>
treats the same situation from the verifier's side, in its rule that each
delegation path is evaluated independently and fails closed on its own; this
document cites that rule informatively and does not depend on it.</t>
      </section>
      <section anchor="provenance">
        <name>Open Issue: Trust-Anchor Provenance</name>
        <t>Step 1 assumes the verifier already holds the trusted root key or keys. This
document says nothing about how a verifier comes to hold that key, how the key
is bound to the party it is trusted as, or under which algorithm that binding
was made; the algorithm rule of step 1 reaches every token in the chain and
stops at the root key. A chain can be post-quantum at every hop and still rest
on a root key whose provenance the verifier cannot check. That is a property of
every delegation chain design, not of this one, and the author's view is that
it belongs to the working group rather than to this document. It is recorded
here as open and is not solved here.</t>
      </section>
    </section>
    <section anchor="binding">
      <name>Holder Binding</name>
      <t>Every Delegation Token is sender-constrained by a "cnf" claim <xref target="RFC7800"/>
carrying the JWK thumbprint of the holder's key, proven per request with DPoP
<xref target="RFC9449"/>. mTLS-bound tokens <xref target="RFC8705"/> <bcp14>MAY</bcp14> be used where the transport is
controlled end-to-end. A captured token is therefore unusable without its bound
private key, which mitigates replay of intermediate tokens. The "cnf" claim is
present in every token of a chain, and a Verifier that sees no request
(<xref target="without-request"/>) checks its presence and shape but cannot perform step 6.</t>
    </section>
    <section anchor="revocation">
      <name>Revocation</name>
      <t>Delegation Tokens are <bcp14>RECOMMENDED</bcp14> to be short-lived (seconds to minutes for leaf
and execution tokens), so that expiry is the common revocation path. For earlier
revocation of longer-lived delegations, each token <bcp14>MAY</bcp14> carry a Token Status List
<xref target="I-D.ietf-oauth-status-list"/> reference; revoking a token's status entry, and
by local policy the entries of its descendants, revokes a delegation or a whole
sub-chain while preserving offline verification (the status list is itself
cacheable and offline-checkable). An online revocation endpoint <xref target="RFC7009"/> <bcp14>MAY</bcp14>
additionally be offered.</t>
      <t>Whether a token carries a status reference is decided at issuance. A token
issued without one can be revoked only by expiry. A token issued with one is
subject to step 7 of <xref target="verify"/> as stated there: a cached answer is trusted for
its time to live and no longer, and an answer that cannot be obtained or
refreshed is unknown, which denies. A deployment chooses between the two at
issuance with that consequence in view.</t>
      <t>Short lifetimes mean re-issuance. A parent that is re-issued is a new token
instance (<xref target="chain-linkage"/>); its existing children are not invalidated by the
re-issuance, and a deployment that wants them invalidated revokes the previous
instance. The rate at which this happens is an operational property that
<xref target="latency"/> states.</t>
      <t>Deployments that require synchronous cascading revocation <bcp14>MAY</bcp14> issue and
exercise Delegation Tokens through an online Delegation Server as specified by
<xref target="I-D.sweeney-wimse-credential-delegation"/>. The server can evaluate current
delegation-tree state and refuse a revoked root or descendant immediately. This
online bridge complements, and does not replace, the offline verification
algorithm in <xref target="verify"/>: an Enforcement Point that receives a chain <bcp14>MUST</bcp14> still
verify its signatures, linkage, attenuation, depth, principal, and expiry.</t>
    </section>
    <section anchor="security">
      <name>Security Considerations</name>
      <section anchor="parent-tokens-remain-valid-after-attenuation">
        <name>Parent tokens remain valid after attenuation</name>
        <t>Attenuation produces a new child token but does not, by itself, invalidate the
parent. A party holding the parent still holds the parent's (broader) authority.
This is mitigated by three mechanisms that <bcp14>MUST</bcp14> be considered together: (a)
tokens are short-lived and holder-bound (<xref target="binding"/>), so a leaked parent is both
time-boxed and non-replayable without its key; (b) the "par_hash" byte-commitment
(<xref target="chain-linkage"/>) prevents splicing a child onto a different parent; and (c)
status-list revocation (<xref target="revocation"/>) allows early invalidation of a parent and
its subtree. Deployments that require immediate parent invalidation on delegation
<bcp14>MUST</bcp14> use short TTLs and status lists accordingly.</t>
      </section>
      <section anchor="chain-splicing">
        <name>Chain splicing</name>
        <t>Without the byte-commitment, an attacker could present a valid child together
with a broader token as its purported parent. Step 2 of <xref target="verify"/> prevents this:
the child's "par_hash" digests the parent's exact Signing Input, so only the
intended parent verifies. The same check is what denies a child presented with
a re-issued parent rather than the instance it was issued under
(<xref target="chain-linkage"/>).</t>
      </section>
      <section anchor="confused-deputy-and-over-broad-delegation">
        <name>Confused deputy and over-broad delegation</name>
        <t>Because each hop's authority is the meet of parent and request (<xref target="subsumption"/>),
a child cannot be induced (e.g. by prompt injection) to exercise authority the
parent lacked. The principal invariance check (step 3 of <xref target="verify"/>) adds that a
child cannot be induced to act under a different grant than its parent: a
token that names another Principal is not a member of the chain.</t>
      </section>
      <section anchor="fanout">
        <name>Unbounded depth, fan-out, and aggregate budgets</name>
        <t>"del_max_depth" (checked in step 3) bounds chain length; deployments <bcp14>SHOULD</bcp14> set
it low (e.g. 5). Fan-out (a parent delegating to many children) is not limited by
the token format and <bcp14>MUST</bcp14> be bounded by the issuing infrastructure if required.</t>
        <t>Quantity constraints compose across siblings, and subsumption is checked per
edge. A "max" constraint bounds one authorized action and nothing else
(<xref target="constraints"/>). A parent holding {"key": "max_spend", "max": 100} can mint
any number of children each carrying max_spend 100; every parent-child edge
satisfies C &lt;= P, and a subtree of N children can spend N x 100. The same holds
at a single enforcement point and across several: against a root ceiling of
100, two valid children can each authorize 60 at two different gateways; both
chains verify, each gateway sees a request within bound, and the combined
spend is 120. Individually permitted delegations compose into an outcome
nobody permitted. The "max_subtree" type names that total, and a chain-only
verifier checks only that a child's "max_subtree" is no wider than its
parent's; verification is side-effect free by design, so a signed ceiling
names a limit while nothing in verifying it reserves against that limit or
sees another gateway's balance. A signed ceiling alone provides none of the
protection an aggregate budget needs.</t>
        <t>An aggregate budget over a consequential resource therefore needs machinery
outside the token, and that machinery has two separable parts. Allocation --
deciding how much of a parent's budget each child may consume -- requires
coordination: an allocator that splits a budget at delegation time only keeps
the total under bound if it is a single writer, since two issuers allocating
offline from the same budget can each allocate the same units. Spending
afterwards does not require coordination once allocations are disjoint: each
enforcement point debits its own durable balance for the allocation it holds
and contacts no shared service per action. Two deployment shapes follow, and a
deployment that enforces aggregate budgets uses one of them:</t>
        <ul spacing="normal">
          <li>
            <t>Shared accounting: one ledger, consulted by every enforcement point, that
checks and debits atomically at authorization time. A ledger that is read at
authorization and debited afterwards, or debited by more than one writer
without coordination, does not close the hole; the check and the debit are
one operation or the budget is not enforced. An online Delegation Server
through which every action is exercised, as in
<xref target="I-D.sweeney-wimse-credential-delegation"/>, is one place such accounting
can be held.</t>
          </li>
          <li>
            <t>Coordinated allocation with local enforcement: a single-writer allocator
reserves disjoint allocations for the children (for example 60 units to the
child acting at gateway A and 40 to the child acting at gateway B, leaving
none at the parent, since allocating to a child reduces what remains
available to the parent), and each enforcement point enforces its own
allocation locally against a durable balance. This path has to protect
against three hazards that a signed ceiling does not: duplicate allocation of
the same units to two children; local rollback, where an enforcement point
loses or reverts a debit it has already honored; and premature reuse of
allocated units before the action that consumed them is settled.</t>
          </li>
        </ul>
        <t>Either way, the division is the one this document is built on: the offline
chain bounds each action and produces the audit trail; the online half holds
the aggregates.</t>
      </section>
      <section anchor="latency">
        <name>Offline verification vs. revocation latency</name>
        <t>Offline verification means an enforcement point may honor a token that has been
revoked but whose status-list update it has not yet fetched. Deployments trade
this window against TTL: shorter TTLs bound the exposure, and step 7 of
<xref target="verify"/> fixes the window at the cached answer's time to live. This is the
standard status-list trade-off and <bcp14>MUST</bcp14> be documented for each deployment.</t>
        <t>The lifetimes <xref target="revocation"/> recommends have a second cost, which is on the
issuing side rather than the verifying side. A token that lives for seconds to
minutes and is still needed must be re-issued, so a platform with many live
agent instances sustains a refresh rate proportional to the number of live
instances, continuously, not only at startup. That rate is a property of the
deployment and a deployment <bcp14>MUST</bcp14> size its authorization server for it, and for
the resynchronisation case in which many instances refresh at once after an
outage of the issuer or of the network between them. Offline verification is
preserved under these lifetimes; offline operation is not, because an agent
whose issuer is unreachable stops receiving tokens when its current ones
expire.</t>
        <t>The refresh rate counts every token in a chain, not only the roots, and grows
with fan-out. Rule 4 of <xref target="subsumption"/> and step 5 of <xref target="verify"/> cap a child's
"exp" at its parent's when the child is issued, so at the recommended
lifetimes every child that keeps working is re-issued at least once per parent
lifetime, whichever instance of the parent it commits to (<xref target="chain-linkage"/>).
A deployment that revokes the previous parent instance at refresh adds a burst
on top of that rate: every child of that instance at once. Both the sustained
rate and the burst belong in the sizing above, and the fan-out bound of
<xref target="fanout"/> is what bounds them.</t>
      </section>
      <section anchor="why-not-macaroons-algorithm-agility">
        <name>Why not macaroons; algorithm agility</name>
        <t>Macaroons <xref target="Macaroons"/> verify with the root secret, precluding public offline
verification at an untrusted edge; this document uses public-key signatures.
Algorithms are fully specified <xref target="RFC9864"/> and agile via the JOSE "alg" registry,
with a migration path to ML-DSA <xref target="RFC9964"/>. The algorithm list of step 1 in
<xref target="verify"/> is the agility mechanism on the verifying side. A deployment that
retires an algorithm, for example a quantum-vulnerable one after a transition
date, removes it from the verifier's list, and chains that still use it are
then denied whatever their remaining lifetime. Because every hop's "alg" sits
in a protected header that the child's "par_hash" covers, a verifier holding
the full chain sees every hop's algorithm, and a parent whose algorithm was
swapped after the fact no longer matches its child's commitment.</t>
      </section>
      <section anchor="root-issuance">
        <name>Root issuance is the policy decision point</name>
        <t>DT_0's Authority is asserted by whoever holds the root key. Every guarantee in
this document begins downstream of that minting: each child is a deterministic
attenuation of DT_0, and verification can establish that no hop exceeded the
root, never that the root was right. Approval policy therefore belongs at root
issuance. A deployment that requires a human decision before an agent may act
with consequential authority places that decision where DT_0 is minted, not at
a later hop, because no later hop can widen what DT_0 granted and no
verification step can tighten it. The Principal named in DT_0's "sub" is the
party that decision is taken on behalf of, and the "client_id" of each hop
records which agent acted under it.</t>
      </section>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <t>This document requests registration, in the JSON Web Token Claims registry, of:
"del_depth", "del_max_depth", and "par_hash" (with the semantics in
<xref target="token-format"/>). The claims "sub", "client_id", "aud", and "cnf" are already
registered and are used with their registered meanings as profiled in
<xref target="token-format"/>.</t>
      <t>It requests a new "Agent Delegation Constraint Types" registry with the
following initial entries, each recorded with its measurement scope:
"max" (per action), "max_lifetime" (per token lifetime), "max_subtree" (per
subtree), "min" (per action), "one_of" (per action), "not_one_of" (per action),
"prefix" (per action), and "rank" (per action). The registration policy is
Specification Required; a registration states the type's value shape, its
measurement scope, and its subsumption rule in the form of <xref target="subsumption"/>.
Unknown types fail closed per <xref target="constraints"/>.</t>
      <t>This document does not request registration of an "authorization_details" type
value. <xref target="RFC9396"/> maintains no registry of type values, and recommends a
collision-resistant namespace under the designer's control; see
<xref target="detail-types"/>.</t>
    </section>
    <section anchor="implementation-status">
      <name>Implementation Status</name>
      <t>This section records the status of known implementations of this document at
the time of its posting, as described in <xref target="RFC7942"/>. The description of
implementations here is intended to assist the IETF in its decision processes
in progressing drafts to RFCs. It is not an endorsement of any implementation,
and the listing is not a claim that any implementation conforms to this
revision in full. Please note that this section is to be removed before this
document is published as an RFC.</t>
      <t>Two reference implementations are maintained by the author under the Apache
License 2.0: "attenu-guard", in Python, which mints Delegation Tokens and runs
the verification algorithm of <xref target="verify"/>, and "attenu-guard-ts", in TypeScript,
which runs the verification algorithm and mints nothing. At the time of
posting, both released libraries (attenu-guard 0.20.0 and attenu-guard-ts
0.14.0) implement this revision as an opt-in profile beside the previous one,
which remains their default: the claim rules of <xref target="token-format"/> at parse, the
accepted-algorithm list of step 1, principal invariance, the three-form scope
grammar, the two cumulative constraint types with their totals supplied through
a channel separate from the request, the "order" member of "rank", one
constraint per (key, type), the closed detail and constraint objects, and the
audience check of step 8, under a single-signer trust model. Both check the
presence and shape of "cnf" and perform neither step 6 (holder binding) nor
step 7 (status list), which both document as not performed. The vector set of
<xref target="vectors"/> for this revision has thirty-five files; the Python library
generates and scores it on every test run, and the TypeScript library vendors
it byte for byte and scores it in its test suite. The previous revision's
twenty files ship in both libraries unchanged.</t>
      <t>Two implementations independent of the author's code have run the twenty test
vectors of the previous revision and published their results, as reported by
their authors: the conformance harness of the Cred delegation protocol, whose
published result of 2026-10-07 reports 20 of 20, with no failures and no
declared gaps, at a pinned commit of the Cred SDK; and a standalone Node.js
verifier that imports no code from either reference implementation, which
reported 20 of 20 with verdicts and declared reasons both matching, under the
boundary its author states: the vectors' HS256 single-signer, public-test-key
profile, and steps 1 to 5 only. Neither result is reproduced here, and neither
author has reported a run against the vectors of this revision.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC5234">
          <front>
            <title>Augmented BNF for Syntax Specifications: ABNF</title>
            <author fullname="D. Crocker" initials="D." role="editor" surname="Crocker"/>
            <author fullname="P. Overell" initials="P." surname="Overell"/>
            <date month="January" year="2008"/>
            <abstract>
              <t>Internet technical specifications often need to define a formal syntax. Over the years, a modified version of Backus-Naur Form (BNF), called Augmented BNF (ABNF), has been popular among many Internet specifications. The current specification documents ABNF. It balances compactness and simplicity with reasonable representational power. The differences between standard BNF and ABNF involve naming rules, repetition, alternatives, order-independence, and value ranges. This specification also supplies additional rule definitions and encoding for a core lexical analyzer of the type common to several Internet specifications. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="68"/>
          <seriesInfo name="RFC" value="5234"/>
          <seriesInfo name="DOI" value="10.17487/RFC5234"/>
        </reference>
        <reference anchor="RFC6749">
          <front>
            <title>The OAuth 2.0 Authorization Framework</title>
            <author fullname="D. Hardt" initials="D." role="editor" surname="Hardt"/>
            <date month="October" year="2012"/>
            <abstract>
              <t>The OAuth 2.0 authorization framework enables a third-party application to obtain limited access to an HTTP service, either on behalf of a resource owner by orchestrating an approval interaction between the resource owner and the HTTP service, or by allowing the third-party application to obtain access on its own behalf. This specification replaces and obsoletes the OAuth 1.0 protocol described in RFC 5849. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6749"/>
          <seriesInfo name="DOI" value="10.17487/RFC6749"/>
        </reference>
        <reference anchor="RFC7515">
          <front>
            <title>JSON Web Signature (JWS)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>JSON Web Signature (JWS) represents content secured with digital signatures or Message Authentication Codes (MACs) using JSON-based data structures. Cryptographic algorithms and identifiers for use with this specification are described in the separate JSON Web Algorithms (JWA) specification and an IANA registry defined by that specification. Related encryption capabilities are described in the separate JSON Web Encryption (JWE) specification.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7515"/>
          <seriesInfo name="DOI" value="10.17487/RFC7515"/>
        </reference>
        <reference anchor="RFC7519">
          <front>
            <title>JSON Web Token (JWT)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>JSON Web Token (JWT) is a compact, URL-safe means of representing claims to be transferred between two parties. The claims in a JWT are encoded as a JSON object that is used as the payload of a JSON Web Signature (JWS) structure or as the plaintext of a JSON Web Encryption (JWE) structure, enabling the claims to be digitally signed or integrity protected with a Message Authentication Code (MAC) and/or encrypted.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7519"/>
          <seriesInfo name="DOI" value="10.17487/RFC7519"/>
        </reference>
        <reference anchor="RFC7800">
          <front>
            <title>Proof-of-Possession Key Semantics for JSON Web Tokens (JWTs)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="April" year="2016"/>
            <abstract>
              <t>This specification describes how to declare in a JSON Web Token (JWT) that the presenter of the JWT possesses a particular proof-of- possession key and how the recipient can cryptographically confirm proof of possession of the key by the presenter. Being able to prove possession of a key is also sometimes described as the presenter being a holder-of-key.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7800"/>
          <seriesInfo name="DOI" value="10.17487/RFC7800"/>
        </reference>
        <reference anchor="RFC8032">
          <front>
            <title>Edwards-Curve Digital Signature Algorithm (EdDSA)</title>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
            <author fullname="I. Liusvaara" initials="I." surname="Liusvaara"/>
            <date month="January" year="2017"/>
            <abstract>
              <t>This document describes elliptic curve signature scheme Edwards-curve Digital Signature Algorithm (EdDSA). The algorithm is instantiated with recommended parameters for the edwards25519 and edwards448 curves. An example implementation and test vectors are provided.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8032"/>
          <seriesInfo name="DOI" value="10.17487/RFC8032"/>
        </reference>
        <reference anchor="RFC8037">
          <front>
            <title>CFRG Elliptic Curve Diffie-Hellman (ECDH) and Signatures in JSON Object Signing and Encryption (JOSE)</title>
            <author fullname="I. Liusvaara" initials="I." surname="Liusvaara"/>
            <date month="January" year="2017"/>
            <abstract>
              <t>This document defines how to use the Diffie-Hellman algorithms "X25519" and "X448" as well as the signature algorithms "Ed25519" and "Ed448" from the IRTF CFRG elliptic curves work in JSON Object Signing and Encryption (JOSE).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8037"/>
          <seriesInfo name="DOI" value="10.17487/RFC8037"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC8785">
          <front>
            <title>JSON Canonicalization Scheme (JCS)</title>
            <author fullname="A. Rundgren" initials="A." surname="Rundgren"/>
            <author fullname="B. Jordan" initials="B." surname="Jordan"/>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
            <date month="June" year="2020"/>
            <abstract>
              <t>Cryptographic operations like hashing and signing need the data to be expressed in an invariant format so that the operations are reliably repeatable. One way to address this is to create a canonical representation of the data. Canonicalization also permits data to be exchanged in its original form on the "wire" while cryptographic operations performed on the canonicalized counterpart of the data in the producer and consumer endpoints generate consistent results.</t>
              <t>This document describes the JSON Canonicalization Scheme (JCS). This specification defines how to create a canonical representation of JSON data by building on the strict serialization methods for JSON primitives defined by ECMAScript, constraining JSON data to the Internet JSON (I-JSON) subset, and by using deterministic property sorting.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8785"/>
          <seriesInfo name="DOI" value="10.17487/RFC8785"/>
        </reference>
        <reference anchor="RFC9068">
          <front>
            <title>JSON Web Token (JWT) Profile for OAuth 2.0 Access Tokens</title>
            <author fullname="V. Bertocci" initials="V." surname="Bertocci"/>
            <date month="October" year="2021"/>
            <abstract>
              <t>This specification defines a profile for issuing OAuth 2.0 access tokens in JSON Web Token (JWT) format. Authorization servers and resource servers from different vendors can leverage this profile to issue and consume access tokens in an interoperable manner.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9068"/>
          <seriesInfo name="DOI" value="10.17487/RFC9068"/>
        </reference>
        <reference anchor="RFC9396">
          <front>
            <title>OAuth 2.0 Rich Authorization Requests</title>
            <author fullname="T. Lodderstedt" initials="T." surname="Lodderstedt"/>
            <author fullname="J. Richer" initials="J." surname="Richer"/>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <date month="May" year="2023"/>
            <abstract>
              <t>This document specifies a new parameter authorization_details that is used to carry fine-grained authorization data in OAuth messages.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9396"/>
          <seriesInfo name="DOI" value="10.17487/RFC9396"/>
        </reference>
        <reference anchor="RFC9449">
          <front>
            <title>OAuth 2.0 Demonstrating Proof of Possession (DPoP)</title>
            <author fullname="D. Fett" initials="D." surname="Fett"/>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="T. Lodderstedt" initials="T." surname="Lodderstedt"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="D. Waite" initials="D." surname="Waite"/>
            <date month="September" year="2023"/>
            <abstract>
              <t>This document describes a mechanism for sender-constraining OAuth 2.0 tokens via a proof-of-possession mechanism on the application level. This mechanism allows for the detection of replay attacks with access and refresh tokens.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9449"/>
          <seriesInfo name="DOI" value="10.17487/RFC9449"/>
        </reference>
        <reference anchor="RFC9728">
          <front>
            <title>OAuth 2.0 Protected Resource Metadata</title>
            <author fullname="M.B. Jones" initials="M.B." surname="Jones"/>
            <author fullname="P. Hunt" initials="P." surname="Hunt"/>
            <author fullname="A. Parecki" initials="A." surname="Parecki"/>
            <date month="April" year="2025"/>
            <abstract>
              <t>This specification defines a metadata format that an OAuth 2.0 client or authorization server can use to obtain the information needed to interact with an OAuth 2.0 protected resource.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9728"/>
          <seriesInfo name="DOI" value="10.17487/RFC9728"/>
        </reference>
        <reference anchor="RFC9864">
          <front>
            <title>Fully-Specified Algorithms for JSON Object Signing and Encryption (JOSE) and CBOR Object Signing and Encryption (COSE)</title>
            <author fullname="M.B. Jones" initials="M.B." surname="Jones"/>
            <author fullname="O. Steele" initials="O." surname="Steele"/>
            <date month="October" year="2025"/>
            <abstract>
              <t>This specification refers to cryptographic algorithm identifiers that fully specify the cryptographic operations to be performed, including any curve, key derivation function (KDF), and hash functions, as being "fully specified". It refers to cryptographic algorithm identifiers that require additional information beyond the algorithm identifier to determine the cryptographic operations to be performed as being "polymorphic". This specification creates fully-specified algorithm identifiers for registered JSON Object Signing and Encryption (JOSE) and CBOR Object Signing and Encryption (COSE) polymorphic algorithm identifiers, enabling applications to use only fully-specified algorithm identifiers. It deprecates those polymorphic algorithm identifiers.</t>
              <t>This specification updates RFCs 7518, 8037, and 9053. It deprecates polymorphic algorithms defined by RFCs 8037 and 9053 and provides fully-specified replacements for them. It adds to the instructions to designated experts in RFCs 7518 and 9053.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9864"/>
          <seriesInfo name="DOI" value="10.17487/RFC9864"/>
        </reference>
        <reference anchor="I-D.ietf-oauth-status-list">
          <front>
            <title>Token Status List (TSL)</title>
            <author fullname="Tobias Looker" initials="T." surname="Looker">
              <organization>MATTR</organization>
            </author>
            <author fullname="Paul Bastian" initials="P." surname="Bastian">
              <organization>Bundesdruckerei</organization>
            </author>
            <author fullname="Christian Bormann" initials="C." surname="Bormann">
              <organization>SPRIND</organization>
            </author>
            <date day="21" month="June" year="2026"/>
            <abstract>
              <t>   This specification defines a status mechanism called Token Status
   List (TSL), data structures and processing rules for representing the
   status of tokens secured by JSON Object Signing and Encryption (JOSE)
   or CBOR Object Signing and Encryption (COSE), such as JWT, SD-JWT,
   CBOR Web Token, and ISO mdoc.  It also defines an extension point and
   a registry for future status mechanisms.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-status-list-21"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC2693">
          <front>
            <title>SPKI Certificate Theory</title>
            <author fullname="C. Ellison" initials="C." surname="Ellison"/>
            <author fullname="B. Frantz" initials="B." surname="Frantz"/>
            <author fullname="B. Lampson" initials="B." surname="Lampson"/>
            <author fullname="R. Rivest" initials="R." surname="Rivest"/>
            <author fullname="B. Thomas" initials="B." surname="Thomas"/>
            <author fullname="T. Ylonen" initials="T." surname="Ylonen"/>
            <date month="September" year="1999"/>
            <abstract>
              <t>This document gives the theory behind SPKI certificates and ACLs without going into technical detail about those structures or their uses. This memo defines an Experimental Protocol for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2693"/>
          <seriesInfo name="DOI" value="10.17487/RFC2693"/>
        </reference>
        <reference anchor="RFC7009">
          <front>
            <title>OAuth 2.0 Token Revocation</title>
            <author fullname="T. Lodderstedt" initials="T." role="editor" surname="Lodderstedt"/>
            <author fullname="S. Dronia" initials="S." surname="Dronia"/>
            <author fullname="M. Scurtescu" initials="M." surname="Scurtescu"/>
            <date month="August" year="2013"/>
            <abstract>
              <t>This document proposes an additional endpoint for OAuth authorization servers, which allows clients to notify the authorization server that a previously obtained refresh or access token is no longer needed. This allows the authorization server to clean up security credentials. A revocation request will invalidate the actual token and, if applicable, other tokens based on the same authorization grant.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7009"/>
          <seriesInfo name="DOI" value="10.17487/RFC7009"/>
        </reference>
        <reference anchor="RFC7942">
          <front>
            <title>Improving Awareness of Running Code: The Implementation Status Section</title>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
            <author fullname="A. Farrel" initials="A." surname="Farrel"/>
            <date month="July" year="2016"/>
            <abstract>
              <t>This document describes a simple process that allows authors of Internet-Drafts to record the status of known implementations by including an Implementation Status section. This will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature.</t>
              <t>This process is not mandatory. Authors of Internet-Drafts are encouraged to consider using the process for their documents, and working groups are invited to think about applying the process to all of their protocol specifications. This document obsoletes RFC 6982, advancing it to a Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="205"/>
          <seriesInfo name="RFC" value="7942"/>
          <seriesInfo name="DOI" value="10.17487/RFC7942"/>
        </reference>
        <reference anchor="RFC8693">
          <front>
            <title>OAuth 2.0 Token Exchange</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="A. Nadalin" initials="A." surname="Nadalin"/>
            <author fullname="B. Campbell" initials="B." role="editor" surname="Campbell"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="C. Mortimore" initials="C." surname="Mortimore"/>
            <date month="January" year="2020"/>
            <abstract>
              <t>This specification defines a protocol for an HTTP- and JSON-based Security Token Service (STS) by defining how to request and obtain security tokens from OAuth 2.0 authorization servers, including security tokens employing impersonation and delegation.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8693"/>
          <seriesInfo name="DOI" value="10.17487/RFC8693"/>
        </reference>
        <reference anchor="RFC8705">
          <front>
            <title>OAuth 2.0 Mutual-TLS Client Authentication and Certificate-Bound Access Tokens</title>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <author fullname="T. Lodderstedt" initials="T." surname="Lodderstedt"/>
            <date month="February" year="2020"/>
            <abstract>
              <t>This document describes OAuth client authentication and certificate-bound access and refresh tokens using mutual Transport Layer Security (TLS) authentication with X.509 certificates. OAuth clients are provided a mechanism for authentication to the authorization server using mutual TLS, based on either self-signed certificates or public key infrastructure (PKI). OAuth authorization servers are provided a mechanism for binding access tokens to a client's mutual-TLS certificate, and OAuth protected resources are provided a method for ensuring that such an access token presented to it was issued to the client presenting the token.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8705"/>
          <seriesInfo name="DOI" value="10.17487/RFC8705"/>
        </reference>
        <reference anchor="RFC9964">
          <front>
            <title>ML-DSA for JSON Object Signing and Encryption (JOSE) and CBOR Object Signing and Encryption (COSE)</title>
            <author fullname="M. Prorock" initials="M." surname="Prorock"/>
            <author fullname="O. Steele" initials="O." surname="Steele"/>
            <date month="May" year="2026"/>
            <abstract>
              <t>This document specifies JSON Object Signing and Encryption (JOSE) and CBOR Object Signing and Encryption (COSE) serializations for the Module-Lattice-Based Digital Signature Standard (ML-DSA), a Post-Quantum Cryptography (PQC) digital signature scheme defined in US NIST FIPS 204.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9964"/>
          <seriesInfo name="DOI" value="10.17487/RFC9964"/>
        </reference>
        <reference anchor="I-D.ietf-oauth-identity-chaining">
          <front>
            <title>OAuth Identity and Authorization Chaining Across Domains</title>
            <author fullname="Arndt Schwenkschuster" initials="A." surname="Schwenkschuster">
              <organization>Defakto Security</organization>
            </author>
            <author fullname="Pieter Kasselman" initials="P." surname="Kasselman">
              <organization>Defakto Security</organization>
            </author>
            <author fullname="Kelley Burgin" initials="K." surname="Burgin">
              <organization>MITRE</organization>
            </author>
            <author fullname="Michael J. Jenkins" initials="M. J." surname="Jenkins">
              <organization>NSA-CCSS</organization>
            </author>
            <author fullname="Brian Campbell" initials="B." surname="Campbell">
              <organization>Ping Identity</organization>
            </author>
            <author fullname="Aaron Parecki" initials="A." surname="Parecki">
              <organization>Okta</organization>
            </author>
            <date day="19" month="July" year="2026"/>
            <abstract>
              <t>   This specification describes a mechanism for preserving identity and
   authorization information across trust domains that use the OAuth 2.0
   Framework.  A JSON Web Token (JWT) authorization grant, obtained
   through an intra-domain OAuth 2.0 Token Exchange, facilitates the
   cross-domain acquisition of an access token.  The relevant identity
   and authorization information is chained throughout the flow by being
   conveyed in the respective artifacts exchanged at each step of the
   process.  Chaining across multiple domains is achieved by using the
   same protocol every time a trust domain boundary is crossed.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-identity-chaining-17"/>
        </reference>
        <reference anchor="I-D.ietf-wimse-aims">
          <front>
            <title>AI Identity Management System</title>
            <author fullname="Pieter Kasselman" initials="P." surname="Kasselman">
              <organization>Defakto Security</organization>
            </author>
            <author fullname="Jeff Lombardo" initials="J." surname="Lombardo">
              <organization>AWS</organization>
            </author>
            <author fullname="Yaroslav Rosomakho" initials="Y." surname="Rosomakho">
              <organization>Zscaler</organization>
            </author>
            <author fullname="Brian Campbell" initials="B." surname="Campbell">
              <organization>Ping Identity</organization>
            </author>
            <author fullname="Nick Steele" initials="N." surname="Steele">
              <organization>OpenAI</organization>
            </author>
            <author fullname="Aaron Parecki" initials="A." surname="Parecki">
              <organization>Okta</organization>
            </author>
            <date day="15" month="September" year="2026"/>
            <abstract>
              <t>   This document proposes best practices for authentication and
   authorization of AI agent interactions.  It leverages existing
   standards such as the Workload Identity in Multi-System Environments
   (WIMSE) architecture and OAuth 2.0 family of specifications.  Rather
   than defining new protocols, this document describes how existing and
   widely deployed standards can be applied or extended to establish
   agent authentication and authorization.  By doing so, it aims to
   provide a framework within which to use existing standards, identify
   gaps and guide future standardization efforts for agent
   authentication and authorization.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-wimse-aims-00"/>
        </reference>
        <reference anchor="I-D.ietf-wimse-identifier">
          <front>
            <title>Workload Identifier</title>
            <author fullname="Yaroslav Rosomakho" initials="Y." surname="Rosomakho">
              <organization>Zscaler</organization>
            </author>
            <author fullname="Joseph A. Salowey" initials="J. A." surname="Salowey">
              <organization>Palo Alto Networks</organization>
            </author>
            <date day="6" month="July" year="2026"/>
            <abstract>
              <t>   This document defines a canonical identifier for workloads, referred
   to as the Workload Identifier.  A Workload Identifier is a URI that
   uniquely identifies a workload within the context of a specific trust
   domain.  This identifier can be embedded in Workload Identity
   Credentials, including X.509 certificates and JWT-based tokens, to
   support authentication, authorization, and policy enforcement across
   diverse systems.  The Workload Identifier format ensures
   interoperability, facilitates secure identity federation, and enables
   consistent identity semantics.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-wimse-identifier-03"/>
        </reference>
        <reference anchor="I-D.reece-wimse-cross-org-delegation">
          <front>
            <title>Cross-Organizational Delegation for Workload and Agent Identity: Problem Statement and Requirements</title>
            <author fullname="Morgan Reece" initials="M." surname="Reece">
              <organization>TowerGuardian Consulting</organization>
            </author>
            <date day="31" month="August" year="2026"/>
            <abstract>
              <t>   Autonomous software agents increasingly act on behalf of human
   principals by invoking tools, services, and other agents, frequently
   across organizational boundaries.  Existing workload and token-based
   authorization mechanisms were designed for a single trust domain and
   a small number of delegation hops.  They do not adequately express,
   constrain, or verify authority that is delegated recursively among
   agents and that crosses the boundary between independently
   administered organizations.  This document describes the problem of
   cross-organizational agent delegation, identifies the gaps in current
   mechanisms, and enumerates requirements that any solution within the
   scope of the Workload Identity in Multi-System Environments (WIMSE)
   working group should satisfy.  It does not specify a solution.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-reece-wimse-cross-org-delegation-02"/>
        </reference>
        <reference anchor="I-D.jackson-wimse-evaluation">
          <front>
            <title>Verifier-Side Evaluation Semantics for Delegated Authority Chains</title>
            <author fullname="Wes Jackson" initials="W." surname="Jackson">
         </author>
            <date day="10" month="October" year="2026"/>
            <abstract>
              <t>   Delegation chain specifications describe the shape of conveyed
   authority.  They leave the verifier's half of the exchange
   underdetermined.  Two verifiers can check the same chain, both report
   success, and enforce different policy.  This document states what a
   verifier must do: the explicit inputs evaluation depends on, how
   those inputs behave when their sources are stale or unavailable, and
   four rules that keep evaluation fail-closed.  The rules are drawn
   from the Grant &amp; Autonomy Lifecycle (GAL) and Provenance &amp; Trust
   Context (PTC) specifications and from a public reference
   implementation.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-jackson-wimse-evaluation-04"/>
        </reference>
        <reference anchor="I-D.niyikiza-oauth-attenuating-agent-tokens">
          <front>
            <title>Attenuating Authorization Tokens for Agentic Delegation Chains</title>
            <author fullname="Niki Aimable" initials="N." surname="Aimable">
              <organization>Tenuo</organization>
            </author>
            <date day="15" month="June" year="2026"/>
            <abstract>
              <t>   This document defines Attenuating Authorization Tokens (AATs), a
   signed credential format for task-scoped delegation in AI agent
   systems.  An AAT encodes the tools an agent may invoke and the
   argument constraints that apply to those invocations.  A token holder
   authorized to delegate can derive a token offline with equal or
   narrower authority, subject to the parent token's depth and lifetime
   limits.  The resulting delegation chain is verifiable offline by any
   enforcement point that has the root issuer's trust anchor key.

   This specification profiles the OAuth Rich Authorization Requests
   format (RFC 9396) for tool-level capability claims, adds delegation-
   chain claims, and defines a core constraint vocabulary for argument
   restrictions.  The chain verification algorithm authenticates each
   delegation step and enforces monotonic attenuation without network
   contact with the root issuer.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-niyikiza-oauth-attenuating-agent-tokens-01"/>
        </reference>
        <reference anchor="I-D.coetzee-oauth-spt-txn-tokens">
          <front>
            <title>Transaction-Bound Authorization Tokens for Software and AI Agents (SPT-Txn)</title>
            <author fullname="Rudolf Jacobus Coetzee" initials="R. J." surname="Coetzee">
              <organization>Violet Sky Security SEZC</organization>
            </author>
            <date day="19" month="July" year="2026"/>
            <abstract>
              <t>   Current authorization is role-scoped: an actor is granted a role
   whose authority persists across every action it takes.  This fails
   exactly when actors fail -- under compromise, prompt injection, or
   goal hijacking -- because a compromised actor retains full role
   authority.  This document specifies SPT-Txn, a family of transaction-
   bound authorization tokens in which authority exists only inside a
   short-lived token bound to one declared action, on one resource,
   under one jurisdictional policy, verified against how the requesting
   workload was attested.  Delegation across agents and tools is
   expressed as a cryptographically sealed chain that can only narrow
   authority and is verifiable offline.  Each authorization decision
   emits a signed, tamper-evident receipt as a byproduct of enforcement.
   This document specifies normative intent binding, transaction
   receipts and their transparency log, attested issuance via OAuth 2.0
   Token Exchange, per-token status-list revocation, and cryptographic
   algorithm agility including hybrid post-quantum signing.  It also
   hardens attested issuance in response to an adversarial security
   review of the reference implementation: it makes an audience and a
   verifiable expiry mandatory on the presented attestation, requires
   the issuer to bound the delegated depth it grants, and clamps a
   token's lifetime to the attestation it was minted on.  The issuer-
   side requested-versus-permitted scope intersection is retained; the
   enforcement point re-checks the chain independently.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-coetzee-oauth-spt-txn-tokens-03"/>
        </reference>
        <reference anchor="I-D.sweeney-wimse-credential-delegation">
          <front>
            <title>Credential Delegation Protocol for AI Agents in Multi-System Environments</title>
            <author fullname="Kieran Sweeney" initials="K." surname="Sweeney">
         </author>
            <date day="13" month="October" year="2026"/>
            <abstract>
              <t>   Autonomous AI agents increasingly require access to protected
   resources across multiple service providers on behalf of human users.
   Existing OAuth 2.0 extensions address individual aspects of this
   problem (token exchange, proof-of-possession, and structured
   authorization) but no current specification defines how these
   mechanisms compose into a coherent credential delegation framework
   for AI agents.

   This document specifies the Credential Delegation Protocol: a profile
   of OAuth 2.0 Token Exchange (RFC 8693), Demonstrating Proof-of-
   Possession (RFC 9449), Rich Authorization Requests (RFC 9396), and
   Client-Initiated Backchannel Authentication (OpenID Connect CIBA)
   that enables human users to delegate scoped, attenuated credentials
   to AI agents operating across heterogeneous service providers.

   The protocol defines: agent identity lifecycle management using
   ephemeral key pairs; capability-shaped delegation tokens bound to
   specific operations and resources; credential wrapping semantics that
   prevent exposure of underlying OAuth tokens to agents; consent-gated
   delegation flows for asynchronous agents; real-time cascading
   revocation; and tamper-evident audit chains.

   This document does not define new token formats, new OAuth grant
   types, or modifications to existing authorization server behavior.
   It specifies how existing mechanisms are combined to achieve secure,
   auditable credential delegation for AI agents.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-sweeney-wimse-credential-delegation-01"/>
        </reference>
        <reference anchor="I-D.hamr-oauth-agent-delegation">
          <front>
            <title>An Attenuated Delegation Profile for Automated Agents</title>
            <author fullname="Amr Hassan" initials="A." surname="Hassan">
              <organization>Independent</organization>
            </author>
            <date day="20" month="September" year="2026"/>
            <abstract>
              <t>   This document builds on HTTP Message Signatures (RFC 9421) for
   requests that automated agents send on behalf of people.  RFC 9421
   shows who signed a request.  It does not show who the agent acts for,
   or what the agent may do.  This document defines an HTTP header
   field, Agent-Delegation, that carries a chain of delegation links.
   Each link can only narrow the scope, floors, and expiry of the link
   before it, and a verifier checks every link.  Floors cover two
   things.  The first is the person or account behind the agent: an
   Attestation Issuer, such as a mobile network operator or an identity-
   document check, answers with a signed yes or no, bound to the
   verifier's nonce and to an expiry, and never returns the value behind
   the answer.  The second is what the agent may do: each call has a
   class, r, w, or x, with an optional count per class, and a signed
   menu gives the class of each call.  This document does not define a
   credential format, an identity system, or revocation.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-hamr-oauth-agent-delegation-02"/>
        </reference>
        <reference anchor="Macaroons">
          <front>
            <title>Macaroons: Cookies with Contextual Caveats for Decentralized Authorization in the Cloud</title>
            <author>
              <organization/>
            </author>
            <date year="2014"/>
          </front>
          <seriesInfo name="NDSS 2014" value=""/>
        </reference>
        <reference anchor="Biscuit" target="https://doc.biscuitsec.org/reference/specifications.html">
          <front>
            <title>Biscuit Authorization Token Specification, v3</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
      </references>
    </references>
    <?line 935?>

<section anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>This work builds directly on, and seeks convergence with,
<xref target="I-D.niyikiza-oauth-attenuating-agent-tokens"/>,
<xref target="I-D.coetzee-oauth-spt-txn-tokens"/>,
<xref target="I-D.sweeney-wimse-credential-delegation"/>, <xref target="I-D.ietf-wimse-aims"/>, and the
requirements of <xref target="I-D.reece-wimse-cross-org-delegation"/>. The capability-token
lineage of <xref target="Macaroons"/>, <xref target="Biscuit"/>, and <xref target="RFC2693"/> is gratefully
acknowledged. The "min" constraint type was added after Amr Hassan, author of
<xref target="I-D.hamr-oauth-agent-delegation"/>, observed that -00 had no comparator for a
floor tightened upward; the duration-typed "tenureMin" axis of that document is
the motivating example.</t>
      <t>The following contributions were made in review of the -01 and shaped this
revision. Naming a contributor records where their
contribution landed; it does not imply that they endorse this document.</t>
      <t>Wes Jackson: the binding of the chain to an accountable Principal in "sub",
distinct from the holder key, and the naming of the Acting Agent at each hop
in "client_id" (<xref target="token-format"/>, <xref target="principal"/>); the observation that
quantity constraints compose across siblings while subsumption is checked per
edge, that "max" is therefore per token, and that per-action, per-lifetime,
and per-subtree limits are enforced by different machinery and belong in
distinct registered types (<xref target="constraints"/>, <xref target="fanout"/>); the atomic
check-and-debit requirement on shared accounting and the single-writer
constraint on delegation-time allocation (<xref target="fanout"/>); root issuance as the
policy decision point (<xref target="root-issuance"/>); the scope-vocabulary limit
(<xref target="vocabulary"/>); the questions that led to the process-every-detail rule
and the per-type interoperability statement (<xref target="detail-types"/>); and the
per-path evaluation rule answered in <xref target="several-chains"/>.</t>
      <t>Iman Schrock: the two-gateway example in which two verified chains overspend a
root ceiling, the distinction between allocation, which needs coordination,
and spending within disjoint allocations, which does not, the two deployment
shapes and the three hazards of the allocation path (<xref target="fanout"/>), the
compatibility point that led the scope grammar to keep structured literals as
their own form, and the request to state the residual ambiguity of that
grammar beside it (<xref target="scopes"/>).</t>
      <t>Girish Konda: the sustained refresh rate implied by the recommended lifetimes
and the sizing it requires of the authorization server, and the requirement
that a verifier tell a fresh status answer from a stale one (<xref target="latency"/>,
<xref target="verify"/> step 7).</t>
      <t>Jijie Wei: the question of what "par_hash" commits to when a parent is
re-issued, answered in <xref target="chain-linkage"/>, and the counting of child
re-issuance in the refresh rate (<xref target="latency"/>).</t>
      <t>Kieran Sweeney: the proposal to admit scope strings issued by OAuth providers,
which became the opaque scope form, and the vectors that exercise it
(<xref target="scopes"/>, <xref target="vectors"/>).</t>
      <t>Venkata Karunakar Uppalapati: the rule that a verifier rejects a chain carrying
an algorithm outside its local policy even where the signature verifies, now
step 1 of <xref target="verify"/> and the agility text in <xref target="security"/>, and the
trust-anchor provenance gap recorded in <xref target="provenance"/>.</t>
    </section>
    <section anchor="vectors">
      <name>Reference Implementation and Test Vectors</name>
      <t>A permissively licensed reference implementation (the "attenu-guard" library)
and a set of offline-verification test vectors (chains that <bcp14>MUST</bcp14> verify and
adversarial chains that <bcp14>MUST</bcp14> be rejected, each with the outcome name of
<xref target="outcomes"/> it is expected to produce) are published with this draft. They are intended
for interoperability testing across independent implementations.</t>
      <t>The twenty vector files published with the -01 are unchanged by this revision
and remain available under their -01 names: independent implementations have
vendored them, and a byte-stable set is worth more than a corrected one. They
do not conform to this revision: their tokens carry no "cnf" and no
"client_id", and their "aud" is null. The vector set published with this revision is a
second, separately named set. It carries "cnf", "client_id", and a well-formed
"aud" on every token, and adds vectors for: a chain in which a child's "sub"
differs from the root's (principal_altered); a child presented with a
re-issued parent rather than the instance it commits to (par_hash_mismatch);
a wildcard scope over an opaque child scope and an
opaque scope over a wildcard child, both not_narrower, and an opaque scope
covering a byte-identical child, which verifies, contributed by Kieran Sweeney;
a detail carrying two constraints with the same key and type (malformed); a
"rank" whose "order" differs from its parent's (not_narrower); a "max_lifetime"
under a parent "max" of the same key (not_narrower, by the no-cross-type rule);
a token whose "alg" is not on the verifier's list (signature_invalid); and a
token carrying an authorization detail of a type the verifier does not
implement (malformed). The -01 set's coverage of scope and ceiling widening,
parent splicing, depth and expiry violations, wildcard errors, RFC 8785 number
and string forms, non-finite values, duplicate member names, and the
informational "c14n" label is re-minted in the new set under this revision's
claim layout.</t>
    </section>
    <section anchor="changes">
      <name>Changes Since -01</name>
      <ul spacing="normal">
        <li>
          <t>"sub" is defined as the Principal, identical at every hop; "client_id" is
added to the required claims as the Acting Agent at each hop; and step 3 of
the verification algorithm denies a chain in which any token's "sub" differs
from the root's. A new subsection explains the split.</t>
        </li>
        <li>
          <t>"aud" is required to be a string or non-empty array of strings; null is
malformed. The audience check of RFC 9068 Section 4 is applied to the leaf
token in step 8.</t>
        </li>
        <li>
          <t>Step 1 requires a verifier-held list of accepted algorithms, denies any
token whose "alg" is not on it even where the signature verifies, and takes
the algorithm from the verifier's configuration for the key rather than from
the header. The algorithm agility text says how an algorithm is retired.</t>
        </li>
        <li>
          <t>The scope grammar gains a third form, "opaque-scope", the RFC 6749 scope
token without the asterisk, so that provider-issued scope strings can be
carried; classification is by bytes alone in a stated order; an opaque scope
covers only a byte-identical child and no wildcard covers it; the residual
ambiguity for dotted provider strings is stated beside the grammar.</t>
        </li>
        <li>
          <t>Two constraint types are added, "max_lifetime" and "max_subtree", so that
per-action, per-lifetime, and per-subtree bounds are distinct registered
types; "max" is defined as per action only; no inference is made across
types; a chain-only verifier checks only that a child's cumulative bounds
are no wider than its parent's.</t>
        </li>
        <li>
          <t>The "rank" type carries its ordering on the wire in an "order" member, and
a child's ordering must be identical to its parent's.</t>
        </li>
        <li>
          <t>A detail may not carry two constraints with the same key and type; a
verifier rejects a token that does.</t>
        </li>
        <li>
          <t>Three closure rules are stated as MUSTs: a token carries exactly one
"agent_delegation" detail; that detail carries no members other than
"type", "scopes", and "constraints"; and a constraint object carries no
members other than "key", its type member, and the members its type
defines. A token that breaks any of them is malformed.</t>
        </li>
        <li>
          <t>The covering relation is bound to the authorization detail type; a verifier
must evaluate every detail or reject the token, and an unimplemented type is
a rejection; under this revision a token carries exactly one detail, of type
"agent_delegation", and chains carrying several types are left to a later
revision; a resource server is pointed to RFC 9728 to declare the types it
supports.</t>
        </li>
        <li>
          <t>The IANA request for an "authorization_details" type value is withdrawn,
since RFC 9396 keeps no such registry; whether the type value becomes a URI
is recorded as open.</t>
        </li>
        <li>
          <t>The scope-vocabulary limit is recorded as an open issue in its own
subsection, with the interface a companion document is expected to meet and
the rule under which such a document is cited.</t>
        </li>
        <li>
          <t>The chain linkage section states that "par_hash" commits to a parent token
instance, and what that means for re-issued parents and their children.</t>
        </li>
        <li>
          <t>Step 8 denies an action under a cumulative constraint when no component
holds the running total it is measured over.</t>
        </li>
        <li>
          <t>An integer whose magnitude exceeds 2^53-1 is malformed.</t>
        </li>
        <li>
          <t>The revision states that it defines no transition mode for chains shaped by
the previous revision.</t>
        </li>
        <li>
          <t>Step 7 states that a cached status answer is trusted for its time to live,
that an unobtainable or unrefreshable status is unknown and denies, and that
a token issued without a status reference is a choice made at issuance.</t>
        </li>
        <li>
          <t>A table states what a verifier that sees no request may and may not
conclude, and a table names the verification outcomes the test vectors use.</t>
        </li>
        <li>
          <t>Several chains reaching one agent are addressed: each chain is verified
alone and never combined with another.</t>
        </li>
        <li>
          <t>Trust-anchor provenance is recorded as an open issue.</t>
        </li>
        <li>
          <t>The fan-out security consideration gains the sibling and two-gateway
examples, the allocation/spending distinction, the two deployment shapes for
aggregate budgets, and the three hazards of the allocation path.</t>
        </li>
        <li>
          <t>The revocation-latency security consideration gains the sustained refresh
rate, the resynchronisation case, the sizing requirement, the counting of
child re-issuance, and the revoke-at-refresh burst.</t>
        </li>
        <li>
          <t>Root issuance is stated as the policy decision point in a new security
consideration.</t>
        </li>
        <li>
          <t>draft-klrc-aiagent-auth, now replaced, is re-pointed to draft-ietf-wimse-aims
in the introduction and the acknowledgments; draft-jackson-wimse-evaluation,
draft-ietf-wimse-identifier, RFC 6749, RFC 7942, and RFC 9728 are added as
references.</t>
        </li>
        <li>
          <t>An Implementation Status section is added.</t>
        </li>
        <li>
          <t>The test-vector appendix records that the -01 set stays byte-stable and does
not conform to this revision, and describes the second set that does.</t>
        </li>
        <li>
          <t>Step 8 and the constraint vocabulary state that a running total reaches a
cumulative constraint through a channel separate from the request, that
cumulative and per-action constraints are evaluated against different
inputs, and that a per-action "max" on a running count bounds nothing.</t>
        </li>
      </ul>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA719/XIbR5Ln//UUdVRciPQBMPUtgTNzR0vyWjO2rBXlcWxs
7MlNoEm2BXRjuxukMLL2We5Z7sku85eZ9dFoyt6LuJsIj0Cgu7q6Kis/f5k5
nU5dX/Wrcu4P/l621UVVnK9Kf9r3Zb0t+nLpX5Sr8rLoq6b2F03rT1/508uy
7v3zq6KquwNXnJ+35TXdLl8nl+OKA7dsFnWxpgcs2+KinxZd005vqnVXTgu+
Y7oMd0wXfMf0+L5b0KMvm3Y3912/dNWmnfu+3Xb9/ePjZ/Rz0ZbF3J+Vi21b
9Tt307QfLttmu5n7n1/9cPbSfSh39N1y7v8Vj5j4+IyJL/Td5I9tf9W01T/0
z0WxKc6rFQ36b67ri3r5vlg1Nc19V3ZuU9GAfbOYeHqFvi0vOvq0W/OHf3My
0Nx5P6X/vKe1mfu3M39K1+ILWYO3xUVRruK3TXtZ1Pr4uS47fijXRbWa+xbX
z3jR/sclfzVbNGtcQK8+91d9v+nmX38t7zSrmq9d3bRrGu665Lm8/fb5/Xv3
nunHR/cfPJx7f8effvP6W/nq8ZOHz/DVj6f0Av7+7NgfdotmU0775kNZ48oj
ufTJo3uPcOlffz4L3zzTb97pN0+Pj/HNm+aNX9QX8u3T4wf38e3L5Yuz0/Dd
E3z3/Nu3/+RpI6/LjhbN//VH2j+54t6Thzrxp0+e6qOf66OfHT9+ao/2xWJR
dp3OeNM2F9Wq1MsePHuMy95Wiyt/mm62f1v++7bs+k6vfKgL8YKmrl89uS/P
eNM2fbngw/C27Jptuyj9D2VfLIu+0CufPpaF/Xa7Wu2m3aZc0Emi64sVUXHV
X635Ka+mL2ZV2V9MGyaWKdFXv+2mq6rr566qL4b79vjZA4x59uLs1ddnb/72
SpeYjgC+f4fXfVteNwu8kP787KGs9av1ZlWuifrlbc/wNN/Re4Rrn9ojZKiX
H+n81ZelrfmxrPn63fdn0/NmWy89VtgW7Jm+8w/fT2lXwRx4875+Ljs4eNtq
SVOhcyVnvKov5+k1yg/o/0e+lltpPVv7sS3LRam/LtqG9p7OUcJI7Lpfi8WH
jviKXFleF6tt9ntd7aoPRA86x8AZ6kvlTfLCdvmiKft/lKXt34Z+/1gPrulu
yrIud2FyJSZfrEZmd1WsW3vygBPyJT8Ui6JtGhnae+PS8Wv/vGk+VHRsbojC
6I+6Lz/222LlnxfXZdF32JIXtFJ13xar6h9Ej/kJoOPWX5X++arZLg/wECJp
esb943sP8WdHEqHsmDbn/vWLszP75ZuqW2yrPp+Yfjl4hpDWmZyIhbLZ6wfy
uL5oL8s+sjESFbNzGYYIdUab+jVx17It60X5dZeO0c2u+vXKTadTX5x39H6L
3jmSTVhIZiS08gXN/HK1M+Zf0uO6Dx0RsW/otVu9duZfFsQb4tr77qrZrpZu
0dTX5c43NQ1R+G573pW9by6wZHZ1fek3Rdvv7nYmSfrdhK4oertBBvPnpcMR
oj2gVQeHnfh1cVlX/XZJHws+XdVaPxX1zpfMERY4wX7TVHUylGcZ7eg9rlli
7zwtQnNxsapquh20UDckyVYrftWizmUc7yndxvdgmoUcardpy44exTyr91fN
xr+mIVre/vhmPO4lrWtP99PNQj3Cde2m6b2JP6dTx7MrRGbTkESvvb4jP7Ok
CexwPW1b53lZWozVkYxkbk4r1eMdNy3tZLUpVrNEQOXcyh8SM/LMyo78uqGN
oR2+aabYlnRX6emuLRekFnQkIyo6GvTwpoXQKXxdYqIH9N2BX6yIE9F7bHuZ
L/72FV+qXLqpi5UTyqCXWhR13fS2Y6mCQc9g9kQPANtj8lmWG3oPmiLJfppw
W878u6uqYzVpi81elhe0kx0WZFynmtN4KuZ4xLgyURg64UqyOCwsj/RV9va0
6L4kHDGAYzF6RAtS1UuZl7wNn6S69GGTsBis58hFOF+8ynxMeNv5nNGuTxyR
Kh3EcnDuaDg693yg+L5zPnWLdrfpm8u22FxVC/qqJ5barNdVv4Zax3tqwpYX
eVkSaa5JvHQ9Xa5nQk6J8o0okZUUZc86t25oC5uabsv0Qzu02DU6seGq8uOm
andC1GEBSIxfF21VELua+Ve9b8ttRxMrP/KEaBFYPk546xoSixfTDZEG7RVP
S/aJdJAjfauoHBCbWFzRe9CROeRlle1Wef49XwDF+ghTIT7RNsstvREf1rq8
cckS7mYOHHNdLZd0uBwpCXo5dAJ3WntjobI6dF7K6hpLy7zTX7TNmj7TS7VM
vUWdMFL6kWmm7lc7t6Rztqa3Y5Wux7yMB3fMF6eBEV9s24QV85h906yIJ7+C
Imczo9VfNbs1runpsOhvNFpCPqDJLh6xnFPdNHzOStep0eB5tlUr/LXiN4S0
KL1tIYklEHE4KOXHsl1UnXBI5tBEyu6Hn87egSMPBES8jVbe2Cr/wFwPa2sr
shS6l23Hy9mY19Eeo8PAN+/LBAy1XZHooKFWPKeaeVqBdXQsBEQkNMbL5DaS
bb0dzHEBQaRy5w6vmL8sNswjAxGvS2a8VUc6rbuVKX/6pPrl58+BoeXM2Ffr
TdmSdibKa0cGDylKi04EIBgyXj1hyTP/XXPDwmOSjX8mOq1/OLvn+dzQaVbR
RvRbbapSXrgjPZKWBlxbBNdmuqLRVjJ4p/KpZGMEHOiQFo3YSdP1Rw6y4gQ/
q6gQFkjbRVtGv+2gbRXbJW9lIg2WkRRmskguLFKx6uiMskQhq8H2pEvpJ5fZ
CQ+d+ddlxUeHRCTpEizruu1mQ3ZpF3UBm8JET8Rf/uzvp+yN9vg5tOdls8bL
qI7uTUcnW7Dkvfw9Xf7z5yMhX6L1rlgoN4cAKpZL0iw62ooViJ2F6hKUtOj5
GNMW09IfQkzyE6EyeJlQ54S7NptCla1qvd4KWSxE3QVxs2AlPi83TehRLBPY
lFrtZF7ErFfVgvRU0gga7A4Nek2vIW/Ku5kJmsEaBacAmfu09+tOT3AThjFR
k4p+ZrSmq7tPn4Le/vnzxBRoWlr9RGRM18uWmloHVY4YyxUJxCVbbm3Zu8N1
1P+73Xpd9i1N+LsfTp+zW0JVK+EcNNJVs1KJTVIRK/ihpDUhSiUe7gtXk3H0
6uW7b+lZbelFufGHpt7z6/XNolnRrl1c8OGRKREzWJ+XS5aLL8gGXjWXRGqX
9P5HM8ccQ04ESdyVhxOlIJ1ryjr6B8+ikX/kgxMMWznN93Gaab1ZHfJBHSIt
ZyWvwIzofAehCkqhr2BwChOiJ2H8JZMc/24H3clJZZ2DxMwE90WVhXUaunoS
Tj/z8e16A3+UHCAeLNUhXNAhIOR5smQkXTIZFXp6EzII7JK0277qLnY8XCJ8
Ovf2Hh7+9hELDzlsv2fgErngTaFZkqilB+DIueSsRpuaKe7misSx36wKFR8m
p1QIQILTKh0sVswv31fLAxVIRNz19Ly8Klass4i5gytpoQ6CNIYuetGsVs1N
h1UB1XZQ6IoNXUB8yzH1yEJDl6Y1Wor4g6lFpiDoa6Iv8QeNc1kKvedLFjrR
Fk2sG1cLYTnQtByvpvpN6CDR3GQFcEeih58pR6Z36Xb14qolubtlLmfeGBmR
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
X/WBqiYawCpXFxMbl45HHDbaM+lAQcWtsx08V5NN1puH4DV2dXljyhEYFLuj
bmozo2VPIuBM9BqgS6F95y4ndgzdCJax6SxqdFlsNByrviSEktuqUxlAB031
NIG0MJwsgNEsUE8vX3UiRkULJE0IOJAqhEFx3hSeBRVnaU5vXrqq2XbORhma
DOrKFlOPDYYkPg3nGX1TX4gJgTtcUCFFdUzVxHCckmlnBpEwE7bNOU6xIc0E
8UWdejyMNu0wCvF4cUqCQOj+ZtsjLphpi7DbyXgGSkeOyt4AlWmtS7jnop/0
rRndwhM/3Ymah3PfNm0Wip/kDlZVY4JD+Qv6j0vVH1XK2beFJd13RPPy7Slm
kKHYMme+Elj1tz/VyLATP5oKYbf/vJN9h0FhjElGVGvShr+AioCQsOOxBxRB
/EKunPKPUDxxrtQVYyomncagOxzAU98dKKOcZzZOOC/iDwC/Ux+ScEUO5Uc9
h6FbRfDwpuaNoM9xmkYvf00UxcgfwJtq/kMwARxfJ2v8YFFWK57JgQJ/0201
LhbQOexAY2NXww7OwgiJSm6vGwxUxDvTtQo6mhxWubxzTQifKyFNwgqqCzN9
Cu9vfhxZ1dpyUJfRYDKYziR1IyVI9GR7I2ut+iE4wMlBZAQBQpLsHg9hlJ4U
3CWWCF5r+IpFgzlDmOZsR3TxEdP/mfj1ghFOdCTlveg8IqUgCNJIMpgy2QKL
q4HfivOsZI84SevzZ7Jp/uM//sPRrzRC+N+f/X/9+Pje9MmpI3WTJpn98OB4
+uCZ68pLCMLwgwzx1aH8+7WXO7/2B+8P+P+nB0duVfWI90kIiu6xQQ5mB+Hz
V4fJX0fuRl9bb/rzLdfREF8duGZTkMZm49PF9746pBnfv0czoH8eTO8/k0/f
TB99g0+PXkyfvPRHzm6Jr5PN9Ws/mMfXPn0W1lC0hfTrAzhDTOE9SPLdDoJX
gBPjEtX8weyBeJeh1ZCEJSn5wR/SlE+PiDrWZJstoSGI949FgGqmIs0WhXIs
ZleYqXAFp4qe8GWJlY9iP034MOYF39wVbYC4Cvxi4rjqFT4kobgtq2j8qp3B
HovlGnGfROaRSUoGLix84VYxDmkoHbE+oFdPSLbvzF6VoataYMuIpLMqK/di
qiB1tlyybRM/hW2lPPEknsyJGx8j32odxL7cH8Vm4vJRckKAMqs0I0NAIdh/
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
YgHATel2dF8dky3Y/B/JQWDC39biAs3tpqCYDnr8gFulz5v2nTySGfsZaIg7
7vFjeWj/haFRkwpT0yA1KU/ajUlo2AX6RTuQtsT2cEm087YA8P0wnYo/nt0/
nh17bQySTtEdz+49nB0fZb39qqTVUKEAZVKH69CrIyk3Eax2Tlqy95OghErP
ZXlRbFe9OKqFEpO+W7nYZLURlQPgCXdW7Gp6m603GUVXiRsdcQdphwYG7khv
W6+LVn/l2MForT9t9BTFP0LJSZNjDZG5P1B3UZ5lXTUjqsp6bnLlj7R7Ypm1
HJ7okjUCjpMWqxKsDQnIyC+IbZWcJWrvF9szqJgGybT/nXTcWTeki6lbxGqg
lG4kz4fnLipUvQyZPlZZUQv+HOb1ho+4WqJTH/lhgtc8CgUA+bGRXQ/K8Vjl
cq6y4rVja1JaJs2iV5pFKOqqIk16esGbyzQrlVD1/OtB2TnSx1jpVe8zkUkr
NnmovIgKL3Reo7odj7ONQnMDb0ZS3q6XYDs+5IOqHMCQ3bbqS8MH6gmy+d8l
vnNDK7GTidPKVxuPsA7HPcMRD8XTlIUOGWeS7mquupBLyLVDxNfPJffkPOCJ
WQUfc/ANJyibv03qIkFJ5rB8N/Fp3zUB1VXW2a9TJiACB4b4VdHW6Mwmz3re
ZngluCOaBbdZlGae8amh946/f3z/8fTe8fT4iT64o6/kh0mo96vFdjqz2rRa
z5IbCPGkWUxuqhpBSXgOshmdvfjbiaHREJUBqOc1reLs1y7incTbuJY51I0s
M3iCnpDbxJyeBBcWzl5A5k8PWFaMzhDIgc6cq4TzRoMu4AKBSBh0jmcCjYEF
VX3nKn6wz3f9d2dcRj9jDBPz/DFFsPvPKfOPIa9QpZF95DP/OrwjNgYHUkOO
kkM60VpiuEw7K+Zt+gqQY1ohNiPF5IwTzU+nU8+RXtYhTxesCzJuA1E91R4l
cMEN4TjuTzqk9LrTNyjLD1BPaXEvS0tfmmgWS13tqg+kTmuKXvCw1JdTWNJT
iTiQ5NcbFk3Z/4Pkjab0kbzsP9Z7V/1BmESSIihXsmlrWgacNLEJm8pRvoHk
3aIMYzddN23ay5G8m0WxKc7hDpUJOvYPaxAoczXzTL6pugUxK3s6FOT7j589
ENcqO2tLeH9JWNseRPQgm4fDynXsRiqWy+DPO123/jvSmQveGCEKcHh+o6ti
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
fSI4fNZ2Xt26dfJSOGpm0Bq83v0f8DFcBFb4AAA=

-->

</rfc>
