<?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.31 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-hartman-credential-broker-4-agents-00" category="info" submissionType="independent" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.32.0 -->
  <front>
    <title abbrev="CB4A">Credential Broker for Agents (CB4A)</title>
    <seriesInfo name="Internet-Draft" value="draft-hartman-credential-broker-4-agents-00"/>
    <author initials="K." surname="Hartman" fullname="Kenneth G. Hartman">
      <organization>SANS Institute</organization>
      <address>
        <email>khartman@sans.org</email>
      </address>
    </author>
    <date year="2026" month="March" day="29"/>
    <abstract>
      <?line 67?>

<t>This document specifies a Credential Broker for Agents (CB4A).
a credential vaulting and brokering architecture that mediates
AI agent access to API credentials. Agents never hold real
long-lived credentials. Instead, they receive short-lived,
narrowly scoped, auditable proxy credentials issued by a broker
that separates policy decisions from credential delivery. The
architecture addresses the "credential sprawl" risk inherent in
agentic AI, where agents aggregating access across many services
become high-value compromise targets.</t>
      <t>CB4A builds on SPIFFE/SPIRE for workload identity, uses a Policy
Decision Point / Credential Delivery Point separation inspired
by NIST SP 800-207, and employs DPoP (RFC 9449) for
sender-constrained token binding. The specification defines
three credential proxy models, a tiered approval framework,
and a comprehensive threat model with ten identified threats
and their mitigations.</t>
    </abstract>
  </front>
  <middle>
    <?line 87?>

<section anchor="introduction">
      <name>Introduction</name>
      <section anchor="requirements-language">
        <name>Requirements Language</name>
        <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
        <?line -18?>

</section>
      <section anchor="overview">
        <name>Overview</name>
        <t>AI agents increasingly need to call APIs on behalf of users.
Current approaches give agents long-lived API keys or OAuth
tokens, creating standing privileges that survive beyond the
task, aggregate access across services, and make agents
high-value compromise targets. A compromised agent (via prompt
injection, context exfiltration, or tool-calling manipulation)
inherits all of those credentials.</t>
        <t>The Credential Broker for Agents (CB4A) addresses this by
introducing a credential vaulting and brokering layer that sits
between agents and the services they need to reach. The agent
never holds real credentials. Instead, it receives short-lived,
narrowly scoped, auditable proxy credentials.</t>
      </section>
      <section anchor="real-world-motivation">
        <name>Real-World Motivation</name>
        <t>The credential sprawl risk for AI agents is not theoretical.
In March 2026, the TeamPCP supply chain campaign compromised
LiteLLM <xref target="TEAMPCP-LITELLM"/>, an AI gateway proxy used by
thousands of enterprises to route requests to LLM providers
(OpenAI, Anthropic, Google Vertex AI, and others). LiteLLM's
entire purpose is to hold API keys for dozens of AI providers,
making it one of the highest-density credential targets in any
infrastructure. The attackers injected a credential stealer
into PyPI packages that harvested SSH keys, cloud credentials,
LLM API keys, .env files, and database passwords from any
machine running the compromised versions <xref target="LITELLM-SECURITY"/>.
The campaign exfiltrated an estimated 300+ GB of compressed
credentials affecting approximately 500,000 corporate
identities.</t>
        <t>This incident illustrates precisely the problem CB4A addresses:
when AI infrastructure concentrates long-lived credentials in
a single process or configuration, compromise of that process
yields catastrophic access.</t>
      </section>
      <section anchor="why-a-credential-broker-for-agents">
        <name>Why a Credential Broker for Agents</name>
        <t>The credential sprawl problem for agentic AI is distinct from
traditional service-to-service authentication because:</t>
        <ul spacing="normal">
          <li>
            <t>Agents are semi-autonomous: they make decisions about which
APIs to call, unlike microservices with fixed call patterns.</t>
          </li>
          <li>
            <t>Agent compromise vectors are novel: prompt injection, context
window exfiltration, and tool-calling manipulation do not
exist in traditional service architectures.</t>
          </li>
          <li>
            <t>Scope is unpredictable: an agent might need Slack write
access for one task and GitHub admin for the next, making
static scoping insufficient.</t>
          </li>
          <li>
            <t>User delegation is implicit: agents act on behalf of users
without the user being present for each action.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="architecture-overview">
      <name>Architecture Overview</name>
      <section anchor="design-philosophy">
        <name>Design Philosophy</name>
        <t>CB4A follows three architectural principles:</t>
        <ol spacing="normal" type="1"><li>
            <t>Build on SPIFFE/SPIRE, don't build bespoke: The identity,
attestation, and certificate management problems are already
solved. CB4A adds an agent-specific policy and credential
mediation layer on top.</t>
          </li>
          <li>
            <t>Separate policy from credentials: The component that decides
"yes" (PDP) <bcp14>MUST</bcp14> never touch credential material. The
component that dispenses credentials (CDP) <bcp14>MUST</bcp14> never make
policy decisions. Compromise of one does not yield the other.</t>
          </li>
          <li>
            <t>Envelope as evidence, not authorization: The Task Request
Envelope is an auditable artifact that the agent produces.
It is evaluated by the PDP, but the PDP's decision is based
on independent policy evaluation and behavioral baselines
(inspired by BeyondCorp <xref target="BEYONDCORP"/>), not on trusting
the agent's self-reported justification.</t>
          </li>
        </ol>
      </section>
      <section anchor="system-architecture">
        <name>System Architecture</name>
        <t>The following diagram illustrates the CB4A system architecture
with its trust boundaries:</t>
        <artwork type="ascii-art"><![CDATA[
+-----------------------------------------------------+
|                    AGENT RUNTIME                     |
|                                                      |
|  +----------+    +-------------------+               |
|  |  Agent   |--->| Task Request      |               |
|  |  (SVID)  |    | Envelope          |               |
|  +----------+    | who/what/why/TTL  |               |
|       ^          +--------+----------+               |
|       |                   |                          |
|       |          +--------v----------+               |
|       |          | SPIRE Agent       |               |
|       |          | (workload         |               |
|       |          |  attestation)     |               |
|       |          +--------+----------+               |
+-------|-------------------|--------------------------|
        |                   | mTLS
        |                   |
+-------|-------------------|--------------------------|
|       |          BROKER INFRASTRUCTURE               |
|       |                   |                          |
|       |          +--------v----------+               |
|       |          | Policy Decision   |               |
|       |          | Point (PDP)       |               |
|       |          |                   |  +----------+ |
|       |          | - Envelope eval   |  | Approval | |
|       |          | - Risk scoring    |->| Service  | |
|       |          | - Tier routing    |  | (HITL/   | |
|       |          | - NO credential   |  |  MFA)    | |
|       |          |   access          |  +----------+ |
|       |          +--------+----------+               |
|       |                   | approved                 |
|       |                   | decision                 |
|       |          +--------v----------+               |
|       |          | Credential        |  +----------+ |
|       |          | Delivery Point    |  | Vault    | |
|       |          | (CDP)             |->| (HSM-    | |
|       |          |                   |  |  backed) | |
|       |          | - Token minting   |  +----------+ |
|       |          | - Lease mgmt      |               |
|       <----------| - Non-renewable   |  +----------+ |
|  short-lived     |   leases          |  | Audit    | |
|  scoped token    +-------------------+  | Trail    | |
|                                         | (immutbl)| |
|                                         +----------+ |
|       +------------------------------+               |
|       | Compromise Detection         |               |
|       | - Canary credentials         |               |
|       | - Confused deputy detection  |               |
|       | - Cross-agent correlation    |               |
|       +------------------------------+               |
+------------------------------------------------------+
]]></artwork>
      </section>
      <section anchor="scalability-philosophy">
        <name>Scalability Philosophy</name>
        <t>CB4A is designed to scale from a single-machine home deployment
to a distributed enterprise environment. The same conceptual
architecture applies at every scale; what changes is how
components are deployed, not what they do. A home user running
one agent on a laptop and an enterprise running thousands of
agents across data centers both benefit from the same PDP/CDP
split, envelope-based evidence, and short-lived tokens. These
are architectural properties, not deployment choices.</t>
      </section>
      <section anchor="trust-boundaries">
        <name>Trust Boundaries</name>
        <table>
          <thead>
            <tr>
              <th align="left">Boundary</th>
              <th align="left">Separates</th>
              <th align="left">Compromise of A yields</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Agent / SPIRE Agent</td>
              <td align="left">Workload from identity</td>
              <td align="left">Agent identity (bounded by SVID TTL)</td>
            </tr>
            <tr>
              <td align="left">SPIRE Agent / PDP</td>
              <td align="left">Identity from policy</td>
              <td align="left">Ability to submit envelopes (not approve them)</td>
            </tr>
            <tr>
              <td align="left">PDP / CDP</td>
              <td align="left">Policy from credentials</td>
              <td align="left">Approval decisions (not credential material)</td>
            </tr>
            <tr>
              <td align="left">CDP / Vault</td>
              <td align="left">Delivery from storage</td>
              <td align="left">Active credentials (bounded by HSM access policies)</td>
            </tr>
            <tr>
              <td align="left">PDP / Approval Svc</td>
              <td align="left">Auto from human approval</td>
              <td align="left">Auto-approval only (HITL/MFA still requires human)</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="credential-flow">
        <name>Credential Flow</name>
        <ol spacing="normal" type="1"><li>
            <t>Agent constructs Task Request Envelope with SVID identity.</t>
          </li>
          <li>
            <t>Envelope submitted to PDP via mTLS (SPIRE-attested).</t>
          </li>
          <li>
            <t>PDP evaluates envelope against policy, routes to
appropriate approval tier.</t>
          </li>
          <li>
            <t>If approved, PDP sends signed approval decision to CDP.</t>
          </li>
          <li>
            <t>CDP mints short-lived, scoped token with non-renewable
lease.</t>
          </li>
          <li>
            <t>Token returned to agent, bound to request context.</t>
          </li>
          <li>
            <t>Agent uses token directly against target service.</t>
          </li>
          <li>
            <t>Token expires; re-attestation required for new token.</t>
          </li>
          <li>
            <t>Full chain logged to immutable audit trail.</t>
          </li>
        </ol>
      </section>
    </section>
    <section anchor="credential-proxy-models">
      <name>Credential Proxy Models</name>
      <t>CB4A defines three models for how the broker mediates credential
access between an agent and a target service. These models
represent different points on a tradeoff between security
isolation, operational complexity, and compatibility with
existing APIs.</t>
      <section anchor="model-a-proxy-gateway">
        <name>Model A: Proxy Gateway</name>
        <t>The agent never receives any real credential. Instead, the
broker operates a proxy endpoint that the agent calls. The
broker receives the agent's request, validates the agent's
session token, injects the real API credential, forwards the
request to the target service, and returns the response. The
agent never receives, sees, or holds the real credential. The credential travels from the broker to the target service, but never to the agent.</t>
        <artwork type="ascii-art"><![CDATA[
Agent --request--> CB4A Proxy --request + real cred--> Target API
Agent <-response-- CB4A Proxy <-response------------- Target API
]]></artwork>
        <t>Strengths:</t>
        <ul spacing="normal">
          <li>
            <t>Strongest isolation: the agent never sees, holds, or
transmits a real credential.</t>
          </li>
          <li>
            <t>The broker can inspect, log, and filter every request and
response in real time.</t>
          </li>
          <li>
            <t>Works with any target API without requiring the target to
support short-lived tokens.</t>
          </li>
        </ul>
        <t>Weaknesses:</t>
        <ul spacing="normal">
          <li>
            <t>Every API call becomes two network hops, adding latency.</t>
          </li>
          <li>
            <t>The proxy is a single point of failure.</t>
          </li>
          <li>
            <t>The proxy must understand the request/response format of
every target API it mediates.</t>
          </li>
          <li>
            <t>At high scale, the proxy becomes a throughput bottleneck.</t>
          </li>
        </ul>
        <t>Best for high-security environments where credential isolation
is paramount, or as a fallback for target services that do not
support short-lived tokens natively.</t>
      </section>
      <section anchor="model-b-short-lived-token-minting">
        <name>Model B: Short-Lived Token Minting</name>
        <t>The broker uses the real long-lived credential to mint a
derivative short-lived token with narrow scope, then hands
that short-lived token to the agent. The agent uses the
short-lived token to call the target service directly. The
token expires automatically after a brief TTL (seconds to
minutes). The specific minting mechanism varies by platform.</t>
        <artwork type="ascii-art"><![CDATA[
Agent --req token--> CB4A Broker --mint--> Token Endpoint
Agent <-short-lived-- CB4A Broker

Agent --req + short-lived token--> Target API (direct)
Agent <-response------------------ Target API
]]></artwork>
        <t>Platform-specific minting mechanisms:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Platform</th>
              <th align="left">Mechanism</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">AWS</td>
              <td align="left">Security Token Service (STS) AssumeRole</td>
              <td align="left">Mints temporary access keys with session policies and configurable TTL</td>
            </tr>
            <tr>
              <td align="left">Google Cloud</td>
              <td align="left">OAuth 2.0 + Service Account Impersonation</td>
              <td align="left">Uses generateAccessToken API to create short-lived OAuth 2.0 access tokens</td>
            </tr>
            <tr>
              <td align="left">Azure</td>
              <td align="left">Azure AD / Entra ID token endpoint</td>
              <td align="left">Issues short-lived OAuth 2.0 bearer tokens via client credentials flow</td>
            </tr>
            <tr>
              <td align="left">GitHub</td>
              <td align="left">App Installation Tokens</td>
              <td align="left">Generates short-lived installation access tokens scoped to repositories</td>
            </tr>
            <tr>
              <td align="left">Generic</td>
              <td align="left">OAuth 2.0 Token Exchange <xref target="RFC8693"/></td>
              <td align="left">Exchanges long-lived token for short-lived, narrowly scoped derivative</td>
            </tr>
          </tbody>
        </table>
        <t>Strengths:</t>
        <ul spacing="normal">
          <li>
            <t>No proxy bottleneck: the agent calls the target API directly.</t>
          </li>
          <li>
            <t>Short-lived tokens limit blast radius to the TTL window.</t>
          </li>
          <li>
            <t>Proven at massive scale across all major cloud providers.</t>
          </li>
          <li>
            <t>The broker only handles token minting, not ongoing proxying.</t>
          </li>
        </ul>
        <t>Weaknesses:</t>
        <ul spacing="normal">
          <li>
            <t>The agent holds a real (if temporary) credential in memory.</t>
          </li>
          <li>
            <t>Requires the target service to support short-lived minting.</t>
          </li>
          <li>
            <t>Scope granularity depends on the target service's token API.</t>
          </li>
        </ul>
        <t>This is the <bcp14>RECOMMENDED</bcp14> primary model for CB4A.</t>
      </section>
      <section anchor="model-c-credential-wrapping-with-scheduled-revocation">
        <name>Model C: Credential Wrapping with Scheduled Revocation</name>
        <t>For target APIs that only support long-lived credentials and
have no mechanism for minting short-lived tokens, the broker
hands the agent the actual long-lived credential but
immediately schedules its revocation after the task completes
or the TTL expires.</t>
        <t>Strengths:</t>
        <ul spacing="normal">
          <li>
            <t>Works with any API regardless of token support.</t>
          </li>
          <li>
            <t>Simple to implement.</t>
          </li>
        </ul>
        <t>Weaknesses:</t>
        <ul spacing="normal">
          <li>
            <t>The agent holds a real, long-lived credential during the
window, the weakest isolation of all three models.</t>
          </li>
          <li>
            <t>Revocation depends on the target service's key management.</t>
          </li>
          <li>
            <t>If revocation fails, the credential remains live indefinitely.</t>
          </li>
        </ul>
        <t>This is the WEAKEST model and is <bcp14>NOT RECOMMENDED</bcp14> for new
integrations. Use only for legacy APIs with no alternative.</t>
      </section>
      <section anchor="model-comparison">
        <name>Model Comparison</name>
        <table>
          <thead>
            <tr>
              <th align="left">Property</th>
              <th align="left">Model A (Proxy)</th>
              <th align="left">Model B (Mint)</th>
              <th align="left">Model C (Wrap)</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Agent holds real cred?</td>
              <td align="left">Never</td>
              <td align="left">Temporary</td>
              <td align="left">Yes (until revoked)</td>
            </tr>
            <tr>
              <td align="left">Latency overhead</td>
              <td align="left">High (double hop)</td>
              <td align="left">Low (one-time mint)</td>
              <td align="left">None</td>
            </tr>
            <tr>
              <td align="left">Single point of failure?</td>
              <td align="left">Yes (proxy)</td>
              <td align="left">No</td>
              <td align="left">No</td>
            </tr>
            <tr>
              <td align="left">Works with any API?</td>
              <td align="left">Yes</td>
              <td align="left">Short-lived support only</td>
              <td align="left">Yes</td>
            </tr>
            <tr>
              <td align="left">Blast radius</td>
              <td align="left">Minimal</td>
              <td align="left">Bounded by TTL</td>
              <td align="left">Full until revoked</td>
            </tr>
            <tr>
              <td align="left">Recommended use</td>
              <td align="left">DPoP fallback</td>
              <td align="left">Primary model</td>
              <td align="left">Legacy only</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="cb4a-model-strategy">
        <name>CB4A Model Strategy</name>
        <t>CB4A uses Model B as the primary credential model wherever the
target service supports short-lived token minting. Model A is
used selectively as a DPoP enforcement layer. Model C is
available as a last resort for legacy integrations but is
discouraged and flagged in audit logs.</t>
      </section>
    </section>
    <section anchor="technical-design">
      <name>Technical Design</name>
      <section anchor="spire-based-identity-layer">
        <name>SPIRE-Based Identity Layer</name>
        <t>Agents receive identity through SPIRE <xref target="SPIRE"/> workload
attestation. Each agent session gets a SPIFFE <xref target="SPIFFE"/>
Verifiable Identity Document (SVID), a short-lived X.509
certificate or JWT.</t>
        <t>SVID Properties:</t>
        <ul spacing="normal">
          <li>
            <t>TTL: matches agent session lifetime (default: 1 hour,
configurable).</t>
          </li>
          <li>
            <t>SPIFFE ID format:
spiffe://trust-domain/agent/{user-id}/{session-id}</t>
          </li>
          <li>
            <t>Attestation: node attestation (platform identity) plus
workload attestation (agent process identity).</t>
          </li>
          <li>
            <t>Non-renewable: agent <bcp14>MUST</bcp14> re-attest to get new SVID.</t>
          </li>
        </ul>
        <t>Trust Domain Federation: For multi-tenant or
multi-organization deployments, SPIFFE federation enables
cross-domain trust without sharing root CAs.</t>
      </section>
      <section anchor="task-request-envelope">
        <name>Task Request Envelope</name>
        <t>The envelope is a structured, signed evidence artifact
submitted by the agent for every credential request.</t>
        <sourcecode type="json"><![CDATA[
{
  "envelope_version": "1.0",
  "agent_svid": "<SPIFFE SVID reference>",
  "request_id": "<UUID>",
  "timestamp": "<ISO-8601>",
  "target": {
    "service": "slack",
    "action": "chat.postMessage",
    "resource": "#engineering",
    "scope": ["channels:write"]
  },
  "justification": {
    "task_id": "<originating user instruction ref>",
    "description": "Post weekly standup summary"
  },
  "ttl_seconds": 60,
  "signature": "<SVID-signed envelope hash>"
}
]]></sourcecode>
        <t>The justification.description field is auditable evidence,
NOT an authorization input. The PDP <bcp14>MUST NOT</bcp14> evaluate
justification text for approval decisions. Approval is based
on: (1) agent identity (SVID), (2) target service/action/scope
matching against policy, (3) behavioral baseline comparison,
and (4) approval tier routing. The justification exists solely
for post-incident forensic reconstruction.</t>
      </section>
      <section anchor="policy-decision-point-pdp">
        <name>Policy Decision Point (PDP)</name>
        <t>The PDP is a stateless service that evaluates envelopes against
policy, following the PDP/PEP separation defined in
<xref target="NIST-ZTA"/>. It has zero access to credential material.</t>
        <t>Inputs:</t>
        <ul spacing="normal">
          <li>
            <t>Task Request Envelope</t>
          </li>
          <li>
            <t>Agent identity (SVID validation via SPIRE)</t>
          </li>
          <li>
            <t>Policy rules (loaded from versioned policy store)</t>
          </li>
          <li>
            <t>Behavioral baseline (historical access patterns)</t>
          </li>
        </ul>
        <t>Outputs:</t>
        <ul spacing="normal">
          <li>
            <t>Signed approval decision (approved/denied/escalated)</t>
          </li>
          <li>
            <t>Approval tier (auto/HITL/MFA)</t>
          </li>
          <li>
            <t>Scope constraints (may narrow requested scope)</t>
          </li>
          <li>
            <t>Decision rationale (logged)</t>
          </li>
        </ul>
        <t>Scope Granularity: The PDP's scope enforcement is configurable
by the administrator. Implementations may range from coarse
service-level scoping (e.g., "Slack: read/write") to
fine-grained resource-level scoping (e.g., "Slack: write to
#engineering only"). The appropriate granularity depends on the
deployment's threat model and operational maturity.</t>
        <t>Policy evaluation <bcp14>MUST</bcp14> use a typed, compiled policy language
(not string interpolation). Envelope fields <bcp14>MUST</bcp14> be
deserialized into typed structures before evaluation. No string
concatenation or template rendering in policy evaluation paths.</t>
        <table>
          <thead>
            <tr>
              <th align="left">Tier</th>
              <th align="left">Criteria</th>
              <th align="left">Approval Flow</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Tier 1 (Auto)</td>
              <td align="left">Low-risk, pre-authorized, within baseline</td>
              <td align="left">Immediate approval</td>
            </tr>
            <tr>
              <td align="left">Tier 2 (HITL)</td>
              <td align="left">Moderate risk, outside baseline</td>
              <td align="left">Async human approval via notification</td>
            </tr>
            <tr>
              <td align="left">Tier 3 (MFA)</td>
              <td align="left">High risk, destructive, admin-level</td>
              <td align="left">Synchronous approval with MFA challenge</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="credential-delivery-point-cdp">
        <name>Credential Delivery Point (CDP)</name>
        <t>The CDP brokers vault <xref target="VAULT"/> interactions and mints
short-lived tokens. It accepts only signed PDP approval
decisions.</t>
        <t>Token Minting (Model B):</t>
        <ul spacing="normal">
          <li>
            <t>CDP receives signed approval decision specifying exact scope
and TTL.</t>
          </li>
          <li>
            <t>CDP retrieves base credential from HSM-backed vault (or
encrypted local store for single-machine deployments).</t>
          </li>
          <li>
            <t>CDP mints a derivative short-lived token using the target
service's native mechanism (AWS STS AssumeRole, GCP
generateAccessToken, GitHub App installation tokens,
OAuth 2.0 Token Exchange <xref target="RFC8693"/>, etc.).</t>
          </li>
          <li>
            <t>For services without native short-lived token support: CDP
issues a CB4A proxy token and operates a thin proxy endpoint
(Model A fallback).</t>
          </li>
          <li>
            <t>Token is non-renewable; expiry is absolute, no refresh.</t>
          </li>
        </ul>
        <t>Lease Management:</t>
        <ul spacing="normal">
          <li>
            <t>Every issued token has a lease tracked by the CDP.</t>
          </li>
          <li>
            <t>Leases are non-renewable by default.</t>
          </li>
          <li>
            <t>On lease expiry: token is invalidated, agent <bcp14>MUST</bcp14> re-attest.</t>
          </li>
          <li>
            <t>On anomaly detection signal: CDP can revoke active leases
immediately.</t>
          </li>
        </ul>
        <t>The CDP <bcp14>MUST NOT</bcp14> cache decrypted credentials in memory beyond
the minting operation. Credentials are fetched from vault,
used to mint derivative token, and immediately zeroed. The CDP
process <bcp14>SHOULD</bcp14> run in a hardened runtime with no shell access,
restricted outbound network, and memory encryption where
platform supports it.</t>
      </section>
      <section anchor="sender-constrained-tokens">
        <name>Sender-Constrained Tokens</name>
        <t>Ephemeral tokens in agent memory are extractable and
replayable. CB4A addresses this with sender-constrained tokens
using DPoP <xref target="RFC9449"/>:</t>
        <ul spacing="normal">
          <li>
            <t>At token minting, agent generates an ephemeral key pair.</t>
          </li>
          <li>
            <t>Agent provides public key to CDP.</t>
          </li>
          <li>
            <t>CDP binds the minted token to the agent's public key.</t>
          </li>
          <li>
            <t>On each API call, agent signs the request with its private
key (DPoP proof).</t>
          </li>
          <li>
            <t>Target service (or CB4A proxy for Model A fallback services)
validates both the token and the DPoP proof.</t>
          </li>
          <li>
            <t>Stolen tokens are useless without the corresponding private
key.</t>
          </li>
        </ul>
        <t>For services that do not support DPoP natively, the CB4A proxy
endpoint validates DPoP proof before injecting real credential.
This is the only scenario where Model A (proxy) is used, as
a DPoP enforcement layer for services lacking native support.</t>
      </section>
      <section anchor="tiered-approval-service">
        <name>Tiered Approval Service</name>
        <t>Tier 1: Auto-Approval:</t>
        <ul spacing="normal">
          <li>
            <t>PDP evaluates against static policy plus behavioral baseline.</t>
          </li>
          <li>
            <t>Approval latency: less than 10ms.</t>
          </li>
        </ul>
        <t>Tier 2: Human-in-the-Loop:</t>
        <ul spacing="normal">
          <li>
            <t>Push notification to approver's device.</t>
          </li>
          <li>
            <t>Approver sees: agent identity, requested action, scope,
justification.</t>
          </li>
          <li>
            <t>Timeout: configurable (default 5 minutes), denied on timeout.</t>
          </li>
        </ul>
        <t>Tier 3: MFA-Required:</t>
        <ul spacing="normal">
          <li>
            <t>Synchronous approval with multi-factor authentication.</t>
          </li>
          <li>
            <t>Approver <bcp14>MUST</bcp14> complete MFA challenge (FIDO2/WebAuthn,
not SMS/TOTP).</t>
          </li>
        </ul>
        <section anchor="approval-routing-enterprise">
          <name>Approval Routing (Enterprise)</name>
          <t>In enterprise deployments, approval requests <bcp14>MUST</bcp14> be routed to
the appropriate human reviewer, not a generic approval queue.
The agent's owner or responsible team is the correct approver
because they understand the agent's purpose, expected behavior,
and legitimate access patterns.</t>
          <table>
            <thead>
              <tr>
                <th align="left">Routing Criterion</th>
                <th align="left">Example</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">Agent owner</td>
                <td align="left">Agent sales-report-bot routes to Sales Eng team lead</td>
              </tr>
              <tr>
                <td align="left">Service owner</td>
                <td align="left">Billing API requests route to Finance team</td>
              </tr>
              <tr>
                <td align="left">Escalation chain</td>
                <td align="left">Timeout escalates to manager or backup</td>
              </tr>
              <tr>
                <td align="left">On-call rotation</td>
                <td align="left">After-hours routes to current on-call</td>
              </tr>
            </tbody>
          </table>
          <t>For home/individual deployments, approval routing is trivial.
all requests route to the single user.</t>
        </section>
        <section anchor="approval-fatigue-countermeasures">
          <name>Approval Fatigue Countermeasures</name>
          <ul spacing="normal">
            <li>
              <t>Rate limiting on approval requests per agent per time window.</t>
            </li>
            <li>
              <t>Anomaly flagging when approval request patterns change.</t>
            </li>
            <li>
              <t>Mandatory cool-down periods after N consecutive approvals.</t>
            </li>
            <li>
              <t>Periodic "challenge approvals" (known-benign requests
presented as suspicious) to verify approver attention.</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="immutable-audit-trail">
        <name>Immutable Audit Trail</name>
        <t>Every interaction produces a structured, append-only log entry:</t>
        <sourcecode type="json"><![CDATA[
{
  "event_type": "credential_request|approval|issuance|
                 usage|expiry|revocation",
  "timestamp": "<ISO-8601>",
  "agent_spiffe_id": "spiffe://trust-domain/agent/user/session",
  "envelope_hash": "<SHA-256 of request envelope>",
  "decision": "approved|denied|escalated|timed_out",
  "decision_tier": "auto|hitl|mfa",
  "credential_scope": ["channels:write"],
  "credential_ttl_seconds": 60,
  "target_service": "slack",
  "target_action": "chat.postMessage",
  "approver_identity": "<human approver ID or 'auto'>",
  "correlation_id": "<links related events>"
}
]]></sourcecode>
        <t>Storage: Write-once storage (append-only log, S3 with object
lock, or dedicated SIEM). Log pipeline failures <bcp14>MUST</bcp14> trigger
fail-closed behavior; no credentials issued if audit trail
is unavailable.</t>
        <t>Audit trail <bcp14>MUST</bcp14> be written to a separate trust boundary from
both PDP and CDP. Neither PDP nor CDP has write access to
modify or delete existing log entries. Log integrity is
verified via hash chaining.</t>
      </section>
      <section anchor="compromise-detection">
        <name>Compromise Detection</name>
        <t>Canary Credentials: Seed the credential store with tokens that
should never be used. Any access to a canary triggers immediate
alert and session termination.</t>
        <t>Confused Deputy Detection: Monitor for credential requests
where the agent identity and the task context do not match.</t>
        <t>Cross-Agent Correlation: Monitor for coordinated multi-agent
access patterns that individually appear benign but
collectively constitute data exfiltration or privilege
escalation.</t>
        <t>Runtime Behavior Monitoring (Recommended): Runtime monitoring
of post-issuance credential usage is highly valuable. Even a
short-lived token can cause significant damage if misused.
Implementations <bcp14>SHOULD</bcp14> include anomaly detection on API call
patterns, mid-flight kill switches, and behavioral baselines.</t>
      </section>
      <section anchor="secure-degradation">
        <name>Secure Degradation</name>
        <t>CB4A specifies secure degradation behavior for every failure
mode:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Failure</th>
              <th align="left">Behavior</th>
              <th align="left">Rationale</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">PDP unavailable</td>
              <td align="left">Fail-closed</td>
              <td align="left">Policy cannot be evaluated</td>
            </tr>
            <tr>
              <td align="left">CDP unavailable</td>
              <td align="left">Fail-closed</td>
              <td align="left">Credentials cannot be minted</td>
            </tr>
            <tr>
              <td align="left">Vault unavailable</td>
              <td align="left">Fail-closed</td>
              <td align="left">Base credentials inaccessible</td>
            </tr>
            <tr>
              <td align="left">Audit trail unavailable</td>
              <td align="left">Fail-closed</td>
              <td align="left">Cannot maintain chain of custody</td>
            </tr>
            <tr>
              <td align="left">Approval svc unavailable</td>
              <td align="left">Tier 1 continues; Tier 2/3 denied</td>
              <td align="left">Preserve low-risk operations</td>
            </tr>
            <tr>
              <td align="left">SPIRE unavailable</td>
              <td align="left">No new sessions; existing SVIDs valid</td>
              <td align="left">Identity cannot be attested</td>
            </tr>
          </tbody>
        </table>
        <t>Emergency Break-Glass: Requires two-person authorization (dual
key). Bypasses PDP but still logs through audit trail.
Automatically expires after configurable window (default: 30
minutes). Triggers mandatory post-incident review.</t>
      </section>
      <section anchor="broker-bypass-prevention">
        <name>Broker Bypass Prevention</name>
        <t>A credential broker is only effective if agents cannot
circumvent it to access credentials directly. This is
analogous to the bypass problem faced by Cloud Access
Security Brokers (CASBs), which must prevent users and
applications from reaching cloud services outside the
broker's mediation.</t>
        <t>CB4A draws three architectural lessons from CASB
deployments:</t>
        <section anchor="lesson-1-agents-must-not-have-direct-credential-access">
          <name>Lesson 1: Agents Must Not Have Direct Credential Access</name>
          <t>The most fundamental control: real credentials <bcp14>MUST</bcp14> be
stored in a vault that agents cannot access directly. The
agent runtime <bcp14>MUST NOT</bcp14> have network connectivity to the
vault, IAM permissions to read secrets, or file system
access to credential stores. Only the CDP has vault access.
This is the CB4A equivalent of a CASB's network-level
enforcement: if the agent cannot reach the credentials,
it cannot bypass the broker.</t>
        </section>
        <section anchor="lesson-2-network-level-enforcement-over-agent-cooperation">
          <name>Lesson 2: Network-Level Enforcement Over Agent Cooperation</name>
          <t>CASB experience shows that agent-based enforcement (where
the agent voluntarily routes traffic through the broker)
is weaker than network-level enforcement (where the network
prevents direct access). CB4A implementations <bcp14>SHOULD</bcp14> enforce
broker mediation at the infrastructure level:</t>
          <ul spacing="normal">
            <li>
              <t>Network policies (firewall rules, security groups, or
Kubernetes NetworkPolicy) that block agent-to-service
direct communication for brokered services.</t>
            </li>
            <li>
              <t>Service mesh sidecars that intercept outbound traffic
and validate CB4A tokens before forwarding.</t>
            </li>
            <li>
              <t>DNS-level controls that resolve brokered service
endpoints to the CB4A proxy rather than the real service.</t>
            </li>
          </ul>
          <t>Relying solely on the agent's cooperation to use the broker
is insufficient; a compromised agent will attempt to call
services directly if network-level controls do not prevent
it.</t>
        </section>
        <section anchor="lesson-3-multimode-detection">
          <name>Lesson 3: Multimode Detection</name>
          <t>Even with network-level enforcement, sophisticated bypass
attempts may succeed (e.g., tunneling through allowed
endpoints). CASB architectures address this with API-based
monitoring alongside inline enforcement. CB4A implementations
<bcp14>SHOULD</bcp14>:</t>
          <ul spacing="normal">
            <li>
              <t>Monitor target service audit logs for API calls that
did not originate from the CB4A proxy or use CB4A-issued
tokens.</t>
            </li>
            <li>
              <t>Alert on credential usage patterns that do not match
CB4A audit trail records (indicating credentials were
used outside the broker).</t>
            </li>
            <li>
              <t>Implement canary detection at the service level, not
just at the vault level.</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="native-integration-specification-future">
        <name>Native Integration Specification (Future)</name>
        <t>If CB4A achieves sufficient adoption, target services could
natively validate CB4A-issued credentials. CB4A-native tokens
would be JWTs containing:</t>
        <ul spacing="normal">
          <li>
            <t>iss: CB4A broker SPIFFE ID</t>
          </li>
          <li>
            <t>sub: Agent SPIFFE ID</t>
          </li>
          <li>
            <t>aud: Target service identifier</t>
          </li>
          <li>
            <t>scope: Requested permissions (service-specific format)</t>
          </li>
          <li>
            <t>exp: Expiry timestamp (short TTL)</t>
          </li>
          <li>
            <t>jti: Unique token ID (for replay detection)</t>
          </li>
          <li>
            <t>cnf: Confirmation claim binding token to DPoP key
<xref target="RFC9449"/></t>
          </li>
          <li>
            <t>envelope_hash: SHA-256 of the originating Task Request
Envelope</t>
          </li>
        </ul>
        <t>Discovery: Target services would discover CB4A broker endpoints
via a well-known URI (.well-known/cba-configuration) publishing
the JWKS URL, supported scopes, and token format version.</t>
      </section>
    </section>
    <section anchor="scalability-model">
      <name>Scalability Model</name>
      <t>CB4A separates logical components from their deployment
topology. The same security properties hold at every scale.</t>
      <section anchor="home-single-machine-deployment">
        <name>Home / Single-Machine Deployment</name>
        <t>A single user running AI agents on a personal workstation.
All CB4A components run as local processes or lightweight
containers on the same machine. A minimal deployment uses
three components: SPIRE (identity), PDP (policy), and a
credential proxy that combines CDP and vault access.</t>
        <t>The trust model is identical to enterprise, just deployed on
one machine instead of across a network.</t>
      </section>
      <section anchor="small-team-startup-deployment">
        <name>Small Team / Startup Deployment</name>
        <t>A team of 5-50 people with multiple agents across workstations
and CI/CD pipelines. Deploys the same three core components as
a home deployment (SPIRE, PDP, credential proxy), with the
option to separate the credential proxy into distinct CDP and
vault integration services as the team grows.</t>
      </section>
      <section anchor="enterprise-deployment">
        <name>Enterprise Deployment</name>
        <t>Thousands of agents across multiple teams, data centers, and
trust domains. Typically uses five or more components with
dedicated infrastructure per component, including federated
SPIRE, HSM-backed vault clusters, and full cross-agent
correlation.</t>
        <t>Hardware attestation (TPM/TEE) is required at enterprise scale.</t>
      </section>
      <section anchor="cb4a-as-a-service">
        <name>CB4A-as-a-Service</name>
        <t>CB4A's architecture lends itself naturally to a managed
service model where a third-party provider operates the
broker infrastructure on behalf of customers. In this
deployment, the customer runs only the SPIRE agent alongside
their AI agents; the PDP, CDP, vault, and audit trail are
hosted and operated by the service provider.</t>
        <t>This model is particularly relevant because CB4A's
functionality overlaps significantly with existing Cloud
Access Security Broker (CASB) and Secure Access Service
Edge (SASE) platforms. Both CASBs and SASE products
already operate inline security mediation layers between
users/applications and cloud services. Adding agent
credential brokering to these platforms is a natural
extension of their existing capability:</t>
        <ul spacing="normal">
          <li>
            <t>CASB platforms already mediate access between enterprise
users and cloud services, enforce DLP policies, and
provide audit trails. Adding CB4A's credential brokering
extends this mediation to AI agents as a new class of
"user."</t>
          </li>
          <li>
            <t>SASE platforms already combine network security (firewall,
SWG, ZTNA) with WAN optimization. CB4A's PDP/CDP model
fits within the SASE policy enforcement architecture
as an additional service function.</t>
          </li>
          <li>
            <t>Zero Trust Network Access (ZTNA) solutions already enforce
per-request access decisions based on identity and context.
CB4A's Task Request Envelope is an agent-specific extension
of the ZTNA access request model.</t>
          </li>
        </ul>
        <t>Considerations for CB4A-as-a-Service:</t>
        <ul spacing="normal">
          <li>
            <t>The service provider becomes the trust anchor for credential
storage. Customer due diligence on the provider's security
posture is critical.</t>
          </li>
          <li>
            <t>Latency between customer agents and the hosted broker adds
round-trip time to every credential minting operation.
Edge deployment of broker components mitigates this.</t>
          </li>
          <li>
            <t>Multi-tenancy introduces isolation requirements: one
customer's policy engine and credential vault <bcp14>MUST</bcp14> be
isolated from another's.</t>
          </li>
          <li>
            <t>Regulatory and compliance constraints may require that
credentials never leave certain jurisdictions, requiring
regional broker deployments.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="capability-tiers">
      <name>Capability Tiers</name>
      <t>CB4A defines three capability tiers. Each builds on the
previous one. A home deployment at Tier 1 is a complete system,
not an incomplete enterprise deployment.</t>
      <section anchor="tier-1-core-minimum-viable-cb4a">
        <name>Tier 1: Core (Minimum Viable CB4A)</name>
        <ul spacing="normal">
          <li>
            <t>SPIRE-based workload identity with agent attestation</t>
          </li>
          <li>
            <t>PDP with static policy evaluation</t>
          </li>
          <li>
            <t>CDP with Model B (short-lived token minting)</t>
          </li>
          <li>
            <t>Task Request Envelope schema, validation, and signing</t>
          </li>
          <li>
            <t>Tier 1 auto-approval based on policy matching</t>
          </li>
          <li>
            <t>Append-only audit trail with structured log entries</t>
          </li>
          <li>
            <t>Non-renewable leases on all issued tokens</t>
          </li>
          <li>
            <t>Fail-closed degradation for all critical components</t>
          </li>
          <li>
            <t>Canary credential seeding in the credential store</t>
          </li>
        </ul>
      </section>
      <section anchor="tier-2-human-oversight">
        <name>Tier 2: Human Oversight</name>
        <ul spacing="normal">
          <li>
            <t>Tier 2 HITL approval workflow</t>
          </li>
          <li>
            <t>Tier 3 MFA approval (FIDO2/WebAuthn)</t>
          </li>
          <li>
            <t>DPoP sender-constrained token binding</t>
          </li>
          <li>
            <t>Behavioral baseline collection and anomaly scoring</t>
          </li>
          <li>
            <t>Dynamic risk scoring in PDP</t>
          </li>
          <li>
            <t>Model A proxy fallback for services without native support</t>
          </li>
          <li>
            <t>Approval fatigue countermeasures</t>
          </li>
          <li>
            <t>Confused deputy detection</t>
          </li>
          <li>
            <t>Emergency break-glass procedure</t>
          </li>
        </ul>
      </section>
      <section anchor="tier-3-advanced-threat-defense">
        <name>Tier 3: Advanced Threat Defense</name>
        <ul spacing="normal">
          <li>
            <t>Hardware attestation for agent identity (TPM/TEE)</t>
          </li>
          <li>
            <t>Runtime behavior monitoring with mid-flight revocation</t>
          </li>
          <li>
            <t>Cross-agent correlation engine</t>
          </li>
          <li>
            <t>Per-service scope definition refinement</t>
          </li>
          <li>
            <t>Log integrity verification via hash chaining</t>
          </li>
          <li>
            <t>Adversarial testing program</t>
          </li>
          <li>
            <t>Multi-tenant federation via SPIFFE trust domains</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The full threat model is provided in Appendix A. Key security
considerations include:</t>
      <ul spacing="normal">
        <li>
          <t>The broker (CDP) is the highest-value target in the
architecture. It <bcp14>MUST</bcp14> be hardened with no shell access,
restricted network, and credential zeroing after minting
(TM-1).</t>
        </li>
        <li>
          <t>Ephemeral tokens in agent memory are extractable. DPoP
sender-constrained tokens <xref target="RFC9449"/> <bcp14>MUST</bcp14> be used to
prevent replay (TM-3).</t>
        </li>
        <li>
          <t>Approval fatigue is a human factors risk that cannot be
fully solved with technical controls. Challenge approvals
and rate limiting reduce but do not eliminate the risk
(TM-4).</t>
        </li>
        <li>
          <t>Multi-agent scope composition allows individually-scoped
credentials to be combined for unauthorized access. Cross-
agent correlation is <bcp14>RECOMMENDED</bcp14> (TM-6).</t>
        </li>
        <li>
          <t>Fail-closed degradation is critical. CB4A <bcp14>MUST NOT</bcp14> default
to fail-open under any failure condition (TM-9).</t>
        </li>
        <li>
          <t>Approval channel spoofing is a threat. High-risk approvals
<bcp14>MUST</bcp14> use FIDO2/WebAuthn and signed approval responses
(TM-10).</t>
        </li>
        <li>
          <t>Broker bypass, where agents access services directly
without CB4A mediation, <bcp14>MUST</bcp14> be prevented through
network-level enforcement, not agent cooperation (TM-11).</t>
        </li>
      </ul>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document makes no requests of IANA.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="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="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="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>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="SPIFFE" target="https://spiffe.io/">
          <front>
            <title>SPIFFE: Secure Production Identity Framework For Everyone</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="SPIRE" target="https://github.com/spiffe/spire">
          <front>
            <title>SPIRE: SPIFFE Runtime Environment</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="NIST-ZTA" target="https://csrc.nist.gov/publications/detail/sp/800-207/final">
          <front>
            <title>Zero Trust Architecture</title>
            <author initials="S." surname="Rose">
              <organization/>
            </author>
            <author initials="O." surname="Borchert">
              <organization/>
            </author>
            <author initials="S." surname="Mitchell">
              <organization/>
            </author>
            <author initials="S." surname="Connelly">
              <organization/>
            </author>
            <date year="2020" month="August"/>
          </front>
          <seriesInfo name="NIST" value="Special Publication 800-207"/>
        </reference>
        <reference anchor="VAULT" target="https://developer.hashicorp.com/vault">
          <front>
            <title>HashiCorp Vault</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="BEYONDCORP">
          <front>
            <title>BeyondCorp: A New Approach to Enterprise Security</title>
            <author initials="R." surname="Ward">
              <organization/>
            </author>
            <author initials="B." surname="Beyer">
              <organization/>
            </author>
            <date year="2014" month="December"/>
          </front>
          <seriesInfo name=";login:" value="vol. 39, no. 6"/>
        </reference>
        <reference anchor="TEAMPCP-LITELLM" target="https://www.infosecurity-magazine.com/news/teampcp-litellm-pypi-supply-chain/">
          <front>
            <title>TeamPCP Expands Supply Chain Campaign With LiteLLM PyPI Compromise</title>
            <author>
              <organization/>
            </author>
            <date year="2026" month="March"/>
          </front>
        </reference>
        <reference anchor="LITELLM-SECURITY" target="https://docs.litellm.ai/blog/security-update-march-2026">
          <front>
            <title>Security Update: Suspected Supply Chain Incident</title>
            <author>
              <organization/>
            </author>
            <date year="2026" month="March"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 915?>

<section anchor="threat-model">
      <name>Threat Model</name>
      <t>This appendix presents a systematic threat analysis of the CB4A
architecture. Each threat is identified with a unique ID
(TM-N), mapped to the architectural component it targets,
assessed for severity, and paired with the mitigation specified
elsewhere in this document.</t>
      <section anchor="methodology">
        <name>Methodology</name>
        <t>This threat model uses a component-based approach, examining
each trust boundary and data flow for potential compromise
scenarios. Threats are classified by target, attacker model,
severity (Critical/High/Medium), and mitigation cross-reference.</t>
      </section>
      <section anchor="tm-1">
        <name>TM-1: Broker Compromise</name>
        <t>Target: Credential Delivery Point (CDP).
Severity: CRITICAL.</t>
        <t>The CDP must access real credentials to mint derivative tokens.
An attacker who compromises the CDP process (via RCE, supply
chain attack, or SSRF) can intercept credentials during the
minting operation.</t>
        <t>Mitigation: CDP never caches credentials beyond minting;
credentials zeroed immediately. CDP runs in hardened runtime.
Audit trail on separate trust boundary. PDP/CDP separation
prevents approval of arbitrary requests.</t>
        <t>Residual Risk: During the brief minting window, the credential
exists in CDP memory. This is irreducible for Model B.</t>
      </section>
      <section anchor="tm-2">
        <name>TM-2: Revocation Propagation Failure</name>
        <t>Target: Token lifecycle management.
Severity: HIGH.</t>
        <t>Immediate revocation across independent downstream services
violates distributed systems fundamentals. Services cache auth
decisions and experience network partitions.</t>
        <t>Mitigation: Three configurable revocation strategies.
Ultra-short TTLs as primary control. CB4A proxy for unreliable
services. Non-renewable leases.</t>
        <t>Residual Risk: A propagation window will always exist for
Model B tokens against caching services.</t>
      </section>
      <section anchor="tm-3">
        <name>TM-3: Token Theft and Replay</name>
        <t>Target: Agent runtime memory.
Severity: HIGH.</t>
        <t>Short-lived tokens in agent memory can be extracted and
replayed from an external system within the TTL window.</t>
        <t>Mitigation: DPoP sender-constrained tokens <xref target="RFC9449"/> bind
each token to an ephemeral key pair. Stolen tokens are
cryptographically useless without the private key.</t>
        <t>Residual Risk: Simultaneous extraction of token AND DPoP
private key defeats the binding.</t>
      </section>
      <section anchor="tm-4">
        <name>TM-4: Approval Bypass and Fatigue</name>
        <t>Target: Tiered approval service.
Severity: HIGH.</t>
        <t>Bypass: Compromised agent crafts requests to route through
auto-approval. Fatigue: High-volume legitimate requests
condition approvers to rubber-stamp.</t>
        <t>Mitigation: Rate limiting, challenge approvals, cool-downs.
Cross-agent correlation detects chaining. FIDO2 at Tier 3.</t>
        <t>Residual Risk: Human factors cannot be fully solved with
technical controls.</t>
      </section>
      <section anchor="tm-5">
        <name>TM-5: Justification Field Gaming</name>
        <t>Target: Task Request Envelope.
Severity: MEDIUM.</t>
        <t>Compromised agent crafts adversarially-optimized justification
text.</t>
        <t>Mitigation: Justification is NOT an authorization input. Attack
surface removed by design.</t>
        <t>Residual Risk: None if implementations adhere to specification.</t>
      </section>
      <section anchor="tm-6">
        <name>TM-6: Multi-Agent Scope Composition</name>
        <t>Target: Blast radius containment.
Severity: HIGH.</t>
        <t>An attacker compromising multiple agents can compose
individually-scoped credentials for unauthorized access.</t>
        <t>Mitigation: Cross-agent correlation engine. Behavioral
baselines. Canary credentials. Short TTLs.</t>
        <t>Residual Risk: Learning period for new deployments.</t>
      </section>
      <section anchor="tm-7">
        <name>TM-7: Audit Log Compromise</name>
        <t>Target: Immutable audit trail.
Severity: HIGH.</t>
        <t>Attacker tampers with or suppresses audit log entries.</t>
        <t>Mitigation: Separate trust boundary. Hash chaining.
Fail-closed on log pipeline failure.</t>
        <t>Residual Risk: Dual compromise of broker AND audit trail.</t>
      </section>
      <section anchor="tm-8">
        <name>TM-8: Policy Engine Injection</name>
        <t>Target: Policy Decision Point.
Severity: MEDIUM-HIGH.</t>
        <t>Crafted envelope values exploit policy evaluation via injection.</t>
        <t>Mitigation: Typed, compiled policy language. Input validation.
No string interpolation.</t>
        <t>Residual Risk: Low with correct implementation.</t>
      </section>
      <section anchor="tm-9">
        <name>TM-9: Fail-Open Under Pressure</name>
        <t>Target: Secure degradation model.
Severity: HIGH.</t>
        <t>Organizational pressure creates undocumented bypass mechanisms.</t>
        <t>Mitigation: Explicit fail-closed for every failure mode.
Dual-key break-glass with mandatory post-review.</t>
        <t>Residual Risk: Governance and compliance issue.</t>
      </section>
      <section anchor="tm-10">
        <name>TM-10: Approver Spoofing</name>
        <t>Target: Tiered approval service, approval routing.
Severity: HIGH.</t>
        <t>Attacker impersonates an authorized approver via compromised
communication channel or intercepted approval webhook.</t>
        <t>Mitigation: FIDO2/WebAuthn for Tier 3. Cryptographically
signed approval responses. Out-of-band verification on
authenticated dashboard. Approval routing to agent owners.</t>
        <t>Residual Risk: Physical theft of approver's security key.</t>
      </section>
      <section anchor="tm-11">
        <name>TM-11: Broker Bypass</name>
        <t>Target: CB4A mediation layer.
Severity: HIGH.</t>
        <t>A compromised agent attempts to access target services
directly, bypassing CB4A entirely. If the agent can reach
the target API without going through the broker, all CB4A
controls (approval, scoping, audit, TTL) are circumvented.
This is the credential broker equivalent of the bypass
problem that Cloud Access Security Brokers (CASBs) have
addressed for over a decade.</t>
        <t>Attack Scenario:
1. Compromised agent discovers that network-level controls
   do not block direct access to a target API endpoint.
2. Agent uses credentials obtained through a prior
   legitimate CB4A interaction (within TTL) to call the
   service directly, outside the audit trail.
3. Alternatively: agent accesses credentials from an
   environment variable, configuration file, or process
   memory of another application on the same host.</t>
        <t>Mitigation: Network-level enforcement blocking agent direct
access to brokered services (Section 4.10). Vault access
restricted to CDP only. Service-level audit log monitoring
for calls not originating from CB4A. DNS-level controls
resolving brokered endpoints to CB4A proxy.</t>
        <t>Residual Risk: Agents running on hosts with broad network
access and weak segmentation. Environments where network
policy enforcement is not feasible (e.g., shared
development machines without container isolation).</t>
      </section>
      <section anchor="threat-summary">
        <name>Threat Summary</name>
        <table>
          <thead>
            <tr>
              <th align="left">ID</th>
              <th align="left">Threat</th>
              <th align="left">Severity</th>
              <th align="left">Primary Mitigation</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">TM-1</td>
              <td align="left">Broker compromise</td>
              <td align="left">CRITICAL</td>
              <td align="left">Hardened runtime, credential zeroing</td>
            </tr>
            <tr>
              <td align="left">TM-2</td>
              <td align="left">Revocation failure</td>
              <td align="left">HIGH</td>
              <td align="left">Ultra-short TTLs, configurable strategies</td>
            </tr>
            <tr>
              <td align="left">TM-3</td>
              <td align="left">Token theft/replay</td>
              <td align="left">HIGH</td>
              <td align="left">DPoP sender-constrained tokens</td>
            </tr>
            <tr>
              <td align="left">TM-4</td>
              <td align="left">Approval bypass/fatigue</td>
              <td align="left">HIGH</td>
              <td align="left">Rate limiting, challenge approvals</td>
            </tr>
            <tr>
              <td align="left">TM-5</td>
              <td align="left">Justification gaming</td>
              <td align="left">MEDIUM</td>
              <td align="left">Field excluded from authorization</td>
            </tr>
            <tr>
              <td align="left">TM-6</td>
              <td align="left">Multi-agent composition</td>
              <td align="left">HIGH</td>
              <td align="left">Cross-agent correlation engine</td>
            </tr>
            <tr>
              <td align="left">TM-7</td>
              <td align="left">Audit log compromise</td>
              <td align="left">HIGH</td>
              <td align="left">Separate trust boundary, hash chaining</td>
            </tr>
            <tr>
              <td align="left">TM-8</td>
              <td align="left">Policy engine injection</td>
              <td align="left">MED-HIGH</td>
              <td align="left">Typed policy language</td>
            </tr>
            <tr>
              <td align="left">TM-9</td>
              <td align="left">Fail-open pressure</td>
              <td align="left">HIGH</td>
              <td align="left">Explicit fail-closed, break-glass</td>
            </tr>
            <tr>
              <td align="left">TM-10</td>
              <td align="left">Approver spoofing</td>
              <td align="left">HIGH</td>
              <td align="left">FIDO2/WebAuthn, signed approvals</td>
            </tr>
            <tr>
              <td align="left">TM-11</td>
              <td align="left">Broker bypass</td>
              <td align="left">HIGH</td>
              <td align="left">Network enforcement, vault isolation</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>This specification was developed with input from multi-agent
architectural review and adversarial analysis.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
32wmxMIrmgO+BXfntK6+EelF95LhgR2H4mFxllebOfkHKT0Qk3pP04UTZxfq
ohAvkxNCF5Bn7pTltN5hIDHtINxZy/BndImYOLbCejAjaFIMQGODkVthtcBQ
Iw4/tRXExtUyzYqKDsC9umnzIsuKu8qIDxNQld0YHPd1htMbPR2Yl3Dpuh5d
nzYsf1KLv0dTrNZ0coYskL17h2ACmIqp5ThgSipGfCkLBiBqsIGvB0o4LMnI
Hphx0K4qMhILAy9WKr+zsfPKnD/No/uTipslbIAdEMuFfqmLNZHs2cCM1R13
d3d88ErWgiNA3JHXIlhw3MjjwNgH97Y6ML2r06tDww6AmDN1saG9CQQGpGxJ
v4gvTzd2h0xpHTlUdyj6eiedcXHacXc3djAI4lfgIrDyrLBiqLD8Y0ZiTU4L
fz5AvJeDh/BsLPQyCeI+Xy5xvfQ3Jpms/wan4lpMCTze35zKRniLK8Gugqd5
UbUz8rCvZGDirNLd5zXus7CmWWlNRHUQDfvESLX740nl14froVc5rsjOvk8u
OFLocLiYrVU6ULdpAUbGjRm76nRzz8UJ8NQm8ElKt4mOfvlyKJQAoyBgLae9
Wc4TeArZPC4tqUqs4Fdc5CIDolTG92RMrFpnUrSInDmcZeLKRZmsWtoUz2Am
r+T+UNJFLKvhBvCsDIn6fJYgmkon9D//8z9pK6cpqYiyjr6J/5Wfb6IHs+Nn
9PrsLbmR79/enF+e7brAPOy+8fd/+MZgst/gw12T/2bXjfQ/UVH0K13z00OL
UfXCPTf2xn89Pz3U7x8ajm4u/JqpPpCqLY7uiNnpP/dHNzcXe27kn//ZfOgH
6o6488Zd1H2E4jtv9A+6/Sef+CBJJE/qXQ/fc2PPB/v2zXrPjaHCOPz6G7+O
qu7Lhx18tusz91W0bxHy2ermYvz4Jf/6k3es9eX1u5/Prs3521fXo/HN9fuT
m/fX3dP5/w0HSWjX+NDuVzOCxHlFv+6e9T4O2l5T5/juuTFuZAF0inz9ICkx
/P2w/8ZrxArIGuQoCT6DSBqrzfrYjTcp6XY47O5GPjxvzm8ujsyjN759FxoZ
eqO5fDU6NI/d6M3ef444/y+EloTB7Wz7q9+5cdbwzlfc+H/BqychQd3XX8M5
neSE0e3gDK78tU9MnjTsrZ+Bc3pvxpfxozdu/wgDTBAKmR0+ynKc3yDnRnnu
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
rc4ireyYGOSCdwlQES5NN4j+D+N6rzdTpQAA

-->

</rfc>
