<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.43 (Ruby 4.0.9) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>


<rfc ipr="trust200902" docName="draft-hulea-wimse-agent-mandate-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="Agent Mandates">Verifiable Mandates for Agents Acting Across Administrative Domains</title>

    <author fullname="Claudiu Hulea">
      <organization>Braincap SRL</organization>
      <address>
        <postal>
          <city>Bucharest</city>
          <country>Romania</country>
        </postal>
        <email>claudiu.hulea@braincap.ro</email>
      </address>
    </author>

    <date year="2026" month="October" day="24"/>

    <area>Security</area>
    <workgroup>Workload Identity in Multi System Environments</workgroup>
    <keyword>AI agents</keyword> <keyword>delegation</keyword> <keyword>mandate</keyword> <keyword>authorization</keyword> <keyword>attestation</keyword>

    <abstract>


<?line 86?>

<t>This document defines how a relying party in one administrative domain
validates the mandate under which a software agent, including an AI
agent, acts for a principal in another domain. Its distinctive element
is evidence of the delegator's authority: a statement from an authority
source about which permissions the person or entity granting the
mandate may delegate to agents, kept separate from the statement that
the mandate was granted.
The document specifies the mandate format with precisely defined limit
semantics, a deterministic validation procedure driven by an explicit
validation profile and kept separate from the relying party's
authorization decision, the attribution of every validated claim to the
issuer and role that asserted it, rules for enforcing the mandate after
token exchange, and the boundary between this protocol and a trust
framework. It reuses JSON Web Tokens, OAuth 2.0 Token Exchange, Rich
Authorization Requests, WIMSE workload credentials and HTTP Message
Signatures, Token Status Lists, and Entity Attestation Tokens.</t>



    </abstract>



  </front>

  <middle>


<?line 105?>

<section anchor="introduction"><name>Introduction</name>

<t>Software agents increasingly act on behalf of people and organizations
in systems those people and organizations do not operate. A treasury
agent run by a company initiates a payment at the company's bank. An
agent run by a broker submits an instruction to a custodian. In each
case the relying party has to decide whether to accept an action from
an agent configured, authorized, and operated in another administrative
domain.</t>

<t>Most building blocks exist. OAuth 2.0 Token Exchange <xref target="RFC8693"/>
exchanges security tokens, including across security domains, and
distinguishes the subject on whose behalf a request is made from the
actor that makes it. Rich Authorization Requests <xref target="RFC9396"/> express
fine-grained permissions. WIMSE workload credentials
<xref target="I-D.ietf-wimse-workload-creds"/> bind a workload identifier to a key.
Work on agents is advancing quickly: <xref target="I-D.ietf-wimse-aims"/> describes
how existing standards apply to agent authentication and authorization,
<xref target="I-D.asor-wimse-agent-delegation-chain"/> and
<xref target="I-D.hamr-oauth-agent-delegation"/> define attenuated delegation
chains, and <xref target="I-D.reece-wimse-cross-org-delegation"/> and
<xref target="I-D.yossif-agent-mandate-problem"/> state requirements for
cross-organization delegation and for verifiable mandates
(<xref target="related"/>).</t>

<t>What is not yet defined is evidence that the party at the root of a
mandate was entitled to grant it. A chain that only narrows proves that
no hop exceeded its parent. It does not prove that the root was within
the delegator's own authority, for example within the powers of a
company's legal representative. This document adds that evidence,
validates it together with the mandate under explicit rules, and keeps
each claim attributed to the issuer that made it.</t>

<section anchor="goals"><name>Goals</name>

<t><list style="numbers" type="1">
  <t><strong>Interoperable mandate semantics.</strong> Independent implementations
understand and check the same things: the structure of the mandate,
the semantics of its limits, the delegation chain, the binding to a
key, and revocation status (<xref target="mandate"/>, <xref target="constraints"/>).</t>
  <t><strong>Validation separate from authorization.</strong> Given the same inputs,
including the same validation profile, two conforming Validators
produce the same Validation Result. The relying party then applies
its own policy (<xref target="validation"/>, <xref target="authorization"/>).</t>
  <t><strong>Attribution of claims to issuers.</strong> The delegator's authority, the
grant of the mandate, the operator's statement about the agent
instance, and the state of the runtime come from different issuers.
A relying party can tell exactly who asserted what (<xref target="attribution"/>).</t>
  <t><strong>A clear boundary with the trust framework.</strong> This document defines
how evidence is expressed and verified. Which issuers are accepted,
what assurance levels mean, and which obligations issuers assume
belong to a trust framework (<xref target="trust-framework"/>).</t>
</list></t>

</section>
<section anchor="non-goals"><name>Non-Goals</name>

<t>This document does not:</t>

<t><list style="symbols">
  <t>determine whether an agent's reasoning or output is correct, or
whether an action reflects the principal's present intent;</t>
  <t>define a trust framework, assurance levels, or the legal effect of a
mandate;</t>
  <t>define how a delegator is shown a mandate or consents to it;</t>
  <t>replace the relying party's authorization policy.</t>
</list></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>Principal:</dt>
  <dd>
    <t>The natural or legal person on whose behalf an agent acts.</t>
  </dd>
  <dt>Delegator:</dt>
  <dd>
    <t>The party that grants a root mandate: the principal itself, or a
party holding authority to act for the principal.</t>
  </dd>
  <dt>Authority Source:</dt>
  <dd>
    <t>A party that asserts that a delegator holds authority to act for a
principal, for example a register of legal representatives.</t>
  </dd>
  <dt>Operator:</dt>
  <dd>
    <t>The organization that runs an agent instance and controls its keys.</t>
  </dd>
  <dt>Agent Instance:</dt>
  <dd>
    <t>A running workload, identified by a workload identifier
<xref target="I-D.ietf-wimse-arch"/>, that holds a private key.</t>
  </dd>
  <dt>Mandate Issuer:</dt>
  <dd>
    <t>The entity that signs a root Mandate Assertion on the delegator's
instruction. It may be the delegator itself.</t>
  </dd>
  <dt>Mandate Assertion:</dt>
  <dd>
    <t>A signed JWT expressing a mandate (<xref target="mandate"/>). A root Mandate
Assertion is signed by a Mandate Issuer; a sub-delegated one by the
agent instance holding the parent mandate.</t>
  </dd>
  <dt>Authority Assertion:</dt>
  <dd>
    <t>A signed JWT or SD-JWT <xref target="RFC9901"/> issued by an Authority Source
(<xref target="authority"/>).</t>
  </dd>
  <dt>Mandate Presentation:</dt>
  <dd>
    <t>The artifacts an agent instance presents to a relying party
(<xref target="presentation"/>).</t>
  </dd>
  <dt>Relying Party (RP):</dt>
  <dd>
    <t>The entity in another administrative domain that receives the action
request. In this document the RP's authorization server hosts the
Validator and issues access tokens.</t>
  </dd>
  <dt>Validator:</dt>
  <dd>
    <t>The RP component that executes the Mandate Validation Procedure.</t>
  </dd>
  <dt>Validation Profile:</dt>
  <dd>
    <t>A versioned document that fixes every rule the Validator applies
beyond this specification (<xref target="profile"/>).</t>
  </dd>
  <dt>Trust Framework:</dt>
  <dd>
    <t>The set of rules, identified by a URI, under which issuers are
accepted and evidence is interpreted (<xref target="trust-framework"/>).</t>
  </dd>
  <dt>Obligation:</dt>
  <dd>
    <t>A condition that the Validator cannot evaluate from its inputs and
that the RP has to discharge before it allows the action.</t>
  </dd>
  <dt>Budget:</dt>
  <dd>
    <t>A named cumulative limit shared by all actions under the same root
mandate that refer to it (<xref target="obligations"/>).</t>
  </dd>
</dl>

</section>
<section anchor="overview"><name>Architecture Overview</name>

<figure title="Roles and artifacts"><artwork type="ascii-art"><![CDATA[
 +-----------+  Authority   +-----------+
 | Authority |------------->| Delegator |
 |  Source   |  Assertion   +-----+-----+
 +-----------+                    | instructs
                                  v
                            +-----------+
                            |  Mandate  |
                            |  Issuer   |
                            +-----+-----+
 +-----------+  Workload          | Mandate Assertion
 | Operator  |------------->+-----v-----+
 +-----------+  Identity    |   Agent   |
                Token       | Instance  |
 +-----------+  Attestation |           |
 | Verifier  |------------->|           |
 +-----------+  Result      +-----+-----+
                                  | Mandate Presentation,
                                  | signed HTTP request
                                  v
                            +-----------+  Validation  +-----------+
                            | Validator |------------->|    RP     |
                            +-----------+  Result      |  Policy   |
                                                       +-----------+
]]></artwork></figure>

<t><list style="numbers" type="1">
  <t>An Authority Source issues an Authority Assertion stating that the
delegator may act for the principal within stated powers.</t>
  <t>A Mandate Issuer, on the delegator's instruction, issues a root
Mandate Assertion bound to the agent instance's key and referencing
the Authority Assertion.</t>
  <t>The operator issues the agent instance a Workload Identity Token
(WIT) <xref target="I-D.ietf-wimse-workload-creds"/> for the same key. A RATS
Verifier <xref target="RFC9334"/> <bcp14>MAY</bcp14> issue an attestation result.</t>
  <t>The agent instance sends a token exchange request carrying the
evidence and the requested action, signed with its key
(<xref target="presentation"/>).</t>
  <t>The Validator executes the Mandate Validation Procedure under a
Validation Profile. The RP applies its policy, discharges
Obligations, and issues a single-use access token (<xref target="enforcement"/>).</t>
</list></t>

<t>An agent instance <bcp14>MAY</bcp14> delegate a narrower mandate to another agent
instance (<xref target="chain"/>).</t>

</section>
<section anchor="mandate"><name>Mandate Assertion</name>

<t>A Mandate Assertion is a JWT <xref target="RFC7519"/> signed as a JWS <xref target="RFC7515"/>.
The JOSE header <spanx style="verb">typ</spanx> value <bcp14>MUST</bcp14> be <spanx style="verb">mandate+jwt</spanx>. Implementations <bcp14>MUST</bcp14>
follow <xref target="RFC8725"/>. The algorithm <bcp14>MUST</bcp14> be one permitted by the
Validation Profile.</t>

<section anchor="claims"><name>Claims</name>

<dl>
  <dt>iss:</dt>
  <dd>
    <t><bcp14>REQUIRED</bcp14>. Identifier of the Mandate Issuer, or, for a sub-delegated
mandate, the workload identifier of the delegating agent instance.</t>
  </dd>
  <dt>sub:</dt>
  <dd>
    <t><bcp14>REQUIRED</bcp14>. Workload identifier of the agent instance that holds the
mandate.</t>
  </dd>
  <dt>jti:</dt>
  <dd>
    <t><bcp14>REQUIRED</bcp14>. Unique identifier of the assertion.</t>
  </dd>
  <dt>iat, nbf, exp:</dt>
  <dd>
    <t><bcp14>REQUIRED</bcp14>. As defined in <xref target="RFC7519"/>.</t>
  </dd>
  <dt>cnf:</dt>
  <dd>
    <t><bcp14>REQUIRED</bcp14>. Confirmation claim <xref target="RFC7800"/> containing a <spanx style="verb">jkt</spanx> member,
the JWK SHA-256 thumbprint <xref target="RFC7638"/> of the holder's public key.</t>
  </dd>
  <dt>principal:</dt>
  <dd>
    <t><bcp14>REQUIRED</bcp14>. A Party Identifier (<xref target="party-id"/>) for the principal.</t>
  </dd>
  <dt>delegator:</dt>
  <dd>
    <t><bcp14>REQUIRED</bcp14>. A Party Identifier for the delegator. In a sub-delegated
mandate, a Party Identifier for the delegating agent instance.</t>
  </dd>
  <dt>authority:</dt>
  <dd>
    <t>In a root mandate, <bcp14>REQUIRED</bcp14> unless <spanx style="verb">delegator</spanx> equals <spanx style="verb">principal</spanx>;
an array of Artifact References (<xref target="artifact-ref"/>) to Authority
Assertions. <bcp14>MUST NOT</bcp14> appear in a sub-delegated mandate.</t>
  </dd>
  <dt>perms:</dt>
  <dd>
    <t><bcp14>REQUIRED</bcp14>. A non-empty array of Permission objects (<xref target="permissions"/>).</t>
  </dd>
  <dt>parent:</dt>
  <dd>
    <t><bcp14>REQUIRED</bcp14> in a sub-delegated mandate; <bcp14>MUST NOT</bcp14> appear in a root
mandate. An Artifact Reference to the parent Mandate Assertion.</t>
  </dd>
  <dt>max_depth:</dt>
  <dd>
    <t><bcp14>OPTIONAL</bcp14>. Non-negative integer: the number of further sub-delegations
permitted below this mandate. Default 0.</t>
  </dd>
  <dt>aud:</dt>
  <dd>
    <t><bcp14>OPTIONAL</bcp14>. Array of RP identifiers to which the mandate may be
presented.</t>
  </dd>
  <dt>status:</dt>
  <dd>
    <t><bcp14>OPTIONAL</bcp14>. Status reference as defined in
<xref target="I-D.ietf-oauth-status-list"/>. The Validation Profile states when it
is required.</t>
  </dd>
  <dt>tf:</dt>
  <dd>
    <t><bcp14>REQUIRED</bcp14>. URI of the Trust Framework under which the assertion was
issued.</t>
  </dd>
  <dt>loa:</dt>
  <dd>
    <t><bcp14>OPTIONAL</bcp14>. Assurance level asserted by the issuer. Its meaning is
defined by the Trust Framework; the Validator reports it and does not
interpret it.</t>
  </dd>
</dl>

</section>
<section anchor="party-id"><name>Party Identifiers</name>

<t>A Party Identifier is a JSON object with two <bcp14>REQUIRED</bcp14> string members:
<spanx style="verb">id</spanx>, and <spanx style="verb">scheme</spanx>, a URI naming the identifier scheme. Two Party
Identifiers are equal if and only if both members are equal as
sequences of Unicode code points.</t>

</section>
<section anchor="artifact-ref"><name>Artifact References</name>

<t>An Artifact Reference is a JSON object with a <bcp14>REQUIRED</bcp14> member <spanx style="verb">dig</spanx>,
the base64url-encoded SHA-256 digest of the ASCII bytes of the
referenced artifact's compact JWS serialization. For an SD-JWT, the
digest is computed over the issuer-signed JWT only. The <bcp14>OPTIONAL</bcp14>
members <spanx style="verb">iss</spanx> and <spanx style="verb">jti</spanx> are hints for locating the artifact; they play
no part in matching. A reference matches an artifact if and only if
the digests are equal.</t>

</section>
<section anchor="permissions"><name>Permissions</name>

<t>A Permission object has the structure of an authorization details
object <xref target="RFC9396"/>: a <bcp14>REQUIRED</bcp14> <spanx style="verb">type</spanx> member and type-specific members,
including the common members <spanx style="verb">locations</spanx>, <spanx style="verb">actions</spanx>, <spanx style="verb">datatypes</spanx>,
<spanx style="verb">identifier</spanx>, and <spanx style="verb">privileges</spanx>. It <bcp14>MAY</bcp14> also contain <spanx style="verb">constraints</spanx>, an
array of Constraint objects (<xref target="constraints"/>).</t>

<t><xref target="RFC9396"/> does not define a general way to compare two authorization
details objects, because the meaning of their members depends on the
API. This document therefore applies its matching and attenuation rules
only to types listed in the Validation Profile, each with a Type
Profile (<xref target="type-profiles"/>). A request of an unlisted type does not
match.</t>

<t>Let the constrained members of P be the first reference tokens of the
<spanx style="verb">ptr</spanx> values of P's constraints. A requested authorization detail R
matches a Permission P at validation time T if and only if:</t>

<t><list style="numbers" type="1">
  <t>R.type equals P.type, and the type is listed in the Validation
Profile.</t>
  <t>For each of <spanx style="verb">locations</spanx>, <spanx style="verb">actions</spanx>, <spanx style="verb">datatypes</spanx>, and <spanx style="verb">privileges</spanx>
present in P, R contains the member and every element of R's array
is identical (<xref target="json-identity"/>) to an element of P's array.</t>
  <t>Every other member of P except <spanx style="verb">constraints</spanx> is present in R with an
identical value.</t>
  <t>Every top-level member of R is admitted by P: <spanx style="verb">type</spanx>, one of
<spanx style="verb">locations</spanx>, <spanx style="verb">actions</spanx>, <spanx style="verb">datatypes</spanx>, and <spanx style="verb">privileges</spanx>, a member of P,
a constrained member of P, or an admitted member of the Type Profile
(<xref target="type-profiles"/>).</t>
  <t>Every stateless constraint in P is satisfied by R at time T.</t>
  <t>For every stateful constraint in P, the pointer resolves in R to a
value of the type the predicate requires.</t>
</list></t>

<t>A Permission without one of <spanx style="verb">locations</spanx>, <spanx style="verb">actions</spanx>, <spanx style="verb">datatypes</spanx>, and
<spanx style="verb">privileges</spanx> places no restriction on that dimension. Likewise, an
admitted member of the Type Profile that P neither contains nor
constrains may take any value. Rule 4 prevents a request from carrying
any other member, which the mandate did not anticipate and which could
change the meaning of the action.</t>

<t>These rules, and those in <xref target="attenuation"/>, are fixed by this document.
A Type Profile chooses which members are admitted; it cannot replace
the comparison rules. Identity comparison and a registered set of
predicates keep the result the same across implementations.</t>

</section>
<section anchor="constraints"><name>Constraints</name>

<t>A Constraint object has the members <spanx style="verb">pred</spanx> (<bcp14>REQUIRED</bcp14>), <spanx style="verb">ptr</spanx> (a JSON
Pointer <xref target="RFC6901"/> evaluated against the requested authorization
detail; <bcp14>REQUIRED</bcp14> except for <spanx style="verb">window</spanx>), and <spanx style="verb">value</spanx> (<bcp14>REQUIRED</bcp14>). The
<spanx style="verb">sum_max</spanx> predicate also has the <bcp14>REQUIRED</bcp14> members <spanx style="verb">period</spanx> and
<spanx style="verb">budget</spanx>.</t>

<t>Amounts are decimal strings matching the ABNF below, compared as exact
decimal numbers. JSON numbers <bcp14>MUST NOT</bcp14> be used for amounts.</t>

<figure><sourcecode type="abnf"><![CDATA[
decimal     = ["-"] nonneg
nonneg      = ("0" / (%x31-39 *DIGIT)) ["." 1*DIGIT]
]]></sourcecode></figure>

<t><spanx style="verb">period</spanx> is an integer number of seconds, at least 1 and at most the
maximum set by the Validation Profile. <spanx style="verb">budget</spanx> is a string.</t>

<t>If a pointer does not resolve, or resolves to a value of the wrong
type, the constraint is not satisfied.</t>

<texttable title="Initial constraint predicates" anchor="predicates">
      <ttcol align='left'>pred</ttcol>
      <ttcol align='left'>Kind</ttcol>
      <ttcol align='left'>Satisfied when</ttcol>
      <c>eq</c>
      <c>stateless</c>
      <c>resolved value is identical to <spanx style="verb">value</spanx></c>
      <c>in</c>
      <c>stateless</c>
      <c>resolved value is identical to an element of <spanx style="verb">value</spanx></c>
      <c>max</c>
      <c>stateless</c>
      <c>resolved decimal is less than or equal to <spanx style="verb">value</spanx></c>
      <c>min</c>
      <c>stateless</c>
      <c>resolved decimal is greater than or equal to <spanx style="verb">value</spanx></c>
      <c>window</c>
      <c>stateless</c>
      <c><spanx style="verb">value.nbf</spanx> &lt;= T &lt; <spanx style="verb">value.exp</spanx> (no <spanx style="verb">ptr</spanx>)</c>
      <c>sum_max</c>
      <c>stateful</c>
      <c>resolved value matches <spanx style="verb">nonneg</spanx>; produces an Obligation</c>
      <c>cosign_above</c>
      <c>stateful</c>
      <c>produces an Obligation if resolved decimal exceeds <spanx style="verb">value</spanx></c>
</texttable>

<t>For <spanx style="verb">sum_max</spanx>, <spanx style="verb">value</spanx> <bcp14>MUST</bcp14> match <spanx style="verb">nonneg</spanx>, and a negative resolved
value does not satisfy the constraint. All <spanx style="verb">sum_max</spanx> constraints with
the same <spanx style="verb">budget</spanx> in one Permission <bcp14>MUST</bcp14> have the same <spanx style="verb">ptr</spanx>, so that
an action contributes a single, well-defined amount to each budget; a
Permission that violates this makes its artifact <spanx style="verb">malformed</spanx>. Several
<spanx style="verb">sum_max</spanx> constraints may still share a budget and pointer with
different periods, for example a daily and a monthly limit on the same
amount. Refunds, reversals, and other
negative contributions are outside the scope of <spanx style="verb">sum_max</spanx> and need a
separately defined predicate.</t>

<t>A predicate not listed as supported in the Validation Profile makes the
Permission not match.</t>

</section>
<section anchor="json-identity"><name>JSON Identity</name>

<t>Two JSON values are identical if they have the same type and: strings
are equal as sequences of Unicode code points; booleans are
identical only if both are true or both are false; null is identical
to null; arrays have the same length and identical elements in order;
objects have the same member names and identical member values. JSON
numbers <bcp14>SHOULD NOT</bcp14> be used in Permission members or constraint values;
when used, they are identical only if their textual representations
are identical.</t>

</section>
<section anchor="attenuation"><name>Attenuation</name>

<t>Attenuation is used for sub-delegation (<xref target="chain"/>) and for checking a
root mandate against the delegator's powers (<xref target="validation-authority"/>).
A child Permission C is attenuated with respect to a parent Permission
P if and only if:</t>

<t><list style="numbers" type="1">
  <t>C.type equals P.type.</t>
  <t>For each of <spanx style="verb">locations</spanx>, <spanx style="verb">actions</spanx>, <spanx style="verb">datatypes</spanx>, and <spanx style="verb">privileges</spanx>
present in P, C contains the member and C's array contains only
elements identical to elements of P's array.</t>
  <t>Every other member of P except <spanx style="verb">constraints</spanx> is present in C with
an identical value.</t>
  <t>Every top-level member of C other than <spanx style="verb">type</spanx> and <spanx style="verb">constraints</spanx> is
admitted by P, in the sense of rule 4 of <xref target="permissions"/>.</t>
  <t>Every constrained member of C is admitted by P. A constraint in C
can therefore only narrow the values of a member that P already
admits; it cannot admit a member that P rejects.</t>
  <t>For every constraint in P, C contains a constraint with the same
<spanx style="verb">ptr</spanx> that is at least as strict, per <xref target="attenuation-rules"/>.</t>
</list></t>

<t>Together these rules ensure that every request matching C also matches
P.</t>

<texttable title="Attenuation rules" anchor="attenuation-rules">
      <ttcol align='left'>Parent pred</ttcol>
      <ttcol align='left'>Child constraint is at least as strict when</ttcol>
      <c>eq</c>
      <c><spanx style="verb">eq</spanx> with identical <spanx style="verb">value</spanx></c>
      <c>in</c>
      <c><spanx style="verb">in</spanx> with <spanx style="verb">value</spanx> a subset, or <spanx style="verb">eq</spanx> with <spanx style="verb">value</spanx> an element</c>
      <c>max</c>
      <c><spanx style="verb">max</spanx> with <spanx style="verb">value</spanx> less than or equal</c>
      <c>min</c>
      <c><spanx style="verb">min</spanx> with <spanx style="verb">value</spanx> greater than or equal</c>
      <c>window</c>
      <c><spanx style="verb">window</spanx> with nbf not earlier and exp not later</c>
      <c>sum_max</c>
      <c><spanx style="verb">sum_max</spanx> with identical <spanx style="verb">budget</spanx>, <spanx style="verb">value</spanx> less than or equal, <spanx style="verb">period</spanx> greater than or equal</c>
      <c>cosign_above</c>
      <c><spanx style="verb">cosign_above</spanx> with <spanx style="verb">value</spanx> less than or equal</c>
</texttable>

<t>The <spanx style="verb">sum_max</spanx> rule is sound because contributions are non-negative and
the budget is shared (<xref target="obligations"/>): the sum over the parent's
period is at most the sum over the longer child period, which the
child's constraint keeps at or below a value no greater than the
parent's.</t>

<t>A set of child Permissions is attenuated with respect to a set of
parent Permissions if every child Permission is attenuated with respect
to at least one parent Permission.</t>

</section>
<section anchor="chain"><name>Sub-Delegation</name>

<t>An agent instance whose mandate has <spanx style="verb">max_depth</spanx> of at least 1 <bcp14>MAY</bcp14> issue
a sub-delegated Mandate Assertion. The sub-delegated assertion:</t>

<t><list style="symbols">
  <t>is signed with the private key whose thumbprint is the parent's
<spanx style="verb">cnf.jkt</spanx>, and carries the corresponding public key in the <spanx style="verb">jwk</spanx>
member of its protected JOSE header;</t>
  <t>has <spanx style="verb">iss</spanx> equal to the parent's <spanx style="verb">sub</spanx>;</t>
  <t>has <spanx style="verb">principal</spanx> and <spanx style="verb">tf</spanx> equal to the parent's;</t>
  <t>has <spanx style="verb">exp</spanx> not later than the parent's;</t>
  <t>has <spanx style="verb">max_depth</spanx> at most the parent's <spanx style="verb">max_depth</spanx> minus 1;</t>
  <t>has <spanx style="verb">aud</spanx>, if the parent has <spanx style="verb">aud</spanx>, containing only elements of the
parent's <spanx style="verb">aud</spanx>;</t>
  <t>has <spanx style="verb">perms</spanx> attenuated with respect to the parent's <spanx style="verb">perms</spanx>.</t>
</list></t>

<t>The key in the <spanx style="verb">jwk</spanx> header is not a trust anchor. It is accepted only
because the already verified parent mandate binds its thumbprint.</t>

</section>
</section>
<section anchor="authority"><name>Authority Assertion</name>

<t>An Authority Assertion states that, according to the records of the
Authority Source at the time of issuance, the delegator may delegate
to agents, on behalf of the principal, the permissions described in
<spanx style="verb">powers</spanx>. It is a statement about delegable powers, not merely about
what the delegator may do in person: a delegator entitled to perform
an action may still be barred from delegating it, and such an action
does not appear in <spanx style="verb">powers</spanx>. It does not state that the delegator
issued or intended any particular mandate.</t>

<t>An Authority Assertion is a JWT with <spanx style="verb">typ</spanx> value <spanx style="verb">authority+jwt</spanx>, or an
SD-JWT <xref target="RFC9901"/> with <spanx style="verb">typ</spanx> value <spanx style="verb">authority+sd-jwt</spanx>. It contains:</t>

<t><list style="symbols">
  <t><spanx style="verb">iss</spanx>, <spanx style="verb">jti</spanx>, <spanx style="verb">iat</spanx>, <spanx style="verb">exp</spanx> (<bcp14>REQUIRED</bcp14>);</t>
  <t><spanx style="verb">principal</spanx> and <spanx style="verb">delegator</spanx> (<bcp14>REQUIRED</bcp14> Party Identifiers);</t>
  <t><spanx style="verb">powers</spanx> (<bcp14>REQUIRED</bcp14>): a non-empty array of Permission objects
describing the permissions the delegator may delegate to agents.
They <bcp14>MUST NOT</bcp14> contain stateful constraints; cumulative limits on the
delegator's own authority are outside the scope of this version;</t>
  <t><spanx style="verb">max_depth</spanx> (<bcp14>OPTIONAL</bcp14>): the greatest <spanx style="verb">max_depth</spanx> a root mandate based
on this assertion may carry. Default 0, which permits no
sub-delegation;</t>
  <t><spanx style="verb">tf</spanx> (<bcp14>REQUIRED</bcp14>) and <spanx style="verb">loa</spanx> (<bcp14>OPTIONAL</bcp14>);</t>
  <t><spanx style="verb">status</spanx> (<bcp14>OPTIONAL</bcp14>).</t>
</list></t>

<t>A <spanx style="verb">sum_max</spanx> constraint in a root mandate is therefore a limit on that
mandate only. Two root mandates based on the same Authority Assertion
have separate budgets, because accounting is keyed by the root
mandate (<xref target="obligations"/>).</t>

<t>When the assertion is an SD-JWT, the claims listed above, including
every member nested at any depth within <spanx style="verb">powers</spanx>, <bcp14>MUST</bcp14> be in the
issuer-signed payload and <bcp14>MUST NOT</bcp14> be selectively disclosable. An
Authority Assertion whose <spanx style="verb">powers</spanx> contain an <spanx style="verb">_sd</spanx> member or a <spanx style="verb">...</spanx>
array element is <spanx style="verb">malformed</spanx>. Only other claims about the delegator,
such as a name or role title, may be selectively disclosable, and they
never affect the Validation Result. Hiding a restriction on the
delegator's powers would otherwise make those powers appear broader.</t>

<t>In the European Union, an Authority Source can derive Authority
Assertions from electronic attestations of attributes concerning powers
and mandates to represent natural or legal persons <xref target="EIDAS2"/>. This
document does not require any particular source.</t>

</section>
<section anchor="evidence"><name>Agent Instance Evidence</name>

<section anchor="wit"><name>Workload Identity Token</name>

<t>The agent instance presents a WIT <xref target="I-D.ietf-wimse-workload-creds"/>
issued by its operator. Under this profile the WIT <bcp14>MUST</bcp14> contain <spanx style="verb">iss</spanx>.
The WIT <spanx style="verb">sub</spanx> <bcp14>MUST</bcp14> equal the leaf mandate's <spanx style="verb">sub</spanx>, and the JWK SHA-256
thumbprint of the WIT's <spanx style="verb">cnf.jwk</spanx> <bcp14>MUST</bcp14> equal the leaf mandate's
<spanx style="verb">cnf.jkt</spanx>. The WIT is referenced by digest; it carries no <spanx style="verb">tf</spanx>, and its
issuer is checked against <spanx style="verb">operator</spanx> anchors accepted for the
framework context (<xref target="validation"/>).</t>

<t>The WIT asserts that the operator runs an agent instance with this
identifier and key. It asserts nothing about the model, configuration,
or behavior of the instance.</t>

</section>
<section anchor="ar"><name>Attestation Result</name>

<t>An agent instance <bcp14>MAY</bcp14> present an attestation result from a RATS
Verifier <xref target="RFC9334"/>, encoded as a JWT-based EAT <xref target="RFC9711"/> with <spanx style="verb">typ</spanx>
value <spanx style="verb">eat+jwt</spanx> and the claims <spanx style="verb">iss</spanx>, <spanx style="verb">iat</spanx>, <spanx style="verb">exp</spanx>, <spanx style="verb">eat_profile</spanx>, and
<spanx style="verb">cnf</spanx> with a <spanx style="verb">jkt</spanx> member. The <spanx style="verb">eat_profile</spanx> value <bcp14>MUST</bcp14> be one accepted
by the Validation Profile, which also fixes the meaning of the result.
The <spanx style="verb">cnf.jkt</spanx> <bcp14>MUST</bcp14> equal the leaf mandate's <spanx style="verb">cnf.jkt</spanx>.</t>

<t>An attestation result describes the Verifier's appraisal of evidence at
the time the evidence was produced, not the state of the instance
afterwards <xref target="RFC9334"/>. When the instance obtains model output from a
remote service, the result covers the remote model only if the
appraised evidence covered it.</t>

</section>
<section anchor="exposure"><name>Exposure Statement</name>

<t>An agent instance <bcp14>MAY</bcp14> present an Exposure Statement: a JWT with <spanx style="verb">typ</spanx>
value <spanx style="verb">agent-exposure+jwt</spanx>, signed by a control component that observes
the instance's session (the observer), not by the agent instance. It
contains:</t>

<t><list style="symbols">
  <t><spanx style="verb">iss</spanx>, <spanx style="verb">jti</spanx>, <spanx style="verb">iat</spanx>, <spanx style="verb">exp</spanx>, and <spanx style="verb">sub</spanx> (the agent instance);</t>
  <t><spanx style="verb">aud</spanx>: the identifier of the single RP to which the statement may be
presented;</t>
  <t><spanx style="verb">cnf</spanx> with a <spanx style="verb">jkt</spanx> member equal to the leaf mandate's <spanx style="verb">cnf.jkt</spanx>;</t>
  <t><spanx style="verb">sid</spanx>: an identifier, assigned by the observer, of the session it
observed;</t>
  <t><spanx style="verb">nonce</spanx>: the value of the <spanx style="verb">nonce</spanx> parameter of the HTTP Message
Signature of the request it accompanies (<xref target="pop"/>);</t>
  <t><spanx style="verb">ad_hash</spanx>: the base64url-encoded SHA-256 digest of the bytes of the
<spanx style="verb">authorization_details</spanx> parameter value of that request, as sent;</t>
  <t><spanx style="verb">exposure</spanx>: an array of exposure event types from <xref target="iana-exposure"/>
that the observer recorded in session <spanx style="verb">sid</spanx> up to <spanx style="verb">iat</spanx>, sorted by
code point, without duplicates.</t>
</list></t>

<t>The agent instance obtains the statement from the observer for one
specific request to one RP, supplying the RP identifier and the
signature nonce it will use. The statement is single-use:</t>

<t><list style="symbols">
  <t><spanx style="verb">aud</spanx> restricts it to one RP, so the same statement cannot be
presented at a second RP;</t>
  <t>the RP's authorization server consumes it, as described below, only
after the Validator has accepted it for this presentation.</t>
</list></t>

<t>The authorization server proceeds in this order:</t>

<t><list style="numbers" type="1">
  <t>It verifies the HTTP Message Signature and runs the Validator.</t>
  <t>If the outcome is <spanx style="verb">invalid</spanx>, it rejects the request. No Exposure
Statement is consumed.</t>
  <t>Otherwise, it takes the deduplicated set of pairs (<spanx style="verb">iss</spanx>, <spanx style="verb">jti</spanx>) of
the Exposure Statements listed in the result's <spanx style="verb">evidence</spanx>, and only
those. In one atomic operation, if any pair in the set is already
recorded, it rejects the request and records none of them;
otherwise it records all of them, each with the statement's
verified <spanx style="verb">exp</spanx>.</t>
  <t>It then applies its policy and continues with authorization.</t>
</list></t>

<t>A presentation that is invalid, and a statement the Validator
rejected, therefore never change the record. A forged statement that
copies a legitimate <spanx style="verb">iss</spanx> and <spanx style="verb">jti</spanx>, or an authentic statement
presented with another key or nonce, cannot consume the legitimate
one. Each record <bcp14>MUST</bcp14> be kept until the recorded <spanx style="verb">exp</spanx> plus
<spanx style="verb">max_clock_skew</spanx>, independently of how long signature nonces are
kept. A statement is consumed once recorded, even if the RP's policy
later refuses the action. Consumption is tracked outside the
Validator, which remains a deterministic function of its inputs. The
statement describes the session the observer attributes to that
request. <spanx style="verb">exp</spanx> minus <spanx style="verb">iat</spanx> <bcp14>MUST NOT</bcp14> exceed the Validation Profile's
maximum for Exposure Statements. An empty <spanx style="verb">exposure</spanx> array means that
no registered event was observed, not that the session was free of
manipulation.</t>

<t>The observer <bcp14>MAY</bcp14> be run by the operator, but its signing key <bcp14>MUST NOT</bcp14>
be accessible to the agent instance. Each <spanx style="verb">exposure_observer</spanx> trust
anchor lists the WIT issuers whose sessions it may observe.</t>

</section>
</section>
<section anchor="presentation"><name>Mandate Presentation</name>

<t>This document profiles OAuth 2.0 Token Exchange <xref target="RFC8693"/>. The agent
instance is the client of the RP's authorization server.</t>

<section anchor="token-exchange-request"><name>Token Exchange Request</name>

<t>The request contains:</t>

<t><list style="symbols">
  <t><spanx style="verb">subject_token</spanx>: the leaf Mandate Assertion;</t>
  <t><spanx style="verb">subject_token_type</spanx>: <spanx style="verb">urn:ietf:params:oauth:token-type:agent-mandate</spanx>;</t>
  <t><spanx style="verb">actor_token</spanx>: the agent instance's WIT;</t>
  <t><spanx style="verb">actor_token_type</spanx>: <spanx style="verb">urn:ietf:params:oauth:token-type:jwt</spanx>;</t>
  <t><spanx style="verb">authorization_details</spanx>: an array containing exactly one
authorization details object <xref target="RFC9396"/>, the requested action. This
version authorizes one action per request and per token;</t>
  <t><spanx style="verb">mandate_evidence</spanx>: a JSON array of strings, each the compact
serialization of a parent Mandate Assertion, an Authority Assertion,
an attestation result, or an Exposure Statement. <bcp14>REQUIRED</bcp14> when the
leaf is sub-delegated or references an Authority Assertion.</t>
</list></t>

</section>
<section anchor="pop"><name>Proof of Possession</name>

<t>The client <bcp14>MUST</bcp14> sign the request with HTTP Message Signatures
<xref target="RFC9421"/> as profiled for workloads by
<xref target="I-D.ietf-wimse-http-signature"/>, using the key confirmed by the WIT.
The signature <bcp14>MUST</bcp14> cover at least <spanx style="verb">@method</spanx>, <spanx style="verb">@target-uri</spanx>, the
<spanx style="verb">Content-Digest</spanx> header field <xref target="RFC9530"/>, and the
<spanx style="verb">Workload-Identity-Token</spanx> header field, and <bcp14>MUST</bcp14> carry the <spanx style="verb">created</spanx>,
<spanx style="verb">expires</spanx>, and <spanx style="verb">nonce</spanx> parameters. The <spanx style="verb">Workload-Identity-Token</spanx> header
field <bcp14>MUST</bcp14> carry the same WIT as <spanx style="verb">actor_token</spanx>. <spanx style="verb">expires</spanx> minus
<spanx style="verb">created</spanx> <bcp14>MUST NOT</bcp14> exceed the Validation Profile's <spanx style="verb">max_pop_window</spanx>.</t>

<t>Because the request body carries the mandate, the evidence, and the
requested authorization details, and <spanx style="verb">Content-Digest</spanx> covers the body,
the signature binds the key, the RP endpoint, the mandate, and the
requested action, and its parameters give freshness. The authorization
server <bcp14>MUST</bcp14> reject a <spanx style="verb">nonce</spanx> it has already accepted within the
signature's validity period. The Workload Proof Token
<xref target="I-D.ietf-wimse-wpt"/> is not used because it does not cover the
request body.</t>

<t>The PoP outcome given to the Validator (<xref target="inputs"/>) is <spanx style="verb">ok</spanx> if and only
if all of these checks succeed; the verified <spanx style="verb">nonce</spanx> value is also
given to the Validator.</t>

</section>
</section>
<section anchor="profile"><name>Validation Profile</name>

<t>The Validation Profile is a JSON document fixing every rule that
influences the Validation Result and is not fixed by this
specification. It is identified by a URI and by the base64url-encoded
SHA-256 digest of its bytes. It contains at least:</t>

<t><list style="symbols">
  <t><spanx style="verb">max_clock_skew</spanx>, <spanx style="verb">max_pop_window</spanx>, <spanx style="verb">max_token_lifetime</spanx>, and
<spanx style="verb">max_status_age</spanx>, in seconds;</t>
  <t><spanx style="verb">max_chain_length</spanx>, the greatest number of Mandate Assertions in a
chain;</t>
  <t><spanx style="verb">predicates</spanx>: the supported constraint predicates;</t>
  <t><spanx style="verb">status_values</spanx> (optional): a mapping from Token Status List values
other than 0x00, 0x01, and 0x02 to <spanx style="verb">valid</spanx>, <spanx style="verb">revoked</spanx>, or
<spanx style="verb">suspended</spanx>;</t>
  <t><spanx style="verb">types</spanx>: the supported authorization details types, each with its
Type Profile included in full (<xref target="type-profiles"/>);</t>
  <t><spanx style="verb">eat_profiles</spanx>: the accepted <spanx style="verb">eat_profile</spanx> values;</t>
  <t><spanx style="verb">frameworks</spanx>: one entry per accepted Trust Framework URI, with:
  <list style="symbols">
      <t><spanx style="verb">algs</spanx>: permitted signature algorithms;</t>
      <t><spanx style="verb">party_schemes</spanx>: accepted Party Identifier schemes;</t>
      <t><spanx style="verb">max_lifetime</spanx>: per artifact type, the maximum of <spanx style="verb">exp</spanx> minus
<spanx style="verb">iat</spanx>, including <spanx style="verb">max_period</spanx> for <spanx style="verb">sum_max</spanx> and the maximum for
Exposure Statements;</t>
      <t><spanx style="verb">status_required</spanx>: the artifact types that <bcp14>MUST</bcp14> carry <spanx style="verb">status</spanx>;</t>
      <t><spanx style="verb">authority_frameworks</spanx>: the Trust Framework URIs whose Authority
Assertions are accepted for mandates under this framework. The
framework's own URI is accepted only if listed.</t>
    </list></t>
</list></t>

<t>The Validation Profile reflects the Trust Framework rules that a
machine can check. It does not contain the RP's authorization policy.</t>

<section anchor="type-profiles"><name>Type Profiles</name>

<t>A Type Profile is part of the Validation Profile document, so the
profile's digest fixes it; it <bcp14>MUST NOT</bcp14> refer to external content that
influences validation. For an authorization details type it states:</t>

<t><list style="numbers" type="1">
  <t>a JSON Schema for requested authorization details of the type,
included in full;</t>
  <t>its admitted members: top-level members a request may carry without
the Permission mentioning them, each of which is unrestricted unless
a Permission contains or constrains it;</t>
  <t>the meaning of each admitted member, so that "unrestricted" has a
defined effect.</t>
</list></t>

<t>The schema applies to the requested authorization detail; a request
that does not conform gives <spanx style="verb">request_malformed</spanx>. Permissions are not
validated against it, because they may omit members a request needs. A
Permission member the schema forbids simply cannot be matched, since
matching requires the conforming request to carry it.</t>

<t>Schemas <bcp14>MUST</bcp14> use JSON Schema draft 2020-12 <xref target="JSON-SCHEMA-CORE"/>
<xref target="JSON-SCHEMA-VALIDATION"/> and <bcp14>MUST</bcp14> declare it with the <spanx style="verb">$schema</spanx>
keyword value <spanx style="verb">https://json-schema.org/draft/2020-12/schema</spanx>. A schema
<bcp14>MAY</bcp14> use only the Core, Applicator, and Validation vocabularies and the
Format-Annotation vocabulary; <spanx style="verb">format</spanx> is an annotation and never
causes a request to fail validation. <spanx style="verb">$ref</spanx> <bcp14>MUST</bcp14> resolve within the
same schema. A Validation Profile containing a schema that violates
these rules, or a keyword outside those vocabularies, is unusable: a
Validator <bcp14>MUST</bcp14> refuse to load it and <bcp14>MUST NOT</bcp14> validate under it.</t>

</section>
</section>
<section anchor="validation"><name>Mandate Validation Procedure</name>

<section anchor="inputs"><name>Inputs</name>

<t>The procedure takes exactly these inputs:</t>

<t><list style="numbers" type="1">
  <t>the Mandate Presentation;</t>
  <t>the bytes of the <spanx style="verb">authorization_details</spanx> parameter and its parsed
value;</t>
  <t>the validation time T;</t>
  <t>the Validation Profile and its digest;</t>
  <t>a Trust Anchor Set partitioned by role: <spanx style="verb">mandate_issuer</spanx>,
<spanx style="verb">authority_source</spanx>, <spanx style="verb">operator</spanx>, <spanx style="verb">verifier</spanx>, <spanx style="verb">exposure_observer</spanx>, and
<spanx style="verb">status_issuer</spanx>; each anchor lists its keys and the Trust Framework
URIs for which it is accepted; each <spanx style="verb">exposure_observer</spanx> anchor also
lists the WIT issuers it may observe, and each <spanx style="verb">status_issuer</spanx> anchor
lists the artifact issuers for which it may publish status;</t>
  <t>a set of Status List Tokens <xref target="I-D.ietf-oauth-status-list"/>;</t>
  <t>the RP identifier;</t>
  <t>the PoP outcome and the verified signature nonce (<xref target="pop"/>).</t>
</list></t>

<t>Two conforming Validators given identical inputs <bcp14>MUST</bcp14> produce identical
Validation Results. A Validator <bcp14>MUST NOT</bcp14> consult any other input and
<bcp14>MUST NOT</bcp14> apply local authorization policy. Status List Tokens are
fetched before validation.</t>

</section>
<section anchor="required-and-optional-evidence"><name>Required and Optional Evidence</name>

<t>Required evidence is the leaf Mandate Assertion, its ancestors, the
Authority Assertions referenced by the root, and the WIT. Optional
evidence is attestation results and Exposure Statements. A problem with
required evidence is an error. A problem with optional evidence, and
the reason a Permission did not match a request, is a diagnostic.
Only errors affect the outcome.</t>

</section>
<section anchor="procedure"><name>Procedure</name>

<t>The Validator performs every step that can be performed and records
every applicable code (<xref target="iana-reasons"/>); it does not stop at the first
failure.</t>

<t><list style="numbers" type="1">
  <t><strong>Chain and context.</strong> Starting from the leaf, follow <spanx style="verb">parent</spanx>
references through the artifacts in <spanx style="verb">mandate_evidence</spanx>. A reference
without a matching artifact gives <spanx style="verb">chain_broken</spanx>; more than
<spanx style="verb">max_chain_length</spanx> mandates gives <spanx style="verb">chain_too_long</spanx>. If a root is
reached, the framework context is the root's <spanx style="verb">tf</spanx>; if that URI is
not in the Validation Profile, <spanx style="verb">framework_not_accepted</spanx>. If no root
is reached, the framework context is undetermined, steps that need
it are skipped, the authority check is not evaluated, and <spanx style="verb">chain</spanx>
in the result lists the mandates that were recovered, starting with
the highest recovered ancestor.</t>
  <t><strong>Structure.</strong> Each required artifact parses, has the expected
<spanx style="verb">typ</spanx>, and contains its <bcp14>REQUIRED</bcp14> claims. Otherwise <spanx style="verb">malformed</spanx>.</t>
  <t><strong>Profile conformance.</strong> Under the framework context: algorithms are
permitted (<spanx style="verb">alg_not_allowed</spanx>); Party Identifier schemes are accepted
(<spanx style="verb">scheme_not_accepted</spanx>); <spanx style="verb">exp</spanx> minus <spanx style="verb">iat</spanx> does not exceed the
maximum for the artifact type (<spanx style="verb">lifetime_exceeded</spanx>); and every
artifact of a type in <spanx style="verb">status_required</spanx> carries <spanx style="verb">status</spanx>
(<spanx style="verb">status_missing</spanx>).</t>
  <t><strong>Signatures and keys.</strong> The root verifies under a <spanx style="verb">mandate_issuer</spanx>
anchor accepted for the framework context. Each sub-delegated
mandate carries a <spanx style="verb">jwk</spanx> header (<spanx style="verb">key_missing</spanx>), whose thumbprint
equals the parent's <spanx style="verb">cnf.jkt</spanx> (<spanx style="verb">key_mismatch</spanx>), and verifies with
it. Each Authority Assertion verifies under an <spanx style="verb">authority_source</spanx>
anchor accepted for the assertion's own <spanx style="verb">tf</spanx>. The WIT verifies under
an <spanx style="verb">operator</spanx> anchor accepted for the framework context. A failed
verification gives <spanx style="verb">signature_invalid</spanx>; a key trusted only for
another role gives <spanx style="verb">role_mismatch</spanx>.</t>
  <t><strong>Framework compatibility.</strong> Every mandate's <spanx style="verb">tf</spanx> equals the
framework context, and every Authority Assertion's <spanx style="verb">tf</spanx> is in the
context framework's <spanx style="verb">authority_frameworks</spanx>. Otherwise
<spanx style="verb">framework_mismatch</spanx>.</t>
  <t><strong>Time.</strong> For each required artifact, <spanx style="verb">nbf</spanx> (when present) is at
most T + <spanx style="verb">max_clock_skew</spanx>, and T is less than <spanx style="verb">exp</spanx> +
<spanx style="verb">max_clock_skew</spanx>. Otherwise <spanx style="verb">not_yet_valid</spanx> or <spanx style="verb">expired</spanx>.</t>
  <t><strong>Status.</strong> The applicable framework of an artifact is its own <spanx style="verb">tf</spanx>
for an Authority Assertion and the framework context for every other
artifact. For each required artifact with <spanx style="verb">status</spanx>, the eligible
Status List Tokens are those in the inputs whose subject is the
referenced status list URI, that verify under a <spanx style="verb">status_issuer</spanx>
anchor listing the artifact's issuer and accepted for the
artifact's applicable framework, and whose <spanx style="verb">iat</spanx> is at most
T + <spanx style="verb">max_clock_skew</spanx>, whose <spanx style="verb">exp</spanx> (when present) is later than T,
and for which T minus <spanx style="verb">iat</spanx> does not exceed <spanx style="verb">max_status_age</spanx>. If no
token is eligible, the code is <spanx style="verb">status_unavailable</spanx>. Otherwise, let
the candidates be the eligible tokens with the greatest <spanx style="verb">iat</spanx>. If
they give different status values for the index, the code is
<spanx style="verb">status_unavailable</spanx>. Otherwise the Validator selects one candidate:
the one with the latest <spanx style="verb">exp</spanx>, a token without <spanx style="verb">exp</spanx> counting as
latest, and among those the one whose digest is first in code point
order. The selection does not depend on the order of the inputs and
is reported in <spanx style="verb">status_evidence</spanx>. The selected status value gives
nothing if it is VALID (0x00), <spanx style="verb">revoked</spanx> if INVALID (0x01), and
<spanx style="verb">suspended</spanx> if SUSPENDED (0x02). Any other value, including
application-specific values, gives <spanx style="verb">status_unavailable</spanx>, unless the
Validation Profile's <spanx style="verb">status_values</spanx> maps it to one of these three.
A later token showing reactivation prevails over an earlier
suspension.</t>
  <t><strong>Links.</strong> Each sub-delegated mandate satisfies <xref target="chain"/>. Otherwise
<spanx style="verb">depth_exceeded</spanx> or <spanx style="verb">not_attenuated</spanx>.</t>
  <t><strong>Authority.</strong> See <xref target="validation-authority"/>.</t>
  <t><strong>Binding.</strong> The WIT matches the leaf (<xref target="wit"/>) and the PoP
outcome is <spanx style="verb">ok</spanx>. Otherwise <spanx style="verb">binding_mismatch</spanx> or <spanx style="verb">pop_failed</spanx>.</t>
  <t><strong>Audience.</strong> For each mandate in the chain with <spanx style="verb">aud</spanx>, the RP
identifier is an element of <spanx style="verb">aud</spanx>. Otherwise <spanx style="verb">audience_mismatch</spanx>.</t>
  <t><strong>Action match.</strong> The <spanx style="verb">authorization_details</spanx> array contains
exactly one object, which conforms to its Type Profile schema.
Otherwise <spanx style="verb">request_malformed</spanx>. The alternatives are all Permissions
of the leaf that match it at time T (<xref target="permissions"/>). If there are
none, <spanx style="verb">action_not_permitted</spanx>. For each Permission that does not
match, the diagnostic <spanx style="verb">perm_not_matching</spanx> is recorded with the
Permission's index.</t>
  <t><strong>Optional evidence.</strong> Each attestation result and Exposure
Statement is checked as required evidence would be in steps 2 to 4,
6, and 7, and against <xref target="ar"/> or <xref target="exposure"/>. An Exposure Statement
also needs <spanx style="verb">aud</spanx> equal to the RP identifier, <spanx style="verb">nonce</spanx> equal to the
verified signature nonce, <spanx style="verb">ad_hash</spanx> equal to the digest of the
<spanx style="verb">authorization_details</spanx> bytes, and an anchor listing the WIT's
issuer. Failures are diagnostics
(<spanx style="verb">evidence_rejected</spanx>), and the artifact is listed under <spanx style="verb">rejected</spanx>
rather than <spanx style="verb">evidence</spanx>.</t>
</list></t>

<t>The outcome is <spanx style="verb">invalid</spanx> if any error other than <spanx style="verb">status_unavailable</spanx>
was recorded; otherwise <spanx style="verb">indeterminate</spanx> if <spanx style="verb">status_unavailable</spanx> was
recorded; otherwise <spanx style="verb">valid</spanx>.</t>

</section>
<section anchor="validation-authority"><name>Authority Check</name>

<t>If the root's <spanx style="verb">delegator</spanx> equals its <spanx style="verb">principal</spanx>, the authority basis
is <spanx style="verb">self</spanx> and no Authority Assertion is required.</t>

<t>Otherwise, a referenced Authority Assertion supports the root if it
passed steps 2 to 6, its <spanx style="verb">principal</spanx> and <spanx style="verb">delegator</spanx> equal those of
the root, the root's <spanx style="verb">perms</spanx> are attenuated with respect to its
<spanx style="verb">powers</spanx> (<xref target="attenuation"/>), and the root's <spanx style="verb">max_depth</spanx> does not exceed
its <spanx style="verb">max_depth</spanx>. The authority check then has one of three results:</t>

<t><list style="symbols">
  <t><strong>Established</strong>, if some supporting assertion also passed step 7
with no code recorded. No authority code is added.</t>
  <t><strong>Unknown</strong>, if no supporting assertion is established but some
supporting assertion's only status code is <spanx style="verb">status_unavailable</spanx>. No
authority code is added; <spanx style="verb">status_unavailable</spanx> is already recorded,
so the outcome is <spanx style="verb">indeterminate</spanx>, not <spanx style="verb">invalid</spanx>.</t>
  <t><strong>Refuted</strong>, otherwise. The Validator adds <spanx style="verb">authority_missing</spanx> if no
referenced assertion was presented, <spanx style="verb">authority_mismatch</spanx> if none has
matching parties, and <spanx style="verb">authority_insufficient</spanx> in all other cases.</t>
</list></t>

</section>
<section anchor="obligations"><name>Obligations</name>

<t>Each alternative carries the Obligations of its Permission's stateful
constraints, in the order of the constraints. An Obligation is a JSON
object:</t>

<t><list style="symbols">
  <t><spanx style="verb">sum_max</spanx>: members <spanx style="verb">type</spanx> ("sum_max"), <spanx style="verb">constraint</spanx> (index in the
Permission), <spanx style="verb">root</spanx> (the root mandate <spanx style="verb">jti</spanx>), <spanx style="verb">budget</spanx>, <spanx style="verb">period</spanx>,
<spanx style="verb">value</spanx>, and <spanx style="verb">amount</spanx> (the resolved value of this request). Let A be
the authorization time (<xref target="token"/>). The sum of the contributions
recorded under the same <spanx style="verb">root</spanx> and <spanx style="verb">budget</spanx> with a recording time t
such that A minus <spanx style="verb">period</spanx> &lt; t &lt;= A, plus <spanx style="verb">amount</spanx>, <bcp14>MUST NOT</bcp14> exceed
<spanx style="verb">value</spanx>. The contribution is recorded with time A.</t>
  <t><spanx style="verb">cosign_above</spanx>: members <spanx style="verb">type</spanx> ("cosign_above"), <spanx style="verb">constraint</spanx>,
<spanx style="verb">value</spanx>, and <spanx style="verb">amount</spanx>. If <spanx style="verb">amount</spanx> exceeds <spanx style="verb">value</spanx>, a second party
designated by the RP's policy <bcp14>MUST</bcp14> approve the specific action.</t>
</list></t>

<t>Alternatives are independent. Constraints in different Permissions
share accounting only when they name the same <spanx style="verb">budget</spanx>, which lets a
mandate issuer impose one limit across several Permissions. Because
sub-delegated <spanx style="verb">sum_max</spanx> constraints keep the parent's <spanx style="verb">budget</spanx>
(<xref target="attenuation-rules"/>), actions taken under any mandate in a chain
count against the same budget.</t>

<t>The RP performs the check and records the contribution as one atomic
operation at time A, so that concurrent requests cannot both pass
against the same remaining budget, and a request validated earlier
cannot use a window anchored at its validation time. Because each
token authorizes one action, each token records exactly one
contribution per budget. If the token expires unused, the RP <bcp14>MAY</bcp14>
remove the contribution.</t>

</section>
<section anchor="result"><name>Validation Result</name>

<t>The Validation Result is a JSON object with the members:</t>

<t><list style="symbols">
  <t><spanx style="verb">outcome</spanx>: <spanx style="verb">valid</spanx>, <spanx style="verb">invalid</spanx>, or <spanx style="verb">indeterminate</spanx>;</t>
  <t><spanx style="verb">profile</spanx>: the Validation Profile URI and digest;</t>
  <t><spanx style="verb">time</spanx>: T;</t>
  <t><spanx style="verb">tf</spanx>: the framework context, or null if undetermined;</t>
  <t><spanx style="verb">chain</spanx>: Artifact References for the mandates, root first;</t>
  <t><spanx style="verb">errors</spanx> and <spanx style="verb">diagnostics</spanx>: arrays of objects with the member <spanx style="verb">code</spanx>
and, where applicable, <spanx style="verb">artifact</spanx> (an Artifact Reference) and <spanx style="verb">perm</spanx>
(index);</t>
  <t><spanx style="verb">authority</spanx>: <spanx style="verb">self</spanx>, <spanx style="verb">established</spanx>, <spanx style="verb">unknown</spanx>, <spanx style="verb">refuted</spanx>, or
<spanx style="verb">not_evaluated</spanx> when no root was reached;</t>
  <t><spanx style="verb">claims</spanx>: attributed claims (<xref target="attribution"/>), each with <spanx style="verb">claim</spanx>,
<spanx style="verb">value</spanx>, <spanx style="verb">artifact</spanx>, and <spanx style="verb">role</spanx>;</t>
  <t><spanx style="verb">alternatives</spanx>: an array of objects with <spanx style="verb">perm</spanx> (the leaf Permission
index) and <spanx style="verb">obligations</spanx>, sorted by <spanx style="verb">perm</spanx>;</t>
  <t><spanx style="verb">evidence</spanx> and <spanx style="verb">rejected</spanx>: Artifact References for the optional
evidence that was accepted or rejected;</t>
  <t><spanx style="verb">status_evidence</spanx>: for each artifact whose status was read from a
selected Status List Token, an object with <spanx style="verb">artifact</spanx> (an Artifact
Reference), <spanx style="verb">token</spanx> (the base64url-encoded SHA-256 digest of the
selected token), and <spanx style="verb">required</spanx> (true for required evidence, false
for optional evidence), sorted by <spanx style="verb">artifact.dig</spanx>.</t>
</list></t>

<t><spanx style="verb">claims</spanx> contains only authenticated claims: claims of artifacts whose
signature and role verification in step 4, or step 13 for optional
evidence, succeeded. Claims of an artifact that failed verification
are omitted; the artifact remains identified through <spanx style="verb">chain</spanx>, <spanx style="verb">errors</spanx>,
or <spanx style="verb">rejected</spanx>. Subject to that rule, <spanx style="verb">claims</spanx> contains exactly the
following, and nothing else:</t>

<t><list style="symbols">
  <t>for each mandate in <spanx style="verb">chain</spanx>, in order: <spanx style="verb">iss</spanx>, <spanx style="verb">sub</spanx>, <spanx style="verb">principal</spanx>,
<spanx style="verb">delegator</spanx>, <spanx style="verb">perms</spanx>, and <spanx style="verb">loa</spanx> if present;</t>
  <t>for each Authority Assertion that supports the root, in the order of
the root's <spanx style="verb">authority</spanx> array: <spanx style="verb">iss</spanx>, <spanx style="verb">principal</spanx>, <spanx style="verb">delegator</spanx>,
<spanx style="verb">powers</spanx>, <spanx style="verb">max_depth</spanx>, and <spanx style="verb">loa</spanx> if present;</t>
  <t>for the WIT: <spanx style="verb">iss</spanx> and <spanx style="verb">sub</spanx>;</t>
  <t>for each accepted attestation result, in <spanx style="verb">evidence</spanx> order: <spanx style="verb">iss</spanx>,
<spanx style="verb">eat_profile</spanx>, and <spanx style="verb">iat</spanx>;</t>
  <t>for each accepted Exposure Statement, in <spanx style="verb">evidence</spanx> order: <spanx style="verb">iss</spanx>,
<spanx style="verb">sid</spanx>, <spanx style="verb">exposure</spanx>, and <spanx style="verb">iat</spanx>.</t>
</list></t>

<t>Within an artifact, claims appear in the order listed. <spanx style="verb">errors</spanx> and
<spanx style="verb">diagnostics</spanx> are sorted by <spanx style="verb">code</spanx>, then <spanx style="verb">artifact.dig</spanx>, then <spanx style="verb">perm</spanx>,
comparing strings by code point and placing absent members first;
duplicates are removed. <spanx style="verb">evidence</spanx> and <spanx style="verb">rejected</spanx> are sorted by <spanx style="verb">dig</spanx>.</t>

</section>
</section>
<section anchor="enforcement"><name>Authorization and Enforcement</name>

<section anchor="authorization"><name>Authorization Decision</name>

<t>The RP decides by applying its own policy to the Validation Result and
the request. That policy may, for example, accept only certain Trust
Frameworks or <spanx style="verb">loa</spanx> values, require an attestation result for
high-value actions, or react to exposure events. The RP:</t>

<t><list style="symbols">
  <t><bcp14>MUST NOT</bcp14> allow an action when the outcome is <spanx style="verb">invalid</spanx>;</t>
  <t><bcp14>MUST</bcp14> treat <spanx style="verb">indeterminate</spanx> as a denial, unless its policy explicitly
permits it for that type of action;</t>
  <t><bcp14>MUST</bcp14> select one alternative, discharge all of its Obligations at the
authorization time A before issuing an access token, and record
which alternative it relied on;</t>
  <t><bcp14>MUST</bcp14> deny the request if no alternative's Obligations can be
discharged;</t>
  <t><bcp14>SHOULD</bcp14> retain the Validation Result, its decision, and the
confirmation produced by the system that executed the action.</t>
</list></t>

</section>
<section anchor="token"><name>Access Token</name>

<t>The authorization time A is read from the RP's clock inside the atomic
operation that discharges Obligations and issues the token. A is not
earlier than T. At A, the RP <bcp14>MUST</bcp14> check again that A is earlier than
the <spanx style="verb">exp</spanx> of every mandate in the chain and of the supporting
Authority Assertion, plus <spanx style="verb">max_clock_skew</spanx>, and that every <spanx style="verb">window</spanx>
constraint of the selected alternative is satisfied at A; otherwise it
denies.</t>

<t>At A, the RP also checks whether each token listed in
<spanx style="verb">status_evidence</spanx> is still eligible: A minus its <spanx style="verb">iat</spanx> does not exceed
<spanx style="verb">max_status_age</spanx>, and its <spanx style="verb">exp</spanx>, when present, is later than A. The
treatment keeps the distinction between required and optional
evidence:</t>

<t><list style="symbols">
  <t>If a token for required evidence is no longer eligible, the RP <bcp14>MUST</bcp14>
either obtain fresh Status List Tokens and run the Mandate
Validation Procedure again with T = A, or treat the outcome as
<spanx style="verb">indeterminate</spanx> and apply its policy for that outcome.</t>
  <t>If a token for optional evidence is no longer eligible, that
evidence <bcp14>MUST NOT</bcp14> be relied on at A, and the RP applies its policy
again without it. If the policy requires that evidence for the
action, the RP denies or obtains fresh evidence and validates again.</t>
</list></t>

<t>The Validation Result computed at T is kept unchanged as a record of
that validation; the checks at A are recorded with the authorization
decision. A Validation Result therefore cannot carry a revocation
check past the freshness the Validation Profile allows, however long
the RP takes to decide, for example while waiting for a co-signature.</t>

<t>An access token issued under this profile:</t>

<t><list style="symbols">
  <t><bcp14>MUST</bcp14> be sender-constrained to the key with the leaf's <spanx style="verb">cnf.jkt</spanx>;</t>
  <t><bcp14>MUST</bcp14> carry only the single authorization details object that was
allowed;</t>
  <t><bcp14>MUST</bcp14> carry an <spanx style="verb">act</spanx> claim identifying the agent instance, and the
<spanx style="verb">jti</spanx> of the leaf and root mandates;</t>
  <t><bcp14>MUST</bcp14> have an <spanx style="verb">exp</spanx> no later than the earliest of: the <spanx style="verb">exp</spanx> of every
mandate in the chain and of the supporting Authority Assertion, the
<spanx style="verb">exp</spanx> of any <spanx style="verb">window</spanx> constraint in the selected alternative, and A
plus <spanx style="verb">max_token_lifetime</spanx>;</t>
  <t><bcp14>MUST</bcp14> authorize a single execution of the action; the resource server
<bcp14>MUST</bcp14> reject a second use of the same token.</t>
</list></t>

<t>The bound on the token's <spanx style="verb">exp</spanx> ensures that the action cannot be
executed after a time window or a mandate has ended. A revocation after
issuance takes effect at the latest when the token expires; an RP that
needs it to take effect sooner validates again at execution.</t>

</section>
</section>
<section anchor="attribution"><name>Attribution of Claims</name>

<t>Each artifact carries only the claims its issuer is in a position to
make.</t>

<texttable title="What each artifact asserts" anchor="attribution-table">
      <ttcol align='left'>Artifact</ttcol>
      <ttcol align='left'>Issuer role</ttcol>
      <ttcol align='left'>Asserts</ttcol>
      <ttcol align='left'>Does not assert</ttcol>
      <c>Authority Assertion</c>
      <c>Authority Source</c>
      <c>delegator may delegate the stated powers for the principal, per the source's records</c>
      <c>that any mandate was issued or intended</c>
      <c>Root Mandate Assertion</c>
      <c>Mandate Issuer</c>
      <c>delegator granted the permissions to the key</c>
      <c>that the delegator had authority</c>
      <c>Sub-delegated Mandate Assertion</c>
      <c>Delegating agent instance</c>
      <c>further delegation within the parent's scope</c>
      <c>anything beyond the parent</c>
      <c>WIT</c>
      <c>Operator</c>
      <c>instance identifier bound to the key</c>
      <c>model, configuration, behavior</c>
      <c>Attestation result</c>
      <c>Verifier</c>
      <c>appraisal of runtime evidence at a point in time</c>
      <c>later state; a remote model unless covered</c>
      <c>Exposure Statement</c>
      <c>Observer</c>
      <c>exposure events recorded in the session attributed to one presentation, up to <spanx style="verb">iat</spanx></c>
      <c>absence of manipulation</c>
</texttable>

<t>A Validator <bcp14>MUST</bcp14> report each claim with the artifact and role it came
from, and <bcp14>MUST NOT</bcp14> treat a claim as established by an artifact whose
role does not cover it. In particular, a Mandate Assertion alone never
establishes the delegator's authority. Trust anchors are role-specific;
an entity holding several roles <bcp14>SHOULD</bcp14> use a distinct key for each.</t>

<t>No artifact defined here asserts that the agent's reasoning is correct
or that an action reflects the principal's present intent.</t>

</section>
<section anchor="trust-framework"><name>Boundary with the Trust Framework</name>

<section anchor="provided-by-this-protocol"><name>Provided by This Protocol</name>

<t><list style="symbols">
  <t>the formats of Mandate Assertions, Authority Assertions, and Exposure
Statements, and the profiles of WIT and EAT;</t>
  <t>the semantics of Permissions, constraint predicates, and attenuation;</t>
  <t>the Validation Profile structure and the Mandate Validation
Procedure, its codes, and its result;</t>
  <t>the proof-of-possession profile and the rules for access tokens.</t>
</list></t>

</section>
<section anchor="defined-by-a-trust-framework"><name>Defined by a Trust Framework</name>

<t>A Trust Framework is identified by the URI in <spanx style="verb">tf</spanx>. It <bcp14>MUST</bcp14> define:</t>

<t><list style="numbers" type="1">
  <t>the entities accepted for each role and how their anchors are
distributed;</t>
  <t>the Party Identifier schemes accepted;</t>
  <t>the meaning of each <spanx style="verb">loa</spanx> value and the evidence it requires;</t>
  <t>the permitted algorithms;</t>
  <t>maximum lifetimes and when <spanx style="verb">status</spanx> is required;</t>
  <t>values or bounds for the Validation Profile parameters;</t>
  <t>requirements on Authority Sources, including the records they rely
on, and which other frameworks' Authority Assertions are accepted;</t>
  <t>the obligations and liability of issuers, including revocation and
incident timelines;</t>
  <t>retention of Validation Results and handling of disputes;</t>
  <t>the authorization details types and their Type Profiles;</t>
  <t>how a Mandate Issuer establishes that the instruction to issue a
mandate came from the delegator named in it, for example by
requiring the delegator's signature over the mandate content;</t>
  <t>whether and how RPs share accounting for budgets.</t>
</list></t>

<t>The machine-checkable part of items 2 to 7 and 10 is expressed in the
Validation Profile. The protocol verifies that the delegator holds
authority and that the Mandate Issuer states that the delegator granted
the mandate. It cannot verify the link between the two inside the
delegator's organization; that link rests on the Mandate Issuer, under
item 11.</t>

<t>A Trust Framework can be a bilateral agreement, a sector scheme, or a
regulated scheme. This document takes no position on which.</t>

</section>
<section anchor="configured-by-the-relying-party"><name>Configured by the Relying Party</name>

<t><list style="symbols">
  <t>the Trust Frameworks and <spanx style="verb">loa</spanx> values it accepts per action;</t>
  <t>the optional evidence it requires;</t>
  <t>its treatment of <spanx style="verb">indeterminate</spanx> outcomes and exposure events;</t>
  <t>its choice among alternatives and its discharge of Obligations.</t>
</list></t>

</section>
</section>
<section anchor="security-considerations"><name>Security Considerations</name>

<t><strong>Issuer compromise.</strong> Short lifetimes limit the use of a stolen
credential but not an attacker who controls an issuer and can issue new
artifacts. The exposure window depends on detection, withdrawal of
trust in the issuer, and propagation of that decision. Transparency
logs <xref target="RFC9162"/> make suspicious issuance visible but do not prevent
it. Trust Frameworks need distrust procedures.</t>

<t><strong>Replay.</strong> Mandates are bound to a key; each request is signed with
it, and the signature's nonce, time window, and body digest prevent
reuse of a request. Access tokens are single-use. <spanx style="verb">aud</spanx> restricts where
a mandate may be presented.</t>

<t><strong>Broad mandates.</strong> The format can express narrow mandates but cannot
force issuers to write them. Trust Frameworks and RPs can require
specific constraints for specific action types.</t>

<t anchor="cross-rp"><strong>Cumulative limits across RPs.</strong> An RP accounts only for actions it
has allowed. A mandate accepted by several RPs that do not share state
lets an agent, compromised or not, reach a budget at each RP. Mandates
with <spanx style="verb">sum_max</spanx> constraints <bcp14>SHOULD</bcp14> therefore carry an <spanx style="verb">aud</spanx> naming
exactly one RP, unless the Trust Framework defines shared accounting.
Without either, a budget is a per-RP limit, not a limit on the mandate.</t>

<t><strong>Prompt injection and confused deputies.</strong> A valid mandate shows that
an action is within delegated authority, not that the agent was not
manipulated into requesting it. Exposure Statements, constrained agent
outputs, and RP policy reduce but do not remove this risk.</t>

<t><strong>Status availability.</strong> When status cannot be established, the
outcome is <spanx style="verb">indeterminate</spanx> and the RP denies by default. The Validation
Profile makes <spanx style="verb">status</spanx> mandatory where the Trust Framework requires it,
so an issuer cannot avoid revocation checks by omitting it.</t>

<t><strong>Resource consumption.</strong> <spanx style="verb">max_chain_length</spanx> bounds chain processing.
Validators <bcp14>SHOULD</bcp14> bound the number and size of artifacts.</t>

<t><strong>Exact comparison.</strong> Amounts are decimal strings, pointers are exact,
identity is defined on code points, and result arrays have a defined
order, so independent implementations reach the same result.</t>

<t><strong>Long-term verifiability.</strong> Validation Results retained for disputes
may need to be verifiable for years. This requires preserving
validation data and renewing evidence <xref target="RFC4998"/>, and migrating to new
algorithms, including post-quantum algorithms, as Trust Frameworks
permit them.</t>

<t><strong>Remote models.</strong> Attestation results cover what the Verifier
appraised, not a model served by a third party unless that party's
evidence was appraised.</t>

</section>
<section anchor="privacy-considerations"><name>Privacy Considerations</name>

<t>Mandate Presentations disclose the principal and delegator to the RP.
Issuers <bcp14>SHOULD</bcp14> use pairwise or role identifiers where the Trust
Framework permits, and Authority Sources <bcp14>SHOULD</bcp14> use SD-JWT <xref target="RFC9901"/>
for personal attributes of the delegator that do not affect validation.
Digests and identifiers can correlate presentations across RPs. The
privacy considerations of <xref target="I-D.ietf-oauth-status-list"/> apply.</t>

</section>
<section anchor="iana-considerations"><name>IANA Considerations</name>

<section anchor="media-types"><name>Media Types</name>

<t>This document requests registration of <spanx style="verb">application/mandate+jwt</spanx>,
<spanx style="verb">application/authority+jwt</spanx>, <spanx style="verb">application/authority+sd-jwt</spanx>, and
<spanx style="verb">application/agent-exposure+jwt</spanx>. Templates to be provided.</t>

</section>
<section anchor="json-web-token-claims"><name>JSON Web Token Claims</name>

<t>This document requests registration of the claims <spanx style="verb">principal</spanx>,
<spanx style="verb">delegator</spanx>, <spanx style="verb">authority</spanx>, <spanx style="verb">perms</spanx>, <spanx style="verb">parent</spanx>, <spanx style="verb">max_depth</spanx>, <spanx style="verb">tf</spanx>, <spanx style="verb">loa</spanx>,
<spanx style="verb">powers</spanx>, <spanx style="verb">ad_hash</spanx>, and <spanx style="verb">exposure</spanx> in the "JSON Web Token Claims"
registry. The Exposure Statement reuses the registered <spanx style="verb">sid</spanx> and
<spanx style="verb">nonce</spanx> claims with the meaning defined in <xref target="exposure"/>.</t>

</section>
<section anchor="oauth-registrations"><name>OAuth Registrations</name>

<t>This document requests registration of the token type URI
<spanx style="verb">urn:ietf:params:oauth:token-type:agent-mandate</spanx> in the "OAuth URI"
registry and of the parameter <spanx style="verb">mandate_evidence</spanx> in the "OAuth
Parameters" registry.</t>

</section>
<section anchor="agent-mandate-constraint-predicates"><name>Agent Mandate Constraint Predicates</name>

<t>This document requests a new registry, "Agent Mandate Constraint
Predicates", with Specification Required policy. Each entry contains
the predicate name, its kind, its satisfaction rule, its attenuation
rule, the value types it accepts, and a reference. Initial contents are
given in <xref target="predicates"/> and <xref target="attenuation-rules"/>.</t>

</section>
<section anchor="iana-reasons"><name>Agent Mandate Validation Codes</name>

<t>This document requests a new registry, "Agent Mandate Validation
Codes", with Specification Required policy. Each entry has a code and
a class, error or diagnostic. Initial errors: <spanx style="verb">malformed</spanx>,
<spanx style="verb">chain_broken</spanx>, <spanx style="verb">chain_too_long</spanx>, <spanx style="verb">framework_not_accepted</spanx>,
<spanx style="verb">alg_not_allowed</spanx>, <spanx style="verb">scheme_not_accepted</spanx>, <spanx style="verb">lifetime_exceeded</spanx>,
<spanx style="verb">status_missing</spanx>, <spanx style="verb">key_missing</spanx>, <spanx style="verb">key_mismatch</spanx>, <spanx style="verb">signature_invalid</spanx>,
<spanx style="verb">role_mismatch</spanx>, <spanx style="verb">framework_mismatch</spanx>, <spanx style="verb">not_yet_valid</spanx>, <spanx style="verb">expired</spanx>,
<spanx style="verb">revoked</spanx>, <spanx style="verb">suspended</spanx>, <spanx style="verb">status_unavailable</spanx>, <spanx style="verb">depth_exceeded</spanx>,
<spanx style="verb">not_attenuated</spanx>, <spanx style="verb">authority_missing</spanx>, <spanx style="verb">authority_mismatch</spanx>,
<spanx style="verb">authority_insufficient</spanx>, <spanx style="verb">binding_mismatch</spanx>, <spanx style="verb">pop_failed</spanx>,
<spanx style="verb">audience_mismatch</spanx>, <spanx style="verb">request_malformed</spanx>, <spanx style="verb">action_not_permitted</spanx>.
Initial diagnostics:
<spanx style="verb">perm_not_matching</spanx>, <spanx style="verb">evidence_rejected</spanx>.</t>

</section>
<section anchor="iana-exposure"><name>Agent Exposure Event Types</name>

<t>This document requests a new registry, "Agent Exposure Event Types",
with Specification Required policy. Initial values:</t>

<t><list style="symbols">
  <t><spanx style="verb">external_content</spanx>: the session processed content retrieved from
outside the operator's domain that was not on an allow list;</t>
  <t><spanx style="verb">unauthenticated_tool</spanx>: the session invoked a tool or service whose
identity was not authenticated;</t>
  <t><spanx style="verb">untrusted_agent_input</spanx>: the session processed output from an agent
instance whose mandate was not validated.</t>
</list></t>

</section>
</section>


  </middle>

  <back>


<references title='References' anchor="sec-combined-references">

    <references title='Normative References' anchor="sec-normative-references">



<reference anchor="RFC6901">
  <front>
    <title>JavaScript Object Notation (JSON) Pointer</title>
    <author fullname="P. Bryan" initials="P." role="editor" surname="Bryan"/>
    <author fullname="K. Zyp" initials="K." surname="Zyp"/>
    <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
    <date month="April" year="2013"/>
    <abstract>
      <t>JSON Pointer defines a string syntax for identifying a specific value within a JavaScript Object Notation (JSON) document.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="6901"/>
  <seriesInfo name="DOI" value="10.17487/RFC6901"/>
</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="RFC7638">
  <front>
    <title>JSON Web Key (JWK) Thumbprint</title>
    <author fullname="M. Jones" initials="M." surname="Jones"/>
    <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
    <date month="September" year="2015"/>
    <abstract>
      <t>This specification defines a method for computing a hash value over a JSON Web Key (JWK). It defines which fields in a JWK are used in the hash computation, the method of creating a canonical form for those fields, and how to convert the resulting Unicode string into a byte sequence to be hashed. The resulting hash value can be used for identifying or selecting the key represented by the JWK that is the subject of the thumbprint.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7638"/>
  <seriesInfo name="DOI" value="10.17487/RFC7638"/>
</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="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="RFC8725">
  <front>
    <title>JSON Web Token Best Current Practices</title>
    <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
    <author fullname="D. Hardt" initials="D." surname="Hardt"/>
    <author fullname="M. Jones" initials="M." surname="Jones"/>
    <date month="February" year="2020"/>
    <abstract>
      <t>JSON Web Tokens, also known as JWTs, are URL-safe JSON-based security tokens that contain a set of claims that can be signed and/or encrypted. JWTs are being widely used and deployed as a simple security token format in numerous protocols and applications, both in the area of digital identity and in other application areas. This Best Current Practices document updates RFC 7519 to provide actionable guidance leading to secure implementation and deployment of JWTs.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="225"/>
  <seriesInfo name="RFC" value="8725"/>
  <seriesInfo name="DOI" value="10.17487/RFC8725"/>
</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="RFC9421">
  <front>
    <title>HTTP Message Signatures</title>
    <author fullname="A. Backman" initials="A." role="editor" surname="Backman"/>
    <author fullname="J. Richer" initials="J." role="editor" surname="Richer"/>
    <author fullname="M. Sporny" initials="M." surname="Sporny"/>
    <date month="February" year="2024"/>
    <abstract>
      <t>This document describes a mechanism for creating, encoding, and verifying digital signatures or message authentication codes over components of an HTTP message. This mechanism supports use cases where the full HTTP message may not be known to the signer and where the message may be transformed (e.g., by intermediaries) before reaching the verifier. This document also describes a means for requesting that a signature be applied to a subsequent HTTP message in an ongoing HTTP exchange.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9421"/>
  <seriesInfo name="DOI" value="10.17487/RFC9421"/>
</reference>
<reference anchor="RFC9530">
  <front>
    <title>Digest Fields</title>
    <author fullname="R. Polli" initials="R." surname="Polli"/>
    <author fullname="L. Pardue" initials="L." surname="Pardue"/>
    <date month="February" year="2024"/>
    <abstract>
      <t>This document defines HTTP fields that support integrity digests. The Content-Digest field can be used for the integrity of HTTP message content. The Repr-Digest field can be used for the integrity of HTTP representations. Want-Content-Digest and Want-Repr-Digest can be used to indicate a sender's interest and preferences for receiving the respective Integrity fields.</t>
      <t>This document obsoletes RFC 3230 and the Digest and Want-Digest HTTP fields.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9530"/>
  <seriesInfo name="DOI" value="10.17487/RFC9530"/>
</reference>
<reference anchor="RFC9711">
  <front>
    <title>The Entity Attestation Token (EAT)</title>
    <author fullname="L. Lundblade" initials="L." surname="Lundblade"/>
    <author fullname="G. Mandyam" initials="G." surname="Mandyam"/>
    <author fullname="J. O'Donoghue" initials="J." surname="O'Donoghue"/>
    <author fullname="C. Wallace" initials="C." surname="Wallace"/>
    <date month="April" year="2025"/>
    <abstract>
      <t>An Entity Attestation Token (EAT) provides an attested claims set that describes the state and characteristics of an entity, a device such as a smartphone, an Internet of Things (IoT) device, network equipment, or such. This claims set is used by a relying party, server, or service to determine the type and degree of trust placed in the entity.</t>
      <t>An EAT is either a CBOR Web Token (CWT) or a JSON Web Token (JWT) with attestation-oriented claims.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9711"/>
  <seriesInfo name="DOI" value="10.17487/RFC9711"/>
</reference>
<reference anchor="RFC9901">
  <front>
    <title>Selective Disclosure for JSON Web Tokens</title>
    <author fullname="D. Fett" initials="D." surname="Fett"/>
    <author fullname="K. Yasuda" initials="K." surname="Yasuda"/>
    <author fullname="B. Campbell" initials="B." surname="Campbell"/>
    <date month="November" year="2025"/>
    <abstract>
      <t>This specification defines a mechanism for the selective disclosure
of individual elements of a JSON data structure used as the payload
of a JSON Web Signature (JWS). The primary use case is the selective
disclosure of JSON Web Token (JWT) claims.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9901"/>
  <seriesInfo name="DOI" value="10.17487/RFC9901"/>
</reference>

<reference anchor="I-D.ietf-wimse-workload-creds">
   <front>
      <title>WIMSE Workload Credentials</title>
      <author fullname="Brian Campbell" initials="B." surname="Campbell">
         <organization>Ping Identity</organization>
      </author>
      <author fullname="Joseph A. Salowey" initials="J. A." surname="Salowey">
         <organization>CyberArk</organization>
      </author>
      <author fullname="Arndt Schwenkschuster" initials="A." surname="Schwenkschuster">
         <organization>Defakto Security</organization>
      </author>
      <author fullname="Yaron Sheffer" initials="Y." surname="Sheffer">
         <organization>Intuit</organization>
      </author>
      <author fullname="Yaroslav Rosomakho" initials="Y." surname="Rosomakho">
         <organization>Zscaler</organization>
      </author>
      <date day="2" month="July" year="2026"/>
      <abstract>
	 <t>   The WIMSE architecture defines authentication and authorization for
   software workloads in a variety of runtime environments, from the
   most basic ones up to complex multi-service, multi-cloud, multi-
   tenant deployments.

   This document defines the credentials that workloads use to represent
   their identity.  They can be used in various protocols to
   authenticate workloads to each other.  To use these credentials,
   workloads must provide proof of possession of the associated private
   key material, which is covered in other documents.  This document
   focuses on the credentials alone, independent of the proof-of-
   possession mechanism.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-wimse-workload-creds-02"/>
   
</reference>

<reference anchor="I-D.ietf-wimse-http-signature">
   <front>
      <title>WIMSE Workload-to-Workload Authentication with HTTP Signatures</title>
      <author fullname="Joseph A. Salowey" initials="J. A." surname="Salowey">
         <organization>Palo Alto Networks</organization>
      </author>
      <author fullname="Yaron Sheffer" initials="Y." surname="Sheffer">
         <organization>Independent</organization>
      </author>
      <date day="20" month="October" year="2026"/>
      <abstract>
	 <t>   The WIMSE architecture defines authentication and authorization for
   software workloads in a variety of runtime environments, from the
   most basic ones to complex multi-service, multi-cloud, multi-tenant
   deployments.  This document defines one of the mechanisms to provide
   workload authentication, using HTTP Signatures.  While only
   applicable to HTTP traffic, the protocol provides end-to-end
   protection of requests (and optionally, responses), even when service
   traffic is not end-to-end encrypted, that is, when TLS proxies and
   load balancers are used.  Authentication is based on the Workload
   Identity Token (WIT).

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-wimse-http-signature-08"/>
   
</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>

<reference anchor="JSON-SCHEMA-CORE" target="https://json-schema.org/draft/2020-12/json-schema-core">
  <front>
    <title>JSON Schema: A Media Type for Describing JSON Documents, Draft 2020-12</title>
    <author >
      <organization>JSON Schema</organization>
    </author>
    <date year="2022" month="June"/>
  </front>
</reference>
<reference anchor="JSON-SCHEMA-VALIDATION" target="https://json-schema.org/draft/2020-12/json-schema-validation">
  <front>
    <title>JSON Schema Validation: A Vocabulary for Structural Validation of JSON, Draft 2020-12</title>
    <author >
      <organization>JSON Schema</organization>
    </author>
    <date year="2022" month="June"/>
  </front>
</reference>


<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="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>



    </references>

    <references title='Informative References' anchor="sec-informative-references">



<reference anchor="RFC4998">
  <front>
    <title>Evidence Record Syntax (ERS)</title>
    <author fullname="T. Gondrom" initials="T." surname="Gondrom"/>
    <author fullname="R. Brandner" initials="R." surname="Brandner"/>
    <author fullname="U. Pordesch" initials="U." surname="Pordesch"/>
    <date month="August" year="2007"/>
    <abstract>
      <t>In many scenarios, users must be able prove the existence and integrity of data, including digitally signed data, in a common and reproducible way over a long and possibly undetermined period of time. This document specifies the syntax and processing of an Evidence Record, a structure designed to support long-term non-repudiation of existence of data. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="4998"/>
  <seriesInfo name="DOI" value="10.17487/RFC4998"/>
</reference>
<reference anchor="RFC9162">
  <front>
    <title>Certificate Transparency Version 2.0</title>
    <author fullname="B. Laurie" initials="B." surname="Laurie"/>
    <author fullname="E. Messeri" initials="E." surname="Messeri"/>
    <author fullname="R. Stradling" initials="R." surname="Stradling"/>
    <date month="December" year="2021"/>
    <abstract>
      <t>This document describes version 2.0 of the Certificate Transparency (CT) protocol for publicly logging the existence of Transport Layer Security (TLS) server certificates as they are issued or observed, in a manner that allows anyone to audit certification authority (CA) activity and notice the issuance of suspect certificates as well as to audit the certificate logs themselves. The intent is that eventually clients would refuse to honor certificates that do not appear in a log, effectively forcing CAs to add all issued certificates to the logs.</t>
      <t>This document obsoletes RFC 6962. It also specifies a new TLS extension that is used to send various CT log artifacts.</t>
      <t>Logs are network services that implement the protocol operations for submissions and queries that are defined in this document.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9162"/>
  <seriesInfo name="DOI" value="10.17487/RFC9162"/>
</reference>
<reference anchor="RFC9334">
  <front>
    <title>Remote ATtestation procedureS (RATS) Architecture</title>
    <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
    <author fullname="D. Thaler" initials="D." surname="Thaler"/>
    <author fullname="M. Richardson" initials="M." surname="Richardson"/>
    <author fullname="N. Smith" initials="N." surname="Smith"/>
    <author fullname="W. Pan" initials="W." surname="Pan"/>
    <date month="January" year="2023"/>
    <abstract>
      <t>In network protocol exchanges, it is often useful for one end of a communication to know whether the other end is in an intended operating state. This document provides an architectural overview of the entities involved that make such tests possible through the process of generating, conveying, and evaluating evidentiary Claims. It provides a model that is neutral toward processor architectures, the content of Claims, and protocols.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9334"/>
  <seriesInfo name="DOI" value="10.17487/RFC9334"/>
</reference>

<reference anchor="I-D.ietf-wimse-arch">
   <front>
      <title>Workload Identity in a Multi System Environment (WIMSE) Architecture</title>
      <author fullname="Joseph A. Salowey" initials="J. A." surname="Salowey">
         <organization>Palo Alto Networks</organization>
      </author>
      <author fullname="Yaroslav Rosomakho" initials="Y." surname="Rosomakho">
         <organization>Zscaler</organization>
      </author>
      <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
         <organization>University of the Bundeswehr Munich</organization>
      </author>
      <date day="6" month="July" year="2026"/>
      <abstract>
	 <t>   The increasing prevalence of cloud computing and micro service
   architectures has led to the rise of complex software functions being
   built and deployed as workloads, where a workload is defined as
   software executing for a specific purpose, potentially comprising one
   or more running instances.  This document discusses an architecture
   for designing and standardizing protocols and payloads for conveying
   workload identity and security context information.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-wimse-arch-08"/>
   
</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-wpt">
   <front>
      <title>WIMSE Workload Proof Token</title>
      <author fullname="Brian Campbell" initials="B." surname="Campbell">
         <organization>Ping Identity</organization>
      </author>
      <author fullname="Arndt Schwenkschuster" initials="A." surname="Schwenkschuster">
         <organization>Defakto Security</organization>
      </author>
      <date day="27" month="August" year="2026"/>
      <abstract>
	 <t>   The WIMSE architecture defines authentication and authorization for
   software workloads in a variety of runtime environments, from basic
   deployments to complex multi-service, multi-cloud, multi-tenant
   systems.  This document specifies the Workload Proof Token (WPT), a
   mechanism for workloads to prove possession of the private key
   associated with a Workload Identity Token (WIT).  The WPT is a signed
   JWT that binds the workload&#x27;s authentication to a specific HTTP
   request, providing application-layer proof of possession for
   workload-to-workload communication.  This specification is designed
   to work alongside the WIT credential format defined in draft-ietf-
   wimse-workload-creds and can be combined with other WIMSE protocols
   in multi-hop call chains.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-wimse-wpt-02"/>
   
</reference>

<reference anchor="I-D.asor-wimse-agent-delegation-chain">
   <front>
      <title>Verifiable Attenuated Delegation for AI Agent Chains</title>
      <author fullname="Rafael Asor" initials="R." surname="Asor">
         <organization>Attenu</organization>
      </author>
      <date day="15" month="October" year="2026"/>
      <abstract>
	 <t>   AI agents increasingly delegate tasks to other agents.  Each
   delegation should convey only a subset of the delegating party&#x27;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 &quot;act&quot; 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>
   <seriesInfo name="Internet-Draft" value="draft-asor-wimse-agent-delegation-chain-02"/>
   
</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="22" month="October" 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&#x27;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, read as in chmod, with an optional count per
   class, and a signed menu gives the class of each call.  A deployment
   can set this scope for each job when the job starts.  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-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.yossif-agent-mandate-problem">
   <front>
      <title>Problem Statement: Verifiable Human Mandates for Autonomous Agent Actions</title>
      <author fullname="Mohamad Khalil Yossif" initials="M. K." surname="Yossif">
         <organization>Yuthent</organization>
      </author>
      <date day="22" month="July" year="2026"/>
      <abstract>
	 <t>   An autonomous software agent commonly acts under authority a human
   granted at an earlier moment: the human expresses and authorizes an
   intent at one time, and the agent executes one or more concrete
   actions at a later time.  The credentials and session state the agent
   carries at execution time establish that some agent is authorized to
   act, but they do not establish that this specific action, with these
   specific parameters, falls within the constraints the human actually
   signed.  As agent autonomy and action throughput grow, the population
   of executed actions that no human individually bounded grows with it.
   This document is a problem statement.  It characterizes the gap
   between an authorized agent and an authorized action, explains why
   existing delegation, logging, and payment-mandate mechanisms do not
   close it, and states the requirements any solution would have to
   satisfy.  It defines no protocol or mechanism.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-yossif-agent-mandate-problem-00"/>
   
</reference>

<reference anchor="EIDAS2" target="https://eur-lex.europa.eu/eli/reg/2024/1183/oj">
  <front>
    <title>Regulation (EU) 2024/1183 of the European Parliament and of the Council amending Regulation (EU) No 910/2014 as regards establishing the European Digital Identity Framework</title>
    <author >
      <organization>European Parliament and Council of the European Union</organization>
    </author>
    <date year="2024" month="April" day="11"/>
  </front>
</reference>
<reference anchor="COSAI-AIAM" target="https://www.coalitionforsecureai.org/announcements/cosai-unveils-agentic-identity-and-security-research-following-high-profile-sessions-at-rsac-2026/">
  <front>
    <title>Agentic Identity and Access Management, Version 1.0</title>
    <author >
      <organization>Coalition for Secure AI (CoSAI)</organization>
    </author>
    <date year="2026" month="March" day="20"/>
  </front>
</reference>
<reference anchor="OIDF-AGENTIC" target="https://openid.net/new-whitepaper-tackles-ai-agent-identity-challenges/">
  <front>
    <title>Identity Management for Agentic AI</title>
    <author >
      <organization>OpenID Foundation</organization>
    </author>
    <date year="2025" month="October"/>
  </front>
</reference>


    </references>

</references>


<?line 1305?>

<section anchor="example"><name>Example</name>

<t>A company's treasury agent holds a mandate from the company's financial
director and delegates part of it to a reconciliation agent, which
initiates a payment at the company's bank. Payloads are shown decoded
and unsigned; identifiers are fictional; digests, keys, and some
values are elided as "...". Signed vectors will accompany a future
revision.</t>

<t>The bank's Validation Profile includes a Type Profile for
<spanx style="verb">payment_initiation</spanx> whose admitted members are <spanx style="verb">instructedAmount</spanx>,
<spanx style="verb">creditorAccount</spanx>, and <spanx style="verb">remittanceInformation</spanx>. A Permission that does
not constrain one of them leaves it unrestricted.</t>

<t>Authority Assertion from a company register, stating which payments
the director may delegate to agents:</t>

<figure><sourcecode type="json"><![CDATA[
{
  "iss": "https://register.example",
  "jti": "aa-5c1e",
  "iat": 1792800000,
  "exp": 1824336000,
  "principal": {"id": "J40/0000/2020", "scheme": "urn:example:reg"},
  "delegator": {"id": "p-41f9", "scheme": "urn:example:pairwise"},
  "powers": [{
    "type": "payment_initiation",
    "constraints": [
      {"pred": "eq", "ptr": "/instructedAmount/currency",
       "value": "EUR"},
      {"pred": "max", "ptr": "/instructedAmount/amount",
       "value": "100000.00"}
    ]
  }],
  "max_depth": 1,
  "tf": "https://tf.example/finance"
}
]]></sourcecode></figure>

<t>Root Mandate Assertion to the treasury agent:</t>

<figure><sourcecode type="json"><![CDATA[
{
  "iss": "https://mandates.treasury.example",
  "sub": "spiffe://treasury.example/agents/payments-7",
  "jti": "ma-90b2",
  "iat": 1792886400,
  "nbf": 1792886400,
  "exp": 1795478400,
  "cnf": {"jkt": "..."},
  "principal": {"id": "J40/0000/2020", "scheme": "urn:example:reg"},
  "delegator": {"id": "p-41f9", "scheme": "urn:example:pairwise"},
  "authority": [{"dig": "...", "iss": "https://register.example"}],
  "perms": [{
    "type": "payment_initiation",
    "actions": ["initiate"],
    "locations": ["https://bank.example/payments"],
    "constraints": [
      {"pred": "eq", "ptr": "/instructedAmount/currency",
       "value": "EUR"},
      {"pred": "max", "ptr": "/instructedAmount/amount",
       "value": "20000.00"},
      {"pred": "in", "ptr": "/creditorAccount/iban",
       "value": ["RO49AAAA1B31007593840000",
                 "DE89370400440532013000"]},
      {"pred": "sum_max", "ptr": "/instructedAmount/amount",
       "value": "50000.00", "period": 2592000,
       "budget": "monthly-out"},
      {"pred": "cosign_above", "ptr": "/instructedAmount/amount",
       "value": "10000.00"}
    ]
  }],
  "max_depth": 1,
  "aud": ["https://bank.example"],
  "tf": "https://tf.example/finance",
  "loa": "substantial"
}
]]></sourcecode></figure>

<t>Protected header of the sub-delegated mandate, carrying the treasury
agent's public key:</t>

<figure><sourcecode type="json"><![CDATA[
{
  "typ": "mandate+jwt",
  "alg": "EdDSA",
  "jwk": {"kty": "OKP", "crv": "Ed25519", "x": "..."}
}
]]></sourcecode></figure>

<t>Sub-delegated Mandate Assertion to the reconciliation agent:</t>

<figure><sourcecode type="json"><![CDATA[
{
  "iss": "spiffe://treasury.example/agents/payments-7",
  "sub": "spiffe://treasury.example/agents/reconcile-2",
  "jti": "ma-17c4",
  "iat": 1792890000,
  "nbf": 1792890000,
  "exp": 1792976400,
  "cnf": {"jkt": "..."},
  "principal": {"id": "J40/0000/2020", "scheme": "urn:example:reg"},
  "delegator": {"id": "spiffe://treasury.example/agents/payments-7",
                "scheme": "urn:example:workload"},
  "parent": {"dig": "..."},
  "perms": [{
    "type": "payment_initiation",
    "actions": ["initiate"],
    "locations": ["https://bank.example/payments"],
    "constraints": [
      {"pred": "eq", "ptr": "/instructedAmount/currency",
       "value": "EUR"},
      {"pred": "max", "ptr": "/instructedAmount/amount",
       "value": "5000.00"},
      {"pred": "eq", "ptr": "/creditorAccount/iban",
       "value": "DE89370400440532013000"},
      {"pred": "sum_max", "ptr": "/instructedAmount/amount",
       "value": "20000.00", "period": 2592000,
       "budget": "monthly-out"},
      {"pred": "cosign_above", "ptr": "/instructedAmount/amount",
       "value": "5000.00"}
    ]
  }],
  "aud": ["https://bank.example"],
  "tf": "https://tf.example/finance"
}
]]></sourcecode></figure>

<t>Requested authorization detail:</t>

<figure><sourcecode type="json"><![CDATA[
{
  "type": "payment_initiation",
  "actions": ["initiate"],
  "locations": ["https://bank.example/payments"],
  "instructedAmount": {"currency": "EUR", "amount": "4000.00"},
  "creditorAccount": {"iban": "DE89370400440532013000"}
}
]]></sourcecode></figure>

<t>Validation Result, abbreviated. The amount does not exceed the
co-signature threshold, so the only Obligation is the shared budget:</t>

<figure><sourcecode type="json"><![CDATA[
{
  "outcome": "valid",
  "profile": {"uri": "https://bank.example/profiles/agents/3",
              "dig": "..."},
  "time": 1792972800,
  "tf": "https://tf.example/finance",
  "chain": [{"dig": "..."}, {"dig": "..."}],
  "errors": [],
  "diagnostics": [],
  "authority": "established",
  "claims": ["..."],
  "alternatives": [{
    "perm": 0,
    "obligations": [{
      "type": "sum_max", "constraint": 3, "root": "ma-90b2",
      "budget": "monthly-out", "period": 2592000,
      "value": "20000.00", "amount": "4000.00"
    }]
  }],
  "evidence": [],
  "rejected": [],
  "status_evidence": []
}
]]></sourcecode></figure>

<t>At authorization time A, the bank checks again that both mandates and
the Authority Assertion are unexpired, records 4000.00 against budget
<spanx style="verb">monthly-out</spanx> of root <spanx style="verb">ma-90b2</spanx> in the same atomic operation, and
issues a single-use token whose <spanx style="verb">exp</spanx> is no later than 1792976400, the
<spanx style="verb">exp</spanx> of the sub-delegated mandate.</t>

</section>
<section anchor="conformance"><name>Conformance Cases</name>

<t>Signed test vectors for the following cases are planned. Each lists
the expected result.</t>

<texttable title="Conformance cases">
      <ttcol align='left'>Case</ttcol>
      <ttcol align='left'>Expected result</ttcol>
      <c>Valid chain with two delegations; keys in <spanx style="verb">jwk</spanx> headers</c>
      <c><spanx style="verb">valid</spanx></c>
      <c>Sub-delegated mandate without <spanx style="verb">jwk</spanx> header</c>
      <c><spanx style="verb">invalid</spanx>, <spanx style="verb">key_missing</spanx></c>
      <c>Authority Assertion under a framework not in <spanx style="verb">authority_frameworks</spanx></c>
      <c><spanx style="verb">invalid</spanx>, <spanx style="verb">framework_mismatch</spanx></c>
      <c>Request matching two Permissions with different <spanx style="verb">sum_max</spanx></c>
      <c><spanx style="verb">valid</spanx>; two alternatives, each with its own Obligations</c>
      <c>Valid mandate plus attestation result with a bad signature</c>
      <c><spanx style="verb">valid</spanx>; <spanx style="verb">evidence_rejected</spanx> diagnostic</c>
      <c>Child <spanx style="verb">sum_max</spanx> with longer period; negative earlier contribution</c>
      <c>request with a negative amount does not match; budget shared</c>
      <c>SD-JWT Authority Assertion with <spanx style="verb">_sd</spanx> inside <spanx style="verb">powers</spanx></c>
      <c><spanx style="verb">invalid</spanx>, <spanx style="verb">malformed</spanx></c>
      <c>Status List Token unavailable for a required status</c>
      <c><spanx style="verb">indeterminate</spanx>, <spanx style="verb">status_unavailable</spanx></c>
      <c>Status unavailable only for the supporting Authority Assertion</c>
      <c><spanx style="verb">indeterminate</spanx>; <spanx style="verb">authority</spanx> is <spanx style="verb">unknown</spanx>; no authority error</c>
      <c>Two eligible Status List Tokens; later one revokes</c>
      <c><spanx style="verb">invalid</spanx>, <spanx style="verb">revoked</spanx></c>
      <c>Two eligible Status List Tokens with equal <spanx style="verb">iat</spanx> and different status</c>
      <c><spanx style="verb">indeterminate</spanx>, <spanx style="verb">status_unavailable</spanx></c>
      <c>Child adds a constraint on a member the parent does not admit</c>
      <c><spanx style="verb">invalid</spanx>, <spanx style="verb">not_attenuated</spanx></c>
      <c>Root constrains a member admitted by the Type Profile but absent from <spanx style="verb">powers</spanx></c>
      <c><spanx style="verb">valid</spanx></c>
      <c>Root <spanx style="verb">max_depth</spanx> greater than the Authority Assertion's</c>
      <c><spanx style="verb">invalid</spanx>, <spanx style="verb">authority_insufficient</spanx></c>
      <c>Exposure Statement reused with a new signature nonce</c>
      <c><spanx style="verb">evidence_rejected</spanx> diagnostic</c>
      <c>Exposure Statement presented at a second RP</c>
      <c><spanx style="verb">evidence_rejected</spanx> diagnostic (<spanx style="verb">aud</spanx> mismatch)</c>
      <c>Forged Exposure Statement copying a legitimate <spanx style="verb">iss</spanx> and <spanx style="verb">jti</spanx></c>
      <c><spanx style="verb">evidence_rejected</spanx>; consumption record unchanged</c>
      <c>Authentic Exposure Statement presented with another agent's key or nonce</c>
      <c><spanx style="verb">evidence_rejected</spanx>; later legitimate presentation succeeds</c>
      <c>Accepted Exposure Statement in a presentation that is <spanx style="verb">invalid</spanx> (<spanx style="verb">binding_mismatch</spanx>)</c>
      <c>request rejected; statement not consumed</c>
      <c>Accepted Exposure Statement, action later refused by RP policy</c>
      <c>statement remains consumed</c>
      <c>Two Status List Tokens with equal <spanx style="verb">iat</spanx> and status, different <spanx style="verb">exp</spanx></c>
      <c>token with later <spanx style="verb">exp</spanx> selected, regardless of input order</c>
      <c>Only an optional evidence status token too old at A</c>
      <c>evidence not relied on; RP policy reapplied; outcome unchanged</c>
      <c>Exposure Statement reused at the same RP after the first signature expired</c>
      <c>request rejected by the authorization server (consumed <spanx style="verb">jti</spanx>)</c>
      <c>Status fresh at T but older than <spanx style="verb">max_status_age</spanx> at A</c>
      <c>fresh validation at A, or <spanx style="verb">indeterminate</spanx> path</c>
      <c>Two <spanx style="verb">sum_max</spanx> with the same <spanx style="verb">budget</spanx> and different <spanx style="verb">ptr</spanx> in one Permission</c>
      <c><spanx style="verb">invalid</spanx>, <spanx style="verb">malformed</spanx></c>
      <c>Validation Profile with a schema lacking <spanx style="verb">$schema</spanx> 2020-12</c>
      <c>profile refused; no validation</c>
      <c>Chain without a reachable root</c>
      <c><spanx style="verb">invalid</spanx>, <spanx style="verb">chain_broken</spanx>; <spanx style="verb">authority</spanx> is <spanx style="verb">not_evaluated</spanx></c>
      <c>Mandate in the chain with an invalid signature</c>
      <c><spanx style="verb">invalid</spanx>, <spanx style="verb">signature_invalid</spanx>; its claims omitted</c>
      <c>Status issuer accepted only under another framework</c>
      <c><spanx style="verb">indeterminate</spanx>, <spanx style="verb">status_unavailable</spanx></c>
      <c>Status value 0x03 with no mapping in <spanx style="verb">status_values</spanx></c>
      <c><spanx style="verb">indeterminate</spanx>, <spanx style="verb">status_unavailable</spanx></c>
      <c>Two requests validated at the same T, both within budget alone</c>
      <c>second denied at authorization time A</c>
      <c>Token used after the sub-delegated mandate's <spanx style="verb">exp</spanx></c>
      <c>rejected at the resource server</c>
</texttable>

</section>
<section anchor="related"><name>Relationship to Other Work</name>

<dl>
  <dt><xref target="RFC8693"/>, RFC:</dt>
  <dd>
    <t>Overlap: token exchange across domains, subject and actor. Reused as
transport; this document adds a mandate token type and evidence of the
delegator's authority.</t>
  </dd>
  <dt><xref target="RFC9396"/>, RFC:</dt>
  <dd>
    <t>Overlap: fine-grained authorization details. Reused for Permissions; this
document adds predicates, Type Profiles, and matching rules.</t>
  </dd>
  <dt><xref target="I-D.ietf-wimse-aims"/>, WG draft:</dt>
  <dd>
    <t>Overlap: applying existing standards to agents. Complementary; this
document addresses acceptance of mandates across domains.</t>
  </dd>
  <dt><xref target="I-D.asor-wimse-agent-delegation-chain"/>, individual draft:</dt>
  <dd>
    <t>Overlap: attenuated delegation chain, RAR, hash-linked parents,
deterministic verification. Overlapping chain mechanics; this document
adds Authority Assertions, attribution, the Validation Profile, and the
framework boundary.</t>
  </dd>
  <dt><xref target="I-D.hamr-oauth-agent-delegation"/>, individual draft:</dt>
  <dd>
    <t>Overlap: delegation chain in HTTP Message Signatures, independent
attestations. Different transport; this document adds evidence of the
delegator's authority.</t>
  </dd>
  <dt><xref target="I-D.reece-wimse-cross-org-delegation"/>, individual draft:</dt>
  <dd>
    <t>Overlap: requirements for cross-organization delegation. This document
proposes a mechanism for several of its requirements.</t>
  </dd>
  <dt><xref target="I-D.yossif-agent-mandate-problem"/>, individual draft:</dt>
  <dd>
    <t>Overlap: problem statement for verifiable mandates. This document
proposes a mechanism for binding actions to signed limits.</t>
  </dd>
  <dt><xref target="OIDF-AGENTIC"/> and <xref target="COSAI-AIAM"/>, industry papers:</dt>
  <dd>
    <t>Overlap: agent identity, delegation, cross-domain trust. This document
gives concrete formats and validation for one part of that space.</t>
  </dd>
</dl>

<t>The common thread in the chain proposals is that verification proves
the chain narrows from its root and treats the root issuer's authority
as given. This document's distinct contribution is the evidence for
that root: who the delegator is, what powers an Authority Source
attests, and how a Validator checks the root against those powers under
an explicit Validation Profile.</t>

<t>The chain mechanics in <xref target="chain"/> overlap with
<xref target="I-D.asor-wimse-agent-delegation-chain"/>. If the working group prefers
one chain format, this document can carry its chain in that format and
keep its own scope to Authority Assertions, attribution, the Validation
Profile, and the trust framework boundary.</t>

</section>
<section anchor="open-issues"><name>Open Issues</name>

<t><list style="symbols">
  <t>Alignment of the chain format with
<xref target="I-D.asor-wimse-agent-delegation-chain"/>.</t>
  <t>A CBOR/CWT encoding.</t>
  <t>Presentation outside OAuth Token Exchange.</t>
  <t>Shared budget accounting across RPs.</t>
  <t>Cumulative limits on a delegator's authority across root mandates,
for example a budget identifier issued by the Authority Source.</t>
  <t>Several actions in one request or token, with atomic reservation for
the whole batch.</t>
  <t>A predicate for refunds and reversals.</t>
  <t>Signed test vectors for the conformance cases.</t>
  <t>A human-readable rendering of mandates for delegator consent.</t>
</list></t>

</section>
<section numbered="false" anchor="acknowledgments"><name>Acknowledgments</name>

<t>TBD.</t>

</section>


  </back>

<!-- ##markdown-source:
H4sIAAAAAAAAA+29/XLbWJIn+j+eAleeG7arSVryt6Se2WHJrm71VJW1kmoq
Jjo6TJCEJJRJgg2AktWW+1n2WfbJNvOXmecDAGW7t2/cvRFX0V2WSODg4Jw8
+Z2/HA6HSVM0i/wg/c+8Ki6KbLrI05+y1Txr8jq9KKt0fJmvmjodz5pidUn/
VGVNf82Xxaqomyprius8fVMus2JVJ9l0WuXXB3KPGyaZl7NVtqRnzKvsohle
bRZ5NrwplnU+zPjK4VKuHO7uJjP697Ksbg/Supkn9Wa6LOq6KFfN7ZoGOH57
/kNSrKuDtKk2dfN0d3d/92mSVXl2kJ7ls01VNLfJTVl9uKzKzfog/ZV+XZTZ
PD2e03Poy7RYpT9tFk2Rnt3WTb5M366ui6pcLfklkw/5Ld08P0jSYTo+TjG5
mv+Y54v8kt61XPFfOl3+Nds0V2VV/M19lzX0xo38Sf+u5u+zRbmiqd/SQqyL
g/TPTTkbpHVZNVV+UdNvt0v+5S9JImPxw5OUfi42i4Us29Ei28yLTfpHXjh8
V1aX2UqfepB+X9Hqz7J1enb6I76e0ZvSx5vZFS1N3chn5WbV8Lqe0matChkn
p31bHKQzecAIO/PvUx1uVJVJsiqrJTaZ5pWe/nD0cn93T3999WLvhf913359
+ey1/fp6d1d/ff1y/5n9+uqp3bb/bP+l/fr8qY27/+KZ3bb/as99qg8+Hr4Z
FXlzoQR0ozs8nFX5vO654Kpp1sO6uFxlzabKowtKXvEh79amHi6InPnbP529
+3l4dvTHtz+Nh0fvTt8eYKH0kOzwt+nZ7IoWjsg8/SmfF1l6TrSJs/Imr2dV
MeWDggvflLMNKGuQvmHST5/uPt0d7j3dkTGz6jJvDlKeYX3w5Mlvdbka1hh7
RBv8BKflid4SfjuclVWOIRzJ4GfIdHGQBnPEF0yrB/zop8Pdl603/M/xj8dv
xufH737e+p7pf2aLYq6kNk7/s5xl080iq27xymd0EGe0stkiuC4tL/CUf/Jr
X7sH/KMvnxSrixZBP9/fN3rd33v51FHms+c9xJRVs6u+j+m/fbS5buzTjA58
xPI8RxnSKS1WduFVtqyUMNsX2iVVns9yHQzseEhv3nPdLX1VXLRY7LoqicUv
+Zq3tPNnT+N9P80vaW+xh4/e/vKYF+75k7291894S5urPH27qcp1nq3Sk6xa
FBlTd0pD29dHxGVmxSLlL+Z8DtoD/lym+3u7tL17z9OsTiuaczWvU+aZUzqC
V3xP9Jw3xWXREHU5Dv5DRYPzse8np3xTDRf5x1HOA2T0z5N8UTyh5zxx7/Kk
/G07AW17QXuz9jr8sjJ6dKT2fLj7fLi3Rx8evTsbHw/Hx+Of4mWGgCxm/qX4
CePZLCfZSmKTtoyfO2ChzMIv3Rvt9r/tzc3NaFbSueAVJtKuWQjmWYGTlK1W
PGmMVT+ZlXVWDDer67xY1EIVxWxY6AyGNINhrSJ0SFIjZ1ofXpSLRXlDmzK8
Ki6vmHouikVOF0Io0zDNsKqz2ZDe+uWT7Yt6ZFMUnoFJsoR9dFTSAj2Ol+/l
cPcZDUgfvjt+88Nw/Ie3P58fH8UL6BbOr5bXVmhhx8f960V7tirmo1XePFnl
N8Obq6LJ19k6r4ZNNvuwyOmNCj0xbmXofC4W+eoyr+95w3c08PGb9Ada8IBF
uXd6MdzbTZLhkBSEKatNsyZJzq+KOp2riCAV46JYkc51Vd6kGZ2LxS0fhXVW
idJCOkSaxVrXHFpXolyRbmW61HOe0jTyKqX3m13RcHV50dyQLiAqzYAGnC02
OJ9EwePjRD+maYnSl6Xriq4p1nTw6OHZqqSxK33iKD2my+Y0EboEMyHWw++Q
0Pvk17xus9zOibKlsnpYm7LEuglNicSu7ltVLnke7uukLjcVDZFNy02j70Bb
pJqgvCf9XbOgqVIlhMsqWzXKPRJbhWV2azPI06ZUjW6QfsjXTVrTzlf8BSbA
g/o5NVdZk4TreUPMCo/I5yPaudxvXL3OZ6Q5t9ZfxEx6UzQ094quqGlHdZPn
6aJYFk1Sk5BiaqUJZfRVw6/I+0v060Ud3V3O8jkfmHlFi71Kp8wu0vzjelGQ
opfEl/LxBDfZ8ooRYT2sk0iBpUnQROmXAa4lXZa0mY1J9Pw6J6Fv5DZnrbFY
8qryitPebIhC+MlVSVPgBSQGX+cVX1oQcVWkXAp15cypZsbpbcVI6udV0pQf
cn45OnR04gYYkK+a4mDR86d5c5PTJQ2fHnphUqfLBS7LxChILkxAMKHSC2+I
W4le8Gs+Tc/5AbTi78b05unT0a58kr51jzwlekvG0bqc5n/dkIii2349/uns
bWpaZ8paJxNgtqgxhz+en5+QVljXRGnJmWmddJ885Ay6ZvpjgbH4hrdCvWNv
NugMR8IulsV8vsiT5EF6TOp7OSdli5lLchad6JpPNPH9mhaVyIzOMTEMWiri
XBe8deu8XCtdhKZDTfoQGSBsCDH1lnW+9Uqi95S4QEoMlAlqRJpgww/cVLfC
PWh/hTTJ0liusxVzLWL5YEzETrJbkaQNdlMvIZ4wzVa0T+NVe5BpRatQpTAA
G15bGq6GrslLxEc5ndFml6R/M0Mikslo12ZZnXfJPL2iw0u3MHXP6Shf5eBm
PAiJ3HUD5iMD8zlJ+E/MZkYytbikDZwPnKWH33l1ZCHmIX+MGXSi7DJJfirr
Jp1uigVY7nRRzj4Qp/xIV4620mH66ZPaTZ8/J3Ye6tREdNooHQesXGxzd4U8
XugsEXZ9uSEVSzkVLe1vuRDKDbZeyYWFD6g9pQO2zOaeeSS0SHR8cbSX2Qca
p6AX4OOS9h8XeQe28j5/ZoZFJ6FOmAMOL9nGpMUL2PronrOVfPp0r91Hw5PV
xSzA3S3im/iybDTxw9tRwv4AfmE7NERY8+tsBV70101BGgDJps6zWL2nJ8zF
uiM7nmU0to/vg5UPJTZbrxe3TsyAYqCNyKKARYXLNNC3+qJtQM/mLZSr7zEQ
MEdeXnghVhuQZ+C6wGDKd2SwL5kS0ZPvsyfoQghP0E5RicrJzD5xwzpeEkwJ
U2GRcO29T0tzGz369ImOMb/E58+P6RT9ynRHW8Zs6DZvnDANtQ7QJvQDHHz9
oyqZcxFpJ6E4h+KwoAFoxyDaQc7jFMskI5Ur2tBVVlXlDYTNNc4OqQarkhS1
NcupnIiUBVzNj6QhIXTmZS7zxD1+VpgIP5v1AtLd2hpSeROoQQMRlh+zJXNk
uUPerbwh7UdeyHNSHmVB68+njOYBFjRKYyUzm8/lBdyKDQL9saBJlpfCHKG4
dBVK0zpEmg9U08jXdcL8V1UC0xtkaXkQ1Q6UcxBLoZUmmfYg/UPJkvPTg0v+
93OS7I3S774jSZdX4K8BPaROWxp99x0x/HlOGjef8bTg9VnKK7NMI70bk8XB
xAxnV/nsgzA9Ug1YdVhd1geq8on/wims+rgBD4ML7LF8AW8zdLd6EGq3TMmg
GvmUWRG0G+IEPAyxHlmpKr8ulRuI1yklGtcHfv48oENJEofFR0GnR4j+KS9I
4FmJNbqIn/C6/AEaonvTYrXe0Fx5El5OuG+7miPN/6aE2CtZF700nw4ZljzG
GgpI7kcIJnaa15tFwwTXlr7MBcEbSUfGTBoh9HVJpHTLS+AnIqsQvZaswzNe
h3GskILaINmFvkAZ59uMDuwNP1/Oemu78YfIdNzmTQGxQqAPM+eTtWTamgXq
qTA/HZOUmKZYQsvRfZoXFxd5BWLVmfIw49ZCzUjxaPLFgs/8rCHOQ3LZ69A3
fHhosQKtXJbmOZaGVoNMdq8nuwMMpTj1SjHWqMfy5BlBsBkvZb4qMjuXYyRM
mgyg9FfYZPouKdRQaFKkHPEwN6r8bypeJeJM1zmd8mWerWTFxKQjwVFcqnbp
hqJ/l9ilab4o9Qy1X4FXAR8N3UeyEsRQfiahCabSsa+VJR8kyXfO2PLKoOl8
D9knRRJ5xdtC7Jf2no4Qr8WsrMiOI0OGhFoa3SeqY5VfLHI2oMGizXx+yHID
DJmohoRyc4jHi5Ruv9igs2j8NAwo3D0nMpqpKEuNdoMRxXngyJ+nXV9BqDg2
Sp8yk4F85pODCZHUWGSzHtXZHyCV3XJoea3To3J1zTKU94939Q3PoRAeDBOZ
+B7rYyRydn765ex8ZyD/pj+/w++nb//7L8enb9/w72d/HP/4o/sl0SvO/vju
lx/f+N/8nUfvfvrp7c9v5Gb6NI0+SnZ+Gv/XjtDazrsTdm+Pf9xJC7UavTis
4BWY5tibijaKD1pWJ6bqQbv//ujkf/6PvefEl/4v0maf7u3tk7Yjf7zee/Wc
/iBiUMqGwiB/0lqSabRe86lkG4HO9Sxbsy+T5aZtDNFQTqv53Z95Zf5ykP5+
OlvvPf83/YBfOPrQ1iz6EGvW/aRzsyxiz0c9j3GrGX3eWul4vuP/iv62dQ8+
/P1/WzCVDvde/7d/S5LkxA7JQXIAvg1rmcicaFTo3bw8bRPFDDR2WNHqvTGC
t4FM8BAbArdnExS6l56Cg/iQskjKFxc4bHyw1GosxV5zEkQsRnE0RvfTFMbu
ojM4r3gm43AewsdV+wrPKD+m7n8I5mIPidVBttIuyQIhFkTcoE/344V5pwLN
1iVSwzETklW1X08TbKI1lexxWNQQ2HSWeUCJ7B7rZfKSNAS4pZleA297zcWY
7zHK6M26dlY1u2IFABPTZeH3v2a+Bfst0Zhyegx5Ya+lLkDcx6E+t912+RiL
XwgptZTuJA1dC1Df2W04zeMLlUaCObhBZRn4wfTCf/r13MQmiMcx3lDVe8x2
RjhDmoSfI3NtGQyrF7/zIftON1Mz0vI5XMPTW9VuWvtoNKwmEX+nk4hodvur
sLv+zZB/E1t+f3ePGB7E9Vw9kW3Sp1k8cjpccyui2V7ixFGoPIy3jw5JcQHf
c5cQlaJrUQQi2STPWQcDyqNO9aITHL5HpyePW3Sy1WOjLhM9GWQaF9fqLBEZ
T09U3whcTrEw4ctOTzoCkxaW9CbaiFpUAxrDKdU4ZljLGgpUXatbh97CXWST
Pz2B24x2W/3TRGb5bGOOf1vgQCU/Mc+xH04/Zl1ftvpaIkzsKPAvQmNfFB/z
Wl2+bOvhGcHEnTo/zW9LKMFMteIKVxMHm4NHyb6cQ9lx4Tt7rzqHQqMGZZt1
/HJ6PIiCGYHSyeSuaidWMtRcQ4G+TV185xRQWQtiePPCs8b4jWccTWO7OVts
nP1VwPPKNhb8JKm/kXbLvI5FzXkYlyy9iIOz7cvKAHsUPGXRbL7fzDlUhZlw
3gcx4M0SsVMiTBidpDLQW8vCkDYhd9a6Os4mY7bilUOj5QvxgxUwIQLNWxXn
dEy8t2hyMYXf0bZfF/kNGeal/kq2+d///neSYrOiIEZNT/jd0P/8Lg24QBp/
laR3wZd3w/Dn3+5SJ7vTO75SeQgNcheyRBvzdzZm6+ndnzvH1euk7/v45/re
a1rvc88PTdoOIr/P/VcKQ0+/dOX9b+5SnIKROxKKV9Z0gbS9BzLg9ZbxXaRV
5qy5XX1zFv+1zcF0BFzZppUg2nEXrgnPUxLR8u48W1e2xhT/Q++KffHHr1go
ngZfdafKSgR+VDj8c+ktDVn6N5GiZ159K0kcCpd9y0zCRaZBTsSD86VBvnZ8
5jDJpwMJ8v/rzmnJAUP48ExB2BEX4birdDgxGn7l+QeoDXqQ8Geer1ftWN/r
VezN6wr3zlwdryN2yo1batmgR7MM9cqBm6Ax6B7lFM4b85nGitBDqODqRYQv
iYMW5qTseeURu8zOA6eWTaA7Ns2pmyiJ08zjP/r1+PxxV1nvBGBs8SCEWFun
NTodn5/xGO5Ma0DoGVvNZDDKnKD2BSyhElciO7bOu5Ol8wnDII4Uu6DVLKuq
W8sDoEc7pcBcdXoh6wy6M3qE4TFTWwcv3qNcvpAp+ZP11TqYimk4hLvK2MhU
PFWsJKCA4zXwGgQkmdda1P/uCAvR33y4qfNIm+QXkZA7HJoi8ccdTZu3w+VK
ZBr1yCuvSJRea4Yj1N1J42ucSnSJLmF/emCmDz2553sOxKXOyOBsUg4oybZk
8t2Z++7F58+SgvGnd2dv06s843WdNLfrCXu0iZzgOSH7baIP/d1vN82ENPY4
ToDLEklw0mDrq6c8thDd4pIP1NXSjcZmFsKVTSM6GBNYz07CDXkE13TCaRGs
0ZnbZqTnC2dBvcUdPlINNAcnMvO8Sie+6r5AZ5xzA/Mz2mOaG40ZT+jX7eO0
CCQwy+VseUvyt6aIR/1lVdAp6xvT86ekyJpBuppeDNhgju8f1z68twqpgm6b
rS7ii484TI+sTo7DIAQld7ze3SU6Yj8GUadY45PfPjSTdJkvp7TWiXDPP/36
H+nZH8fDpy9e0t+b5ZT5f6NjvHz2msbQ2fPb58zZ1xs6hTN1SqxDP1bwDmqB
BlvOLIU/GxYc0+x1JM1DX9a9g9nd7g4YpfeQTfbFMXpJxqdt0YzwhNCVNnCT
JA63YKYzcROapMRrOcA3cW84OWSrjQapKhK6tKxjle2kW4hYyxEVM5E/JGnH
S0Xcxwm50FlSj1JzlKaBs7XlIvGUyie4bi/tqlwN8+WaA8Y2rROXmJCWyJPA
rIJ0BWF24lMJx7vn8Yf9U40NNtFuOotiWoE6cToslOayzD6+n5M1fMXTMe/r
CBGRFTb3Wvzcl3kl/s/Vhk8Bv+3FpgJjD6atodSA4+XMKGHnu6m+yS8yVgh3
QSbz+MFjW0sSa54RwCYWUz4ML4vLDf5OiFxOs0skSBqPqilUlVuYLGQVsVux
k+Bv3L3LtkXFq+G7J+HLTsHakhl4Kk2L5/xyemxMoeXXiLwVEcvjyD8GZucZ
jUlst7VicfTHx/5E2qjvQ/IvOZrGx7XgIW0B9LrWjA5browqX5fsii4ks9ki
Y3CEqtfEBejbHIOD9Y6FsTDvsBSR5ZxuJwdHI5E3pT8ipBXz1IUL0/5OivlE
dJkJUv1z/gtLvMqW5r4MZIlcRFtJg+L5SThBjuqA76TFhQ/K0O9T0l7socFV
tCk164RgPbSnJLtm5ZzDt3POteBYvKxFH6v69CDiVFCsek5v/6JkfklkWsQ7
i8vJAHkh06zOXz7fVIshjVBykonJKLqGNV0lv/HZ0fEx7Xwjs2fR7A6HN50e
1pJ0R49mXYroqiB60MSB9Af4ItXTK4FyfUgh9yGZg31BAR0OQzcxLbEcLaPm
xBZ6QldPZHNJTZhg4a8KTQ9KF0iI0C22yYJgb9P1IrvlTBumN2aVJOFnnLoB
57lbWnwqlp/d39p4SbPB+wT7rvQd5BUTZQf8HcTdlgLi1GvnjfjkZZfhRBrH
ok70piAN7iDcdFZac9NGxEChD4bmRjVaHSRx8gZtyJIe4hZ4oUklNR2biXoF
+Vc67RkPSH/wEbMTYkeNIyvE+WhZJoh6sAFAwro0hSmdBNkouClx4vHIfROK
x072Spj/53KiXPSbFI2cw303GaJeoE+OyNKpjuvqdDntUQOSFLNso6mexgiF
9ovKrYtkCNVqmCfjk+N2OhTLPPHJhmaXkZm4HjSTDnYpu6gTEBVLY17ZlKWK
KKlNr1wZIDHVjjtXiiUmcdgtzdutTvLawkJqyApdkU4lT+BLPavGHGmBf8wt
oVZXnrUNfX/WYiyMRfpx3QSHRsIMxi8m66ZS40luA7dwexnMKp/3Unp6mrhj
GB6aE87AC9KMkBZz3jqeB/DpnI7whqownuAvn1+D74rty82GsTPAngpDw8LT
23zN+eicCEl3ssSN9ITUXDsXmujvD61ESbQIAgoPR4H4qCBZqFbRNSNSpz1H
RZsVl6hqy/n8/vYTux0+nLcYXQxvfSh2lnMP1018SNMiTDehKQvdYXn8JLDR
cK/I2E25HorC4cc/leRYb+2eHCi7GsASLi94zH9oaVm2By8CN2vWQ8HybSqi
yU3FfwdNh+lCN159Np0zxU4beVHoeLBR/KJhdxFypRepLfB0itRRUOsoean0
5Me42CzaQww0NRMqFLuwygUHD7ELlggo7gmdOkharL98zjEzlzyLQHt4jHgX
OQlNFv6rVz0JVz1Fhg9zD54cKWAzHw+nd53Tu65qKAM/Fh/ym6LOheN/ed1l
gJN0lRcgUndMVpz+a6tUQ8Vvsg/sibtVGkxPObT4nJfgOtc0DWV/iK+ZMy/h
W8IjMOgxIebFHPIF6ZpkazZ5kGw2KzeLeaK+wq7Y8GE40mHqPExvlboIeCEC
YcB5CiysOE6qencgWUa0f9ESza7KsoZ5wZMJdVBb4ENWxzXIqOlYSWOlElVR
m/wZeRdt8JXUv1hKCM1IoqqJo60aabrqAIUT3/lqtW6glUarfizPXEg9CuU7
k2hHC3DqkdNNeAKT9JGpPI+JSiFsHok6nJzogYGm8FKyCyzGSq90yZTTtP22
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
hJ9//2aU/C8vXthLFxQBAA==

-->

</rfc>

