<?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.35 (Ruby 4.0.2) -->


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

]>

<?rfc compact="yes"?>
<?rfc subcompact="no"?>

<rfc ipr="trust200902" docName="draft-valverde-oauth-pact-00" category="std" consensus="true" submissionType="IETF" tocDepth="3" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="PACT">PACT: Private Agent Consent and Trust Profile for OAuth 2.1 and CIBA</title>

    <author initials="G." surname="Valverde" fullname="Gustavo Valverde">
      <organization>Zentity</organization>
      <address>
        <postal>
          <country>Portugal</country>
        </postal>
        <email>g.valverde02@gmail.com</email>
      </address>
    </author>

    <date year="2026" month="April" day="18"/>

    <area>Security</area>
    <workgroup>Individual Submission</workgroup>
    <keyword>OAuth</keyword> <keyword>CIBA</keyword> <keyword>agent</keyword> <keyword>delegation</keyword> <keyword>pairwise</keyword> <keyword>privacy</keyword> <keyword>consent</keyword>

    <abstract>


<?line 85?>

<t>PACT (Private Agent Consent and Trust Profile) is a security profile of
OAuth 2.1 for privacy-preserving agent delegation. It extends VEIL and
composes OIDC CIBA Core 1.0 and OAuth Token Exchange (RFC 8693). PACT
defines a durable-host plus ephemeral-session control plane, a delegation
token claim vocabulary, runtime identity proofs using Ed25519 JWTs,
capability grants with typed constraints and usage limits,
risk-graduated consent routing, and claim narrowing on token exchange to
non-agent audiences.</t>



    </abstract>



  </front>

  <middle>


<?line 96?>

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

<t>An agent acting on behalf of a human needs three properties at once:
machine authentication (the caller proves it is a specific runtime, not
merely the application that launched it), human consent (the human
approves sensitive actions through a channel the agent cannot subvert),
and privacy-preserving delegation (the relying party learns who acted
without receiving a globally trackable identifier).</t>

<t>Existing specifications cover each property in isolation. CIBA
<xref target="CIBA-Core"/> provides a backchannel consent channel. DPoP <xref target="RFC9449"/>
sender-constrains tokens. RAR <xref target="RFC9396"/> carries structured
authorization payloads. Token Exchange <xref target="RFC8693"/> rebinds audience and
scope. PACT specifies how agent identity, human consent, and token
issuance compose into a single delegation flow.</t>

<t>The profile composes and constrains the following specifications:</t>

<texttable>
      <ttcol align='left'>Concern</ttcol>
      <ttcol align='left'>Specifications</ttcol>
      <c>Secure Transport</c>
      <c>OAuth 2.1 <xref target="I-D.ietf-oauth-v2-1"/>, PKCE <xref target="RFC7636"/>, PAR <xref target="RFC9126"/>, DPoP <xref target="RFC9449"/></c>
      <c>Structured Intent</c>
      <c>Rich Authorization Requests <xref target="RFC9396"/></c>
      <c>Agent Control Plane</c>
      <c>PACT (this document), OAuth Client Attestation <xref target="I-D.ietf-oauth-attestation-based-client-auth"/></c>
      <c>Consent Channel</c>
      <c>CIBA <xref target="CIBA-Core"/></c>
      <c>Token Semantics</c>
      <c>Token Exchange <xref target="RFC8693"/>, Token Introspection <xref target="RFC7662"/>, OIDC Core Pairwise Identifiers <xref target="OIDC-Core"/></c>
</texttable>

<t>This document specifies: pairwise agent identifiers (<xref target="pairwise"/>),
risk-graduated consent routing (<xref target="routing"/>), usage-limited capability
grants (<xref target="limits"/>), cryptographic binding chains (<xref target="continuity"/>),
ephemeral identity disclosure, and claim narrowing on token exchange
(<xref target="exchange-narrowing"/>).</t>

<section anchor="relation-to-other-work"><name>Relation to Other Work</name>

<t>Several concurrent individual submissions address overlapping parts of
the agent-delegation problem. The Agent Auth Protocol <xref target="AAP"/> and
<xref target="I-D.aap-oauth-profile"/> define a JWT claim vocabulary for
agent-acting-as-user semantics; PACT aligns with their claim names
where they coincide. <xref target="I-D.oauth-ai-agents-on-behalf-of-user"/> explores
the subject model when an agent acts on behalf of an authenticated
user; PACT's session identity and <spanx style="verb">act.sub</spanx> derivation build on the
same premise. The Agent-to-Agent Protocol <xref target="A2A"/> covers agent-to-agent
discovery and card exchange, which complements the consent and token
profile defined here. PACT's scope is narrower than any of these: it
specifies CIBA binding, typed-constraint capability grants, and claim
narrowing on token exchange to non-agent audiences.</t>

</section>
</section>
<section anchor="conventions-and-terminology"><name>Conventions and Terminology</name>

<section anchor="notational-conventions"><name>Notational Conventions</name>

<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" 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>

</section>
<section anchor="versioning"><name>Versioning</name>

<t>PACT uses <spanx style="verb">MAJOR.MINOR</spanx> versioning, with <spanx style="verb">-draft</spanx> appended for
pre-release revisions. Implementations MUST reject
configurations or discovery documents with an unrecognized major version.
Implementations SHOULD accept documents with a higher minor version than
expected and ignore unrecognized fields, preserving forward
compatibility.</t>

</section>
<section anchor="definitions"><name>Definitions</name>

<dl>
  <dt>Agent Session:</dt>
  <dd>
    <t>An ephemeral runtime identity for one live process. Each session holds
its own Ed25519 keypair. The private key exists only in process
memory.</t>
  </dd>
  <dt>Agent-Assertion:</dt>
  <dd>
    <t>A short-lived EdDSA JWT (<spanx style="verb">typ: agent-assertion+jwt</spanx>) signed by the
session private key, proving possession of the runtime identity at the
time of a consent request.</t>
  </dd>
  <dt>Approval Strength:</dt>
  <dd>
    <t>A capability-level declaration of the minimum consent mechanism
required: <spanx style="verb">none</spanx> (auto-approve), <spanx style="verb">session</spanx> (active user interaction),
or <spanx style="verb">biometric</spanx> (unforgeable user verification).</t>
  </dd>
  <dt>Authorization Server (AS):</dt>
  <dd>
    <t>The server that implements this profile, managing identity
registration, capability grants, consent routing, and token issuance.</t>
  </dd>
  <dt>Binding Chain:</dt>
  <dd>
    <t>The sequence of cryptographic proofs connecting an OAuth user token
through host registration, session registration, runtime assertion,
human consent, and delegated token issuance.</t>
  </dd>
  <dt>Capability:</dt>
  <dd>
    <t>A server-defined named action with optional JSON Schema for input and
output, and a required approval strength. PACT's unit of
authorization.</t>
  </dd>
  <dt>Capability Grant:</dt>
  <dd>
    <t>An authorization record linking one agent session to one capability,
with optional typed constraints, usage limits, and an expiration time.</t>
  </dd>
  <dt>Client:</dt>
  <dd>
    <t>The process that holds the host identity, manages keys, signs JWTs,
and presents tools to the agent runtime.</t>
  </dd>
  <dt>Constraint:</dt>
  <dd>
    <t>A typed restriction on a grant's input parameters. Operators: <spanx style="verb">eq</spanx>,
<spanx style="verb">min</spanx>, <spanx style="verb">max</spanx>, <spanx style="verb">in</spanx>, <spanx style="verb">not_in</spanx>.</t>
  </dd>
  <dt>Durable Host:</dt>
  <dd>
    <t>The persistent installation identity for a client environment.
Survives across process restarts. Holds an Ed25519 keypair persisted
to disk.</t>
  </dd>
  <dt>Host Policy:</dt>
  <dd>
    <t>A durable capability grant attached to a host rather than a session.
Survives session expiry and seeds new sessions.</t>
  </dd>
  <dt>Pairwise Agent Identifier:</dt>
  <dd>
    <t>A per-relying-party pseudonym derived from the session ID and the RP's
sector identifier, preventing cross-RP agent correlation.</t>
  </dd>
  <dt>Relying Party (RP):</dt>
  <dd>
    <t>A service that receives and validates delegated agent tokens.</t>
  </dd>
  <dt>Session Grant:</dt>
  <dd>
    <t>An ephemeral capability grant attached to one agent session. Seeded
from host policies at registration; may be elevated via consent.</t>
  </dd>
  <dt>Usage Ledger:</dt>
  <dd>
    <t>An append-only record of capability executions, used to enforce daily
limits and cooldowns atomically.</t>
  </dd>
</dl>

</section>
</section>
<section anchor="compositional-architecture"><name>Compositional Architecture</name>

<section anchor="five-compositional-concerns"><name>Five Compositional Concerns</name>

<t>PACT's constituent standards group into five concerns: secure transport,
structured intent, agent control plane, consent channel, and token
semantics. Each concern produces inputs for the next, from machine
authentication through human approval to token issuance and relying-party
verification.</t>

<figure><artwork type="ascii-art"><![CDATA[
  +--------------------+   +--------------------+
  | Structured Intent  |   | Agent Control      |
  | RAR (RFC 9396)     |   | Plane: Host/       |
  |                    |   | Session identity,  |
  |                    |   | Capability grants, |
  |                    |   | Agent-Assertion    |
  +---------+----------+   +---------+----------+
            |                        |
            | what to approve        | who is asking
            v                        v
  +------------------------------------------------+
  | Consent Channel: CIBA                          |
  | Risk-graduated routing                         |
  +------------------------+-----------------------+
                           |
                    +------+------+
                    | approved    |
                    | token       |
                    v             |
  +------------------------------------------------+
  | Token Semantics                                |
  | Token Exchange (RFC 8693), Introspection       |
  | (RFC 7662), Pairwise identifiers, PACT         |
  | delegation claims                              |
  +------------------------------------------------+

            ^
            | protects channel (below all)
            |
  +------------------------------------------------+
  | Secure Transport: OAuth 2.1, PKCE, PAR, DPoP   |
  +------------------------------------------------+
]]></artwork></figure>

<t>Secure Transport sits beneath the other four concerns because removing
any transport spec changes security properties, not the agent model.
DPoP is the one transport spec that crosses into agent territory: when
token exchange mints a downstream token from a CIBA access token, DPoP
re-binds the issued token to the caller's proof-of-possession key.</t>

<t>Structured Intent carries typed payloads through the flow. RAR
(<spanx style="verb">authorization_details</spanx>) is submitted on the CIBA request, retained on
the CIBA request record during consent evaluation, and projected onto
downstream exchanged tokens (<xref target="exchange-narrowing"/>). The approved
typed payload does not appear on the CIBA-issued access token itself.</t>

<t>Agent Control Plane establishes who is asking. It produces two outputs:
the <spanx style="verb">Agent-Assertion</spanx> JWT that enters the consent channel as runtime
proof, and the capability grants that determine whether consent can
short-circuit into automatic approval.</t>

<t>Consent Channel carries the human approval interaction. CIBA binds the
runtime proof to a specific consent request. The CIBA <spanx style="verb">auth_req_id</spanx>
serves as the trace identifier correlating agent identity, consent, and
token issuance.</t>

<t>Token Semantics encodes the authorized delegation. Token exchange
rebinds audience and recomputes pairwise identifiers. Introspection
re-evaluates session lifecycle at query time.</t>

</section>
<section anchor="runtime-participants"><name>Runtime Participants</name>

<texttable>
      <ttcol align='left'>Role</ttcol>
      <ttcol align='left'>Function</ttcol>
      <c>Agent</c>
      <c>The AI actor scoped to a conversation, task, or session. Does not hold keys directly.</c>
      <c>Client</c>
      <c>Process holding the host identity; manages keys, signs JWTs, presents tools.</c>
      <c>Authorization Server</c>
      <c>Manages registrations, capability grants, consent routing, and token issuance.</c>
      <c>Relying Party</c>
      <c>Receives delegated tokens; validates agent identity via introspection or JWT verification.</c>
      <c>User</c>
      <c>The human principal who approves sensitive actions via CIBA.</c>
</texttable>

</section>
<section anchor="three-caller-classes"><name>Three Caller Classes</name>

<t>PACT distinguishes three caller classes by authentication mode and
scope.</t>

<texttable>
      <ttcol align='left'>Caller</ttcol>
      <ttcol align='left'>Authentication</ttcol>
      <ttcol align='left'>Scope</ttcol>
      <c>Browser user</c>
      <c>Session cookie</c>
      <c>Dashboard and browser-only surfaces</c>
      <c>User-delegated machine</c>
      <c>OAuth access token exchanged into a dedicated DPoP-bound bootstrap token</c>
      <c>Agent host/session registration, revocation</c>
      <c>Pure machine client</c>
      <c><spanx style="verb">client_credentials</spanx> access token</c>
      <c>Introspection, resource-server APIs</c>
</texttable>

<t>Registration, introspection, and token exchange are machine-facing OAuth
surfaces; human consent is obtained separately through CIBA
(<xref target="routing"/>). A client bootstrapping an agent host MUST NOT reuse a
login token for registration: it MUST first exchange that token for a
DPoP-bound bootstrap token carrying narrow agent scopes (<xref target="host"/>).</t>

</section>
</section>
<section anchor="principal-separation"><name>Principal Separation</name>

<t>PACT separates agent identity into three layers with distinct lifetimes
and audiences. The host is durable (persistent across process restarts).
The session is ephemeral (fresh per runtime instance, enabling
per-session audit). The pairwise identifier shown to each relying party
is uncorrelatable across services.</t>

<section anchor="host"><name>Durable Host</name>

<t>A host is the persistent installation identity for a client environment.
It represents a specific installation on a specific machine, not a user
or an application.</t>

<t>Bootstrap. The client first exchanges its pairwise login token via Token
Exchange <xref target="RFC8693"/> for a short-lived DPoP-bound bootstrap token
carrying <spanx style="verb">agent:host.register</spanx>. <spanx style="verb">POST {host_registration_endpoint}</spanx>
authenticates with that bootstrap token, not the login token.</t>

<t>Identity properties:</t>

<texttable>
      <ttcol align='left'>Property</ttcol>
      <ttcol align='left'>Value</ttcol>
      <c>Key type</c>
      <c>Ed25519 <xref target="RFC8037"/></c>
      <c>Identity anchor</c>
      <c>JWK Thumbprint <xref target="RFC7638"/>, SHA-256</c>
      <c>Persistence</c>
      <c>Client-side file, server-side record</c>
      <c>Uniqueness</c>
      <c>One thumbprint per <spanx style="verb">(user, client)</spanx> pair. Same user and client MAY have multiple hosts (different machines).</c>
      <c>Binding</c>
      <c>A host key MUST NOT be rebound across users or OAuth clients.</c>
</texttable>

<t>Key storage. The client MUST persist the host keypair in a namespace
derived from the server URL, OAuth client ID, and the authenticated
account subject (or another stable per-user identifier):</t>

<figure><artwork><![CDATA[
~/.zentity/hosts/
  <SHA-256(serverUrl + ":" + clientId + ":" + accountSub)>.json
]]></artwork></figure>

<t>The file MUST be stored with mode <spanx style="verb">0600</spanx>. The directory MUST be created
with mode <spanx style="verb">0700</spanx>.</t>

<t>Attestation. Host registration MAY include vendor attestation headers
per <xref target="I-D.ietf-oauth-attestation-based-client-auth"/>:</t>

<t><list style="symbols">
  <t><spanx style="verb">OAuth-Client-Attestation</spanx>: a JWT signed by a trusted vendor,
containing a <spanx style="verb">cnf.jwk</spanx> matching the host's public key.</t>
  <t><spanx style="verb">OAuth-Client-Attestation-PoP</spanx>: a proof-of-possession JWT signed by
the host's private key.</t>
</list></t>

<t>The server verifies attestation JWTs against a pre-configured set of
trusted issuer JWKS URLs. Verification uses a hardened JWKS fetcher that
rejects unsafe remote key sources (private/loopback IPs, non-HTTPS in
production, responses exceeding a fixed size cap, long timeouts).</t>

<t>Attestation results in an elevated trust tier that widens default host
policy (<xref target="policy"/>).</t>

</section>
<section anchor="session"><name>Ephemeral Session</name>

<t>An agent session is the runtime identity for one live process. Each
session holds its own Ed25519 keypair. The private key MUST exist only
in process memory, and MUST NOT be persisted to disk.</t>

<t>Registration. <spanx style="verb">POST {registration_endpoint}</spanx> with the bootstrap token
carrying <spanx style="verb">agent:session.register</spanx> and a host attestation JWT.</t>

<t>The host attestation JWT (<spanx style="verb">typ: host-attestation+jwt</spanx>) proves the client
possesses the durable host key:</t>

<figure><artwork><![CDATA[
{
  "typ": "host-attestation+jwt",
  "alg": "EdDSA"
}
.
{
  "iss": "<hostId>",
  "sub": "agent-registration",
  "iat": 1711000000,
  "exp": 1711000060
}
]]></artwork></figure>

<t>This JWT MUST be signed with the host's Ed25519 private key and MUST
expire within 60 seconds.</t>

<t>Registration sequence:</t>

<figure><artwork type="ascii-art"><![CDATA[
Client                                  Authorization Server
  |                                              |
  |  1. Exchange login token for bootstrap token |
  |  scope: agent:host.register                  |
  |         agent:session.register               |
  |         agent:session.revoke                 |
  |--------------------------------------------->|
  |                                              |
  |  2. DPoP bootstrap token                     |
  |<---------------------------------------------|
  |                                              |
  |  3. POST /host/register                      |
  |  Authorization: DPoP <bootstrap>             |
  |  { publicKey, name }                         |
  |--------------------------------------------->|
  |                             compute JWK      |
  |                             thumbprint;      |
  |                             upsert host      |
  |  { hostId, attestation_tier }                |
  |<---------------------------------------------|
  |                                              |
  | 4. Generate fresh session keypair            |
  | 5. Sign host-attestation+jwt                 |
  |                                              |
  |  6. POST /register                           |
  |  Authorization: DPoP <bootstrap>             |
  |  { hostJwt, agentPublicKey, ... }            |
  |--------------------------------------------->|
  |                             verify host JWT; |
  |                             seed defaults;   |
  |                             create session;  |
  |                             copy host->      |
  |                             session grants   |
  |  { sessionId, status, grants }               |
  |<---------------------------------------------|
]]></artwork></figure>

<t>Identity hierarchy:</t>

<figure><artwork type="ascii-art"><![CDATA[
                  +---------------------+
                  |        User         |
                  |  (human principal)  |
                  +----------+----------+
                             |
                  +----------v----------+
                  |        Host         |
                  |  durable install,   |
                  |  Ed25519 on disk    |
                  +----------+----------+
                             |
             +---------------+-----------------+
             |               |                 |
   +---------v------+ +------v--------+ +------v--------+
   | Agent Session  | | Agent Session | | Host Policies |
   |       A        | |       B       | | durable       |
   | Ed25519 in mem | |Ed25519 in mem | | defaults      |
   +-------+--------+ +------+--------+ +---------------+
           |                 |
   +-------v--------+ +------v--------+
   | Session Grants | | Session Grants|
   +----------------+ +---------------+
]]></artwork></figure>

</section>
<section anchor="pairwise"><name>Cross-Party Unlinkability</name>

<t>Agent identifiers in delegated tokens MUST be pairwise per relying party
by default. Without pairwise derivation, the session identifier would
travel to every relying party as a stable cross-service correlator.</t>

<t>Derivation:</t>

<figure><artwork><![CDATA[
act.sub = MAC(PAIRWISE_SECRET, sector + "." + sessionId)
]]></artwork></figure>

<t>Where:</t>

<t><list style="symbols">
  <t><spanx style="verb">MAC</spanx> is a keyed message authentication code with at least 128 bits of
output. HMAC-SHA-256 meets this requirement.</t>
  <t><spanx style="verb">PAIRWISE_SECRET</spanx> is a server-side secret of at least 32 bytes.</t>
  <t><spanx style="verb">sector</spanx> is the RP's registered sector identifier, following the same
mechanism used for user pairwise <spanx style="verb">sub</spanx> in VEIL
<xref target="I-D.valverde-oauth-veil"/>. Deployments that do not yet support
<spanx style="verb">sector_identifier_uri</spanx> MUST still enforce a stable single-host
registration rule so the derived sector remains deterministic.</t>
  <t><spanx style="verb">sessionId</spanx> is the internal agent session identifier.</t>
</list></t>

<t>Properties:</t>

<t><list style="symbols">
  <t>Two RPs receiving tokens from the same agent session see different
<spanx style="verb">act.sub</spanx> values.</t>
  <t>The same derivation applies to <spanx style="verb">agent.id</spanx> in the PACT delegation claim
set.</t>
  <t>Deployments that need global agent tracking MUST use an agent-specific
client setting distinct from VEIL's user-facing <spanx style="verb">subject_type</spanx>.
Reusing <spanx style="verb">subject_type</spanx> would disable pairwise user identifiers at the
same time.</t>
  <t>Pairwise derivation uses the session ID (not host ID) because the
acting principal is the runtime session, not the installation.</t>
</list></t>

</section>
<section anchor="trust-gradation"><name>Trust Gradation</name>

<t>Host attestation assigns a host to one of two trust tiers. Attestation
widens the default host policy but does not create a separate token
class or silently widen identity-disclosure capabilities.</t>

<texttable>
      <ttcol align='left'>Tier</ttcol>
      <ttcol align='left'>How reached</ttcol>
      <ttcol align='left'>Effect on default host policy</ttcol>
      <c><spanx style="verb">unverified</spanx></c>
      <c>Default registration</c>
      <c><spanx style="verb">check_compliance</spanx>, <spanx style="verb">request_approval</spanx></c>
      <c><spanx style="verb">attested</spanx></c>
      <c>Valid <spanx style="verb">OAuth-Client-Attestation</spanx> + PoP</c>
      <c>Same default capability floor; trust tier is surfaced in UI, tokens, and introspection</c>
</texttable>

<t>A host's attestation tier is recorded at registration and surfaces in
the approval UI (for example, "Verified by &lt;vendor&gt;" versus
"Unverified agent"), in token claims (<spanx style="verb">agent.runtime.attested:
true/false</spanx>), and in introspection responses.</t>

</section>
</section>
<section anchor="named-action-containment"><name>Named-Action Containment</name>

<t>Capability-based authorization determines whether a session can perform
an action without interrupting the user. The registry defines named
actions, grants bind them to sessions, constraints restrict parameters,
and the usage ledger enforces temporal and cumulative limits.</t>

<section anchor="the-registry"><name>The Registry</name>

<t>Capabilities are server-defined named actions. Each capability declares:</t>

<texttable>
      <ttcol align='left'>Field</ttcol>
      <ttcol align='left'>Type</ttcol>
      <ttcol align='left'>Required</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c><spanx style="verb">name</spanx></c>
      <c>string</c>
      <c>Yes</c>
      <c>Stable snake_case identifier</c>
      <c><spanx style="verb">description</spanx></c>
      <c>string</c>
      <c>Yes</c>
      <c>Human-readable description</c>
      <c><spanx style="verb">input_schema</spanx></c>
      <c>JSON Schema</c>
      <c>No</c>
      <c>Expected input parameters</c>
      <c><spanx style="verb">output_schema</spanx></c>
      <c>JSON Schema</c>
      <c>No</c>
      <c>Expected output shape</c>
      <c><spanx style="verb">approval_strength</spanx></c>
      <c>enum</c>
      <c>Yes</c>
      <c><spanx style="verb">none</spanx>, <spanx style="verb">session</spanx>, or <spanx style="verb">biometric</spanx></c>
</texttable>

<t>Discovery. <spanx style="verb">GET {capabilities_endpoint}</spanx> returns the full registry. No
authentication required.</t>

</section>
<section anchor="grants"><name>Grants</name>

<t>A grant links one agent session (or host) to one capability with
optional constraints, usage limits, and an expiration time.</t>

<texttable>
      <ttcol align='left'>Field</ttcol>
      <ttcol align='left'>Type</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c><spanx style="verb">capability_name</spanx></c>
      <c>string</c>
      <c>The capability being granted</c>
      <c><spanx style="verb">status</spanx></c>
      <c>enum</c>
      <c><spanx style="verb">pending</spanx>, <spanx style="verb">active</spanx>, <spanx style="verb">denied</spanx>, <spanx style="verb">revoked</spanx></c>
      <c><spanx style="verb">constraints</spanx></c>
      <c>object</c>
      <c>Typed constraint operators (<xref target="constraints"/>)</c>
      <c><spanx style="verb">daily_limit_count</spanx></c>
      <c>integer</c>
      <c>Max executions per 24-hour window</c>
      <c><spanx style="verb">daily_limit_amount</spanx></c>
      <c>number</c>
      <c>Max cumulative amount per 24-hour window</c>
      <c><spanx style="verb">cooldown_sec</spanx></c>
      <c>integer</c>
      <c>Minimum seconds between executions</c>
      <c><spanx style="verb">source</spanx></c>
      <c>string</c>
      <c><spanx style="verb">host_policy</spanx>, <spanx style="verb">session_elevation</spanx>, or <spanx style="verb">user_grant</spanx></c>
      <c><spanx style="verb">expires_at</spanx></c>
      <c>timestamp</c>
      <c>Per-grant TTL, independent of session TTL</c>
</texttable>

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

<t>Constraints restrict the input values a grant authorizes. They use the
input schema field names as keys.</t>

<texttable>
      <ttcol align='left'>Operator</ttcol>
      <ttcol align='left'>Type</ttcol>
      <ttcol align='left'>Semantics</ttcol>
      <c><spanx style="verb">max</spanx></c>
      <c>number</c>
      <c>Value MUST be <spanx style="verb">&lt;=</spanx> max</c>
      <c><spanx style="verb">min</spanx></c>
      <c>number</c>
      <c>Value MUST be <spanx style="verb">&gt;=</spanx> min</c>
      <c><spanx style="verb">eq</spanx></c>
      <c>any</c>
      <c>Value MUST equal the constraint value</c>
      <c><spanx style="verb">in</spanx></c>
      <c>array</c>
      <c>Value MUST be a member of the array</c>
      <c><spanx style="verb">not_in</spanx></c>
      <c>array</c>
      <c>Value MUST NOT be a member of the array</c>
</texttable>

<t>Within one grant, all constraints are AND (all must pass). Across
multiple grants for the same capability, the first matching active grant
wins (OR).</t>

<t>Constraint extraction. For capability evaluation, the server extracts
constraint-matchable values from <spanx style="verb">authorization_details</spanx> <xref target="RFC9396"/>.
The <spanx style="verb">type</spanx> field maps to a capability name. Nested fields use dot
notation (<spanx style="verb">amount.value</spanx>, <spanx style="verb">amount.currency</spanx>).</t>

<t>Bidirectional negotiation. The agent proposes constraints at
registration, and the server or user can narrow them. The server MUST
NOT widen constraints beyond what the agent proposed without a new
approval.</t>

<t>Unknown operators. If a grant contains an unrecognized constraint
operator, the server MUST reject the evaluation with a
<spanx style="verb">constraint_violated</spanx> error.</t>

</section>
<section anchor="policy"><name>Durable Defaults vs. Ephemeral Elevations</name>

<t>The policy model is split for the same reason identity is split:
durable defaults and per-runtime elevations have different lifetimes
and different trust properties.</t>

<t>Host policies are durable and host-scoped. They survive across sessions,
are seeded by defaults or attestation tier, carry constraints and usage
limits, and are modified only by the user or server admin.</t>

<t>Session grants are ephemeral and session-scoped. They belong to one
live session, are copied from host policies at session registration
(status: <spanx style="verb">active</spanx>), are created as pending elevations for requested
capabilities beyond defaults (status: <spanx style="verb">pending</spanx>), and expire when the
session expires or is revoked.</t>

<t>Seeding sequence at session registration:</t>

<t><list style="numbers" type="1">
  <t>Ensure the capability registry is populated.</t>
  <t>Ensure default host policies exist for the host's trust tier.</t>
  <t>Copy all active host policies into active session grants (<spanx style="verb">source:
host_policy</spanx>).</t>
  <t>Create pending session grants for requested capabilities not in the
defaults (<spanx style="verb">source: session_elevation</spanx>).</t>
</list></t>

</section>
<section anchor="limits"><name>Temporal and Cumulative Limits</name>

<t>The usage ledger is an append-only table recording each approved
execution. It enforces limits on execution frequency and cumulative
totals, independent of the per-request constraint checks in
<xref target="constraints"/>.</t>

<t>Scope determination. Usage is scoped to the narrowest applicable
boundary:</t>

<t><list style="symbols">
  <t>If the grant is backed by a host policy: scope to the host policy
(shared across sessions).</t>
  <t>If the grant is session-specific: scope to the session grant.</t>
  <t>Fallback: scope to the session.</t>
</list></t>

<t>Enforcement sequence (within a single database transaction):</t>

<t><list style="numbers" type="1">
  <t>Cooldown check. Query the ledger for any execution within
<spanx style="verb">cooldown_sec</spanx> of <spanx style="verb">now</spanx>. If found, reject.</t>
  <t>Daily count check. Count executions in the last 24 hours. If <spanx style="verb">count
&gt;= daily_limit_count</spanx>, reject.</t>
  <t>Daily amount check. Sum <spanx style="verb">amount</spanx> in the last 24 hours. If <spanx style="verb">sum +
request.amount &gt; daily_limit_amount</spanx>, reject.</t>
  <t>Record. Insert a new ledger entry. Return success.</t>
</list></t>

<t>The transaction ensures atomicity; two concurrent requests cannot both
pass a limit that only has room for one.</t>

</section>
</section>
<section anchor="routing"><name>Risk-Proportional Consent</name>

<t>At runtime, a delegation request must be routed to one of three
outcomes: auto-approved (within pre-authorized limits), interactive
approval (user prompt required), or denied. PACT uses CIBA as the
transport and defines the routing logic that selects the outcome.</t>

<section anchor="ciba-as-correlation-point"><name>CIBA as Correlation Point</name>

<t>The CIBA <spanx style="verb">auth_req_id</spanx> correlates agent identity (from the control
plane), human consent (from the approval interaction), token issuance
(from the token endpoint), and the audit trail (from the usage ledger).
An <spanx style="verb">Agent-Assertion</spanx> JWT MUST be bound to a specific <spanx style="verb">auth_req_id</spanx>; it
MUST NOT be accepted as general runtime authentication outside the CIBA
request it carries.</t>

</section>
<section anchor="three-routing-outcomes"><name>Three Routing Outcomes</name>

<t>The consent router produces three outcomes based on the capability's
<spanx style="verb">approval_strength</spanx> and the agent's session grants. They differ along
one axis: how much human involvement is required.</t>

<texttable>
      <ttcol align='left'>Outcome</ttcol>
      <ttcol align='left'>When</ttcol>
      <ttcol align='left'>Human interruption</ttcol>
      <c>Silent approval</c>
      <c>Active grant exists, constraints pass, limits not exceeded, and capability strength is <spanx style="verb">none</spanx></c>
      <c>None</c>
      <c>Session approval</c>
      <c>No matching grant, or strength is <spanx style="verb">session</spanx></c>
      <c>Push notification with inline approve/deny</c>
      <c>Biometric approval</c>
      <c>Capability strength is <spanx style="verb">biometric</spanx></c>
      <c>Push notification with "Open to approve" link only; WebAuthn <spanx style="verb">userVerification: required</spanx> on the approval page</c>
</texttable>

<t>What silent approval can never do. The evaluator MUST refuse automatic
approval in these cases:</t>

<t><list style="symbols">
  <t>Any request containing identity scopes (scopes that would release
PII).</t>
  <t>Any request whose derived capability is missing from the registry.</t>
  <t>Any capability whose approval strength is <spanx style="verb">biometric</spanx>.</t>
  <t>Any request without an active matching grant.</t>
  <t>Any request that exceeds cooldown or daily limits.</t>
</list></t>

</section>
<section anchor="assertion"><name>Runtime Proof</name>

<t>Before requesting consent, the client signs an <spanx style="verb">Agent-Assertion</spanx> JWT
with the session's Ed25519 private key:</t>

<figure><artwork><![CDATA[
{
  "typ": "agent-assertion+jwt",
  "alg": "EdDSA"
}
.
{
  "iss": "<sessionId>",
  "jti": "<unique>",
  "iat": 1711000000,
  "exp": 1711000060,
  "host_id": "<hostId>",
  "task_id": "<unique task identifier>",
  "task_hash": "<SHA-256 hex of binding_message>"
}
]]></artwork></figure>

<t>The assertion is placed in the <spanx style="verb">Agent-Assertion</spanx> HTTP header on the
CIBA backchannel authorize request.</t>

<t><spanx style="verb">binding_message</spanx> is the OIDC CIBA Core 1.0 <xref target="CIBA-Core"/> request
parameter, defined there as a human-readable display value. PACT
retains its human-visible role in the approval UI and additionally
requires that a <spanx style="verb">binding_message</spanx> be present whenever an
<spanx style="verb">Agent-Assertion</spanx> is present. The <spanx style="verb">task_hash</spanx> claim is defined as
<spanx style="verb">SHA-256(binding_message)</spanx>, giving the agent cryptographic commitment to
the same string the human will see. An assertion whose <spanx style="verb">task_hash</spanx> does
not match the CIBA request's <spanx style="verb">binding_message</spanx> MUST NOT produce
agent-bound token semantics.</t>

<t>Verification sequence:</t>

<t><list style="numbers" type="1">
  <t>Decode payload without verification to extract <spanx style="verb">iss</spanx> (= sessionId).</t>
  <t>Load session from the database.</t>
  <t>Verify session status is <spanx style="verb">active</spanx>.</t>
  <t>Import session's stored public key.</t>
  <t>Verify JWT signature with <spanx style="verb">algorithms: ["EdDSA"]</spanx>.</t>
  <t>Verify <spanx style="verb">typ</spanx> header is <spanx style="verb">agent-assertion+jwt</spanx>.</t>
  <t>Compute session lifecycle state (<xref target="lifecycle"/>). Reject if not
<spanx style="verb">active</spanx>.</t>
  <t>Compute <spanx style="verb">SHA-256(binding_message)</spanx> and compare to <spanx style="verb">task_hash</spanx>. MUST
match.</t>
  <t>Verify host ownership: the session's host MUST belong to the same
user and OAuth client as the CIBA request.</t>
</list></t>

<t>Binding to CIBA request. On successful verification, the server
snapshots server-owned metadata onto the CIBA request record:</t>

<texttable>
      <ttcol align='left'>Field</ttcol>
      <ttcol align='left'>Source</ttcol>
      <c><spanx style="verb">agent_session_id</spanx></c>
      <c>Session record</c>
      <c><spanx style="verb">host_id</spanx></c>
      <c>Session's parent host</c>
      <c><spanx style="verb">display_name</spanx>, <spanx style="verb">runtime</spanx>, <spanx style="verb">model</spanx>, <spanx style="verb">version</spanx></c>
      <c>Session registration metadata</c>
      <c><spanx style="verb">task_id</spanx>, <spanx style="verb">task_hash</spanx></c>
      <c>Agent-Assertion claims</c>
      <c><spanx style="verb">assertion_verified</spanx></c>
      <c><spanx style="verb">true</spanx></c>
      <c><spanx style="verb">pairwise_act_sub</spanx></c>
      <c>Derived for the requesting OAuth client</c>
      <c><spanx style="verb">attestation_provider</spanx>, <spanx style="verb">attestation_tier</spanx></c>
      <c>Host attestation metadata</c>
</texttable>

<t>This snapshot ties the later token to the actual registered runtime,
not a free-form claim supplied by the client.</t>

<t>CIBA request integrity. Three additional security properties apply to
CIBA requests in PACT:</t>

<t><list style="numbers" type="1">
  <t>Release handle binding. The CIBA release handle (used to exchange an
approved request for tokens) MUST be cryptographically bound to
<spanx style="verb">(userId, authReqId, clientId)</spanx>. A handle obtained from one request
MUST NOT redeem a different request.</t>
  <t>Atomic status transitions. The transition from <spanx style="verb">approved</spanx> to
<spanx style="verb">redeemed</spanx> MUST use compare-and-swap semantics. Concurrent polling
attempts that race the transition MUST fail rather than
duplicate-issue tokens.</t>
  <t>Entropy. <spanx style="verb">auth_req_id</spanx> values MUST be generated with cryptographic
entropy sufficient to prevent enumeration (e.g., UUID v4).</t>
</list></t>

</section>
<section anchor="biometric-approval-strength"><name>Biometric Approval Strength</name>

<t>An agent with browser control (for example, Playwright or an MCP
browser tool) can navigate to approval URLs and click buttons. The
<spanx style="verb">biometric</spanx> approval strength defends against self-approval by requiring
WebAuthn <spanx style="verb">userVerification: required</spanx>, a biometric or PIN gesture that
the agent cannot produce.</t>

<t>For <spanx style="verb">biometric</spanx>-strength capabilities:</t>

<t><list style="symbols">
  <t>Push notifications show "Open to approve" link only; inline
approve/deny actions are disabled because they cannot trigger
WebAuthn.</t>
  <t>The approval endpoint returns a WebAuthn challenge that MUST be
satisfied before the approval is accepted.</t>
  <t>Password-based session re-authentication is insufficient because the
agent may know the password.</t>
</list></t>

<t>The <spanx style="verb">session</spanx> strength accepts any in-session re-authentication an
agent with browser access could automate (cookie presence, password
re-entry). The <spanx style="verb">biometric</spanx> strength requires a WebAuthn user-verification
ceremony that cannot be performed without the registered authenticator.</t>

<t>Identity scope exception. When a CIBA request includes identity scopes,
push notifications MUST NOT include inline approve actions, even for
<spanx style="verb">session</spanx>-strength capabilities. Vault unlock (required by VEIL for
identity claim delivery) cannot be triggered from a service worker or
agent browser context, making identity-scoped requests functionally
equivalent to <spanx style="verb">biometric</spanx> for inline approval purposes. The user MUST
navigate to the approval page in a full browser context.</t>

</section>
<section anchor="capability-derivation"><name>Capability Derivation</name>

<t>The consent router derives a capability name from the CIBA request's
<spanx style="verb">authorization_details</spanx> and <spanx style="verb">scope</spanx>:</t>

<texttable>
      <ttcol align='left'>Condition</ttcol>
      <ttcol align='left'>Derived capability</ttcol>
      <c>Any detail has <spanx style="verb">type</spanx> equal to <spanx style="verb">"purchase"</spanx></c>
      <c><spanx style="verb">purchase</spanx></c>
      <c>Any scope is an identity scope</c>
      <c><spanx style="verb">read_profile</spanx></c>
      <c>Any scope is a proof scope (for example <spanx style="verb">proof:age</spanx> or <spanx style="verb">proof:compliance</spanx>)</c>
      <c><spanx style="verb">check_compliance</spanx></c>
      <c>Only <spanx style="verb">openid</spanx> scope, no typed details</c>
      <c><spanx style="verb">request_approval</spanx></c>
</texttable>

<t>The first matching row wins. The precedence order is <spanx style="verb">purchase</spanx> details,
then identity scopes, then proof scopes, then <spanx style="verb">openid</spanx>-only requests. A
mixed request (for example, purchase details plus <spanx style="verb">identity.*</spanx> scopes) is
routed to the most sensitive derived capability.</t>

</section>
</section>
<section anchor="evidence"><name>Delegation Evidence</name>

<t>Approved delegations are encoded as JWT access tokens. The <spanx style="verb">sub</spanx> and
<spanx style="verb">act</spanx> claims identify the user and agent principals. The <spanx style="verb">capabilities</spanx>,
<spanx style="verb">oversight</spanx>, <spanx style="verb">audit</spanx>, and <spanx style="verb">delegation</spanx> claims describe the constraints
and provenance.</t>

<section anchor="the-delegation-token-profile"><name>The Delegation Token Profile</name>

<t>Access tokens issued after agent-verified CIBA approval carry the
delegation claim set defined below. The <spanx style="verb">act</spanx> claim is used as specified
in <xref target="RFC8693"/> Section 4.1. The remaining claims (<spanx style="verb">agent</spanx>, <spanx style="verb">task</spanx>,
<spanx style="verb">capabilities</spanx>, <spanx style="verb">oversight</spanx>, <spanx style="verb">audit</spanx>, <spanx style="verb">delegation</spanx>) are defined
normatively in this document. Approved <spanx style="verb">authorization_details</spanx>
<xref target="RFC9396"/> are retained on the CIBA request record and projected onto
exchanged tokens (<xref target="exchange-narrowing"/>), not on the CIBA-issued access
token.</t>

<figure><sourcecode type="json"><![CDATA[
{
  "iss": "https://as.example.com",
  "sub": "<pairwise user id for RP>",
  "aud": "<RP client_id>",
  "exp": 1711003600,
  "iat": 1711000000,
  "jti": "<unique>",
  "scope": "openid purchase",

  "act": {
    "sub": "<pairwise agent id for RP>"
  },

  "agent": {
    "id": "<pairwise agent id for RP>",
    "type": "mcp-agent",
    "model": {
      "id": "claude-sonnet-4-20250514",
      "version": "1.0.0"
    },
    "runtime": {
      "environment": "node",
      "attested": true
    }
  },

  "task": {
    "id": "task-uuid",
    "purpose": "purchase"
  },

  "capabilities": [
    {
      "action": "purchase",
      "constraints": [
        { "field": "amount.value", "op": "max", "value": 100 }
      ]
    }
  ],

  "oversight": {
    "approval_reference": "<auth_req_id>",
    "requires_human_approval_for": ["identity.*"]
  },

  "audit": {
    "trace_id": "<auth_req_id>",
    "session_id": "<pairwise agent id for RP>"
  },

  "cnf": {
    "jkt": "<DPoP key thumbprint>"
  }
}
]]></sourcecode></figure>

<t>Claim semantics:</t>

<texttable>
      <ttcol align='left'>Claim</ttcol>
      <ttcol align='left'>Semantics</ttcol>
      <c><spanx style="verb">sub</spanx></c>
      <c>Pairwise user identifier for the target RP</c>
      <c><spanx style="verb">act.sub</spanx></c>
      <c>Pairwise agent session identifier for the target RP</c>
      <c><spanx style="verb">agent.id</spanx></c>
      <c>Same as <spanx style="verb">act.sub</spanx>, pairwise agent identifier</c>
      <c><spanx style="verb">agent.type</spanx></c>
      <c>Agent runtime type (e.g., <spanx style="verb">mcp-agent</spanx>)</c>
      <c><spanx style="verb">agent.model</spanx></c>
      <c>Model metadata (informational, not security-critical)</c>
      <c><spanx style="verb">agent.runtime.attested</spanx></c>
      <c>Whether the host passed vendor attestation</c>
      <c><spanx style="verb">task.id</spanx></c>
      <c>Task identifier from the Agent-Assertion</c>
      <c><spanx style="verb">task.purpose</spanx></c>
      <c>Category-level intent (not verbatim description)</c>
      <c><spanx style="verb">capabilities</spanx></c>
      <c>Approved capabilities with their constraint snapshot</c>
      <c><spanx style="verb">oversight.requires_human_approval_for</spanx></c>
      <c>Scopes that MUST route through human approval</c>
      <c><spanx style="verb">audit.trace_id</spanx></c>
      <c>CIBA <spanx style="verb">auth_req_id</spanx> for end-to-end correlation</c>
      <c><spanx style="verb">cnf.jkt</spanx></c>
      <c>DPoP proof-of-possession key thumbprint</c>
</texttable>

<t>Conditional emission. If <spanx style="verb">assertion_verified</spanx> is <spanx style="verb">false</spanx> on the CIBA
request, delegation claims MUST NOT be emitted; the token is issued as a
standard CIBA token without agent semantics.</t>

</section>
<section anchor="chain-tracking"><name>Chain Tracking</name>

<t>When tokens are exchanged via Token Exchange <xref target="RFC8693"/>, the
<spanx style="verb">delegation</spanx> claim tracks the chain:</t>

<figure><sourcecode type="json"><![CDATA[
{
  "delegation": {
    "depth": 1,
    "max_depth": 3,
    "chain": ["<pairwise-agent-A>", "<pairwise-agent-B>"],
    "parent_jti": "<original-token-jti>"
  }
}
]]></sourcecode></figure>

<t>Rules enforced on token exchange:</t>

<t><list style="symbols">
  <t>The server MUST maintain delegation lineage in canonical internal
actor references (for example, raw session IDs), not only in the
audience-projected identifiers emitted in tokens.</t>
  <t><spanx style="verb">depth</spanx> incremented by 1 on each exchange.</t>
  <t>Current actor appended to the canonical lineage before projection.</t>
  <t><spanx style="verb">delegation.chain</spanx> in the exchanged token MUST be projected for the
current audience from the canonical lineage. Previous
audience-specific pairwise values MUST NOT be copied verbatim into a
new audience context.</t>
  <t>Implementations advertising <spanx style="verb">delegation_chains: true</spanx> MUST reject the
exchange if <spanx style="verb">depth &gt;= max_depth</spanx>.</t>
  <t>Implementations advertising <spanx style="verb">delegation_chains: true</spanx> MUST enforce
mandatory privilege reduction: at least one of narrower capabilities,
tighter constraints, shorter TTL, or lower <spanx style="verb">max_depth</spanx>.</t>
  <t>The first exchange from a CIBA access token to a non-agent audience
satisfies privilege reduction by applying the claim-narrowing rules
of <xref target="exchange-narrowing"/>: the issued token omits the delegation
<spanx style="verb">agent</spanx>, <spanx style="verb">task</spanx>, <spanx style="verb">capabilities</spanx>, <spanx style="verb">oversight</spanx>, and <spanx style="verb">audit</spanx> sections,
narrows <spanx style="verb">authorization_details</spanx> to the approved subset, and rebinds
audience. If <spanx style="verb">delegation_chains</spanx> is <spanx style="verb">false</spanx>, the issued token MAY
omit <spanx style="verb">delegation</spanx> as well; if <spanx style="verb">delegation_chains</spanx> is <spanx style="verb">true</spanx>, it MUST
retain the projected <spanx style="verb">delegation</spanx> lineage needed for depth
enforcement and family revocation. The issued token lifetime MUST
NOT exceed the subject token's remaining lifetime.</t>
</list></t>

<t>Family revocation. Revoking a parent token (by <spanx style="verb">jti</spanx>) revokes all
descendants reachable via <spanx style="verb">parent_jti</spanx> graph traversal.</t>

</section>
</section>
<section anchor="exchange-narrowing"><name>Claim Narrowing on Token Exchange</name>

<t>When delegation evidence must cross an audience boundary, the AS uses
Token Exchange <xref target="RFC8693"/> to mint a downstream token for the new
audience. This section specifies what the AS MUST strip, project, and
attenuate on every such exchange. The rules apply regardless of the
<spanx style="verb">requested_token_type</spanx>; PACT does not mint any profile-specific
artifact type.</t>

<section anchor="dropping-agent-control-plane-claims"><name>Dropping Agent Control-Plane Claims</name>

<t>When the target audience is not itself an agent (the common case: a
resource server or relying party consuming the delegated
authorization), the issued token MUST omit the delegation <spanx style="verb">agent</spanx>,
<spanx style="verb">task</spanx>, <spanx style="verb">capabilities</spanx>, <spanx style="verb">oversight</spanx>, and <spanx style="verb">audit</spanx> sections. These
sections describe the agent control plane and leak agent-identifying
context that a non-agent audience does not need for access decisions.</t>

<t><list style="symbols">
  <t>If the deployment does not advertise <spanx style="verb">delegation_chains</spanx>, the issued
token MAY omit <spanx style="verb">delegation</spanx> entirely.</t>
  <t>If the deployment advertises <spanx style="verb">delegation_chains: true</spanx>, the issued
token MUST retain a projected <spanx style="verb">delegation</spanx> claim containing only the
lineage needed for depth enforcement and family revocation (<spanx style="verb">depth</spanx>,
<spanx style="verb">max_depth</spanx>, <spanx style="verb">chain</spanx>, <spanx style="verb">parent_jti</spanx>, <spanx style="verb">root_jti</spanx>; see <xref target="evidence"/>).
Previous audience-specific pairwise values MUST NOT be copied
verbatim into the new audience context and MUST be recomputed per
<xref target="pairwise"/>.</t>
</list></t>

<t>Claims that the downstream audience does need (<spanx style="verb">iss</spanx>, <spanx style="verb">aud</spanx>, <spanx style="verb">sub</spanx>,
<spanx style="verb">act.sub</spanx>, <spanx style="verb">scope</spanx>, <spanx style="verb">authorization_details</spanx>, <spanx style="verb">cnf</spanx>, <spanx style="verb">jti</spanx>, <spanx style="verb">iat</spanx>,
<spanx style="verb">exp</spanx>) are copied or recomputed from the subject token: pairwise
identifiers are recomputed for the target audience (<xref target="pairwise"/>),
DPoP binding is taken from the token exchange request's proof, and
<spanx style="verb">authorization_details</spanx> is narrowed per the rules below.</t>

</section>
<section anchor="privilege-reduction"><name>Privilege Reduction</name>

<t>Every token exchange MUST enforce privilege reduction on the issued
token:</t>

<t><list style="symbols">
  <t><spanx style="verb">scope</spanx> MUST be a subset of the subject token's scope.</t>
  <t><spanx style="verb">authorization_details</spanx> MUST be a subset of the subject token's
<spanx style="verb">authorization_details</spanx>.</t>
  <t>Lifetime MUST NOT exceed the subject token's remaining lifetime.</t>
</list></t>

</section>
<section anchor="request-and-response"><name>Request and Response</name>

<t>A downstream audience MAY negotiate a specialized <spanx style="verb">requested_token_type</spanx>
(for example, a deployment-specific signed artifact type). The specific
types are out of scope for this profile; the rules above apply
regardless of the chosen type.</t>

<t>Request:</t>

<figure><artwork><![CDATA[
POST {token_endpoint}
  DPoP: <proof bound to the caller key>

  grant_type=urn:ietf:params:oauth:grant-type:token-exchange
  subject_token=<CIBA access token>
  subject_token_type=urn:ietf:params:oauth:token-type:access_token
  requested_token_type=
    urn:ietf:params:oauth:token-type:access_token
  audience=<target RP client_id>
]]></artwork></figure>

<t>Issued token (illustrative):</t>

<figure><artwork><![CDATA[
{
  "iss": "https://as.example.com",
  "aud": "<target RP client_id>",
  "sub": "<pairwise user id for target RP>",
  "act": { "sub": "<pairwise agent id for target RP>" },
  "scope": "<narrowed subset>",
  "authorization_details": [
    {
      "type": "purchase",
      "merchant": "Acme",
      "item": "Widget",
      "amount": { "value": "29.99", "currency": "USD" }
    }
  ],
  "cnf": { "jkt": "<DPoP key thumbprint>" },
  "jti": "<unique>",
  "iat": 1711000000,
  "exp": 1711003600
}
]]></artwork></figure>

<t>The target RP validates the JWT signature against the AS's JWKS,
verifies a matching DPoP proof against <spanx style="verb">cnf.jkt</spanx>, and enforces the
<spanx style="verb">authorization_details</spanx> constraints. It does not need to understand the
agent capability model; it only needs to trust the signature and
proof-of-possession binding.</t>

</section>
</section>
<section anchor="lifecycle"><name>Temporal Boundaries</name>

<t>Agent sessions have bounded lifetimes. Expired or terminated sessions
MUST NOT be reactivated.</t>

<section anchor="two-independent-clocks"><name>Two Independent Clocks</name>

<t>Each agent session has two independent lifetime clocks: one tracks
inactivity, the other tracks total elapsed time since session creation.</t>

<texttable>
      <ttcol align='left'>Clock</ttcol>
      <ttcol align='left'>Measured from</ttcol>
      <ttcol align='left'>Default</ttcol>
      <ttcol align='left'>Purpose</ttcol>
      <c>Idle TTL</c>
      <c>Last activity (<spanx style="verb">last_seen_at</spanx>)</c>
      <c>1800s (30 min)</c>
      <c>Inactivity timeout</c>
      <c>Max lifetime</c>
      <c>Session creation (<spanx style="verb">created_at</spanx>)</c>
      <c>86400s (24 h)</c>
      <c>Total session cap</c>
</texttable>

<t>Lifecycle computation:</t>

<t><list style="numbers" type="1">
  <t>If persisted status is <spanx style="verb">revoked</spanx> or <spanx style="verb">expired</spanx>: keep it (terminal).</t>
  <t>Compute <spanx style="verb">idle_expires_at = last_seen_at + idle_ttl_sec * 1000</spanx>.</t>
  <t>Compute <spanx style="verb">max_expires_at = created_at + max_lifetime_sec * 1000</spanx>.</t>
  <t>If <spanx style="verb">now &gt;= idle_expires_at</spanx> OR <spanx style="verb">now &gt;= max_expires_at</spanx>: status is
<spanx style="verb">expired</spanx>.</t>
  <t>Otherwise: status is <spanx style="verb">active</spanx>.</t>
</list></t>

<t>Expiry is not only inferred at read time. It MUST be persisted to the
database once observed.</t>

</section>
<section anchor="no-reactivation"><name>No Reactivation</name>

<figure><artwork type="ascii-art"><![CDATA[
   +----------+      +----------+
   |  active  | ---> | expired  |
   +----+-----+      +----------+
        |
        v
   +----------+
   | revoked  |
   +----------+
]]></artwork></figure>

<t>There is no reactivation path for sessions. If a session expires, the
client creates a new session under the same host. This is simpler and
more auditable than hidden reactivation logic, and it ensures that
escalated session grants do not survive across activation boundaries.</t>

</section>
<section anchor="renewal-through-use"><name>Renewal Through Use</name>

<t>Session activity (<spanx style="verb">last_seen_at</spanx>) is updated after successful
authenticated operations, specifically after successful Agent-Assertion
binding during CIBA requests. The idle boundary is renewed by successful
use, not by mere existence.</t>

</section>
<section anchor="revocation-cascade"><name>Revocation Cascade</name>

<t>An agent session can be revoked by the user (via dashboard or API), the
client (via <spanx style="verb">POST {revocation_endpoint}</spanx> with the bootstrap token
carrying <spanx style="verb">agent:session.revoke</spanx>), or the server (policy-based).</t>

<t>Revoking a session also revokes all its session grants (<spanx style="verb">status =
"revoked"</spanx>, <spanx style="verb">revoked_at = now</spanx>). Revoking a host revokes all sessions
under it, cascading to all session grants.</t>

<t>Logout coordination. The authorization server MUST revoke all pending
CIBA requests for a user at the time of user logout (per VEIL
<xref target="I-D.valverde-oauth-veil"/>). A CIBA token MUST NOT be issuable after
the user's session has been terminated. Without this, an agent polling
after user logout could obtain tokens for a session the user intended
to end.</t>

</section>
</section>
<section anchor="machine-readable-surfaces"><name>Machine-Readable Surfaces</name>

<t>PACT exposes its agent authorization model through four machine-readable
surfaces: an agent configuration document, a capability registry, token
introspection, and an optional A2A agent card.</t>

<section anchor="discovery"><name>Agent Configuration Document</name>

<t><spanx style="verb">GET /.well-known/agent-configuration</spanx> is the profile discovery
endpoint. No authentication required.</t>

<figure><sourcecode type="json"><![CDATA[
{
  "issuer": "https://as.example.com",
  "registration_endpoint":
    "https://as.example.com/api/auth/agent/register",
  "host_registration_endpoint":
    "https://as.example.com/api/auth/agent/host/register",
  "capabilities_endpoint":
    "https://as.example.com/api/auth/agent/capabilities",
  "introspection_endpoint":
    "https://as.example.com/api/auth/agent/introspect",
  "revocation_endpoint":
    "https://as.example.com/api/auth/agent/revoke",
  "jwks_uri": "https://as.example.com/api/auth/agent/jwks",
  "supported_algorithms": ["EdDSA"],
  "approval_methods": ["ciba"],
  "approval_page_url_template":
    "https://as.example.com/approve/{auth_req_id}",
  "supported_features": {
    "task_attestation": true,
    "pairwise_agents": true,
    "risk_graduated_approval": true,
    "capability_constraints": true,
    "delegation_chains": false
  }
}
]]></sourcecode></figure>

<t>The document SHOULD be served with <spanx style="verb">Cache-Control: public, max-age=3600</spanx>.</t>

</section>
<section anchor="capability-discovery"><name>Capability Discovery</name>

<t><spanx style="verb">GET {capabilities_endpoint}</spanx> returns the full capability registry.</t>

<t><spanx style="verb">GET {capabilities_endpoint}/{name}</spanx> returns a single capability with
full input/output schemas.</t>

<t>No authentication required for either endpoint.</t>

</section>
<section anchor="introspection-with-lifecycle"><name>Introspection with Lifecycle</name>

<t><spanx style="verb">POST {introspection_endpoint}</spanx> follows the <xref target="RFC7662"/> model for agent
token validation.</t>

<t>Authentication. Requires a <spanx style="verb">client_credentials</spanx> access token with
<spanx style="verb">agent:introspect</spanx> scope.</t>

<t>Request: <spanx style="verb">application/x-www-form-urlencoded</spanx> or <spanx style="verb">application/json</spanx> with
a <spanx style="verb">token</spanx> field.</t>

<t>Key behaviors:</t>

<t><list style="symbols">
  <t>Session lifecycle is re-evaluated at query time. A session that
expired between token issuance and introspection returns <spanx style="verb">active:
false</spanx>.</t>
  <t><spanx style="verb">sub</spanx> and <spanx style="verb">agent.id</spanx> MUST come from a consistent caller-relative
pairwise view. If the server cannot safely re-project <spanx style="verb">sub</spanx> for the
introspecting client, it MUST omit <spanx style="verb">sub</spanx> rather than leak another
client's pairwise identifier.</t>
  <t><spanx style="verb">client_id</spanx> and <spanx style="verb">aud</spanx> continue to identify the token that was issued,
not the introspector's own client registration.</t>
  <t>If <spanx style="verb">assertion_verified</spanx> is <spanx style="verb">false</spanx> on the token snapshot, delegation
claims are omitted.</t>
</list></t>

</section>
<section anchor="a2a-agent-card-informational"><name>A2A Agent Card (Informational)</name>

<t>Deployments MAY additionally publish an A2A Protocol <xref target="A2A"/> agent card
at <spanx style="verb">GET /.well-known/agent-card.json</spanx> that references the agent
configuration document, to support agent-to-agent capability discovery
ecosystems that rely on that surface. This integration is informational:
the A2A Protocol is not a normative dependency of this profile, and
conforming implementations are not required to emit the A2A card.</t>

</section>
</section>
<section anchor="continuity"><name>Cryptographic Continuity</name>

<t>Each phase of the profile produces cryptographic evidence consumed by
the next. A relying party verifies the delegation chain by inspecting
the resulting OAuth messages; each step requires proof that only the
legitimate caller can produce.</t>

<section anchor="the-full-chain"><name>The Full Chain</name>

<figure><artwork type="ascii-art"><![CDATA[
  +-------------------------------------+
  |        OAuth User Token             |
  +-----------------+-------------------+
                    |
                    v
  +-------------------------------------+
  |     Durable Host Registration       |
  |  Host Ed25519 key bound to          |
  |  user + client                      |
  +-----------------+-------------------+
                    |
                    v
  +-------------------------------------+
  |     Agent Session Registration      |
  |  Fresh Ed25519 key bound to         |
  |  host + runtime                     |
  +-----------------+-------------------+
                    |
                    v
  +-------------------------------------+
  |     Agent-Assertion on CIBA         |
  |  Runtime proof bound to specific    |
  |  consent request                    |
  +-----------------+-------------------+
                    |
                    v
  +-------------------------------------+
  |     Human Approval via CIBA         |
  |  Consent bound to scope +           |
  |  authorization_details              |
  +-----------------+-------------------+
                    |
                    v
  +-------------------------------------+
  |         Access Token                |
  |  sub + act.sub + PACT delegation    |
  |  claims                             |
  +-----------------+-------------------+
                    |
                    v
  +-------------------------------------+
  |    Token Exchange (optional)        |
  |  Audience rebinding + claim         |
  |  narrowing for downstream RP        |
  +-------------------------------------+
]]></artwork></figure>

</section>
<section anchor="session-binding"><name>Session Binding</name>

<t>The client authenticates with a user-bound OAuth access token, typically
sender-constrained through DPoP. This binds delegated setup work to the
caller's proof-of-possession key.</t>

</section>
<section anchor="host-binding"><name>Host Binding</name>

<t>Host registration binds a durable Ed25519 public key to one user, one
OAuth client, and one installation thumbprint. The signed
<spanx style="verb">host-attestation+jwt</spanx> used during session registration proves that the
caller still possesses the durable host private key.</t>

</section>
<section anchor="runtime-binding"><name>Runtime Binding</name>

<t>Session registration binds a fresh Ed25519 public key to one host, one
runtime process, and one display metadata snapshot. The <spanx style="verb">Agent-Assertion</spanx>
proves possession of that runtime key on each CIBA request.</t>

</section>
<section anchor="consent-binding"><name>Consent Binding</name>

<t>CIBA binds human approval to one <spanx style="verb">auth_req_id</spanx>, one binding message,
one scope set, and one optional <spanx style="verb">authorization_details</spanx> payload.</t>

<t>If the runtime proof is present and valid, the server snapshots runtime
metadata into the CIBA request before the approval result is finalized.</t>

</section>
<section anchor="disclosure-binding"><name>Disclosure Binding</name>

<t>Identity release follows VEIL <xref target="I-D.valverde-oauth-veil"/>: PII is staged
in an ephemeral single-consume store and delivered via the userinfo
endpoint, never embedded in <spanx style="verb">id_token</spanx> or access-token claims. PACT sets
the CIBA TTL to 10 minutes; the OAuth2 TTL of 5 minutes is inherited
unchanged.</t>

</section>
<section anchor="delegation-binding"><name>Delegation Binding</name>

<t>The delegated access token carries <spanx style="verb">sub</spanx> for the human principal,
<spanx style="verb">act.sub</spanx> for the acting agent session, and the full PACT delegation
claim set (<xref target="evidence"/>). Tokens issued by token exchange to a
non-agent audience carry pairwise <spanx style="verb">sub</spanx>, pairwise <spanx style="verb">act.sub</spanx>, <spanx style="verb">cnf.jkt</spanx>,
and the approved <spanx style="verb">authorization_details</spanx>, all re-derived or rebound for
the target audience per <xref target="exchange-narrowing"/>.</t>

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

<t>Implementations MUST satisfy the security considerations of OAuth 2.1
<xref target="I-D.ietf-oauth-v2-1"/>, CIBA <xref target="CIBA-Core"/>, OAuth Token Exchange
<xref target="RFC8693"/>, and VEIL <xref target="I-D.valverde-oauth-veil"/>.</t>

<section anchor="jti-replay-protection"><name>JTI Replay Protection</name>

<t>All Agent-Assertion JWTs require a <spanx style="verb">jti</spanx> claim. The server MUST reject
duplicates for the same session and retain seen values until the
assertion's <spanx style="verb">exp</spanx> plus a clock-skew allowance (SHOULD default to 30
seconds). Cache entries are partitioned by session ID.</t>

</section>
<section anchor="algorithm-confusion-prevention"><name>Algorithm Confusion Prevention</name>

<t>JWT verification MUST derive the algorithm from the public key's curve
(<spanx style="verb">Ed25519 -&gt; EdDSA</spanx>, <spanx style="verb">P-256 -&gt; ES256</spanx>), never from the JWT <spanx style="verb">alg</spanx> header.</t>

</section>
<section anchor="jwks-fetch-hardening"><name>JWKS Fetch Hardening</name>

<t>Remote JWKS URL fetches (for attestation verification) MUST block
private and loopback IP addresses, enforce HTTPS in production, limit
redirects (max 3), cap response size, enforce timeouts, and cache
responses.</t>

</section>
<section anchor="host-key-security"><name>Host Key Security</name>

<t>Host private keys MUST be stored with filesystem permissions restricting
access to the owning user only (mode <spanx style="verb">0600</spanx>). The directory MUST be
mode <spanx style="verb">0700</spanx>.</t>

</section>
<section anchor="session-key-ephemerality"><name>Session Key Ephemerality</name>

<t>Session private keys MUST exist only in process memory. They MUST NOT be
written to disk, environment variables, or any persistent store.</t>

</section>
<section anchor="task-description-sensitivity"><name>Task Description Sensitivity</name>

<t>Task descriptions may contain user-specific context. They appear as
<spanx style="verb">task.purpose</spanx> in tokens (category-level, not verbatim). The verbatim
description is available only via introspection by authorized machine
clients, not in the JWT body.</t>

</section>
<section anchor="dpop-binding"><name>DPoP Binding</name>

<t>Delegated access tokens issued by this profile SHOULD be DPoP-bound
<xref target="RFC9449"/>. When token exchange mints a downstream token from a CIBA
access token, the issued token MUST carry <spanx style="verb">cnf.jkt</spanx> from the validated
DPoP proof and the target RP MUST require a matching DPoP proof at
presentation time. A leaked exchanged token is useless without the
caller's proof-of-possession key.</t>

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

<t>The privacy considerations of VEIL <xref target="I-D.valverde-oauth-veil"/> apply in
addition to those below. Participants are the user, the agent session,
the durable host installation, the authorization server, and the relying
parties receiving delegated tokens. Cross-RP correlation through agent
identifiers requires explicit opt-in at registration.</t>

<section anchor="cross-rp-agent-correlation"><name>Cross-RP Agent Correlation</name>

<t>Without pairwise agent identifiers, <spanx style="verb">act.sub</spanx> in delegated tokens is a
stable correlator across all RPs. Two colluding RPs can link agent
activity across services, correlate the frequency and timing of
operations, and infer usage patterns that may deanonymize the human.</t>

<t>PACT mitigates this by deriving <spanx style="verb">act.sub</spanx> per-RP using the same
sector-identifier mechanism as OIDC Core pairwise subjects.</t>

</section>
<section anchor="pii-in-tokens"><name>PII in Tokens</name>

<t>Identity PII MUST NOT be embedded in access tokens or purchase
authorization artifacts. PII delivery uses the ephemeral in-memory store
with single-consume semantics. This ensures that long-lived tokens
contain only cryptographic identifiers, not personal data.</t>

</section>
<section anchor="metadata-minimization"><name>Metadata Minimization</name>

<t>Agent display metadata (<spanx style="verb">model</spanx>, <spanx style="verb">runtime</spanx>, <spanx style="verb">version</spanx>) is informational
and self-declared. It SHOULD NOT be relied upon for security decisions.
Trust decisions MUST be based on cryptographic verification (key
signatures, attestation) rather than declared metadata.</t>

</section>
<section anchor="pairwise-opt-out"><name>Pairwise Opt-Out</name>

<t>RPs that require stable agent identifiers (for example, for regulatory
audit trails) opt in through an agent-specific signal distinct from
VEIL's user-facing <spanx style="verb">subject_type</spanx>. The default is pairwise.</t>

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

<t>This document requests the registrations listed below. Media types under
<spanx style="verb">application/*+jwt</spanx> are registered per <xref target="RFC7515"/>.</t>

<section anchor="media-type-registrations"><name>Media Type Registrations</name>

<t>This document requests two registrations in the "Media Types" registry
under the <spanx style="verb">application/</spanx> tree:</t>

<t><list style="symbols">
  <t><spanx style="verb">application/agent-assertion+jwt</spanx>: JWT typ defined in <xref target="assertion"/>;
used in the <spanx style="verb">Agent-Assertion</spanx> HTTP header to prove runtime session
identity on CIBA requests.</t>
  <t><spanx style="verb">application/host-attestation+jwt</spanx>: JWT typ defined in <xref target="session"/>;
host-signed assertion consumed by the session registration endpoint.</t>
</list></t>

<t>Each registration specifies this document as its reference and
references <xref target="RFC7515"/> for the <spanx style="verb">+jwt</spanx> structured syntax suffix
semantics.</t>

</section>
<section anchor="well-known-uri-registration"><name>Well-Known URI Registration</name>

<t>This document requests one registration in the "Well-Known URIs"
registry <xref target="RFC8615"/>:</t>

<t><list style="symbols">
  <t>URI suffix: <spanx style="verb">agent-configuration</spanx></t>
  <t>Change Controller: IETF</t>
  <t>Reference: This document, <xref target="discovery"/></t>
  <t>Status: Permanent</t>
</list></t>

</section>
<section anchor="http-field-name-registrations"><name>HTTP Field Name Registrations</name>

<t>This document requests three registrations in the "Hypertext Transfer
Protocol (HTTP) Field Name Registry" <xref target="RFC9110"/>:</t>

<t><list style="symbols">
  <t>Field Name: <spanx style="verb">Agent-Assertion</spanx>. Status: permanent. Reference: this
document <xref target="assertion"/>.</t>
  <t>Field Name: <spanx style="verb">OAuth-Client-Attestation</spanx>. Status: permanent. Reference:
<xref target="I-D.ietf-oauth-attestation-based-client-auth"/>.</t>
  <t>Field Name: <spanx style="verb">OAuth-Client-Attestation-PoP</spanx>. Status: permanent.
Reference: <xref target="I-D.ietf-oauth-attestation-based-client-auth"/>.</t>
</list></t>

<t>The latter two fields are registered by their originating draft; PACT
references them without redefinition.</t>

</section>
<section anchor="jwt-claim-registrations"><name>JWT Claim Registrations</name>

<t>This document requests registrations in the "JSON Web Token Claims"
registry <xref target="RFC7519"/> for the delegation claim vocabulary defined in
<xref target="evidence"/>:</t>

<t><list style="symbols">
  <t><spanx style="verb">agent</spanx>: Object describing the acting agent runtime and attestation
posture.</t>
  <t><spanx style="verb">task</spanx>: Object describing the task category under which delegation was
authorized.</t>
  <t><spanx style="verb">capabilities</spanx>: Array of approved named actions with typed constraint
snapshots.</t>
  <t><spanx style="verb">oversight</spanx>: Object carrying human-approval requirements and the
originating approval reference.</t>
  <t><spanx style="verb">audit</spanx>: Object carrying a CIBA trace identifier and session
reference.</t>
  <t><spanx style="verb">delegation</spanx>: Object tracking the delegation chain.</t>
</list></t>

<t>The <spanx style="verb">act</spanx>, <spanx style="verb">authorization_details</spanx>, <spanx style="verb">cnf</spanx>, <spanx style="verb">jti</spanx>, <spanx style="verb">iat</spanx>, <spanx style="verb">exp</spanx>, <spanx style="verb">iss</spanx>,
<spanx style="verb">aud</spanx>, <spanx style="verb">sub</spanx>, and <spanx style="verb">scope</spanx> claims are referenced as already registered
and are used per their originating specifications (<xref target="RFC8693"/> Section
4.1 for <spanx style="verb">act</spanx>, <xref target="RFC9396"/> for <spanx style="verb">authorization_details</spanx>, <xref target="RFC7800"/> for
<spanx style="verb">cnf</spanx>, <xref target="RFC7519"/> for the common set).</t>

</section>
<section anchor="oauth-extensions-error-registry"><name>OAuth Extensions Error Registry</name>

<t>PACT does not currently request new OAuth error codes; it uses the
step-up error contract inherited from VEIL (<spanx style="verb">interaction_required</spanx>) and
standard CIBA and token-exchange errors defined in their respective
specifications.</t>

</section>
<section anchor="acr-values"><name>ACR Values</name>

<t>ACR URNs in <spanx style="verb">acr_values_supported</spanx> are deployment-local (see VEIL
<xref target="I-D.valverde-oauth-veil"/>). PACT does not register ACR values or
reserve an ACR namespace.</t>

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

<section anchor="server-requirements"><name>Server Requirements</name>

<t>A conforming authorization server MUST:</t>

<t><list style="symbols">
  <t>Implement the identity model.</t>
  <t>Compute pairwise agent identifiers by default.</t>
  <t>Implement the capability registry and grant model.</t>
  <t>Route consent based on approval strength.</t>
  <t>Verify Agent-Assertions and bind them to CIBA requests.</t>
  <t>Issue tokens with PACT delegation claims only when assertions are
verified.</t>
  <t>Publish the agent configuration document.</t>
  <t>Enforce JTI replay protection.</t>
  <t>Derive JWT algorithms from public keys, not headers.</t>
</list></t>

<t>A conforming authorization server SHOULD:</t>

<t><list style="symbols">
  <t>Support vendor attestation.</t>
  <t>Enforce usage limits atomically.</t>
  <t>Support token exchange with claim narrowing for downstream audiences.</t>
  <t>Provide introspection with lifecycle evaluation.</t>
  <t>Bind tokens with DPoP.</t>
</list></t>

</section>
<section anchor="client-requirements"><name>Client Requirements</name>

<t>A conforming client MUST:</t>

<t><list style="symbols">
  <t>Generate and persist Ed25519 host keys.</t>
  <t>Generate ephemeral Ed25519 session keys in memory only.</t>
  <t>Sign <spanx style="verb">host-attestation+jwt</spanx> for session registration.</t>
  <t>Sign <spanx style="verb">Agent-Assertion</spanx> JWTs before CIBA requests.</t>
  <t>Include <spanx style="verb">jti</spanx> in all signed JWTs.</t>
</list></t>

<t>A conforming client SHOULD:</t>

<t><list style="symbols">
  <t>Present vendor attestation headers when available.</t>
  <t>Request only the capabilities it needs.</t>
  <t>Propose constraints that reflect its actual intended usage.</t>
</list></t>

</section>
</section>


  </middle>

  <back>


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

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



<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>
<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="RFC7636">
  <front>
    <title>Proof Key for Code Exchange by OAuth Public Clients</title>
    <author fullname="N. Sakimura" initials="N." role="editor" surname="Sakimura"/>
    <author fullname="J. Bradley" initials="J." surname="Bradley"/>
    <author fullname="N. Agarwal" initials="N." surname="Agarwal"/>
    <date month="September" year="2015"/>
    <abstract>
      <t>OAuth 2.0 public clients utilizing the Authorization Code Grant are susceptible to the authorization code interception attack. This specification describes the attack as well as a technique to mitigate against the threat through the use of Proof Key for Code Exchange (PKCE, pronounced "pixy").</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7636"/>
  <seriesInfo name="DOI" value="10.17487/RFC7636"/>
</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="RFC7662">
  <front>
    <title>OAuth 2.0 Token Introspection</title>
    <author fullname="J. Richer" initials="J." role="editor" surname="Richer"/>
    <date month="October" year="2015"/>
    <abstract>
      <t>This specification defines a method for a protected resource to query an OAuth 2.0 authorization server to determine the active state of an OAuth 2.0 token and to determine meta-information about this token. OAuth 2.0 deployments can use this method to convey information about the authorization context of the token from the authorization server to the protected resource.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7662"/>
  <seriesInfo name="DOI" value="10.17487/RFC7662"/>
</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="RFC8037">
  <front>
    <title>CFRG Elliptic Curve Diffie-Hellman (ECDH) and Signatures in JSON Object Signing and Encryption (JOSE)</title>
    <author fullname="I. Liusvaara" initials="I." surname="Liusvaara"/>
    <date month="January" year="2017"/>
    <abstract>
      <t>This document defines how to use the Diffie-Hellman algorithms "X25519" and "X448" as well as the signature algorithms "Ed25519" and "Ed448" from the IRTF CFRG elliptic curves work in JSON Object Signing and Encryption (JOSE).</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8037"/>
  <seriesInfo name="DOI" value="10.17487/RFC8037"/>
</reference>
<reference anchor="RFC8615">
  <front>
    <title>Well-Known Uniform Resource Identifiers (URIs)</title>
    <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
    <date month="May" year="2019"/>
    <abstract>
      <t>This memo defines a path prefix for "well-known locations", "/.well-known/", in selected Uniform Resource Identifier (URI) schemes.</t>
      <t>In doing so, it obsoletes RFC 5785 and updates the URI schemes defined in RFC 7230 to reserve that space. It also updates RFC 7595 to track URI schemes that support well-known URIs in their registry.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8615"/>
  <seriesInfo name="DOI" value="10.17487/RFC8615"/>
</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="RFC9110">
  <front>
    <title>HTTP Semantics</title>
    <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
    <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
    <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
    <date month="June" year="2022"/>
    <abstract>
      <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes.</t>
      <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
    </abstract>
  </front>
  <seriesInfo name="STD" value="97"/>
  <seriesInfo name="RFC" value="9110"/>
  <seriesInfo name="DOI" value="10.17487/RFC9110"/>
</reference>
<reference anchor="RFC9126">
  <front>
    <title>OAuth 2.0 Pushed Authorization Requests</title>
    <author fullname="T. Lodderstedt" initials="T." surname="Lodderstedt"/>
    <author fullname="B. Campbell" initials="B." surname="Campbell"/>
    <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
    <author fullname="D. Tonge" initials="D." surname="Tonge"/>
    <author fullname="F. Skokan" initials="F." surname="Skokan"/>
    <date month="September" year="2021"/>
    <abstract>
      <t>This document defines the pushed authorization request (PAR) endpoint, which allows clients to push the payload of an OAuth 2.0 authorization request to the authorization server via a direct request and provides them with a request URI that is used as reference to the data in a subsequent call to the authorization endpoint.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9126"/>
  <seriesInfo name="DOI" value="10.17487/RFC9126"/>
</reference>
<reference anchor="RFC9396">
  <front>
    <title>OAuth 2.0 Rich Authorization Requests</title>
    <author fullname="T. Lodderstedt" initials="T." surname="Lodderstedt"/>
    <author fullname="J. Richer" initials="J." surname="Richer"/>
    <author fullname="B. Campbell" initials="B." surname="Campbell"/>
    <date month="May" year="2023"/>
    <abstract>
      <t>This document specifies a new parameter authorization_details that is used to carry fine-grained authorization data in OAuth messages.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9396"/>
  <seriesInfo name="DOI" value="10.17487/RFC9396"/>
</reference>
<reference anchor="RFC9449">
  <front>
    <title>OAuth 2.0 Demonstrating Proof of Possession (DPoP)</title>
    <author fullname="D. Fett" initials="D." surname="Fett"/>
    <author fullname="B. Campbell" initials="B." surname="Campbell"/>
    <author fullname="J. Bradley" initials="J." surname="Bradley"/>
    <author fullname="T. Lodderstedt" initials="T." surname="Lodderstedt"/>
    <author fullname="M. Jones" initials="M." surname="Jones"/>
    <author fullname="D. Waite" initials="D." surname="Waite"/>
    <date month="September" year="2023"/>
    <abstract>
      <t>This document describes a mechanism for sender-constraining OAuth 2.0 tokens via a proof-of-possession mechanism on the application level. This mechanism allows for the detection of replay attacks with access and refresh tokens.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9449"/>
  <seriesInfo name="DOI" value="10.17487/RFC9449"/>
</reference>

<reference anchor="I-D.ietf-oauth-v2-1">
   <front>
      <title>The OAuth 2.1 Authorization Framework</title>
      <author fullname="Dick Hardt" initials="D." surname="Hardt">
         <organization>Hellō</organization>
      </author>
      <author fullname="Aaron Parecki" initials="A." surname="Parecki">
         <organization>Okta</organization>
      </author>
      <author fullname="Torsten Lodderstedt" initials="T." surname="Lodderstedt">
         <organization>SPRIND</organization>
      </author>
      <date day="2" month="March" year="2026"/>
      <abstract>
	 <t>   The OAuth 2.1 authorization framework enables an application to
   obtain limited access to a protected resource, either on behalf of a
   resource owner by orchestrating an approval interaction between the
   resource owner and an authorization service, or by allowing the
   application to obtain access on its own behalf.  This specification
   replaces and obsoletes the OAuth 2.0 Authorization Framework
   described in RFC 6749 and the Bearer Token Usage in RFC 6750.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-v2-1-15"/>
   
</reference>

<reference anchor="I-D.ietf-oauth-attestation-based-client-auth" target="https://datatracker.ietf.org/doc/draft-ietf-oauth-attestation-based-client-auth/">
  <front>
    <title>OAuth 2.0 Attestation-Based Client Authentication</title>
    <author >
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="OIDC-Core" target="https://openid.net/specs/openid-connect-core-1_0.html">
  <front>
    <title>OpenID Connect Core 1.0 incorporating errata set 2</title>
    <author >
      <organization>OpenID Foundation</organization>
    </author>
    <date year="2023" month="December" day="15"/>
  </front>
</reference>
<reference anchor="CIBA-Core" target="https://openid.net/specs/openid-connect-client-initiated-backchannel-authentication-core-1_0.html">
  <front>
    <title>OpenID Connect Client-Initiated Backchannel Authentication Core 1.0</title>
    <author >
      <organization>OpenID Foundation</organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>


    </references>

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

<reference anchor="I-D.valverde-oauth-veil" >
  <front>
    <title>VEIL: Verified Ephemeral Identity Layer for OAuth 2.1</title>
    <author initials="G." surname="Valverde" fullname="Gustavo Valverde">
      <organization></organization>
    </author>
    <date year="2026"/>
  </front>
</reference>
<reference anchor="I-D.aap-oauth-profile" target="https://datatracker.ietf.org/doc/draft-aap-oauth-profile/">
  <front>
    <title>Agent Authorization Profile for OAuth</title>
    <author >
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="I-D.oauth-ai-agents-on-behalf-of-user" target="https://datatracker.ietf.org/doc/draft-oauth-ai-agents-on-behalf-of-user/">
  <front>
    <title>AI Agents Acting on Behalf of Users</title>
    <author >
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="AAP" target="https://agent-auth-protocol.com/specification/v1.0-draft">
  <front>
    <title>Agent Auth Protocol v1.0-draft</title>
    <author >
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="A2A" target="https://a2a-protocol.org">
  <front>
    <title>Agent-to-Agent Protocol</title>
    <author >
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>


    </references>

</references>


<?line 1528?>

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

<t>The author thanks the OAuth working group and the OpenID Foundation
CIBA editors for ongoing work that this profile composes with, and the
authors of related individual submissions cited in the Relation to
Other Work section for claim-name alignment and shared concepts.</t>

</section>


  </back>

<!-- ##markdown-source:
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
yXf5JgkK9dVboDXCY5U8aWhbnI6GzStQf2DcML9KQMC/qUW2oFPIl8klYSHT
TUUwFf4L79lmrnGw93qvg2UEmIo+0FGoryeDqA7LYd/KCF6RFJulkhDHQZlJ
FObwJzHDSTKnA3cWDRORHN/ufGv6l7R0Aryt0Glzy9Cuy9bQVFrZ8E3VGy46
JvFB1dEQR7QZueDgRN931WAZsiREs3VAmgyO6QtefXqSpGJ0vFONJca7R2Kg
Ga+UZSKwwciVeXBcuHJ7oJ2WzzUj1fZlnFK0W/MdfY0N7/FVrb3DjhnE97Bv
OfrRIyREQJ0g2gXjSKiLn/3ggcM/OBJOSR7JAaK2SXvixJn6hojfe6ka8D5p
QUL9jviCX7k8/Nujg+ggrT1HUuAhGL8do7ixeiNxBazVxICR8sFBXzKgoRXv
iSM+AT4kkqwGiJFsN0wPnp+8oF+ObAmGaTTEHvXjg0s/IQxIq3kfkpqWzcHq
WfHDiZI6NK9hU7jj9eEaH90X6JcbFPlAFvoJKkXQ8BIX67CJ7rY6+rvZkHX5
YWdnW9fFPzRcvQkDN52FTWcQrgUOD51SN/Long3arbMpqL/Pykt/z9+Gz3XD
yfQtk1NwmST0vS9KEcPtf0HffVIKOvunToOJfnn/LOBPWRJjMsiBY3WbzMoF
LoC5wSBhbOycVNl588RqpoXBNjOnfyAkjohG4eVeEBMBdLnb4eo+Vn85fvMa
1QLUYieoBe1rRQTgh4AArMAYI+D2jLhpdROQtiQ0xiotZxCQYfpGUs8VwcNV
UgtNv65gLYLB/dojSK3kAhpMcxlMZF17XLbPlHXN37kmseQynMB1JqhGpnNL
cFmITTJM96oq45AhZ9pF1ObEVcuQ3A7GJ/cxrUjCNn8GN+oBTtyAXe6HVMcL
fBgszkiUl6WQptGZCZ7VA6NwAgBNWe1Ane6MfhjCSIpgaAwubisAAnENNors
1xlVZNUygF79hUAVYj/tSe04+AUCGIywLEAYN+dGK2CFU+Ql3ASXjaVePMjM
X+EhWlfPpSzJTm52oGonjwY7fPR1XiFytXy9Zp5ydb7f3pYHE513141SgJ46
b7SSjljRn79vYNbCyJ5XFSBvTXBKYpwhha7zsPKcuiaN5PwmYl5rzjc2fShB
SFd/uXAPzKV8n3MBiSGGLRObo6AY9qkrcLPF4kIMEplZdUEHWSAd1KHUIxsB
Y2kupcfjfVD79v5R+hvb3EkRos9vj14z3aJ9qE7FGH/qQtlHCk7u0COmJfD6
NgEXc4d0n3g57QzxENTsTxsIC1KFtLs5/wAiUC8yCW5jGzw0LmDHiSWVHQ5H
wVUGbEYQY7g214mJpXPdiNXMRE9W/Bg4UTNb15s2RLNnfWOw0mBHrDpvnVRz
dr0cMayqBRw5NW+ldhKe1UKDLZlCCBh8zMLQWlUBmTYeBNWshJq2A2D02rN2
fc3VZYL2q1wgfDgSlwsDaRyst3t1h6vi2edqzYevqRJf08L5mvCA1A2RAgcu
j0PuhveWqGYvOgTO7+d3WrRvCSXXiNlVgOBwhFo5XsppZ1zLDDEmg6CBlolW
inwxi14bOWM+Rt6IQ6mW1zJKczM+zF0D3HV0PxfzSbR1HNciljmJoLnlCmiM
jTv0f9b6ZAL1L5Z/F5LBZkqs9SB80lt17LnAIsv0Qk09ODu8VqRdpWtiU4JM
4ZXAb3mvqxhybYEIqwdbyxeJOxLGLGRDinqHF9sHRdcjOBqHGjHRgR2th03v
g3kW+NYqE7DY3BiIuRCUCttwxjIIy7Zb0PeUq5Q2tRU3tDRDOYiAP+v3uQwx
yN/eGCHk03xyIfv8YThfzs7Ahn/a4LD4jU9a/JjvAht6FMdX2BSinaTydUk8
yazMKGF28Cx9wUnAzI15jXOScsBSsF/l/KLEixIuJUFDgXMD2ASc6YjD6czX
ajtk27tYX8GXJgWdfkyV5A7ncxsXjbcdHDnrdZlwEn/6O7o1IEKMx4BAIbxO
aasdDlp9yUatMbLxFzgf/xfhdugJCu0AAA==

-->

</rfc>

