<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.43 (Ruby 4.0.7) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-atakora-sadp-protocol-02" category="exp" submissionType="independent" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <front>
    <title abbrev="SADP">The Secure Agent Delegation Protocol (SADP): End-to-End Encrypted Task Capsules for AI Agent Systems</title>
    <seriesInfo name="Internet-Draft" value="draft-atakora-sadp-protocol-02"/>
    <author initials="H." surname="Atakora" fullname="Hamdy Atakora">
      <organization>Imara Labs</organization>
      <address>
        <postal>
          <country>United States</country>
        </postal>
        <email>hatakora@imaralabs.dev</email>
      </address>
    </author>
    <date year="2026" month="September" day="20"/>
    <area>Security</area>
    <workgroup>Individual Submission</workgroup>
    <keyword>AI agents</keyword>
    <keyword>end-to-end encryption</keyword>
    <keyword>delegation</keyword>
    <keyword>task capsule</keyword>
    <keyword>double ratchet</keyword>
    <keyword>post-quantum</keyword>
    <keyword>broker</keyword>
    <keyword>A2A</keyword>
    <keyword>MCP</keyword>
    <abstract>

<t>This document specifies the Secure Agent Delegation Protocol (SADP), an
experimental end-to-end encrypted communication layer for user-to-agent and
agent-to-agent workflows. SADP defines task capsules: signed, encrypted,
individually routable protocol objects that carry agent tasks, tool
invocations, and results across untrusted brokers, queues, and
orchestration infrastructure. SADP provides asynchronous session
establishment using signed prekey bundles, per-message forward secrecy
and post-compromise recovery through a Double-Ratchet-style message
ratchet, an optional hybrid post-quantum key-agreement profile based on
ML-KEM-768, and an authenticated opaque-broker profile with replay
protection. SADP is transport agnostic and is designed to be carried
over HTTP, message queues, and existing agent protocols such as A2A and
MCP without requiring those systems to be trusted with plaintext task
content. Capability-based delegation semantics and scoped context
disclosure are specified in a companion document.</t>
    </abstract>
  </front>
  <middle>

<section anchor="introduction">
      <name>Introduction</name>
      <section anchor="problem-statement">
        <name>Problem Statement</name>
        <t>Agentic AI systems increasingly move sensitive data and authority
through long chains of intermediaries: a user's device talks to a
personal agent, which delegates to specialist agents, which invoke
tools, all mediated by orchestration servers, brokers, queues, model
gateways, and logging layers. In deployed systems today, each of those
intermediaries typically sees task plaintext. Transport security
protects individual hops, but the orchestration layer itself operates
on cleartext prompts, documents, tool arguments, and results. That layer
includes the broker that stores and forwards messages, the gateway that
logs requests, and the framework that schedules agents.</t>
        <t>That default is a poor fit for legal, medical, financial, government,
and enterprise workflows, and it is an increasingly poor fit for
personal assistants that hold long-lived user memory. The current
generation of agent interoperability protocols reflects this gap: the
A2A protocol <xref target="A2A"/> secures hops with TLS and delegates authorization
to server-side policy, and the Model Context Protocol <xref target="MCP"/> adopts an
OAuth 2.1 resource-server model for tool access. Neither provides
end-to-end confidentiality of task content across an untrusted
intermediary, and neither binds a task's authorization to the
encrypted object that carries it.</t>
        <t>SADP addresses the confidentiality half of this problem. It defines an
encrypted, signed, individually routable protocol object, the task
capsule, together with the session, ratchet, and broker machinery
needed to deliver capsules asynchronously between principals that may
be offline, may run on multiple runtimes, and may never share a direct
network path. The authorization half consists of capability grants,
attenuated delegation chains, and cryptographically scoped context
disclosure. It is specified in the companion document
<xref target="I-D.atakora-wimse-sadp-delegation"/>.</t>
      </section>
      <section anchor="protocol-maturity-and-naming">
        <name>Protocol Maturity and Naming</name>
        <t>This revision is intended for experimentation and review. Neither this
specification nor its reference implementation has received independent
external cryptographic review, and the wire format is expected to change
as interoperability tests and formal analysis identify necessary
repairs. Deployments <bcp14>MUST</bcp14> treat the v0.2 profiles as experimental.</t>
        <t>The acronym SADP has appeared previously in IETF work for the unrelated
Scoped Address Discovery Protocol <xref target="I-D.ietf-mboned-sadp"/>. This document
uses SADP for the Secure Agent Delegation Protocol; the two protocols are
unrelated. A future publication path may choose a less ambiguous short name
if that avoids confusion in IETF registries or discussion.</t>
      </section>
      <section anchor="design-goals">
        <name>Design Goals</name>
        <t>SADP is designed to provide:</t>
        <ul spacing="normal">
          <li>
            <t>Confidentiality of task payloads, tool arguments, context, and
results from brokers, queues, gateways, logs, and unrelated runtimes.</t>
          </li>
          <li>
            <t>Integrity and authenticity of capsule headers, payloads, and
registry material.</t>
          </li>
          <li>
            <t>Asynchronous, offline-capable session establishment using signed
prekey bundles, following the design pioneered by X3DH <xref target="X3DH"/>.</t>
          </li>
          <li>
            <t>Per-message forward secrecy and post-compromise recovery through a
message ratchet derived from the Double Ratchet algorithm
<xref target="DOUBLERATCHET"/>.</t>
          </li>
          <li>
            <t>An optional hybrid post-quantum key-agreement profile combining
X25519 <xref target="RFC7748"/> with ML-KEM-768 <xref target="FIPS203"/>, following the hybrid
approach of PQXDH <xref target="PQXDH"/>.</t>
          </li>
          <li>
            <t>Multi-runtime agent identity, treating each runtime of an agent like
a device in multi-device secure messaging <xref target="SESAME"/>.</t>
          </li>
          <li>
            <t>An authenticated broker profile in which the broker routes and
stores opaque capsule bytes, authenticates requests by digital
signature, and enforces mailbox ownership without access to
plaintext.</t>
          </li>
          <li>
            <t>Transport agnosticism: SADP objects are self-contained and can be
carried over HTTP, WebSocket, message queues, or as opaque payloads
inside A2A messages and MCP tool calls.</t>
          </li>
        </ul>
        <t>SADP explicitly does not attempt to provide anonymous or
metadata-resistant routing, protection against a compromised endpoint
after decryption, model-behavior safety, or a global identity
governance framework. <xref target="security-considerations"/> discusses these
boundaries.</t>
      </section>
      <section anchor="relationship-to-a2a-mcp-and-agent-transports">
        <name>Relationship to A2A, MCP, and Agent Transports</name>
        <t>SADP is a layer, not a replacement. A2A <xref target="A2A"/> defines agent
discovery, agent cards, and task exchange between agent servers; MCP
<xref target="MCP"/> defines tool and resource access for model applications. Both
can carry SADP capsules as opaque payloads. When they do, the A2A
server or MCP host retains its routing and lifecycle role but loses
visibility into task content; only the intended recipient principal
can decrypt. Similarly, an ordinary message queue or mailbox service
can act as an SADP broker with no knowledge of the protocol beyond
byte storage, and a conforming SADP broker (<xref target="opaque-broker-profile"/>)
adds authenticated mailboxes, registry services, and receipts.</t>
      </section>
      <section anchor="relationship-to-prior-work">
        <name>Relationship to Prior Work</name>
        <t>SADP deliberately composes established cryptographic constructions
rather than inventing new ones, and this document credits those
constructions at the point of use. The asynchronous prekey handshake
derives from X3DH <xref target="X3DH"/>; the message ratchet derives from the
Double Ratchet <xref target="DOUBLERATCHET"/>; the hybrid post-quantum profile
follows PQXDH <xref target="PQXDH"/> and the subsequent post-quantum ratchet work
<xref target="SPQR"/>; the multi-runtime model follows Sesame <xref target="SESAME"/>. The
capability lineage in the companion document builds on Macaroons
<xref target="MACAROONS"/>, Biscuit <xref target="BISCUIT"/>, and UCAN <xref target="UCAN"/>, and its
on-behalf-of semantics relate to OAuth 2.0 Token Exchange <xref target="RFC8693"/>
and GNAP <xref target="RFC9635"/>.</t>
        <t>Adjacent protocol work exists and predates this document.
<xref target="I-D.chapman-a2a-mls"/> applies MLS <xref target="RFC9420"/> to A2A messages with
purpose binding; the AGNTCY SLIM project <xref target="SLIM"/> provides an
MLS-based encrypted session layer as an agent transport;
<xref target="I-D.asor-wimse-agent-delegation-chain"/> defines verifiable
attenuated delegation tokens for agent chains without an encryption
layer; <xref target="I-D.hamr-oauth-agent-delegation"/> defines an HTTP header
profile for attenuated cross-domain agent delegation;
<xref target="I-D.liu-oauth-chain-delegation"/> defines OAuth-based chained
delegation tokens for agent identities;
<xref target="I-D.li-oauth-delegated-authorization"/> defines constrained
client-issued delegated authorization tokens;
<xref target="I-D.singla-agent-identity-protocol"/> defines decentralized identity
and capability delegation for agents; <xref target="I-D.vandoulas-aidp"/> defines a
control-plane model for intent, authority, execution, and observation;
<xref target="I-D.nelson-agent-delegation-receipts"/> defines user-signed,
log-anchored delegation receipts; <xref target="I-D.sharif-attp"/> specifies an
agent trust transport framework for trust scoring and action-limit
enforcement; and <xref target="I-D.sharif-agent-transport-protocol"/> specifies an
asynchronous store-and-forward agent transport. Academic proposals address
authenticated delegation <xref target="SOUTH2025"/> and multi-agent governance
<xref target="SAGA2025"/>.</t>
        <t>What SADP contributes relative to that work is object-level rather
than channel-level end-to-end encryption. The unit of protection is
an individually signed, individually routable task capsule that
survives store-and-forward delivery through arbitrary intermediaries,
composed with capability-bound authorization and payload-blind audit
commitments in one protocol. In the v0.2
profile, task and context payloads are encrypted end-to-end, while
capability grants and audit records are authenticated outer capsule
fields that may reveal delegation metadata to brokers that store the
full capsule. A future private-delegation-evidence profile is expected
to move grants and detailed audit records inside an encrypted inner
body while leaving only public commitments in the outer capsule.
Group-channel approaches such as MLS excel when a stable group of
participants shares a conversation; SADP targets the delegation
topology, where each hop is a distinct pairwise relationship with
distinct authority, and where a task object must remain verifiable
and confidential as it is queued, retried, and re-routed.</t>
      </section>
      <section anchor="document-organization">
        <name>Document Organization</name>
        <t>This document specifies the SADP data model (<xref target="data-encoding"/>,
<xref target="task-capsules"/>), session establishment (<xref target="session-establishment"/>),
the message ratchet (<xref target="message-ratchet"/>), single-capsule payload
profiles (<xref target="payload-profiles"/>), the opaque broker profile
(<xref target="opaque-broker-profile"/>), metadata privacy
(<xref target="metadata-privacy-considerations"/>), and transport carriage
(<xref target="transport-adapters"/>). Capability grants, delegation chains,
caveats, scoped context disclosure, and the audit hash chain are
specified in <xref target="I-D.atakora-wimse-sadp-delegation"/>; this document
defines only the capsule fields that carry them.</t>
      </section>
    </section>
    <section anchor="terminology">
      <name>Terminology</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>

<dl>
        <dt>Principal:</dt>
        <dd>
          <t>An entity that participates in SADP with a stable identifier and
cryptographic key material. Principals include users, agents,
runtimes, tools, workspaces, and brokers.</t>
        </dd>
        <dt>Runtime:</dt>
        <dd>
          <t>An executing instance of an agent or tool, analogous to a device in
multi-device secure messaging <xref target="SESAME"/>. An agent identity is
stable across its runtimes; each runtime has its own key material
and registration.</t>
        </dd>
        <dt>Task Capsule (or Capsule):</dt>
        <dd>
          <t>The SADP protocol object: a JSON document with a cleartext routing
header, protocol metadata, authenticated capability grants and audit
records, and an encrypted task or context payload. In the v0.2
profile, capability and audit fields are outer authenticated fields
rather than encrypted inner fields.</t>
        </dd>
        <dt>Broker:</dt>
        <dd>
          <t>An untrusted store-and-forward service that accepts, stores, and
delivers opaque capsule bytes to recipient mailboxes and hosts the
runtime registry. A broker is trusted for availability, never for
confidentiality.</t>
        </dd>
        <dt>Mailbox:</dt>
        <dd>
          <t>The per-principal delivery queue a broker maintains.</t>
        </dd>
        <dt>Session:</dt>
        <dd>
          <t>The shared cryptographic state between two principals on one
communication edge, established as described in
<xref target="session-establishment"/> and advanced by the message ratchet.</t>
        </dd>
        <dt>Prekey Bundle:</dt>
        <dd>
          <t>Signed public key material a runtime publishes to the registry so
that senders can establish sessions while the runtime is offline,
following the design of <xref target="X3DH"/>.</t>
        </dd>
        <dt>One-Time Prekey:</dt>
        <dd>
          <t>A prekey published for single use and consumed at selection time.</t>
        </dd>
        <dt>Edge:</dt>
        <dd>
          <t>An ordered (local principal, remote principal, thread) tuple over
which one session is maintained.</t>
        </dd>
        <dt>Registry:</dt>
        <dd>
          <t>The broker-hosted directory of runtime records, signing keys,
encryption keys, and prekey bundles.</t>
        </dd>
        <dt>Scheme Identifier:</dt>
        <dd>
          <t>A versioned ASCII string naming a cryptographic profile, for
example "sadp-session-init-x25519-hkdf-sha256-v0.2". Every signed
or encrypted SADP structure names its scheme explicitly.</t>
        </dd>
      </dl>
    </section>
    <section anchor="protocol-overview">
      <name>Protocol Overview</name>
      <t>SADP layers as follows:</t>
      <artwork><![CDATA[
+--------------------------------------------------------------+
| Application layer: agent tasks, tool calls, results, memory  |
+--------------------------------------------------------------+
| Delegation layer: capabilities, delegation chains, audit     |
|   (specified in the companion document)                      |
+--------------------------------------------------------------+
| Capsule layer: signed, encrypted task capsules (this doc)    |
+--------------------------------------------------------------+
| Session layer: prekey handshake, ratchet, AEAD (this doc)    |
+--------------------------------------------------------------+
| Broker/transport: opaque mailboxes over HTTP, A2A, MCP,      |
|   queues (this doc, sections 10 and 12)                      |
+--------------------------------------------------------------+
]]></artwork>
      <t>A typical exchange proceeds as follows:</t>
      <ol spacing="normal" type="1"><li>
          <t>Each runtime generates an Ed25519 <xref target="RFC8032"/> signing keypair, an
X25519 <xref target="RFC7748"/> encryption keypair, optionally an ML-KEM-768
<xref target="FIPS203"/> keypair, and registers with a broker, proving
possession of its signing key (<xref target="registration"/>).</t>
        </li>
        <li>
          <t>A sender fetches the recipient's prekey bundle from the registry,
verifies its signature and expiry, and derives a session root key
using the signed session-initiation handshake
(<xref target="session-initiation"/>).</t>
        </li>
        <li>
          <t>The sender builds a task capsule: cleartext routing header,
authenticated capability grants and audit commitments as needed,
and a task or context payload encrypted under the session's message ratchet
(<xref target="message-ratchet"/>).</t>
        </li>
        <li>
          <t>The broker authenticates the sender's request by signature
(<xref target="request-authentication"/>), performs mailbox-level authorization,
stores the opaque capsule, and emits delivery events.</t>
        </li>
        <li>
          <t>The recipient fetches the capsule, performs the validation sequence
of <xref target="capsule-validation"/>, verifies capabilities and audit linkage
per <xref target="I-D.atakora-wimse-sadp-delegation"/>, decrypts the encrypted
payload, and only then releases plaintext to the application.</t>
        </li>
        <li>
          <t>Replies and delegated subtasks flow the same way on their own
edges, advancing or establishing sessions as needed.</t>
        </li>
      </ol>
    </section>
    <section anchor="principal-identifiers">
      <name>Principal Identifiers</name>
      <t>A principal identifier is a sequence of one or more segments separated
by "/" (U+002F). Each segment has the form <tt>kind:name</tt>, where <tt>kind</tt>
is one of:</t>
      <artwork><![CDATA[
user | device | agent | runtime | tool | workspace |
broker | memory | context
]]></artwork>
      <t>and <tt>name</tt> is a nonempty token of ASCII letters, digits, "-", "_", and
".". Examples:</t>
      <artwork><![CDATA[
user:alice/device:phone
agent:contract-reviewer/runtime:prod-a
tool:pdf-parser/runtime:prod-b
workspace:acme
]]></artwork>
      <t>The identifier without its trailing <tt>runtime:*</tt> or <tt>device:*</tt> segment
is the principal's "subject" and groups the runtimes or devices of a
single actor. Implementations <bcp14>MUST</bcp14> reject identifiers with unknown
segment kinds, empty segments, or characters outside the token
alphabet.</t>
    </section>
    <section anchor="data-encoding">
      <name>Data Encoding</name>
      <section anchor="canonical-json">
        <name>Canonical JSON</name>
        <t>SADP structures are JSON <xref target="RFC8259"/> documents. Wherever this document
requires canonical bytes, such as signing inputs and hash inputs, the canonical
form is defined as:</t>
        <ul spacing="normal">
          <li>
            <t>UTF-8 encoding;</t>
          </li>
          <li>
            <t>object member names sorted lexicographically by Unicode code point
at every nesting level;</t>
          </li>
          <li>
            <t>no duplicate member names (parsers <bcp14>MUST</bcp14> reject duplicates);</t>
          </li>
          <li>
            <t>no insignificant whitespace;</t>
          </li>
          <li>
            <t>array order preserved;</t>
          </li>
          <li>
            <t>numbers restricted to integers within the IEEE-754 exact range.</t>
          </li>
        </ul>
        <t>This canonical form is a deliberately restricted profile compatible
with the JSON Canonicalization Scheme <xref target="RFC8785"/>; implementations <bcp14>MAY</bcp14>
use an RFC 8785 canonicalizer, provided the restrictions above are
enforced on input.</t>
      </section>
      <section anchor="binary-values-and-timestamps">
        <name>Binary Values and Timestamps</name>
        <t>Binary values are encoded as base64url without padding. Timestamps in
human-facing document fields use RFC 3339 <xref target="RFC3339"/>; timestamps
inside signing inputs and validation APIs use integer seconds since
the Unix epoch, to keep canonical bytes unambiguous.</t>
      </section>
      <section anchor="hashing">
        <name>Hashing</name>
        <t>All hashes in this document are SHA-256 <xref target="RFC6234"/> and are encoded as
base64url without padding unless stated otherwise.</t>
      </section>
      <section anchor="unknown-fields-and-criticality">
        <name>Unknown Fields and Criticality</name>
        <t>Capsule headers carry a <tt>critical</tt> array naming top-level fields whose
semantics a receiver must understand. A receiver <bcp14>MUST</bcp14> reject a capsule
that lists a critical field the receiver does not implement, and <bcp14>MUST</bcp14>
ignore unknown fields that are not listed as critical. This provides
forward compatibility without silent security downgrade.</t>
      </section>
    </section>
    <section anchor="task-capsules">
      <name>Task Capsules</name>
      <section anchor="capsule-header">
        <name>Capsule Header</name>
        <t>Every capsule carries the following cleartext header fields:</t>
        <artwork><![CDATA[
{
  "version": "sadp/0.1",
  "type": "task_create",
  "capsule_id": "cap_01J00000000000000000000000",
  "task_id": "task_01J00000000000000000000000",
  "thread_id": "thread_01J00000000000000000000000",
  "turn_id": "turn_01J00000000000000000000000",
  "from": "user:alice/device:phone",
  "to": "agent:contract-reviewer/runtime:prod-a",
  "created_at": "2026-09-19T12:00:00Z",
  "expires_at": "2026-09-19T13:00:00Z",
  "critical": ["policy", "capabilities", "audit"]
}
]]></artwork>
        <t><tt>version</tt> identifies the capsule envelope format. The envelope version
is deliberately decoupled from cryptographic profile versions: the
security profiles defined in this document carry "-v0.2" scheme
identifiers inside an envelope whose format is unchanged from
"sadp/0.1". <tt>capsule_id</tt> <bcp14>MUST</bcp14> be unique per sender; receivers and
brokers use it for replay rejection and idempotency. <tt>expires_at</tt> is
mandatory; receivers <bcp14>MUST</bcp14> reject expired capsules.</t>
      </section>
      <section anchor="message-types">
        <name>Message Types</name>
        <t>The initial message-type registry (<xref target="iana-considerations"/>) contains:</t>
        <artwork><![CDATA[
session_init, session_repair, runtime_added, runtime_removed,
task_create, task_update, task_cancel, task_result,
delegate_create, delegate_result, tool_call, tool_result,
memory_read_request, memory_read_result,
memory_write_request, memory_write_result,
receipt, policy_violation
]]></artwork>
      </section>
      <section anchor="capsule-body">
        <name>Capsule Body</name>
        <t>Beyond the header, a capsule <bcp14>MAY</bcp14> carry:</t>
        <dl>
          <dt><tt>policy</tt>:</dt>
          <dd>
            <t>Cleartext delegation policy hints (allowed delegatees, allowed and
forbidden tools, retention). Policy fields are advisory routing
metadata; enforcement derives from capability grants
(<xref target="I-D.atakora-wimse-sadp-delegation"/>).</t>
          </dd>
          <dt><tt>capabilities</tt>:</dt>
          <dd>
            <t>An array of signed capability grants, possibly chained. In v0.2 this
field is an outer authenticated capsule field and may be visible to
brokers that store the full capsule. Format and verification rules
are specified in <xref target="I-D.atakora-wimse-sadp-delegation"/>.</t>
          </dd>
          <dt><tt>context_refs</tt>:</dt>
          <dd>
            <t>References to encrypted context blobs, carrying a resource
identifier, content type, and an encrypted key reference; the key
material is released only against valid capabilities.</t>
          </dd>
          <dt><tt>audit</tt> (and, for delegation, <tt>parent_audit</tt>):</dt>
          <dd>
            <t>Hash-chain audit records binding the capsule to its delegation
lineage. In v0.2 these records are outer authenticated capsule
fields and may reveal lineage shape to brokers. They are specified
in <xref target="I-D.atakora-wimse-sadp-delegation"/>.</t>
          </dd>
          <dt><tt>session_init</tt>:</dt>
          <dd>
            <t>A session-initiation envelope (<xref target="session-initiation"/>), present on
the first capsule of an edge.</t>
          </dd>
          <dt><tt>encrypted_payload</tt>:</dt>
          <dd>
            <t>The encrypted task content: a ratchet message
(<xref target="message-ratchet"/>) or a single-capsule AEAD payload
(<xref target="payload-profiles"/>).</t>
          </dd>
          <dt><tt>key_agreement</tt>:</dt>
          <dd>
            <t>Present with the pre-ratchet payload profile only
(<xref target="payload-profiles"/>).</t>
          </dd>
        </dl>
      </section>
      <section anchor="capsule-validation">
        <name>Capsule Validation Order</name>
        <t>Receivers <bcp14>MUST</bcp14> validate in the following order, and <bcp14>MUST NOT</bcp14> release
encrypted payload plaintext to application code before all applicable
steps pass:</t>
        <ol spacing="normal" type="1"><li>
            <t>Parse with duplicate-key rejection.</t>
          </li>
          <li>
            <t>Reject unsupported envelope versions.</t>
          </li>
          <li>
            <t>Reject malformed principal identifiers.</t>
          </li>
          <li>
            <t>Reject unknown critical fields.</t>
          </li>
          <li>
            <t>Reject expired capsules.</t>
          </li>
          <li>
            <t>Reject replayed capsule identifiers and, for ratchet messages,
replayed message counters.</t>
          </li>
          <li>
            <t>Verify signatures and authentication tags.</t>
          </li>
          <li>
            <t>Verify capability chains: holder, resource, action, task binding,
expiry, delegation depth, and caveats
(<xref target="I-D.atakora-wimse-sadp-delegation"/>).</t>
          </li>
          <li>
            <t>Verify audit parent linkage
(<xref target="I-D.atakora-wimse-sadp-delegation"/>).</t>
          </li>
          <li>
            <t>Decrypt the encrypted payload.</t>
          </li>
          <li>
            <t>Release plaintext to the application.</t>
          </li>
        </ol>
        <t>Debug or inspection modes that bypass any step <bcp14>MUST</bcp14> be impossible to
confuse with production validation (for example, distinct function
names and distinct result types).</t>
      </section>
    </section>
    <section anchor="session-establishment">
      <name>Session Establishment</name>
      <section anchor="prekey-bundles">
        <name>Prekey Bundles</name>
        <t>Each registered runtime publishes a signed prekey bundle to the
registry:</t>
        <artwork><![CDATA[
{
  "principal": "agent:contract-reviewer/runtime:prod-a",
  "subject": "agent:contract-reviewer",
  "runtime_id": "prod-a",
  "signing_public_key": "<base64url Ed25519>",
  "encryption_public_key": "<base64url X25519>",
  "ml_kem768_encapsulation_key": "<base64url ML-KEM-768 ek>",
  "prekey_id": "prekey_agent_a_1",
  "prekey_kind": "runtime_static",
  "scheme": "sadp-prekey-ed25519-v0.1",
  "created_at_epoch_seconds": 1789819200,
  "expires_at_epoch_seconds": 1789905600,
  "signature": "<base64url Ed25519>"
}
]]></artwork>
        <t>The signature is computed with the runtime's Ed25519 signing key over
a domain-separated canonical encoding that binds every field above
except <tt>signature</tt>. Registries <bcp14>MUST</bcp14> verify prekey signatures and
expiry at publication and at lookup, and <bcp14>MUST</bcp14> reject tampered or
expired bundles. The <tt>ml_kem768_encapsulation_key</tt> field is <bcp14>OPTIONAL</bcp14>
and enables the hybrid profile of <xref target="hybrid-profile"/>.</t>
      </section>
      <section anchor="one-time-prekeys">
        <name>One-Time Prekeys</name>
        <t>Runtimes <bcp14>SHOULD</bcp14> publish batches of signed one-time prekeys. Prekey
selection prefers an unconsumed one-time prekey and falls back to the
runtime-static prekey; a one-time prekey is consumed atomically at
selection. Because consumption is a state change that an attacker
could abuse to exhaust the supply, prekey lookup requires an
authenticated request from a registered principal
(<xref target="request-authentication"/>). Runtimes can monitor inventory through
the registry's inventory interface and <bcp14>MUST</bcp14> tolerate static-prekey
fallback, as in <xref target="X3DH"/>.</t>
      </section>
      <section anchor="session-initiation">
        <name>Session Initiation</name>
        <t>The v0.2 session-initiation profile is identified by:</t>
        <artwork><![CDATA[
sadp-session-init-x25519-hkdf-sha256-v0.2
]]></artwork>
        <t>The initiator:</t>
        <ol spacing="normal" type="1"><li>
            <t>Fetches and verifies the responder's prekey bundle.</t>
          </li>
          <li>
            <t>Generates a fresh ephemeral X25519 keypair.</t>
          </li>
          <li>
            <t>Computes the Diffie-Hellman shared secret between its ephemeral
private key and the responder's prekey.</t>
          </li>
          <li>
            <t>If the bundle carries an ML-KEM-768 encapsulation key and local
policy selects the hybrid suite, encapsulates to it
(<xref target="hybrid-profile"/>).</t>
          </li>
          <li>
            <t>Builds the session transcript (<xref target="transcript"/>).</t>
          </li>
          <li>
            <t>Signs the transcript with its Ed25519 identity signing key.</t>
          </li>
          <li>
            <t>Derives the session root key: HKDF-SHA256 <xref target="RFC5869"/> with the
transcript as salt, the key-agreement output as input keying
material, and the fixed info string "SADP session root v0.1".
(Derivation labels are versioned independently of scheme
identifiers and are unchanged from the prior profile revision.)</t>
          </li>
        </ol>
        <t>The session-initiation envelope is:</t>
        <artwork><![CDATA[
{
  "scheme": "sadp-session-init-x25519-hkdf-sha256-v0.2",
  "session_id": "<base64url SHA-256 of root key>",
  "initiator": "user:alice/device:phone",
  "responder": "agent:contract-reviewer/runtime:prod-a",
  "selected_prekey_id": "prekey_agent_a_1",
  "selected_prekey_kind": "runtime_static",
  "initiator_ephemeral_public_key": "<base64url X25519>",
  "responder_identity_public_key": "<base64url X25519>",
  "initiator_signing_public_key": "<base64url Ed25519>",
  "initiator_signature": "<base64url Ed25519>",
  "transcript_hash": "<base64url SHA-256>",
  "algorithm_suite": "x25519-hkdf-sha256+ml-kem-768",
  "pq_hybrid_scheme": "sadp-ml-kem-768-v0.1",
  "pq_kem_ciphertext": "<base64url ML-KEM-768 ct>",
  "repair_for_session_id": "<base64url prior session id>",
  "repair_epoch": 1
}
]]></artwork>
        <t><tt>initiator_signing_public_key</tt> and <tt>initiator_signature</tt> are <bcp14>REQUIRED</bcp14>.
The PQ fields and repair fields are <bcp14>OPTIONAL</bcp14>.</t>
      </section>
      <section anchor="transcript">
        <name>Session Transcript</name>
        <t>The transcript is a text string: the line
<tt>SADP session transcript v0.2</tt>, followed by one <tt>name:value</tt> line per
field, in exactly this order:</t>
        <artwork><![CDATA[
scheme, initiator, responder, selected_prekey_id,
selected_prekey_kind, initiator_ephemeral_public_key,
responder_identity_public_key, initiator_signing_public_key,
algorithm_suite, pq_hybrid_scheme, pq_kem_ciphertext,
repair_for_session_id, repair_epoch
]]></artwork>
        <t>Absent optional fields contribute the literal value <tt>null</tt>.
<tt>transcript_hash</tt> is the SHA-256 of the transcript string.</t>
        <t>Because the algorithm suite and the ML-KEM ciphertext are inside the
transcript, and the transcript is signed, an attacker who strips or
alters the post-quantum component, substitutes a prekey, or replaces
the ephemeral key invalidates the signature. This is the downgrade
binding: no shared-secret material ever appears on the wire, and no
commitment to shared-secret bytes is published. (An earlier profile
revision published a hash commitment to the PQ shared secret; it has
been removed because it added no binding beyond the signed ciphertext
and turned ML-KEM implicit rejection into an observable decapsulation
oracle.)</t>
      </section>
      <section anchor="initiator-authentication">
        <name>Initiator Authentication</name>
        <t><tt>initiator_signature</tt> is an Ed25519 signature over the byte string:</t>
        <artwork><![CDATA[
"SADP session init signature v0.2\n" || transcript
]]></artwork>
        <t>A responder <bcp14>MUST</bcp14>, before deriving any key material:</t>
        <ol spacing="normal" type="1"><li>
            <t>Recompute the transcript from the envelope fields and verify
<tt>transcript_hash</tt>.</t>
          </li>
          <li>
            <t>Verify <tt>initiator_signature</tt> against
<tt>initiator_signing_public_key</tt>.</t>
          </li>
          <li>
            <t>Bind the key to the claimed identity: a responder using a registry
<bcp14>MUST</bcp14> resolve the registered signing key for the <tt>initiator</tt>
principal and reject the envelope if it differs from
<tt>initiator_signing_public_key</tt>. Deployments without a registry
<bcp14>MUST</bcp14> surface the observed key to the application for explicit
trust establishment; silent trust-on-first-use is NOT permitted as
a library default.</t>
          </li>
        </ol>
        <t>The responder authenticates implicitly: only the holder of the private
key matching the selected prekey (and, in the hybrid suite, the ML-KEM
decapsulation key) can derive the root key and therefore read or
produce ratchet traffic. This asymmetric design, with signature-based
explicit authentication of the initiator and key-possession-based
implicit authentication of the responder, parallels the deniability
tradeoff discussion in <xref target="X3DH"/>; SADP chooses explicit initiator
authentication because agent workflows require attributable task
submission, and deniability is a non-goal.</t>
      </section>
      <section anchor="hybrid-profile">
        <name>Hybrid Post-Quantum Profile</name>
        <t>The hybrid suite <tt>x25519-hkdf-sha256+ml-kem-768</tt> follows the
construction pattern of PQXDH <xref target="PQXDH"/>: the initiator encapsulates to
the responder's ML-KEM-768 <xref target="FIPS203"/> encapsulation key, carries the
ciphertext in <tt>pq_kem_ciphertext</tt>, and the root-key input keying
material becomes the labeled concatenation:</t>
        <artwork><![CDATA[
"x25519:" || DH_shared_secret || ";pq:" || ML-KEM_shared_secret
]]></artwork>
        <t>Both components are fixed length, so the labeled concatenation is
injective. The security goal is that an adversary must break both
X25519 and ML-KEM-768 to recover the session root
("harvest-now-decrypt-later" resistance for recorded traffic).
Post-quantum protection of the ratchet itself (as in <xref target="SPQR"/>) is out
of scope for this revision and identified as future work.</t>
      </section>
      <section anchor="profile-negotiation-and-downgrade-rules">
        <name>Profile Negotiation and Downgrade Rules</name>
        <t>Three session-start profiles exist: <tt>x25519</tt> (no PQ fields) and
<tt>x25519+ml-kem-768</tt>, plus a test-only profile that injects an external
PQ secret on both sides for interoperability harnesses and <bcp14>MUST NOT</bcp14> be
enabled in production. Rules:</t>
        <ul spacing="normal">
          <li>
            <t>A sender <bcp14>MUST</bcp14> prefer the hybrid suite when the selected prekey
bundle carries an ML-KEM encapsulation key, and <bcp14>MUST NOT</bcp14> silently
downgrade; downgrade requires explicit local policy.</t>
          </li>
          <li>
            <t>The chosen <tt>algorithm_suite</tt> is bound in the signed transcript;
responders <bcp14>MUST</bcp14> reject a suite inconsistent with the envelope's
fields.</t>
          </li>
          <li>
            <t>Brokers are not negotiators: they store and serve prekey-bundle
fields opaquely after signature validation.</t>
          </li>
        </ul>
      </section>
      <section anchor="session-repair">
        <name>Session Repair</name>
        <t>When a runtime rotates keys or loses state, the initiator starts a
replacement session whose envelope carries <tt>repair_for_session_id</tt>
and <tt>repair_epoch</tt>, binding the replacement to the prior session
inside the signed transcript. Responders <bcp14>SHOULD</bcp14> treat repair
envelopes for unknown prior sessions as fresh sessions and <bcp14>MUST NOT</bcp14>
allow a repair to resurrect a revoked runtime.</t>
      </section>
    </section>
    <section anchor="message-ratchet">
      <name>Message Ratchet</name>
      <t>The v0.2 message ratchet profile is identified by:</t>
      <artwork><![CDATA[
sadp-ratchet-hkdf-chacha20poly1305-v0.2
]]></artwork>
      <t>It is a Double-Ratchet-style construction <xref target="DOUBLERATCHET"/> with
per-direction symmetric chains and X25519 DH ratchet steps.</t>
      <section anchor="session-state">
        <name>Session State</name>
        <t>Session state is local-only and <bcp14>MUST NOT</bcp14> be transmitted through a
broker. It comprises the role (initiator or responder), send and
receive chain keys, per-direction chain anchors (the chain key at
counter zero of the current DH epoch), send and receive counters, DH
epoch counters for both directions, the local DH keypair, the last
observed remote DH public key, and a bounded skipped-message-key
cache.</t>
      </section>
      <section anchor="key-derivation">
        <name>Key Derivation</name>
        <t>All derivations are HKDF-SHA256 <xref target="RFC5869"/>, written below as
HKDF(salt, IKM, info). BE64(x) is the 64-bit big-endian encoding of
x. For a chain key CK, message counter n, and DH epoch e:</t>
        <artwork><![CDATA[
message_key(n) = HKDF(CK, BE64(n),
                      "SADP ratchet message key v0.1" || BE64(n))
next_chain_key = HKDF(CK, "next", "SADP ratchet next chain v0.1")
nonce(n)       = HKDF(message_key(n), BE64(n),
                      "SADP ratchet nonce v0.2")   (12 bytes)
]]></artwork>
        <t>A DH ratchet step at epoch e derives the new chain key from the
current epoch's chain anchor CA (not the position-dependent current
chain key, so both peers derive the same value regardless of how many
messages each has processed) and the fresh X25519 shared secret ss:</t>
        <artwork><![CDATA[
chain_key(e) = HKDF("SADP DH ratchet step",
                    CA || ss || BE64(e),
                    "SADP DH ratchet chain v0.1")
]]></artwork>
        <t>The new chain key also becomes the new epoch's chain anchor. The AEAD
is ChaCha20-Poly1305 <xref target="RFC8439"/>; because each message key is used
for exactly one encryption, nonce uniqueness per key is structural.
Implementations <bcp14>MUST</bcp14> use HKDF and HMAC from audited library
implementations rather than reimplementations, and <bcp14>MUST</bcp14> zeroize chain
keys, chain anchors, message keys, and DH private keys when they are
discarded.</t>
      </section>
      <section anchor="message-format">
        <name>Message Format</name>
        <artwork><![CDATA[
{
  "scheme": "sadp-ratchet-hkdf-chacha20poly1305-v0.2",
  "session_id": "<base64url>",
  "dh_epoch": 1,
  "dh_public_key": "<base64url X25519>",
  "counter": 0,
  "nonce": "<base64url 12 bytes>",
  "ciphertext": "<base64url ciphertext || tag>"
}
]]></artwork>
      </section>
      <section anchor="associated-data-binding">
        <name>Associated Data Binding</name>
        <t>The AEAD associated data is:</t>
        <artwork><![CDATA[
caller_aad || "\n" ||
"sadp-ratchet-header-v0.2:" || session_id || ":" ||
dh_epoch || ":" || dh_public_key || ":" || counter
]]></artwork>
        <t>where <tt>caller_aad</tt> binds capsule metadata (at minimum thread, turn,
from, and to), and an absent <tt>dh_public_key</tt> contributes the literal
string <tt>null</tt>. Binding the ratchet header into the AAD makes header
tampering detectable at AEAD verification rather than producing
undefined state transitions.</t>
      </section>
      <section anchor="receiver-processing-verify-before-commit">
        <name>Receiver Processing: Verify Before Commit</name>
        <t>A receiver <bcp14>MUST</bcp14> process an incoming ratchet message against a working
copy of session state and commit that state only after the AEAD opens
successfully. A message that fails authentication <bcp14>MUST</bcp14> leave session
state exactly as it was, including DH-epoch state and counters. This
rule exists because an earlier revision applied the DH ratchet step
before verification, allowing a single forged header to permanently
desynchronize a session through an unauthenticated denial of service.</t>
        <t>Receivers <bcp14>MUST</bcp14> reject replayed (dh_epoch, counter) pairs.</t>
      </section>
      <section anchor="dh-ratchet-steps-and-skipped-keys">
        <name>DH Ratchet Steps and Skipped Keys</name>
        <t>Responders perform a send-side DH ratchet on their first reply. When a
receiver observes a new remote <tt>dh_public_key</tt>, it first derives and
caches message keys for the remaining expected counters of the current
receive chain, so that legitimately delayed messages from the prior
epoch remain decryptable, and then advances the receive chain to the
new epoch. Skipped keys are cached keyed by (dh_epoch, counter), with
a global bound of 64 entries; on overflow the oldest epoch is evicted
first. Cached skipped keys <bcp14>MUST</bcp14> be zeroized on use or eviction.</t>
      </section>
    </section>
    <section anchor="payload-profiles">
      <name>Single-Capsule Payload Profiles</name>
      <t>Two payload profiles exist for capsules outside a ratcheted session;
both are intended for development, fixtures, and first-contact
messages, and ratcheted sessions <bcp14>SHOULD</bcp14> be used for all multi-message
exchanges.</t>
      <dl>
        <dt><tt>sadp-aead-chacha20poly1305-v0.1</tt>:</dt>
        <dd>
          <t>Direct AEAD with a caller-provisioned 32-byte key, 12-byte nonce,
and associated data binding
<tt>"sadp-capsule-v0.1:" || capsule_id || ":" || from || ":" || to</tt>.</t>
        </dd>
        <dt><tt>sadp-pre-ratchet-x25519-hkdf-sha256-v0.1</tt>:</dt>
        <dd>
          <t>A fresh sender-ephemeral X25519 key against the recipient's static
encryption key; the AEAD key is HKDF-SHA256 over the shared secret
with the capsule-metadata associated data as salt. This profile
provides confidentiality from the broker but neither sender
authentication at the cryptographic layer nor post-compromise
recovery, and <bcp14>MUST NOT</bcp14> be used where those properties are required.</t>
        </dd>
      </dl>
    </section>
    <section anchor="opaque-broker-profile">
      <name>Opaque Broker Profile</name>
      <section anchor="broker-role">
        <name>Broker Role</name>
        <t>A conforming broker <bcp14>MAY</bcp14> route capsule bytes by recipient mailbox,
store them durably, return them in insertion order, delete by capsule
identifier, and inspect the minimal envelope metadata needed for
mailbox behavior. A broker <bcp14>MUST NOT</bcp14> decrypt payloads, mutate capsule
bytes, log payload bytes, or require access to payload keys. The
mailbox interface is:</t>
        <artwork><![CDATA[
POST   /mailboxes/{recipient}/capsules
GET    /mailboxes/{recipient}/capsules
DELETE /mailboxes/{recipient}/capsules/{capsule_id}
GET    /mailboxes/{recipient}/receipts
GET    /mailboxes/{recipient}/events
POST   /mailboxes/{recipient}/policy/send
GET    /mailboxes/{recipient}/policy/send
POST   /mailboxes/{recipient}/compact
]]></artwork>
        <t>together with registry endpoints for runtime registration, prekey
lookup, one-time prekey publication and inventory, issuer-key lookup,
and revocation.</t>
      </section>
      <section anchor="request-authentication">
        <name>Request Authentication</name>
        <t>Authenticated broker requests carry:</t>
        <artwork><![CDATA[
X-SADP-Principal:  agent:contract-reviewer/runtime:prod-a
X-SADP-Request-Id: req_<base64url of 16 random bytes>
X-SADP-Timestamp:  <integer epoch seconds>
X-SADP-Audience:   <audience the client signed>
X-SADP-Signature:  <base64url Ed25519>
]]></artwork>
        <t>The signature scheme is <tt>sadp-request-ed25519-v0.2</tt>. The signing input
is:</t>
        <artwork><![CDATA[
"SADP broker request v0.2\n" || canonical_json({
  "scheme": "sadp-request-ed25519-v0.2",
  "principal": principal,
  "method": method,
  "path": path,
  "request_id": request_id,
  "body_sha256": SHA-256(body),
  "timestamp_epoch_seconds": timestamp,
  "audience": audience
})
]]></artwork>
        <t><tt>audience</tt> is the broker identifier as the client targets it: the
lowercased scheme, host, and port of the request URL with no trailing
slash. The client declares the audience it signed in the
<tt>X-SADP-Audience</tt> field; a verifier <bcp14>MAY</bcp14> instead derive candidate
audience values from the request URL it received. The broker verifies
the signature against the registered signing key of the claimed
principal and <bcp14>MUST</bcp14> reject requests whose audience does not match its
own identity (configured explicitly or derived from the request URL).
Binding the audience prevents a signed request captured at one broker
from being replayed at another.</t>
        <t>This design is deliberately similar in spirit to HTTP message
signatures <xref target="RFC9421"/>; SADP uses its own canonical-JSON signing input
so that identical logic can run over non-HTTP carriage
(<xref target="transport-adapters"/>).</t>
      </section>
      <section anchor="replay-protection">
        <name>Replay Protection</name>
        <t>Brokers <bcp14>MUST</bcp14> reject a request whose timestamp is more than 300 seconds
from server time in either direction, and <bcp14>MUST</bcp14> reject a request whose
<tt>request_id</tt> has been seen from the same principal within the
retention window. The replay cache <bcp14>MUST</bcp14> retain identifiers for at
least twice the timestamp window. <tt>request_id</tt> <bcp14>MUST</bcp14> be generated from
at least 16 bytes of cryptographically secure randomness; derivation
from request content is forbidden, because deterministic identifiers
turn the replay cache into a false-negative generator for legitimately
repeated operations and a false-positive oracle otherwise.</t>
      </section>
      <section anchor="registration">
        <name>Registration and Proof of Possession</name>
        <t>Runtime registration <bcp14>MUST</bcp14> prove possession of the submitted signing
key: the registration record carries a prekey bundle whose signature
is verified against the submitted signing key. A broker <bcp14>MUST</bcp14> apply the
following state rules:</t>
        <ul spacing="normal">
          <li>
            <t>Creating a new principal record requires proof of possession, and,
where deployed, transport-level identity: with mutual TLS, the
verified client-certificate leaf <bcp14>MUST</bcp14> carry a URI SAN of the form
<tt>sadp-principal:&lt;runtime-principal&gt;</tt> matching the submitted
principal.</t>
          </li>
          <li>
            <t>Updating an existing record, including publishing new prekeys or
rotating keys, requires an authenticated request under the
currently registered signing key, mutual-TLS identity, or an
administrator signature. Unauthenticated re-registration of an
existing principal <bcp14>MUST</bcp14> be rejected; a registry upsert that
replaces a principal's keys is an account takeover.</t>
          </li>
          <li>
            <t>A revoked runtime <bcp14>MUST NOT</bcp14> be re-registerable except by an
administrator.</t>
          </li>
          <li>
            <t>Anonymous registration modes are development conveniences and <bcp14>MUST</bcp14>
be explicit opt-in configuration, never a default.</t>
          </li>
        </ul>
      </section>
      <section anchor="authorization-matrix">
        <name>Authorization Matrix</name>
        <t>A broker <bcp14>MUST</bcp14> enforce, per authenticated principal: only the mailbox
principal may read, delete, or compact its mailbox and read its
receipts, events, and send policy; only a runtime may publish its own
prekeys or read its inventory; any active registered principal may
send to an active recipient subject to the recipient's send policy;
a runtime may revoke itself; administrators (a distinct signing key)
may revoke any runtime. A capsule identifier reused with different
bytes <bcp14>MUST</bcp14> be rejected; an exact byte-identical resend <bcp14>MUST</bcp14> be
idempotent.</t>
      </section>
      <section anchor="send-policy">
        <name>Send Policy</name>
        <t>Recipients own an allow/deny policy over senders, optionally scoped by
message type, thread, delegated-resource prefix, delegation status,
and fanout count. The v0.2 default remains allow for compatibility;
deployments handling sensitive workloads <bcp14>SHOULD</bcp14> configure default
deny.</t>
      </section>
      <section anchor="receipts-events-and-compaction">
        <name>Receipts, Events, and Compaction</name>
        <t>Brokers persist delivery receipts and emit mailbox events as an
event stream with durable cursors, supporting both snapshot reads and
live streaming. Replay-cache compaction is available to the mailbox
owner but <bcp14>MUST</bcp14> enforce a minimum retained-identifier floor; a
compaction request below the floor is rejected, because trimming the
replay cache below recent traffic re-opens replay.</t>
      </section>
    </section>
    <section anchor="metadata-privacy-considerations">
      <name>Metadata Privacy Considerations</name>
      <t>SADP v0.2 is an opaque-payload routing profile, not an anonymity
system. A broker observes sender and recipient principals, capsule
identifiers, capability grant metadata, audit records, sizes, timing,
and registration metadata. It does not observe encrypted task payload
or context plaintext. Deployments for which relationship, grant,
resource-name, or timing metadata is sensitive should apply the staged
hardening profiles, which are informative here:</t>
      <ul spacing="normal">
        <li>
          <t>M1 (minimization): random opaque capsule identifiers, padded payload
buckets, redacted structured logs, retention limits.</t>
        </li>
        <li>
          <t>M2 (sealed batch routing): recipient hints moved out of URL paths,
batched multi-recipient delivery, timing jitter, queue-depth hiding.</t>
        </li>
        <li>
          <t>M3 (pairwise routing identifiers): opaque per-edge mailbox
identifiers replacing stable principal names on routing operations.</t>
        </li>
        <li>
          <t>M4 (sender-hidden delivery): token-based delivery in which the
sender's stable identity appears only inside the encrypted capsule.</t>
        </li>
        <li>
          <t>M5 (traffic-analysis resistance): cover traffic, fixed-size frames,
batched delivery windows, and mix-style relays.</t>
        </li>
      </ul>
      <t>Future wire revisions reserve fields for opaque routing identifiers,
routing epochs, padding policy identifiers, and delivery-token
commitments, authenticated as associated data so endpoints can detect
broker substitution.</t>
    </section>
    <section anchor="transport-adapters">
      <name>Transport Adapters</name>
      <t>SADP objects are self-contained JSON documents; carriage requires only
that bytes arrive intact.</t>
      <dl>
        <dt>HTTP:</dt>
        <dd>
          <t>The broker profile of <xref target="opaque-broker-profile"/> is itself an HTTP
<xref target="RFC9110"/> API and is the reference transport.</t>
        </dd>
        <dt>A2A:</dt>
        <dd>
          <t>An SADP capsule is carried as an opaque payload part inside an A2A
message or task <xref target="A2A"/>. The A2A server routes and manages task
lifecycle without payload visibility. Agent cards <bcp14>MAY</bcp14> advertise
SADP support and registry location.</t>
        </dd>
        <dt>MCP:</dt>
        <dd>
          <t>An encrypted tool invocation is carried as an SADP <tt>tool_call</tt>
capsule inside an MCP <xref target="MCP"/> tool call. The tool runtime, as a
distinct SADP principal, decrypts arguments and encrypts results;
the MCP host sees only capsule bytes. This requires the tool
runtime, not the host, to hold the recipient keys.</t>
        </dd>
        <dt>Queues and IPC:</dt>
        <dd>
          <t>Any at-least-once byte transport can carry capsules; receiver-side
replay rejection (<xref target="capsule-validation"/>) makes redelivery safe.</t>
        </dd>
      </dl>
    </section>
    <section anchor="error-handling">
      <name>Error Handling</name>
      <t>Protocol errors are surfaced as typed conditions, and implementations
<bcp14>MUST</bcp14> distinguish at minimum: validation failures (malformed, expired,
replayed, unknown-critical), authentication failures (signature,
transcript, AEAD), authorization failures (mailbox ownership, send
policy, capability), and availability failures (rate limit, storage).
Brokers <bcp14>MUST NOT</bcp14> reflect payload bytes in error responses. Receivers
<bcp14>MUST</bcp14> treat all AEAD failures identically and without detailed reason
codes on the wire, to avoid oracle behavior.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="what-sadp-protects">
        <name>What SADP Protects</name>
        <t>Against a passive or active broker, queue, gateway, or logging layer,
SADP provides: task and context payload confidentiality (only intended
recipients hold message keys); integrity and authenticity of capsule
payloads and authenticated metadata (signatures, audit commitments,
and AEAD); replay rejection (capsule identifiers, ratchet counters,
request nonces); expiry enforcement; forward secrecy per message and
post-compromise recovery across DH ratchet steps
(<xref target="DOUBLERATCHET"/>); downgrade resistance for the negotiated suite
(signed transcript, <xref target="transcript"/>); and mailbox-level authorization
with replay-protected request authentication
(<xref target="request-authentication"/>).</t>
      </section>
      <section anchor="what-sadp-does-not-protect">
        <name>What SADP Does Not Protect</name>
        <t>SADP does not protect against: a compromised recipient after
decryption; malicious model behavior over legitimately received
plaintext; prompt injection contained in legitimately decrypted
content; collusion among intended recipients; traffic analysis and
relationship, capability, audit, and resource-name metadata in the
v0.2 outer capsule fields (see
<xref target="metadata-privacy-considerations"/>); or revocation of data already
disclosed. Deployments <bcp14>MUST NOT</bcp14> represent SADP as an anonymity system.</t>
      </section>
      <section anchor="initiator-and-responder-authentication">
        <name>Initiator and Responder Authentication</name>
        <t>The v0.2 handshake authenticates the initiator explicitly by
signature and the responder implicitly by key possession
(<xref target="session-initiation"/>). The binding between a signing key and a
principal name is only as strong as the registry's registration
proofing (<xref target="registration"/>); deployments that accept anonymous
registration have no principal authentication at all, which is why
anonymous modes are confined to explicit development configuration.
Cross-registry identity, attestation of runtimes, and richer identity
proofing are out of scope and are natural integration points for
workload-identity systems such as SPIFFE <xref target="SPIFFE"/> and the WIMSE
architecture work.</t>
      </section>
      <section anchor="cryptographic-profile-status">
        <name>Cryptographic Profile Status</name>
        <t>The v0.2 profiles use conservative, widely deployed primitives:
X25519 <xref target="RFC7748"/>, Ed25519 <xref target="RFC8032"/>, ChaCha20-Poly1305
<xref target="RFC8439"/>, HKDF-SHA256 <xref target="RFC5869"/>, SHA-256 <xref target="RFC6234"/>, and
ML-KEM-768 <xref target="FIPS203"/>. Two cautions are in order. First, the
reference implementation's ML-KEM dependency tracks a library that
predates final FIPS 203 test-vector alignment in some releases;
deployments <bcp14>MUST</bcp14> pin a library version with FIPS 203 final vectors.
Second, neither this specification nor its reference implementation
has yet received independent external cryptographic review; until
such review completes, deployments should treat the protocol as
experimental. The construction deliberately reuses the analyzed
shapes of X3DH and the Double Ratchet to maximize the applicability
of existing analysis, but reuse of shape is not a substitute for
review of this composition.</t>
      </section>
      <section anchor="denial-of-service">
        <name>Denial of Service</name>
        <t>Signed requests with timestamps and nonces bound to a broker audience
limit replay-based abuse; authenticated prekey fetch prevents
anonymous one-time-prekey exhaustion; idempotent capsule posting
bounds duplicate-delivery amplification; and the
verify-before-commit rule (<xref target="message-ratchet"/>) prevents forged
headers from desynchronizing sessions. Brokers remain subject to
ordinary volumetric denial of service and <bcp14>SHOULD</bcp14> deploy standard rate
limiting per authenticated principal.</t>
      </section>
      <section anchor="key-compromise">
        <name>Key Compromise</name>
        <t>Compromise of a runtime's signing key allows impersonation of that
runtime for new sessions and broker requests until revocation
propagates; it does not retroactively decrypt recorded traffic
(message confidentiality rests on the DH/KEM secrets and ratchet
chains, not the signing key). Compromise of session state exposes
current chain keys; the DH ratchet restores confidentiality after the
next uncompromised ratchet step. Implementations <bcp14>MUST</bcp14> zeroize retired
key material and <bcp14>SHOULD</bcp14> encrypt session stores at rest.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document, if published, would request:</t>
      <ul spacing="normal">
        <li>
          <t>Registration of the media type <tt>application/sadp+json</tt> for SADP
capsules.</t>
        </li>
        <li>
          <t>Creation of an "SADP Scheme Identifiers" registry (Specification
Required) with initial entries for the scheme identifiers defined
in this document and in <xref target="I-D.atakora-wimse-sadp-delegation"/>.</t>
        </li>
        <li>
          <t>Creation of an "SADP Message Types" registry (Specification
Required) with the initial entries listed in <xref target="task-capsules"/>.</t>
        </li>
        <li>
          <t>Registration of the <tt>X-SADP-Principal</tt>, <tt>X-SADP-Request-Id</tt>,
<tt>X-SADP-Timestamp</tt>, <tt>X-SADP-Audience</tt>, and <tt>X-SADP-Signature</tt> HTTP
field names.</t>
        </li>
      </ul>
      <t>This document makes no request of IANA at Internet-Draft stage.</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="RFC3339">
          <front>
            <title>Date and Time on the Internet: Timestamps</title>
            <author fullname="G. Klyne" initials="G." surname="Klyne"/>
            <author fullname="C. Newman" initials="C." surname="Newman"/>
            <date month="July" year="2002"/>
            <abstract>
              <t>This document defines a date and time format for use in Internet protocols that is a profile of the ISO 8601 standard for representation of dates and times using the Gregorian calendar.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3339"/>
          <seriesInfo name="DOI" value="10.17487/RFC3339"/>
        </reference>
        <reference anchor="RFC7748">
          <front>
            <title>Elliptic Curves for Security</title>
            <author fullname="A. Langley" initials="A." surname="Langley"/>
            <author fullname="M. Hamburg" initials="M." surname="Hamburg"/>
            <author fullname="S. Turner" initials="S." surname="Turner"/>
            <date month="January" year="2016"/>
            <abstract>
              <t>This memo specifies two elliptic curves over prime fields that offer a high level of practical security in cryptographic applications, including Transport Layer Security (TLS). These curves are intended to operate at the ~128-bit and ~224-bit security level, respectively, and are generated deterministically based on a list of required properties.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7748"/>
          <seriesInfo name="DOI" value="10.17487/RFC7748"/>
        </reference>
        <reference anchor="RFC8032">
          <front>
            <title>Edwards-Curve Digital Signature Algorithm (EdDSA)</title>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
            <author fullname="I. Liusvaara" initials="I." surname="Liusvaara"/>
            <date month="January" year="2017"/>
            <abstract>
              <t>This document describes elliptic curve signature scheme Edwards-curve Digital Signature Algorithm (EdDSA). The algorithm is instantiated with recommended parameters for the edwards25519 and edwards448 curves. An example implementation and test vectors are provided.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8032"/>
          <seriesInfo name="DOI" value="10.17487/RFC8032"/>
        </reference>
        <reference anchor="RFC8439">
          <front>
            <title>ChaCha20 and Poly1305 for IETF Protocols</title>
            <author fullname="Y. Nir" initials="Y." surname="Nir"/>
            <author fullname="A. Langley" initials="A." surname="Langley"/>
            <date month="June" year="2018"/>
            <abstract>
              <t>This document defines the ChaCha20 stream cipher as well as the use of the Poly1305 authenticator, both as stand-alone algorithms and as a "combined mode", or Authenticated Encryption with Associated Data (AEAD) algorithm.</t>
              <t>RFC 7539, the predecessor of this document, was meant to serve as a stable reference and an implementation guide. It was a product of the Crypto Forum Research Group (CFRG). This document merges the errata filed against RFC 7539 and adds a little text to the Security Considerations section.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8439"/>
          <seriesInfo name="DOI" value="10.17487/RFC8439"/>
        </reference>
        <reference anchor="RFC5869">
          <front>
            <title>HMAC-based Extract-and-Expand Key Derivation Function (HKDF)</title>
            <author fullname="H. Krawczyk" initials="H." surname="Krawczyk"/>
            <author fullname="P. Eronen" initials="P." surname="Eronen"/>
            <date month="May" year="2010"/>
            <abstract>
              <t>This document specifies a simple Hashed Message Authentication Code (HMAC)-based key derivation function (HKDF), which can be used as a building block in various protocols and applications. The key derivation function (KDF) is intended to support a wide range of applications and requirements, and is conservative in its use of cryptographic hash functions. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5869"/>
          <seriesInfo name="DOI" value="10.17487/RFC5869"/>
        </reference>
        <reference anchor="RFC6234">
          <front>
            <title>US Secure Hash Algorithms (SHA and SHA-based HMAC and HKDF)</title>
            <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3rd"/>
            <author fullname="T. Hansen" initials="T." surname="Hansen"/>
            <date month="May" year="2011"/>
            <abstract>
              <t>Federal Information Processing Standard, FIPS</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6234"/>
          <seriesInfo name="DOI" value="10.17487/RFC6234"/>
        </reference>
        <reference anchor="RFC8259">
          <front>
            <title>The JavaScript Object Notation (JSON) Data Interchange Format</title>
            <author fullname="T. Bray" initials="T." role="editor" surname="Bray"/>
            <date month="December" year="2017"/>
            <abstract>
              <t>JavaScript Object Notation (JSON) is a lightweight, text-based, language-independent data interchange format. It was derived from the ECMAScript Programming Language Standard. JSON defines a small set of formatting rules for the portable representation of structured data.</t>
              <t>This document removes inconsistencies with other specifications of JSON, repairs specification errors, and offers experience-based interoperability guidance.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="90"/>
          <seriesInfo name="RFC" value="8259"/>
          <seriesInfo name="DOI" value="10.17487/RFC8259"/>
        </reference>
        <reference anchor="RFC9110">
          <front>
            <title>HTTP Semantics</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes.</t>
              <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="97"/>
          <seriesInfo name="RFC" value="9110"/>
          <seriesInfo name="DOI" value="10.17487/RFC9110"/>
        </reference>
        <reference anchor="FIPS203" target="https://doi.org/10.6028/NIST.FIPS.203">
          <front>
            <title>Module-Lattice-Based Key-Encapsulation Mechanism Standard</title>
            <author>
              <organization>National Institute of Standards and Technology</organization>
            </author>
            <date year="2024" month="August"/>
          </front>
          <seriesInfo name="NIST" value="FIPS 203"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC8785">
          <front>
            <title>JSON Canonicalization Scheme (JCS)</title>
            <author fullname="A. Rundgren" initials="A." surname="Rundgren"/>
            <author fullname="B. Jordan" initials="B." surname="Jordan"/>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
            <date month="June" year="2020"/>
            <abstract>
              <t>Cryptographic operations like hashing and signing need the data to be expressed in an invariant format so that the operations are reliably repeatable. One way to address this is to create a canonical representation of the data. Canonicalization also permits data to be exchanged in its original form on the "wire" while cryptographic operations performed on the canonicalized counterpart of the data in the producer and consumer endpoints generate consistent results.</t>
              <t>This document describes the JSON Canonicalization Scheme (JCS). This specification defines how to create a canonical representation of JSON data by building on the strict serialization methods for JSON primitives defined by ECMAScript, constraining JSON data to the Internet JSON (I-JSON) subset, and by using deterministic property sorting.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8785"/>
          <seriesInfo name="DOI" value="10.17487/RFC8785"/>
        </reference>
        <reference anchor="RFC9420">
          <front>
            <title>The Messaging Layer Security (MLS) Protocol</title>
            <author fullname="R. Barnes" initials="R." surname="Barnes"/>
            <author fullname="B. Beurdouche" initials="B." surname="Beurdouche"/>
            <author fullname="R. Robert" initials="R." surname="Robert"/>
            <author fullname="J. Millican" initials="J." surname="Millican"/>
            <author fullname="E. Omara" initials="E." surname="Omara"/>
            <author fullname="K. Cohn-Gordon" initials="K." surname="Cohn-Gordon"/>
            <date month="July" year="2023"/>
            <abstract>
              <t>Messaging applications are increasingly making use of end-to-end security mechanisms to ensure that messages are only accessible to the communicating endpoints, and not to any servers involved in delivering messages. Establishing keys to provide such protections is challenging for group chat settings, in which more than two clients need to agree on a key but may not be online at the same time. In this document, we specify a key establishment protocol that provides efficient asynchronous group key establishment with forward secrecy (FS) and post-compromise security (PCS) for groups in size ranging from two to thousands.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9420"/>
          <seriesInfo name="DOI" value="10.17487/RFC9420"/>
        </reference>
        <reference anchor="RFC8693">
          <front>
            <title>OAuth 2.0 Token Exchange</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="A. Nadalin" initials="A." surname="Nadalin"/>
            <author fullname="B. Campbell" initials="B." role="editor" surname="Campbell"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="C. Mortimore" initials="C." surname="Mortimore"/>
            <date month="January" year="2020"/>
            <abstract>
              <t>This specification defines a protocol for an HTTP- and JSON-based Security Token Service (STS) by defining how to request and obtain security tokens from OAuth 2.0 authorization servers, including security tokens employing impersonation and delegation.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8693"/>
          <seriesInfo name="DOI" value="10.17487/RFC8693"/>
        </reference>
        <reference anchor="RFC9635">
          <front>
            <title>Grant Negotiation and Authorization Protocol (GNAP)</title>
            <author fullname="J. Richer" initials="J." role="editor" surname="Richer"/>
            <author fullname="F. Imbault" initials="F." surname="Imbault"/>
            <date month="October" year="2024"/>
            <abstract>
              <t>The Grant Negotiation and Authorization Protocol (GNAP) defines a mechanism for delegating authorization to a piece of software and conveying the results and artifacts of that delegation to the software. This delegation can include access to a set of APIs as well as subject information passed directly to the software.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9635"/>
          <seriesInfo name="DOI" value="10.17487/RFC9635"/>
        </reference>
        <reference anchor="RFC9421">
          <front>
            <title>HTTP Message Signatures</title>
            <author fullname="A. Backman" initials="A." role="editor" surname="Backman"/>
            <author fullname="J. Richer" initials="J." role="editor" surname="Richer"/>
            <author fullname="M. Sporny" initials="M." surname="Sporny"/>
            <date month="February" year="2024"/>
            <abstract>
              <t>This document describes a mechanism for creating, encoding, and verifying digital signatures or message authentication codes over components of an HTTP message. This mechanism supports use cases where the full HTTP message may not be known to the signer and where the message may be transformed (e.g., by intermediaries) before reaching the verifier. This document also describes a means for requesting that a signature be applied to a subsequent HTTP message in an ongoing HTTP exchange.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9421"/>
          <seriesInfo name="DOI" value="10.17487/RFC9421"/>
        </reference>
        <reference anchor="I-D.atakora-wimse-sadp-delegation">
          <front>
            <title>SADP Capability Delegation Chains and Scoped Context Disclosure</title>
            <author initials="H." surname="Atakora">
              <organization/>
            </author>
            <date year="2026" month="September"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-atakora-wimse-sadp-delegation-02"/>
        </reference>
        <reference anchor="I-D.chapman-a2a-mls" target="https://datatracker.ietf.org/doc/draft-chapman-a2a-mls/">
          <front>
            <title>End-to-End Encryption and Purpose-Bound Governance for Agent-to-Agent Messaging</title>
            <author initials="C." surname="Chapman">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-chapman-a2a-mls"/>
        </reference>
        <reference anchor="I-D.asor-wimse-agent-delegation-chain" target="https://datatracker.ietf.org/doc/draft-asor-wimse-agent-delegation-chain/">
          <front>
            <title>Verifiable Attenuated Delegation for AI Agent Chains</title>
            <author>
              <organization/>
            </author>
            <date year="2026" month="September"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-asor-wimse-agent-delegation-chain-01"/>
        </reference>
        <reference anchor="I-D.sharif-attp" target="https://datatracker.ietf.org/doc/draft-sharif-attp/">
          <front>
            <title>ATTP: Agent Trust Transport Protocol</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-sharif-attp"/>
        </reference>
        <reference anchor="I-D.sharif-agent-transport-protocol" target="https://datatracker.ietf.org/doc/draft-sharif-agent-transport-protocol/">
          <front>
            <title>Agent Transport Protocol: Asynchronous Store-and-Forward Messaging for Autonomous AI Agents</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-sharif-agent-transport-protocol"/>
        </reference>
        <reference anchor="I-D.hamr-oauth-agent-delegation" target="https://datatracker.ietf.org/doc/draft-hamr-oauth-agent-delegation/">
          <front>
            <title>An Attenuated Delegation Profile for Automated Agents</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-hamr-oauth-agent-delegation"/>
        </reference>
        <reference anchor="I-D.liu-oauth-chain-delegation" target="https://datatracker.ietf.org/doc/draft-liu-oauth-chain-delegation/">
          <front>
            <title>OAuth Chain Delegation for AI Agents</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-liu-oauth-chain-delegation"/>
        </reference>
        <reference anchor="I-D.li-oauth-delegated-authorization" target="https://datatracker.ietf.org/doc/draft-li-oauth-delegated-authorization/">
          <front>
            <title>OAuth 2.0 Delegated Authorization</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-li-oauth-delegated-authorization"/>
        </reference>
        <reference anchor="I-D.nelson-agent-delegation-receipts" target="https://datatracker.ietf.org/doc/draft-nelson-agent-delegation-receipts/">
          <front>
            <title>Delegation Receipt Protocol for AI Agent Authorization</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-nelson-agent-delegation-receipts"/>
        </reference>
        <reference anchor="I-D.singla-agent-identity-protocol" target="https://datatracker.ietf.org/doc/draft-singla-agent-identity-protocol/">
          <front>
            <title>Agent Identity Protocol (AIP): Decentralized Identity and Delegation for AI Agents</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-singla-agent-identity-protocol"/>
        </reference>
        <reference anchor="I-D.vandoulas-aidp" target="https://datatracker.ietf.org/doc/draft-vandoulas-aidp/">
          <front>
            <title>Agent Interaction and Delegation Protocol (AIDP)</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-vandoulas-aidp"/>
        </reference>
        <reference anchor="I-D.ietf-mboned-sadp" target="https://datatracker.ietf.org/doc/draft-ietf-mboned-sadp/">
          <front>
            <title>Scoped Address Discovery Protocol</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-mboned-sadp"/>
        </reference>
        <reference anchor="X3DH" target="https://signal.org/docs/specifications/x3dh/">
          <front>
            <title>The X3DH Key Agreement Protocol</title>
            <author initials="M." surname="Marlinspike">
              <organization/>
            </author>
            <author initials="T." surname="Perrin">
              <organization/>
            </author>
            <date year="2016" month="November"/>
          </front>
        </reference>
        <reference anchor="DOUBLERATCHET" target="https://signal.org/docs/specifications/doubleratchet/">
          <front>
            <title>The Double Ratchet Algorithm</title>
            <author initials="T." surname="Perrin">
              <organization/>
            </author>
            <author initials="M." surname="Marlinspike">
              <organization/>
            </author>
            <date year="2016" month="November"/>
          </front>
        </reference>
        <reference anchor="PQXDH" target="https://signal.org/docs/specifications/pqxdh/">
          <front>
            <title>The PQXDH Key Agreement Protocol</title>
            <author initials="E." surname="Kret">
              <organization/>
            </author>
            <author initials="R." surname="Schmidt">
              <organization/>
            </author>
            <date year="2023" month="September"/>
          </front>
        </reference>
        <reference anchor="SESAME" target="https://signal.org/docs/specifications/sesame/">
          <front>
            <title>The Sesame Algorithm: Session Management for Asynchronous Message Encryption</title>
            <author initials="M." surname="Marlinspike">
              <organization/>
            </author>
            <author initials="T." surname="Perrin">
              <organization/>
            </author>
            <date year="2017" month="April"/>
          </front>
        </reference>
        <reference anchor="SPQR" target="https://signal.org/blog/spqr/">
          <front>
            <title>Signal Protocol and Post-Quantum Ratchets</title>
            <author>
              <organization>Signal Messenger</organization>
            </author>
            <date year="2025" month="October"/>
          </front>
        </reference>
        <reference anchor="MACAROONS" target="https://research.google/pubs/pub41892/">
          <front>
            <title>Macaroons: Cookies with Contextual Caveats for Decentralized Authorization in the Cloud</title>
            <author initials="A." surname="Birgisson">
              <organization/>
            </author>
            <author initials="J. G." surname="Politz">
              <organization/>
            </author>
            <author initials="U." surname="Erlingsson">
              <organization/>
            </author>
            <author initials="A." surname="Taly">
              <organization/>
            </author>
            <author initials="M." surname="Vrable">
              <organization/>
            </author>
            <author initials="M." surname="Lentczner">
              <organization/>
            </author>
            <date year="2014"/>
          </front>
          <seriesInfo name="NDSS" value="2014"/>
        </reference>
        <reference anchor="BISCUIT" target="https://www.biscuitsec.org/">
          <front>
            <title>Biscuit: Authorization Tokens with Offline Attenuation</title>
            <author>
              <organization>Biscuit project</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="UCAN" target="https://github.com/ucan-wg/spec">
          <front>
            <title>User Controlled Authorization Networks (UCAN) Specification</title>
            <author>
              <organization>UCAN Working Group</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="A2A" target="https://a2a-protocol.org/latest/specification/">
          <front>
            <title>Agent2Agent (A2A) Protocol Specification</title>
            <author>
              <organization>Agentic AI Foundation / Linux Foundation</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="MCP" target="https://modelcontextprotocol.io/specification/2025-06-18">
          <front>
            <title>Model Context Protocol Specification</title>
            <author>
              <organization>Model Context Protocol project</organization>
            </author>
            <date year="2025" month="June"/>
          </front>
        </reference>
        <reference anchor="SLIM" target="https://slim.agntcy.org/">
          <front>
            <title>SLIM: Secure Low-Latency Interactive Messaging for Agents</title>
            <author>
              <organization>AGNTCY Project, Linux Foundation</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="SPIFFE" target="https://spiffe.io/">
          <front>
            <title>Secure Production Identity Framework for Everyone (SPIFFE)</title>
            <author>
              <organization>SPIFFE Project, Cloud Native Computing Foundation</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="SOUTH2025" target="https://arxiv.org/abs/2501.09674">
          <front>
            <title>Authenticated Delegation and Authorized AI Agents</title>
            <author initials="T." surname="South">
              <organization/>
            </author>
            <author initials="S." surname="Marro">
              <organization/>
            </author>
            <author initials="T." surname="Hardjono">
              <organization/>
            </author>
            <author initials="R." surname="Mahari">
              <organization/>
            </author>
            <author initials="A." surname="Pentland">
              <organization/>
            </author>
            <date year="2025" month="January"/>
          </front>
        </reference>
        <reference anchor="SAGA2025" target="https://arxiv.org/abs/2504.21034">
          <front>
            <title>SAGA: A Security Architecture for Governing AI Agentic Systems</title>
            <author initials="G." surname="Syros">
              <organization/>
            </author>
            <author initials="A." surname="Suri">
              <organization/>
            </author>
            <author initials="C." surname="Nita-Rotaru">
              <organization/>
            </author>
            <author initials="A." surname="Oprea">
              <organization/>
            </author>
            <date year="2025" month="April"/>
          </front>
        </reference>
      </references>
    </references>

<section anchor="example-exchange">
      <name>Example Exchange</name>
      <t>The following abbreviated flow shows a user tasking an agent through
an untrusted broker. Keys and ciphertexts are truncated.</t>
      <t>Runtime registration (authenticated; proof of possession via the
signed prekey bundle):</t>
      <artwork><![CDATA[
POST /registry/runtimes
X-SADP-Principal: agent:contract-reviewer/runtime:prod-a
X-SADP-Request-Id: req_kf93hHW0aQx7Zp2Lw1VtBg
X-SADP-Timestamp: 1789819200
X-SADP-Audience: https://broker.example.com:443
X-SADP-Signature: rV8kQx3Tn...

{ "principal": "agent:contract-reviewer/runtime:prod-a",
  "signing_public_key": "hzT4...",
  "encryption_public_key": "9aK2...",
  "ml_kem768_encapsulation_key": "pQ77...",
  "prekey_id": "prekey_agent_a_1", ... , "signature": "yGd1..." }
]]></artwork>
      <t>Sender fetches a prekey bundle (authenticated), initiates a session,
and posts the first capsule:</t>
      <artwork><![CDATA[
POST /mailboxes/agent:contract-reviewer%2Fruntime:prod-a/capsules
X-SADP-Principal: user:alice/device:phone
...

{ "version": "sadp/0.1",
  "type": "task_create",
  "capsule_id": "cap_01J...",
  "task_id": "task_01J...",
  "thread_id": "thread_01J...",
  "from": "user:alice/device:phone",
  "to": "agent:contract-reviewer/runtime:prod-a",
  "created_at": "2026-09-19T12:00:00Z",
  "expires_at": "2026-09-19T13:00:00Z",
  "critical": ["capabilities", "audit"],
  "capabilities": [ { ...signed grant, see companion document... } ],
  "audit": { ...hash-chain record, see companion document... },
  "session_init": {
    "scheme": "sadp-session-init-x25519-hkdf-sha256-v0.2",
    "initiator": "user:alice/device:phone",
    "responder": "agent:contract-reviewer/runtime:prod-a",
    "initiator_ephemeral_public_key": "b7Qe...",
    "initiator_signing_public_key": "Nc2w...",
    "initiator_signature": "8fWq...",
    "algorithm_suite": "x25519-hkdf-sha256+ml-kem-768",
    "pq_kem_ciphertext": "R2m8...", ... },
  "encrypted_payload": {
    "scheme": "sadp-ratchet-hkdf-chacha20poly1305-v0.2",
    "session_id": "tPq1...", "dh_epoch": 0,
    "dh_public_key": "aW3k...", "counter": 0,
    "nonce": "kQ9v...", "ciphertext": "..." } }
]]></artwork>
      <t>The recipient authenticates its mailbox read, validates per
<xref target="capsule-validation"/> (including capability-chain and audit checks
from the companion document), verifies the signed session init,
derives the root key, decrypts, executes or delegates the task, and
replies with a <tt>task_result</tt> capsule on the same thread, advancing
the ratchet.</t>
    </section>
    <section anchor="cryptographic-profile-summary">
      <name>Cryptographic Profile Summary</name>
      <table>
        <thead>
          <tr>
            <th align="left">Purpose</th>
            <th align="left">Scheme identifier</th>
            <th align="left">Primitives</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">Session init</td>
            <td align="left">sadp-session-init-x25519-hkdf-sha256-v0.2</td>
            <td align="left">X25519, HKDF-SHA256, Ed25519, SHA-256</td>
          </tr>
          <tr>
            <td align="left">PQ hybrid</td>
            <td align="left">sadp-ml-kem-768-v0.1</td>
            <td align="left">ML-KEM-768</td>
          </tr>
          <tr>
            <td align="left">Ratchet</td>
            <td align="left">sadp-ratchet-hkdf-chacha20poly1305-v0.2</td>
            <td align="left">HKDF-SHA256, ChaCha20-Poly1305, X25519</td>
          </tr>
          <tr>
            <td align="left">Single-capsule AEAD</td>
            <td align="left">sadp-aead-chacha20poly1305-v0.1</td>
            <td align="left">ChaCha20-Poly1305</td>
          </tr>
          <tr>
            <td align="left">Pre-ratchet payload</td>
            <td align="left">sadp-pre-ratchet-x25519-hkdf-sha256-v0.1</td>
            <td align="left">X25519, HKDF-SHA256, ChaCha20-Poly1305</td>
          </tr>
          <tr>
            <td align="left">Capability grants</td>
            <td align="left">sadp-cap-ed25519-v0.2</td>
            <td align="left">Ed25519, SHA-256 (companion document)</td>
          </tr>
          <tr>
            <td align="left">Prekey bundles</td>
            <td align="left">sadp-prekey-ed25519-v0.1</td>
            <td align="left">Ed25519</td>
          </tr>
          <tr>
            <td align="left">Broker requests</td>
            <td align="left">sadp-request-ed25519-v0.2</td>
            <td align="left">Ed25519, SHA-256</td>
          </tr>
        </tbody>
      </table>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The session and ratchet design follows the public Signal protocol
specifications <xref target="X3DH"/> <xref target="DOUBLERATCHET"/> <xref target="SESAME"/> <xref target="PQXDH"/>, and
this document's threat framing benefited from prior work on encrypted
agent messaging <xref target="I-D.chapman-a2a-mls"/> <xref target="SLIM"/> and agent delegation
<xref target="I-D.asor-wimse-agent-delegation-chain"/> <xref target="SOUTH2025"/> <xref target="SAGA2025"/>.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA9V963bbWHbmfzwFRrVmlZQmaEm+S51kZFkuK+2LypK7upPJ
kkASFNEmARYASmbJzrPMs8yTzf725ZwDkJLs6s6PqZW0RRI4132/JkkSNXkz
zfbijbNJFp9mw0WVxQeXWdHEL7Npdpk2eVnEJ1XZlMNyGm+eHrw82dqLj4pR
0pQJ/UN/DqvlvMlG8Vlaf4oP03m9mGZ1PC6r+OBYxzpd1k02qzeidDCosiua
DgNtRKNyWKQzmn5UpeMmSZv0U1mlSZ2O5slcJ022d6Nh2mSXZbXci7PP86he
DGZ5XdPKmuWcXs6LUTbP6H+KJsrn1V7cVIu62d3efk6vplWWYj5sLW+WG9F1
WX26rMrFnL49Lkb5VT5apNP41A1Ky6Lp9uLd7d0nyfbzZHc7GpZFnRX1ot6L
x+m0ziLawsPoU7akwUZ7URwn2GuKvdb8KZMDon/oTz4gGph/Gblj5Y8NDm0o
hya/l4vBNIurtBlOsoa/mpd1k/y6SItmMeMvBlX5Katk2t0D/vft4UkUpYtm
Ulaynrygxb7uxwdypvRdHMtZv05no2Xr+7K6TIv8N17VXnw8S6s0fpMOav5x
WC6KBkf/schxzacNnY78lM3SfLoXT/Te/leON6f0Yn+UXUVRUVYzGvMqw4o+
vDrc3dl5rn8+23n6SP98+PChffv06aNn9sD2w13785F74PGzJ/bnk92HNsKz
3cf27fOdnW38+er45HR3++EeL9NA/G05olNO3qRNkw+z5EVa03b+lC0JjuUG
BNrfZsMJHUc9w1aLUVqNNngYf7r4L8Gp7cXv+B2Cn+OipnkWTRaXY/diHdO/
8RkNWJTT8nLJ7zroepRsP+Nv6qzKszovxqWN/u749GyPd0EPPpRdpNVl1tBp
N8283nvwYFTmfVrCg53t/pPt3WcP8Eofb/TxRoTR2sf/7Omzx3ZMj3a37dsn
zx/at08eBg/s4M/j5GXfsPI6n9WZ4KYH4vYJA6tBAtJBPiVkC2nI4SQlkOTz
OB2Wczr5Q8Lf7DMRmrweTsuaKM/6c14HyS0MveUMj2n4qsia5CWIS5fGrN0N
aI1smkBgPkuLJN1Nk9m0bm9zlfxhh9jayaIibCXYIqQZxT+VV7SCtBhmQg5B
H/CiEMW3WV2nl3lxece2D/s4OKzkuzbZWf16+KGTaKp0SJSkn2fNmIGJCPKD
tUM8MGCoy0rPjsldeHhDXHH7pP5MCx7nKSjaQdNkxSIFCQnAosUmBEY2vu8+
71tQsr1zC8h854ncO5OdUT1JadcEac28fRoHZ2cne7rXM/Ao+t+0qOdl1Tge
+327D6b6PVsKXu8uXmDVlue4cWdDupXuJmiT9bIYTqqyKBc1kcOyokMjrHlV
VtdEFz3sCwAsGnpwhkcNFr4TCu5Z9d9zNrcMaec1SWdVUgJ5V6Cic1bFLShA
hzbOp5k7iRk/8HtO4Y61/J4TuGM42/00X+gTgmu3bf49bWwi+H0b9n/nXm+f
+fds9fbR/E71Af0pGyVCsU1uWrPf3f627RY3Gj7+vZu9e/Lft+W7x7SNF9m0
Jgq3QvKqbJjl86bDGoPL/SAPeO2hRev/jtO4b0W/5zTuG9ORR6JZ01Sfy6Fy
kJxzJ3U81ocCLergGErUSxqaJOt0mv9G0OEegxjxj0GRu9f6u2jinSPaGV3R
FkqSpuskzUddFihngvWmQyc2rdU1D45J1/y+Hbdn/j07bI9gO8KDyWxQFoQk
EBk7Uq/IswejUUVsjeVZCH7L38nTu5P9nm10x8BG/vLw5ev2wqHz41soQQRh
VZbNcDvtZa+VS9/247dpNaW/5/mnrP3bWT8+yaoqL1pi186TZGdn7Vbq/JIU
KNtA/aCeZ0MSGocMD/WDzw9HEyz/5fuPL94cfTg4O3x9dLa6j5eiN38QvTk+
mF4SdWkmszs20V7oXXv7uzchWr0q9djNyc9/WXcb/PX3X8dRP/5TxdaC4MsP
fdK0JrN81LTl34e3yb/37GH+62e5idOj04O3R6uLP83qdJb5o9/DNzWr1GlB
NIN3w/QsFA5FFMwCTeofC3dPk+1Hv2e7Ne+G93vy84cOxvOrnlax6gcrzc9i
pTEwrO+wHOgY2H5WXLI5J7ikx8nO9n2rHkzLS1r1rxUW+fbg8ODD+/fvTjs2
j3SYVmXJumRZfiICFF/nEMVE+Ybl6zC9ytJGLHZtntTi0XTIcUO3fDgtF7dY
RPgaDvrxi7y6zOu67CDWv/Xjn+iOymne/Nb+5WM/PsKtXq6+RMOdpdPlChj8
uYJWufL1G1r+8Leic5w7j26zs7w8PaVTwhMba4+bKHqWVsNJ/7IsL6fZg/li
UON/Hu08e76Lc39xfHr48bhDkF4QC1jkNEz7BM/KT1mhF/B+PKYNe7X4Vrhn
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
PvSj/wedUDH2o98AAA==

-->

</rfc>
