<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.35 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-araut-oauth-transaction-tokens-for-agents-00" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.33.0 -->
  <front>
    <title>Transaction Tokens For Agents</title>
    <seriesInfo name="Internet-Draft" value="draft-araut-oauth-transaction-tokens-for-agents-00"/>
    <author fullname="ASHAY RAUT">
      <organization/>
      <address>
        <email>asharaut@amazon.com</email>
      </address>
    </author>
    <date year="2026" month="April" day="16"/>
    <keyword>next generation</keyword>
    <keyword>unicorn</keyword>
    <keyword>sparkling distributed ledger</keyword>
    <abstract>
      <?line 36?>

<t>This document specifies an extension to the <eref target="https://drafts.oauth.net/oauth-transaction-tokens/draft-ietf-oauth-transaction-tokens.html">OAUTH-TXN-TOKENS</eref> to support agent context propagation within Transaction Tokens for agent-based workloads. The extension defines the use of the <tt>act</tt> field to identify the agent performing the action, and leverages the existing <tt>sub</tt> field (as defined in the base Transaction Tokens specification) to represent the principal. The <tt>sub</tt> field is populated according to the rules specified in <eref target="https://drafts.oauth.net/oauth-transaction-tokens/draft-ietf-oauth-transaction-tokens.html">OAUTH-TXN-TOKENS</eref>, based on the 'subject_token' provided in the token request. For autonomous agents operating independently, the <tt>sub</tt> field represents the agent itself. These mechanisms enable services within the call graph to make more granular access control decisions, thereby enhancing security.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://ashayraut.github.io/oauth-transactiontokens-for-agents/draft-oauth-transaction-tokens-for-agents.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-araut-oauth-transaction-tokens-for-agents/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/ashayraut/oauth-transactiontokens-for-agents"/>.</t>
    </note>
  </front>
  <middle>
    <?line 40?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Traditional zero trust authorization systems face new challenges when
   applied to AI agent workloads. Unlike conventional web services,
   AI agents possess capabilities for autonomous operation, behavioral
   adaptation, and dynamic integration with various data sources. These
   characteristics may lead to decisions that extend beyond their
   initial operational boundaries.</t>
      <t>Existing zero trust models, which effectively manage permissions and
   access scopes for traditional web services, require enhancement to
   address the unique properties of AI agents. Authorization systems
   must evaluate each AI agent interaction independently, considering
   both the immediate context and intended action. This necessitates
   more sophisticated approaches to policy enforcement, behavioral
   monitoring, and audit tracking to maintain security governance.</t>
      <t>Transaction Tokens (Txn-Tokens) are short-lived, signed JSON Web
   Tokens <eref target="https://tools.ietf.org/html/rfc7519">RFC7519</eref> that convey identity and authorization context.
   However, the current Txn-Token format lacks sufficient context for
   services within the call chain to implement fine-grained access
   control policies for agent-based workflows. Specifically, it does
   not provide adequate information about the AI agent's identity or
   its initiating entity, limiting transaction traceability. With this
   extension, Transaction Tokens will carry agent identity information
   which will help in better traceability for AI Agent's actions
   deep down the web service graph connecting multiple web services
   involved in completing a transaction in distributed systems.</t>
      <t>This document defines three new contexts within the Transaction Token
   to address these limitations:</t>
      <ol spacing="normal" type="1"><li>
          <t>The <tt>act</tt> claim, which identifies the AI agent performing the action, aligning with OAuth 2.0 Token Exchange <eref target="https://tools.ietf.org/html/rfc8693">RFC8693</eref> terminology for actor tokens</t>
        </li>
        <li>
          <t>The <tt>sub</tt> claim, as defined in <eref target="https://drafts.oauth.net/oauth-transaction-tokens/draft-ietf-oauth-transaction-tokens.html">OAUTH-TXN-TOKENS</eref>, which represents the principal on whose behalf the transaction is being performed. The population of this field follows the rules specified in the base Transaction Tokens specification, based on the 'subject_token' provided in the token request.</t>
        </li>
        <li>
          <t>An optional <tt>agentic_ctx</tt> claim. The value of this claim, if present, MUST be a JSON object. The <tt>agentic_ctx</tt> claim conveys attributes about the agent and its operational constraints that are relevant to authorization, auditing, and policy evaluation.</t>
        </li>
      </ol>
      <t>This extension leverages the existing Txn-Token infrastructure to
   enable secure propagation of AI agent context throughout the
   service graph.</t>
      <section anchor="conventions-and-terminology">
        <name>Conventions and Terminology</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 <eref target="https://datatracker.ietf.org/doc/html/rfc2119">RFC2119</eref> <eref target="https://datatracker.ietf.org/doc/html/rfc8174">RFC8174</eref> when, and only when, they appear in all capitals, as shown here.</t>
      </section>
    </section>
    <section anchor="terminology">
      <name>Terminology</name>
      <t>Agentic-AI: AI Agentic applications are software applications that utilize
Large Language Models (LLM)s and plans, reasons,and takes actions independently
to achieve complex, multi-step goals with minimal human oversight.</t>
      <t>Workload:
An independent computational unit that can autonomously receive and process
invocations, and can generate invocations of other workloads.
Examples of workloads include containerized microservices,
monolithic services and infrastructure services such as managed databases.</t>
      <t>Trust Domain:
A collection of systems, applications, or workloads that share a
common security policy. In practice this may include a virtually or
physically separated network, which contains two or more workloads.
The workloads within a Trust Domain may be invoked only through published
interfaces.</t>
      <t>Call Chain:
A sequence of synchronous invocations that results from the invocation of an external endpoint.</t>
      <t>External Endpoint:
A published interface to a Trust Domain that results in the invocation
of a workload within the Trust Domain. This is the first service in the
call chain where request starts.</t>
      <t>Transaction Token (Txn-Token):
A signed JWT with a short lifetime, providing immutable information about the user or workload,
certain parameters of the call, and specific contextual attributes of the call.
The Txn-Token is used to authorize subsequent calls in the call chain.</t>
      <t>Transaction Token Service (Txn-Token Service):
A special service within the Trust Domain that issues Txn-Tokens to requesting
workloads. Each Trust Domain using Txn-Tokens MUST have exactly one logical
Txn-Token Service.</t>
    </section>
    <section anchor="protocol-overview">
      <name>Protocol overview</name>
      <section anchor="transaction-flow">
        <name>Transaction Flow</name>
        <t>This section describes the process by which an agent application
   obtains a Transaction Token, either acting autonomously or on behalf
   of a principal. The external endpoint requests a Txn-Token following
   the procedures defined in <eref target="https://drafts.oauth.net/oauth-transaction-tokens/draft-ietf-oauth-transaction-tokens.html">OAUTH-TXN-TOKENS</eref>, augmented with additional
   context for agent identity and, when applicable, principal identity.</t>
      </section>
      <section anchor="agent-application-transaction-flows">
        <name>Agent Application Transaction Flows</name>
        <t>The Transaction Token creation process varies depending on the
   presence of a principal.</t>
        <section anchor="principal-initiated-flow">
          <name>Principal-Initiated Flow</name>
          <t>When a principal initiates the workflow, the following steps occur:</t>
          <ol spacing="normal" type="1"><li>
              <t>The principal invokes the agent application to perform a task.</t>
            </li>
            <li>
              <t>The agent application calls an external endpoint. External endpoint throws back OAuth challenges.</t>
            </li>
            <li>
              <t>The agent application authenticates using an OAuth 2.0 Auth code flow <eref target="https://tools.ietf.org/html/rfc6749">RFC6749</eref>
access token. The access token contains subject and clientId claims as per <eref target="https://datatracker.ietf.org/doc/rfc9068">RFC9068</eref>.</t>
            </li>
            <li>
              <t>The external endpoint submits the received access token along with its Subject token to the
Txn-Token Service. Subject token requirements are specified in <eref target="https://drafts.oauth.net/oauth-transaction-tokens/draft-ietf-oauth-transaction-tokens.html">OAUTH-TXN-TOKENS</eref>.</t>
            </li>
            <li>
              <t>The Txn-Token Service validates the access token.</t>
            </li>
            <li>
              <t>The Txn-Token Service populates the Txn-Token's <tt>sub</tt> claim following the rules specified in <eref target="https://drafts.oauth.net/oauth-transaction-tokens/draft-ietf-oauth-transaction-tokens.html">OAUTH-TXN-TOKENS</eref>. The <tt>sub</tt> claim is determined based on the subject_token provided in the request, according to the conditions and rules defined in the base Transaction Tokens specification. This ensures that the principal is properly represented in the Txn-Token.</t>
            </li>
            <li>
              <t>The Txn-Token Service copies the access token's <tt>clientId</tt> claim to the Txn-Token's <tt>act</tt> field. Any nested structure within the <tt>clientId</tt> claim is preserved. If the access token contains an <tt>act</tt> claim, that value MAY be used instead of <tt>clientId</tt>.</t>
            </li>
            <li>
              <t>The Txn-Token Service issues the Txn-Token to the requesting workload.</t>
            </li>
          </ol>
        </section>
        <section anchor="autonomous-flow">
          <name>Autonomous Flow</name>
          <t>When the agent application operates autonomously, the following
   steps occur:</t>
          <ol spacing="normal" type="1"><li>
              <t>The agent application initiates a task based on an event or
scheduled assignment.</t>
            </li>
            <li>
              <t>The agent application calls an external endpoint. OAuth challenge flow starts.</t>
            </li>
            <li>
              <t>The agent application authenticates using an OAuth 2.0 <eref target="https://tools.ietf.org/html/rfc6749">RFC6749</eref>. When an autonomous agent
(no human resource owner) needs to call another resource server using OAuth,
it follows the Client Credentials Grant defined explicitly in <eref target="https://tools.ietf.org/html/rfc6749">RFC6749</eref>.</t>
            </li>
            <li>
              <t>The agent application uses the access token to call the external endpoint.</t>
            </li>
            <li>
              <t>The external endpoint submits the received access token along with its Subject token to the
Txn-Token Service. Subject token requirements are specified in <eref target="https://drafts.oauth.net/oauth-transaction-tokens/draft-ietf-oauth-transaction-tokens.html">OAUTH-TXN-TOKENS</eref>.</t>
            </li>
            <li>
              <t>The Txn-Token Service validates the access token.</t>
            </li>
            <li>
              <t>The Txn-Token Service populates the Txn-Token's <tt>sub</tt> claim following the rules specified in <eref target="https://drafts.oauth.net/oauth-transaction-tokens/draft-ietf-oauth-transaction-tokens.html">OAUTH-TXN-TOKENS</eref>. The <tt>sub</tt> claim is determined based on the subject_token provided in the request. For autonomous agents, this typically represents the agent's own identity.</t>
            </li>
            <li>
              <t>The Txn-Token Service copies the access token's <tt>sub</tt> or <tt>clientId</tt> claim to the Txn-Token's <tt>act</tt> field. Any nested structure is preserved. The <tt>act</tt> field identifies the agent performing the autonomous action.</t>
            </li>
          </ol>
        </section>
      </section>
      <section anchor="flow-diagrams">
        <name>Flow Diagrams</name>
        <section anchor="principal-initiated-flow-1">
          <name>Principal-Initiated Flow</name>
          <t>Based on the updated flow, here's a more detailed RFC-style flow diagram:</t>
          <artwork type="ascii-art"><![CDATA[
Principal    Agent App    External    Authorization   Txn-Token
                         Endpoint        Server        Service
   |            |           |              |             |
   | Invoke     |           |              |             |
   | agent task |           |              |             |
   |----------->|           |              |             |
   |            |           |              |             |
   |            | Call external API        |             |
   |            |---------->|              |             |
   |            |           |              |             |
   |            |   OAuth Challenge        |             |
   |            |<----------|              |             |
   |            |           |              |             |
   |            | Initiate Auth Code Flow  |             |
   |            |------------------------->|             |
   |            |           |              |             |
   |            | Auth Code                |             |
   |            |<-------------------------|             |
   |            |           |              |             |
   |            | Exchange code for token  |             |
   |            |------------------------->|             |
   |            |           |              |             |
   |            | Access Token (AT1)       |             |
   |            | w/ sub, clientId claims  |             |
   |            |<-------------------------|             |
   |            |           |              |             |
   |            | Call with AT1            |             |
   |            |---------->|              |             |
   |            |           |              |             |
   |            |           | Request Txn-Token          |
   |            |           | with AT1, Subject token    |
   |            |           | as param     |             |
   |            |           |--------------------------->|
   |            |           |              |             |
   |            |           |              |    Validate AT1
   |            |           |              |    Extract claims
   |            |           |              |    Set sub from Subject token
   |            |           |              |    Set act from AT1.clientId
   |            |           |              |             |
   |            |           |              |             |
   |            |           |              |             |
   |            |           |              |             |
   |            |           | Txn-Token    |             |
   |            |           |<---------------------------|
   |            |           |              |             |

Legend:
----> : Request flow
<---- : Response flow
  |   : Component boundary
]]></artwork>
          <t>Notes:
1. AT1 refers to the access token obtained by Agent App
2. The External Endpoint uses its own access token to call Txn-Token Service
3. AT1 is passed as a parameter in the Txn-Token request
4. The flow shows detailed OAuth 2.0 Authorization Code flow steps
5. Token validation and claim extraction steps are shown in the Txn-Token Service</t>
        </section>
        <section anchor="autonomous-flow-1">
          <name>Autonomous Flow</name>
          <artwork type="ascii-art"><![CDATA[
Agent App    External    Authorization   Txn-Token
            Endpoint        Server        Service
    |           |              |             |
    | Self-     |              |             |
    | triggered |              |             |
    | event     |              |             |
    |--+        |              |             |
    |  |        |              |             |
    |<-+        |              |             |
    |           |              |             |
    | Call external API        |             |
    |---------->|              |             |
    |           |              |             |
    |   OAuth Challenge        |             |
    |<----------|              |             |
    |           |              |             |
    | Client Credentials Grant |             |
    |------------------------->|             |
    |           |              |             |
    | Access Token (AT1)       |             |
    |  sub, aud claims         |             |
    |<-------------------------|             |
    |           |              |             |
    | Call with AT1            |             |
    |---------->|              |             |
    |           |              |             |
    |           | Request Txn-Token          |
    |           | with AT1, Subject token    |
    |           | as param     |             |
    |           |--------------------------->|
    |           |              |             |
    |           |              |    Validate AT1
    |           |              |    Extract claims
    |           |              |    Set sub from aud
    |           |              |    Set act.sub from clientId or sub
    |           |              |             |
    |           |              |             |
    |           |              |             |
    |           | Txn-Token    |             |
    |           |<---------------------------|
    |           |              |             |

Legend:
----> : Request flow
<---- : Response flow
  |   : Component boundary
  +   : Internal process
--+   : Self-triggered event

Notes:
* AT1: Access token obtained via Client Credentials Grant
* External Endpoint uses subject token for authenticating itself to Txn-Token Service
* AT1 is included as parameter in Txn-Token request
* Self-triggered events can be scheduled tasks or external triggers
* Token validation includes signature and claims verification
]]></artwork>
        </section>
      </section>
      <section anchor="replacement-tokens">
        <name>Replacement tokens</name>
        <t>Txn-Token Service provides capability to get a replacement Txn-Token as defined in the <eref target="https://drafts.oauth.net/oauth-transaction-tokens/draft-ietf-oauth-transaction-tokens.html#name-creating-replacement-txn-to">OAUTH-TXN-TOKENS.replacement flow</eref>. If the original Txn-Token used to get replacement token contains 'actor' and 'principal' claims then in the replaced Txn-Token, the values of the 'actor' and 'principal' MUST remain unchanged similar to 'txn', <tt>sub</tt> and 'aud' claims.</t>
      </section>
      <section anchor="txn-token-format">
        <name>Txn-Token Format</name>
        <section anchor="jwt-header">
          <name>JWT Header</name>
          <t>No changes to the JWT header from the base specification: <tt>typ</tt> MUST be <tt>txntoken+jwt</tt>, with a signing key identifier such as <tt>kid</tt>.</t>
        </section>
        <section anchor="jwt-body-claims">
          <name>JWT Body Claims</name>
          <t>The Txn-Token body augments the base claim set with the <tt>act</tt> field for agent context. Existing claims like txn, sub, aud, iss, iat, exp, scope, tctx, and req_wl retain identical semantics, population rules, and immutability guarantees as defined in <eref target="https://drafts.oauth.net/oauth-transaction-tokens/draft-ietf-oauth-transaction-tokens.html">OAUTH-TXN-TOKENS</eref>.</t>
          <t>In this example, the agent is 3rd party and not part of trust domain. It hits API Gateway in trust domain and API Gateway requests Txn-Token from Txn-token Service using
access token received from 3P agent and its own subject token (to authenticate with Txn-Token Service). Requesting workload is API Gateway. Agent is agent-identity-1 (clientId in the access token issued to 3P agent to act on behalf of user:alice)</t>
          <sourcecode type="json"><![CDATA[
{
  "txn": "c2dc3992-2d65-483a-93b5-2dd9f02c276e",
  "sub": "user:alice@example.com", // if its human initiated
  "aud": "https://trading.trust-domain.example/stocks",
  "iss": "https://txn-svc.trust-domain.example",
  "iat": 1697059200,
  "exp": 1697059500,
  "purp": "trade.stocks",
  "tctx": {
    "action": "BUY",
    "ticker": "MSFT",
    "quantity": "100"
  },
  "req_wl": "apigateway.trust-domain.example", // API gateway requests Txn-token
  "act": {
     "sub":"agent-identity-1" // 3P agent hitting API gateway owned by trust domain
  }
}
]]></sourcecode>
          <section anchor="agentic-context">
            <name>Agentic Context</name>
            <t>The Txn-Token MAY contain an <tt>agentic_ctx</tt> claim. Txn-Tokens are increasingly used in environments where transactions are executed by or with the assistance of autonomous or semi-autonomous agents (for example, Large Language Model (LLM)–based agents, workflow orchestrators, and policy-driven automation components). In such deployments, relying exclusively on subject identity and generic transaction parameters is insufficient to make robust authorization decisions. Additional information about the agent that is interpreting and acting on the transaction is often required.</t>
            <sourcecode type="json"><![CDATA[
"agentic_ctx": {
  "agent_type": "planner+tool-orchestrator", // A string describing the functional role of the agent (for example, “planner”, “tool-orchestrator”, “data-assistant”, “code-execution-agent”). The semantics and allowed values are deployment-specific.
  "agent_version": "3.4.2", // A string indicating a version or configuration identifier for the agent. This value can be used to associate the transaction with a particular, reviewed agent policy or release
  "intent": "enumerate and validate production search services before Q4 traffic spike", // A string describing the high-level purpose of the transaction from the agent’s perspective (for example, “trade.stocks”, “enumerate.search.services”, “generate.billing.report”). This value is intended to support coarse-grained, intent-aware authorization policies.
  "allowed_actions": ["read"],
  "environment_constraints": { "environment": "prod", "region": "us" },
}
]]></sourcecode>
          </section>
        </section>
      </section>
      <section anchor="integration-with-oauth-rich-authorization-requests">
        <name>Integration with OAuth Rich Authorization Requests</name>
        <t>When the Authorization Server (AS) supports Rich Authorization Requests (RAR) as defined in [RFC9396], the authorization details captured during the initial consent flow provide high-fidelity context for downstream agentic enforcement. The RAR mechanism allows a Resource Owner to grant permissions for specific, fine-grained actions (e.g., "Allow Agent to search only 'Research' folder") which are then encoded in the Access Token.</t>
        <section anchor="processing-rar-context">
          <name>Processing RAR Context</name>
          <t>The Txn-Token Service (TTS) SHOULD extract relevant authorization details from the <tt>authorization_details</tt> claim of the <tt>subject_token</tt> and encapsulate them within the <tt>agentic_ctx</tt>. This ensures that the agent's execution environment remains bound by the specific constraints approved by the user.</t>
        </section>
        <section anchor="data-mapping-and-enrichment">
          <name>Data Mapping and Enrichment</name>
          <ol spacing="normal" type="1"><li>
              <t><strong>Extraction</strong>: The TTS extracts the RAR array from the incoming Access Token.</t>
            </li>
            <li>
              <t><strong>Encapsulation</strong>: The TTS SHOULD include these details in the <tt>agentic_ctx</tt> under a standardized key to allow downstream services to distinguish between general agent metadata and explicit user-granted permissions.</t>
            </li>
            <li>
              <t><strong>Policy Deferral</strong>: This pattern allows the AS to capture intent without necessarily needing the domain-specific logic to enforce it; enforcement is deferred to the microservices deep in the call chain that receive the Txn-Token.</t>
            </li>
          </ol>
        </section>
        <section anchor="benefits-of-rar-integration">
          <name>Benefits of RAR Integration</name>
          <ul spacing="normal">
            <li>
              <t><strong>Consent Propagation</strong>: User-consented details are cryptographically bound to the Txn-Token, ensuring consent is honored throughout the service graph.</t>
            </li>
            <li>
              <t><strong>Granular Control</strong>: Services can make informed decisions based on the specific "type" and "actions" authorized in the original RAR object.</t>
            </li>
            <li>
              <t><strong>Reduced Complexity</strong>: Centralizing complex consent capture at the AS while distributing enforcement via the <tt>agentic_ctx</tt> reduces the architectural burden on individual workloads.</t>
            </li>
          </ul>
        </section>
        <section anchor="example-of-agenticctx-with-additional-context">
          <name>Example of <tt>agentic_ctx</tt> with additional context</name>
          <sourcecode type="json"><![CDATA[
"agentic_ctx": {
    "agent_type": "tool-orchestrator",
    "intent": "validate search services",
    "authorization_details": [
      {
        "type": "search_service_access",
        "actions": ["read", "list"],
        "locations": ["https://api.search.example/v1"]
      }
    ],
    "environment_constraints": {
      "environment": "prod",
      "region": "us"
    }
}
]]></sourcecode>
        </section>
      </section>
    </section>
    <section anchor="multi-agent-flows">
      <name>Multi-agent flows</name>
      <t>In complex agentic workflows, a primary agent (the "Delegator") may delegate sub-tasks to one or more secondary agents ("Delegatees"). This document defines a mechanism to preserve the delegation lineage across these transitions. Note that preserving lineage is optional.</t>
      <section anchor="agent-to-agent-delegation">
        <name>Agent-to-Agent Delegation</name>
        <t>When an agent (the "Delegator") invokes another agent (the "Delegatee") to perform a sub-task, it SHOULD NOT pass its own Transaction Token to the Delegatee. Instead, the Delegator MUST obtain a narrowed Transaction Token for the Delegatee using the replacement flow defined in <eref target="https://drafts.oauth.net/oauth-transaction-tokens/draft-ietf-oauth-transaction-tokens.html">OAUTH-TXN-TOKENS</eref>. The Delegator SHOULD request a restricted scope or purp (Purpose) that is specific to the sub-task assigned to the Delegatee.</t>
      </section>
      <section anchor="the-actchain-actor-chain-claim">
        <name>The 'actchain' (Actor Chain) Claim</name>
        <t>The <tt>actchain</tt> claim is an OPTIONAL top-level JSON Web Token (JWT) claim that provides a cryptographic trace of the delegation path. It is represented as an ordered array of JSON objects, where each object represents a previous agent in the call chain.</t>
        <section anchor="claim-structure">
          <name>Claim structure</name>
          <t>Each object within the <tt>actchain</tt> array MUST contain the following members:
* <strong>sub (Subject)</strong>: REQUIRED. The identity of the delegating agent.
* <strong>iat (Issued At)</strong>: OPTIONAL. A timestamp indicating when the delegating agent initiated its portion of the transaction.
* <strong>iss (Issuer)</strong>: OPTIONAL. The issuer of the token that identified the delegating agent. This might be required in case of multiple Txn Token Services being present across domains and token is passed across domains.</t>
        </section>
        <section anchor="delegation-via-replacement-flow">
          <name>Delegation via Replacement Flow</name>
          <t>When an agent requests a narrowed Transaction Token for a sub-agent, the Transaction Token Service (TTS) MUST follow the replacement flow procedures defined in <eref target="https://drafts.oauth.net/oauth-transaction-tokens/draft-ietf-oauth-transaction-tokens.html">OAUTH-TXN-TOKENS</eref> with the following modifications:</t>
          <ul spacing="normal">
            <li>
              <t><strong>Subject Immutability</strong>: The txn and <tt>sub</tt> (principal) claims MUST be copied from the subject_token to the new Transaction Token without modification.</t>
            </li>
            <li>
              <t><strong>Chain Progression</strong>: The TTS MUST extract the <tt>act</tt> claim from the incoming subject_token. This extracted object MUST be appended to the end of the <tt>actchain</tt> array in the new token.
If no <tt>actchain</tt> existed in the subject_token, a new array is created containing only the extracted <tt>act</tt> object.</t>
            </li>
            <li>
              <t><strong>New Actor Assignment</strong>: The top-level act claim of the new token MUST be set to the identity of the Delegatee (the sub-agent).</t>
            </li>
          </ul>
        </section>
        <section anchor="multi-agent-example-jwt-body-claims">
          <name>Multi-agent example JWT body claims</name>
          <t>This example represents a delegated state: a human principal initiated a task via a Researcher Agent, which then delegated a specific action to a Search Agent.</t>
          <sourcecode type="json"><![CDATA[
{
  "txn": "c2dc3992-2d65-483a-93b5-2dd9f02c276e",
  "sub": "user-77",
  "iss": "https://txn-svc.trust-domain.example",
  "iat": 1712850000,
  "exp": 1712850300,
  "act": {
    "sub": "search-agent-v2",
    "deployment": "prod-us-west-1"
  },
  "actchain": [
    {
      "sub": "researcher-agent-v1",
      "iat": 1712849950
    }
  ],
  "purp": "web.search.execute",
  "agentic_ctx": {
    "agent_type": "tool-orchestrator",
    "intent": "validate search services",
    "allowed_actions": ["read"],
    "environment_constraints": {
      "environment": "prod",
      "region": "us"
    }
  }
}
]]></sourcecode>
        </section>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <ol spacing="normal" type="1"><li>
          <t>All the security considerations mentioned in <eref target="https://drafts.oauth.net/oauth-transaction-tokens/draft-ietf-oauth-transaction-tokens.html">OAUTH-TXN-TOKENS</eref> apply.</t>
        </li>
        <li>
          <t>Token Replay Protection Implementations MUST enforce strict token lifetime validation. The short-lived nature of Transaction Tokens helps mitigate replay attacks, but implementations SHOULD also consider:
          </t>
          <ul spacing="normal">
            <li>
              <t>Implementing token tracking mechanisms within trust domains</t>
            </li>
            <li>
              <t>Validating token usage context</t>
            </li>
          </ul>
        </li>
        <li>
          <t>Actor Identity Security
          </t>
          <ul spacing="normal">
            <li>
              <t>Implementations MUST validate <tt>act</tt> claims in tokens</t>
            </li>
            <li>
              <t>The Txn-Token Service MUST verify the authenticity of actor context before token issuance</t>
            </li>
            <li>
              <t>During replacement flow, Txn-Token Service MUST NOT modify the <tt>act</tt> field in the incoming Txn-Token</t>
            </li>
          </ul>
        </li>
        <li>
          <t>Principal Context Protection
          </t>
          <ul spacing="normal">
            <li>
              <t>Systems MUST prevent unauthorized modifications to the <tt>sub</tt> claim during token propagation. Txn-Tokens are cryptographically signed to ensure integrity.</t>
            </li>
            <li>
              <t>During replacement flow, Txn-Token Service MUST NOT modify the <tt>sub</tt> claim in the incoming Txn-Token</t>
            </li>
            <li>
              <t>The Txn-Token Service MUST follow the subject population rules defined in <eref target="https://drafts.oauth.net/oauth-transaction-tokens/draft-ietf-oauth-transaction-tokens.html">OAUTH-TXN-TOKENS</eref> to ensure proper principal representation</t>
            </li>
          </ul>
        </li>
        <li>
          <t>Transaction Chain Integrity
          </t>
          <ul spacing="normal">
            <li>
              <t>Implementations MUST maintain cryptographic integrity of the token chain</t>
            </li>
            <li>
              <t>Services MUST validate tokens at trust domain boundaries</t>
            </li>
            <li>
              <t>Systems MUST implement protection against token tampering during service-to-service communication</t>
            </li>
          </ul>
        </li>
        <li>
          <t>AI Agent Specific Controls
          </t>
          <ul spacing="normal">
            <li>
              <t>Implementations MUST enforce scope boundaries for AI agent operations</t>
            </li>
            <li>
              <t>Systems SHOULD implement behavioral monitoring for AI agent activities by logging <tt>act</tt> and <tt>sub</tt> claims in audit logs</t>
            </li>
            <li>
              <t>Systems MUST maintain audit trails of AI agent activities</t>
            </li>
          </ul>
        </li>
        <li>
          <t>Token Transformation Security
          </t>
          <ul spacing="normal">
            <li>
              <t>The Txn-Token Service MUST validate all claims during access token to Txn-Token conversion</t>
            </li>
            <li>
              <t>Implementations MUST verify signatures and formats of all tokens</t>
            </li>
            <li>
              <t>Systems MUST prevent unauthorized manipulation during token transformation</t>
            </li>
            <li>
              <t>The Txn-Token Service MUST ensure that the <tt>act</tt> field accurately represents the agent identity from the access token</t>
            </li>
          </ul>
        </li>
        <li>
          <t>Replacement Token Considerations
          </t>
          <ul spacing="normal">
            <li>
              <t>Systems MUST verify the authenticity and validity of original tokens before replacement</t>
            </li>
            <li>
              <t>Systems MUST implement controls to prevent unauthorized replacement requests</t>
            </li>
            <li>
              <t>The immutability of <tt>act</tt> and <tt>sub</tt> claims during replacement ensures consistent identity context throughout the transaction lifecycle</t>
            </li>
          </ul>
        </li>
        <li>
          <t>Infrastructure Security
          </t>
          <ul spacing="normal">
            <li>
              <t>All component communications MUST use secure channels</t>
            </li>
            <li>
              <t>Implementations MUST enforce strong authentication of the Authorization Server</t>
            </li>
            <li>
              <t>Systems MUST implement regular rotation of cryptographic keys</t>
            </li>
            <li>
              <t>Trust domain boundaries MUST be clearly defined and enforced</t>
            </li>
          </ul>
        </li>
        <li>
          <t>Multi-Agent Considerations:
          </t>
          <ul spacing="normal">
            <li>
              <t>Chain Depth and Bloat: Deeply nested agent calls can lead to significant JWT size increases, potentially impacting HTTP header limits. The TTS MAY impose a maximum depth for the <tt>actchain</tt>. If the maximum depth is exceeded, the TTS MUST either reject the request or truncate the oldest entries in the chain, provided that a "truncated" flag is added to the claim to alert downstream services of the loss of provenance.</t>
            </li>
            <li>
              <t>Privilege Escalation: A Delegator MUST NOT be able to request a replacement token with broader permissions or a higher-tier principal than what is asserted in its own subject_token. The TTS MUST validate that the requested scope and purp are a logical subset of the original token.</t>
            </li>
            <li>
              <t>The TTS MUST verify that the workload requesting a replacement token is the entity identified in the  <tt>act</tt> claim of the subject_token. This prevents an unauthorized workload from "injecting" itself into a transaction chain or extending a chain it is not part of.</t>
            </li>
            <li>
              <t>During the replacement flow, the TTS MUST NOT allow the modification of the <tt>sub</tt> (principal) or txn claims. These fields provide the "anchor" for the entire transaction; any modification would effectively initiate a new transaction, requiring a fresh authentication event rather than a replacement flow.</t>
            </li>
          </ul>
        </li>
      </ol>
    </section>
    <section anchor="references">
      <name>References</name>
      <section anchor="normative-references">
        <name>Normative References</name>
        <t><eref target="https://datatracker.ietf.org/doc/html/rfc2119">RFC2119</eref>
    Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997, <eref target="https://www.rfc-editor.org/rfc/rfc2119">https://www.rfc-editor.org/rfc/rfc2119</eref>.</t>
        <t><eref target="https://datatracker.ietf.org/doc/html/rfc8174">RFC8174</eref>
     Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, May 2017, https://www.rfc-editor.org/rfc/rfc8174</t>
        <t><eref target="https://tools.ietf.org/html/rfc6749">RFC6749</eref>
    Hardt, D., Ed., "The OAuth 2.0 Authorization Framework", RFC 6749, DOI 10.17487/RFC6749, October 2012, <eref target="https://www.rfc-editor.org/rfc/rfc6749">https://www.rfc-editor.org/rfc/rfc6749</eref>.</t>
        <t><eref target="https://tools.ietf.org/html/rfc7519">RFC7519</eref>
    Jones, M., Bradley, J., and N. Sakimura, "JSON Web Token (JWT)", RFC 7519, DOI 10.17487/RFC7519, May 2015, <eref target="https://www.rfc-editor.org/rfc/rfc7519">https://www.rfc-editor.org/rfc/rfc7519</eref>.</t>
        <t><eref target="https://tools.ietf.org/html/rfc7515">RFC7515</eref>
    Jones, M., Bradley, J., and N. Sakimura, "JSON Web Signature (JWS)", RFC 7515, DOI 10.17487/RFC7515, May 2015, <eref target="https://www.rfc-editor.org/rfc/rfc7515">https://www.rfc-editor.org/rfc/rfc7515</eref>.</t>
        <t><eref target="https://tools.ietf.org/html/rfc8693">RFC8693</eref>
    Jones, M., Nadalin, A., Campbell, B., Ed., Bradley, J., and C. Mortimore, "OAuth 2.0 Token Exchange", RFC 8693, DOI 10.17487/RFC8693, January 2020, <eref target="https://www.rfc-editor.org/rfc/rfc8693">https://www.rfc-editor.org/rfc/rfc8693</eref>.</t>
        <t><eref target="https://tools.ietf.org/html/rfc9068">RFC9068</eref>
    Bertocci, V., "JSON Web Token (JWT) Profile for OAuth 2.0 Access Tokens", RFC 9068, DOI 10.17487/RFC9068, October 2021, <eref target="https://www.rfc-editor.org/rfc/rfc9068">https://www.rfc-editor.org/rfc/rfc9068</eref>.</t>
        <t><eref target="https://datatracker.ietf.org/doc/html/rfc9396">RFC9396</eref>
    T. Lodderstedt, J. Richer, B. Campbell, "OAuth 2.0 Rich Authorization Requests", RFC 9396, DOI 10.17487/RFC9396, May 2023, <eref target="https://www.rfc-editor.org/rfc/rfc9396">https://www.rfc-editor.org/rfc/rfc9396</eref>.</t>
        <t><eref target="https://datatracker.ietf.org/doc/draft-tulshibagwale-oauth-transaction-tokens">OAUTH-TXN-TOKENS</eref>
     Atul Tulshibagwale, George Fletcher, Pieter Kasselman, "OAuth Transaction Tokens", <eref target="https://drafts.oauth.net/oauth-transaction-tokens/draft-ietf-oauth-transaction-tokens.html">https://drafts.oauth.net/oauth-transaction-tokens/draft-ietf-oauth-transaction-tokens.html</eref></t>
      </section>
    </section>
  </middle>
  <back>
    <?line 549?>

<section anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The authors would like to thank the contributors and the OAuth working group members who gave valuable input to this draft.</t>
    </section>
    <section anchor="contributors">
      <name>Contributors</name>
      <t>name: Atul Tulshibagwale
org: SGNL
email: atul@sgnl.ai</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
Z/5QTfJsGKXB/wPPrW1rWn0AAA==

-->

</rfc>
