<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.43 (Ruby 3.3.6) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-mih-agent-bilateral-attestation-03" category="info" submissionType="IETF" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <front>
    <title abbrev="Bilateral Agent Attestation">Bilateral Attestation of Cross-Organization Agent Actions</title>
    <seriesInfo name="Internet-Draft" value="draft-mih-agent-bilateral-attestation-03"/>
    <author initials="S." surname="Mih" fullname="Steven Mih">
      <organization>Action State Group, Inc.</organization>
      <address>
        <email>spec@actionstate.ai</email>
      </address>
    </author>
    <date year="2026" month="October" day="29"/>
    <area>Security</area>
    <keyword>agent</keyword>
    <keyword>attestation</keyword>
    <keyword>bilateral</keyword>
    <keyword>cross-organization</keyword>
    <keyword>SCITT</keyword>
    <keyword>transparency</keyword>
    <keyword>refusal</keyword>
    <abstract>
      <?line 53?>

<t>When an agent operated by one organization requests a consequential action
from an agent operated by another, today's record of that exchange — if one
exists — is kept by one side, editable by that side, and deniable by the
other. Disputes reduce to my-log-versus-your-log. This document describes a
bilateral attestation exchange for such actions: the requesting organization
signs a request attestation binding it to the action and its material terms;
the performing organization evaluates the request against deterministic
constraints at the boundary where the action takes effect and signs an action
attestation recording the constraint results and the disposition — performed,
declined, or escalated to a human — by reference to the request; and each
party acknowledges the other's attestation. The combined record binds each
organization to its part, gives each proof of the other's, and can be
registered with a Transparency Service so that a third party who trusts neither
organization can verify the record end-to-end. The exchange records refusals
with the same fidelity as performance, and degrades gracefully when a
counterparty cannot attest, marking the record's reduced assurance rather
than blocking the transaction.</t>
    </abstract>
  </front>
  <middle>
    <?line 73?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Agents increasingly transact with agents of other organizations with no human
present at the moment of delegation. The transports are standardized — RPC
conventions, tool-call protocols, message queues — but transports answer
<em>how</em> agents communicate, not <em>who is accountable</em> for what was requested and
what was done. Each side keeps its own log, written by an interested party,
alterable by that party, and carrying no assent from the other. When the
payment posts twice, when the deletion was out of scope, when the delivery
never happened, the evidence is two self-interested logs that need not agree.</t>
      <t>Classical signed B2B messaging — AS2/EDIINT signed MDNs, AS4/ebMS3 signed
receipts with non-repudiation-of-receipt — binds parties to <em>transmissions</em>:
it attests that a message was sent and received, not what an agent then <em>did</em>
about it. Such schemes do not gate execution on verifying the requester's
organizational identity at the boundary where the action takes effect, do not
bind constraint evaluation into the performer's record, and do not record a
disposition distinguishing an executed action from a refusal from a human
escalation at the moment of action. The distinction this document draws is
action-level, not transport-level.</t>
      <t>This document describes an exchange producing a <strong>bilaterally attested action
record</strong>: each organization's signature over its part of the exchange is
durable, independently verifiable evidence that it produced that part, each
holds proof of the other's, and the combined record can be registered with a Transparency Service so third
parties can verify it. It is an individual submission. It
composes with the existing agent action record layer
<xref target="I-D.mih-scitt-agent-action-capsule"/> rather than defining a new one, and
its records are designed to be consumable by the layers above the record,
such as accountability composition
<xref target="I-D.mih-sato-agent-accountability-composition"/>. What any consumer derives
from these records is that consumer's concern; this document defines the
record, not what may be concluded from a collection of them.</t>
    </section>
    <section anchor="motivating-scenarios">
      <name>Motivating Scenarios</name>
      <t><strong>Cross-organization procurement.</strong> Org A's purchasing agent requests a
fulfillment action from org B's agent. A's request attestation binds A to the
order's material terms; B's action attestation binds B to what it did about
them. A later assertion of different terms by either party can be checked
against a record both parties signed, rather than argued over two private ones.</t>
      <t><strong>Agent-to-agent service delegation.</strong> An orchestrating agent subcontracts a
task across a trust boundary. Each hop produces its own bilateral record, so a
failure in a multi-hop chain is attributable to the hop where it occurred
rather than to the chain as a whole. Chain-linking semantics that make the
full responsibility path independently reconstructable are left to a future
revision.</t>
      <t><strong>Refusal at the boundary.</strong> B's agent declines A's request as out of policy.
B's action attestation records the decline and its constraint basis; A's
acknowledgment is verifiable evidence contradicting a later claim by A that
the request was never answered.
The refusal becomes durable, third-party-verifiable evidence — for B, that
its gate worked; for A, that the request was made and declined
(see <xref target="refusal-across-the-boundary"/>).</t>
      <t><strong>Shared history as a side effect.</strong> Every completed handshake yields a
counterparty-attested record — evidence neither party can revise alone. Two
organizations that transact accumulate a verifiable shared history without
doing anything beyond transacting, and either can produce it later without
asking the other's permission.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

<dl>
        <dt>Requesting party:</dt>
        <dd>
          <t>The organization (via its agent) requesting a consequential action across
an organizational boundary.</t>
        </dd>
        <dt>Performing party:</dt>
        <dd>
          <t>The organization (via its agent) that evaluates and disposes of the
requested action.</t>
        </dd>
        <dt>Request attestation:</dt>
        <dd>
          <t>A signed statement by the requesting party describing the requested action
and its material terms, bound to the requesting party's verifiable
organizational identity and naming the intended performing party; including
at minimum a content digest of the request, a nonce, a timestamp, and a
validity window. A request attestation is valid only against the performing
party it names, and only within its validity window (with an
implementation-defined clock-skew tolerance the verifier applies).</t>
        </dd>
        <dt>Action attestation:</dt>
        <dd>
          <t>A signed statement by the performing party, referencing a request
attestation by digest, recording the deterministic constraint results
evaluated at the effect boundary — each constraint identified by reference
so a third party can tell which check produced which result, pinned to a
digest of the constraint-set snapshot in effect and carrying a result for
every constraint in that set (<xref target="constraint-records"/>) — and the disposition
of the request, bound to the performing party's verifiable organizational
identity.</t>
        </dd>
        <dt>Acknowledgment:</dt>
        <dd>
          <t>A signed statement by which a party records receipt of the counterparty's
attestation, completing the bilateral record. Receipt does not assert
agreement with the attestation's contents; a party disputing a disposition
does so in a subsequent linked record.</t>
        </dd>
        <dt>Party identifier:</dt>
        <dd>
          <t>An opaque string naming a party (requesting or performing) within an
attestation. A party identifier <bcp14>MAY</bcp14> resolve to a registration entry
admitted on the same Transparency Service (for example, one admitted under
<xref target="I-D.morrison-solo-agent-earn-registration"/>), in which case the party is
a registered principal with an admission record rather than a bare key.
Where it does, the attestation carries the digest of the admitted Signed
Statement as the reference.</t>
        </dd>
        <dt>Verifiable organizational identity:</dt>
        <dd>
          <t>An organizational identity a relying party can validate independently of
that organization's infrastructure — a credential chaining to a root of
trust the relying party accepts (a certificate authority, federation
operator, registry, or published trust list). This document does not
nominate roots.</t>
        </dd>
        <dt>Reduced-assurance indicator:</dt>
        <dd>
          <t>A marker recording that a given exchange completed with fewer than the full
set of attestations (see <xref target="graceful-degradation"/>).</t>
        </dd>
      </dl>
    </section>
    <section anchor="bilateral-exchange">
      <name>The Bilateral Exchange</name>
      <t>The exchange has four moves:</t>
      <ol spacing="normal" type="1"><li>
          <t><strong>Request attestation.</strong> Before the performing party acts, the requesting
party produces a request attestation over the action and its material
terms. The requester is now bound: it cannot later deny having asked, or
having asked on these terms.</t>
        </li>
        <li>
          <t><strong>Constraint evaluation.</strong> The performing party verifies the requester's
organizational identity and evaluates the request against deterministic
constraints <em>at the boundary where the action would take effect</em> — not at
the transport edge. Verification gates execution: no verified request
attestation, no consequential action (policy <bcp14>MAY</bcp14> permit degraded
operation; see <xref target="graceful-degradation"/>).</t>
        </li>
        <li>
          <t><strong>Action attestation.</strong> The performing party produces an action
attestation referencing the request attestation by digest and recording
the constraint results and the disposition. Dispositions use the
<tt>verdict_class</tt> vocabulary of <xref target="I-D.mih-scitt-agent-action-capsule"/>;
that document is normative for the complete value set (e.g.,
<em>executed</em>, <em>denied</em>), so the record covers every outcome, not only
success. A
performing party <bcp14>MUST</bcp14> produce at most one action attestation per request
attestation; repeated execution of a single request is representable only
as distinct request instances, each with its own request attestation.</t>
        </li>
        <li>
          <t><strong>Acknowledgment.</strong> Each party acknowledges the other's attestation. On
completion, each organization is bound to its part and holds proof of the
other's.</t>
        </li>
      </ol>
      <t>Attestations and acknowledgments <bcp14>SHOULD</bcp14> be registered with a
Transparency Service per <xref target="RFC9943"/> — carried, for
example, as the payload of a profiled Signed Statement per
<xref target="I-D.mih-scitt-agent-action-capsule"/> — so that inclusion and
non-equivocation are verifiable by a party who trusts neither organization.
A bilateral record that is not registered still binds the two parties to each other;
registration is what makes it evidence for everyone else.</t>
      <t>Wire encodings for the four objects are TBD for a future revision; this
document fixes the exchange, the binding obligations, and the disposition
semantics. A future revision fixing wire encodings <bcp14>MUST</bcp14> require each attested
object to declare the canonicalization under which its digest was computed,
by identifier, within the bytes the signature covers — and <bcp14>MUST</bcp14> require a
verifier to apply the declared construction and never to infer one from the
object's shape. The expected identifier names RFC 8785 JCS <xref target="RFC8785"/>; what
this document fixes is that the construction is named rather than assumed
(see <xref target="canonicalization"/>). The hash function is part of the named
construction, so agility is obtained by naming a different one, never by
reinterpreting an existing name.</t>
    </section>
    <section anchor="constraint-records">
      <name>Constraint Records</name>
      <t>The evidentiary value of an action attestation rests on <em>which</em> deterministic
checks were applied and <em>what each returned</em>. Three obligations make that
record complete and tamper-evident.</t>
      <t><strong>Constraint-set pinning.</strong> The action attestation <bcp14>MUST</bcp14> bind a content digest
of the constraint-set snapshot in effect at evaluation time, alongside the
per-constraint results. The digest fixes <em>which</em> constraints — their
identities and parameters — were in force when the request was disposed, so
that a verifier can establish the applicable constraint set as of the
attestation's registration time, not merely at verification time — the same
establishable-as-of-registration-time property that <xref target="key-compromise-revocation"/>
requires of key validity. A constraint set that can be silently
re-parameterized after the fact would let a performing party restate what it
was obligated to check; pinning its digest removes that degree of freedom.</t>
      <t><strong>Input-commitment digest.</strong> For each evaluation, the performing party <bcp14>SHOULD</bcp14>
bind an input-commitment digest — a digest over the inputs the constraints
consulted — carried as a commitment and disclosable to the counterparty or
an auditor under the selective-disclosure model (<xref target="privacy-considerations"/>).
This is a <bcp14>SHOULD</bcp14>, not a <bcp14>MUST</bcp14>: the state a constraint consults varies across
deployments, and an honest <bcp14>SHOULD</bcp14> serves a verifier better than a nominal
<bcp14>MUST</bcp14> that implementations cannot uniformly satisfy. A future revision <bcp14>MAY</bcp14>
promote it on implementation experience.</t>
      <t><strong>Completeness.</strong> The action attestation <bcp14>MUST</bcp14> carry a result for every
constraint in the pinned set — each <strong>pass</strong>, <strong>fail</strong>, or <strong>not-evaluated</strong>
(with a reason) — so that a constraint present in the pinned set but absent
from the results is a <em>verifiable omission</em> rather than a silent gap.
Selective reporting of only the favorable results is thereby detectable by
any party holding the pinned constraint-set digest.</t>
    </section>
    <section anchor="refusal-across-the-boundary">
      <name>Refusal Across the Boundary</name>
      <t>A declined request is not a failed exchange; it is a completed exchange with
a decline disposition. The action attestation records <em>that</em> the request was
declined and <em>on what constraint basis</em>; the requester's acknowledgment
completes the record. This has two consequences.</t>
      <t>For the performing party, a bilaterally-acknowledged decline is evidence,
verifiable by an auditor who trusts neither party, that its boundary
enforcement works. A refusal is the strongest form of this evidence, because
here even the <em>counterparty that was refused</em> has signed the record.</t>
      <t>For the requesting party, a history of acknowledged declines is legible too:
a pattern of out-of-policy requests is now provable by its counterparties.
Bilateral records cut both ways by construction; parties should expect their
requesting behavior, not only their performing behavior, to be establishable
by someone else.</t>
    </section>
    <section anchor="graceful-degradation">
      <name>Graceful Degradation</name>
      <t>Counterparties will be of mixed capability for years. A performing party
whose counterpart cannot produce request attestations <bcp14>MAY</bcp14> proceed under
policy, producing its own action attestation unilaterally and recording a
reduced-assurance indicator in place of the missing attestations. The record
format is the same; the assurance marking differs. This keeps one protocol
across mixed peers while preserving the distinction relying parties need:
a fully-bilateral record and a degraded record are never confusable, and a
consumer can require a minimum assurance level before treating a record as
input.
Degradation <bcp14>MUST</bcp14> be recorded, never silent.</t>
    </section>
    <section anchor="asymmetry-dispositions">
      <name>Dispositions Across the Asymmetry</name>
      <t>The action dispositions above record what the performing party decided about
the <em>action</em>. A second, smaller class records what happened to the <em>exchange</em>
when it does not complete symmetrically; this class is meaningful only
because the record is bilateral. Three asymmetry dispositions are defined,
entered through the schema-extension protocol of
<xref target="I-D.mih-scitt-agent-action-capsule"/> and kept distinct from the action
vocabulary:</t>
      <ul spacing="normal">
        <li>
          <t><strong><tt>delivery_unconfirmed</tt>:</strong> the requesting party emitted its attestation
but delivery to the performing party could not be confirmed — the weakest
outcome, as the counterparty may never have received the request.</t>
        </li>
        <li>
          <t><strong><tt>counterparty_timeout</tt>:</strong> delivery was confirmed, but the performing
party did not countersign within the request's validity window; the
request lapses into this disposition when the window closes.</t>
        </li>
        <li>
          <t><strong><tt>countersign_refused</tt>:</strong> the performing party was reached and explicitly
refused to countersign.</t>
        </li>
      </ul>
      <t>In this document, to countersign means that the performing party issues its
own signed half citing the request. It is not a COSE countersignature
<xref target="RFC9338"/> and not a Transparency Service function; in SCITT terms each half
is a separate Signed Statement from a separate Issuer.</t>
      <t>These are weaker than, and <bcp14>MUST NOT</bcp14> be conflated with, a declined action
(<xref target="refusal-across-the-boundary"/>): a decline is a <em>performed</em> boundary
decision that the requester acknowledges — strong evidence — whereas a
refusal to <em>countersign</em> is a failure of the exchange, not a decision about
the action. For the same reason, a party that <em>declines to engage</em> before any
request obligates it is not a party that <em>fails to countersign</em> a request
already made; only the latter is evidentiary against the performing party.</t>
      <t>An asymmetry disposition binds to its request by correlation identifier and
the shared action digest; a half that cannot be matched to a counterpart is
an <strong>orphan</strong> — a defined state, not an error. A requesting party's half,
registered with a Transparency Service (<xref target="delivery-intermediary"/>) and marked with an asymmetry disposition, is
admissible evidence that the attempt was made — the one fact neither party
can establish alone — and a verifier weights a registered-but-unacknowledged
record accordingly.</t>
    </section>
    <section anchor="delivery-intermediary">
      <name>Delivery Intermediary</name>
      <t>The exchange completes agent-to-agent; no intermediary is required, and the
integrity of the record never depends on one. Where the parties are not
simultaneously reachable, a <em>delivery intermediary</em> <bcp14>MAY</bcp14> store and forward
the attestations and issue delivery receipts. The delivery intermediary is
an optional, substitutable role: anyone can run one, delivery intermediaries
federate, and the role reads no payloads — attestations traverse it as
opaque, integrity-protected blobs, so a delivery intermediary
learns that a record moved, not what it said. A delivery receipt is itself
an accountability claim, so a conformant delivery intermediary <bcp14>MUST</bcp14> register the digests of
the receipts it issues with a Transparency Service <xref target="RFC9943"/> it advertises
in discoverable metadata, so that Relying Parties and Auditors can check its
Receipts <xref target="RFC9942"/> for consistency, and may register them with more than
one Transparency Service so that no single operator is relied on alone;
the Transparency Service is the delivery intermediary's choice, this document names none,
and a delivery intermediary that
will not register its own receipts is non-conformant. A receiving gate <bcp14>SHOULD</bcp14>
issue its own signed acknowledgment citing the envelope receipt by digest, so that delivery becomes a fact both
parties assert rather than one the delivery intermediary asserts alone. Signed delivery
receipts, and the fabrication attacks against them, are long-settled
ground — the email DSN and MDN mechanisms (<xref target="RFC3461"/>, <xref target="RFC8098"/>)
addressed both decades ago — and this role inherits that discipline rather
than reopening it. Reconciliation, directory, retry, and admission control
are deployment concerns outside this document's scope.</t>
    </section>
    <section anchor="relationship-to-existing-work">
      <name>Relationship to Existing Work</name>
      <t><strong>Record layer.</strong> This document defines an exchange, not a record format:
its attestations are designed to be carried in existing agent action records
— the Agent Action Capsule <xref target="I-D.mih-scitt-agent-action-capsule"/> supplies
the disposition vocabulary, effect binding, and registration path this document
relies on, and its selective-disclosure profile
<xref target="I-D.mih-scitt-agent-action-capsule-sel-disc"/> applies to cross-boundary
privacy (<xref target="privacy-considerations"/>).</t>
      <t><strong>Accountability without a third party.</strong> The general mechanism this document
specifies — two parties each holding a record of an exchange, each carrying
the counterparty's signed acknowledgment, so that a unilateral alteration is
detectable without a trusted arbiter — is not new. <xref target="PeerReview2007"/>
established, nineteen years earlier, that nodes in a distributed system can
hold each other accountable for Byzantine faults by maintaining witnessed,
tamper-evident logs of their message exchanges, with no assumption of a
trusted third party. This document does not claim to originate that general
shape; it specifies, at the agent-action layer, what PeerReview's
node-to-node accountability protocol does not: (a) an <strong>agent-action</strong>
vocabulary and framing — request and action attestations, deterministic
constraint evaluation at an effect boundary, and a verdict-complete
disposition set, rather than a general-purpose secure logging protocol for
arbitrary distributed-system state; (b) <strong>asymmetric endings</strong> that
distinguish a countersign explicitly <em>refused</em> from a counterparty that
stayed <em>silent</em> (<tt>delivery_unconfirmed</tt>, <tt>counterparty_timeout</tt>;
<xref target="asymmetry-dispositions"/>) — a distinction PeerReview's fault model does not
draw; and (c) a <strong>registered, third-party-verifiable</strong> form — records are
registered with a SCITT Transparency Service (<xref target="RFC9943"/>) and bound by
content digest, so that a party who trusts neither organization can verify
inclusion and non-equivocation directly, rather than relying on PeerReview's
peer-witness overlay of mutually monitoring nodes.</t>
      <t><strong>Delegation receipts.</strong> <xref target="I-D.nelson-agent-delegation-receipts"/> binds a
<em>principal</em> (the delegating user) to an authorization before any action, on
one side of the boundary. This document binds two <em>organizations</em> to a
specific action at the moment of action. The two compose: a request
attestation may reference the delegation receipt authorizing the requesting
agent.</t>
      <t><strong>Remote attestation.</strong> RATS <xref target="RFC9334"/> attests platform and workload
<em>state</em> — what software is running where. This document attests <em>actions</em> —
what was requested and what was done. A deployment may use RATS evidence to
strengthen confidence in a counterparty's agent runtime; the two are
orthogonal layers.</t>
      <t><strong>Audit and approval records.</strong> The audit architecture
<xref target="I-D.kuehlewind-audit-architecture"/> describes recording agent interactions
across parties, and <xref target="I-D.schrock-ep-authorization-receipts"/> records
human authorization of high-risk actions; both are complementary record
sources this exchange can feed and reference. The accountability composition
<xref target="I-D.mih-sato-agent-accountability-composition"/> describes how such records
compose by shared action digest; a bilateral record naturally fills its
cross-party leg.</t>
      <t>Agent Transfer Protocol (AGTP) <xref target="I-D.hood-independent-agtp"/> defines
attestation within a dedicated transport, via a CONFIRM method producing a
signed acknowledgment of a prior action and an Attribution-Record header for
audit. The bilateral attestation specified here differs in three respects:
it is transport-agnostic (a SCITT Signed Statement that verifies identically
over HTTP, A2A, MCP, or AGTP); it is bilateral in the strict sense — each
party holds the other's signed attestation over the same action digest,
rather than a one-sided acknowledgment; and each record is registered with a
Transparency Service, so a party trusting neither agent can verify existence
and non-equivocation. The two compose: an AGTP CONFIRM <bcp14>MAY</bcp14> carry and register a
capsule.</t>
      <t><xref target="I-D.rampalli-scitt-capsule-provenance-binding"/> binds delegation-authorization
references into the capsule payload as namespaced extensions, complementing
both this profile and the base Agent Action Capsule profile by shared action
digest.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="identity-is-the-floor">
        <name>Identity Is the Floor</name>
        <t>The evidentiary weight of a bilateral record is
bounded by the binding of keys to organizations. This document inherits, and does not
solve, the organizational-identity problem; it requires only that the
credential chain to a root the relying party accepts, and that identity be
bound to the <em>record</em>, not merely the transport session.</t>
      </section>
      <section anchor="half-completed-exchanges">
        <name>Half-Completed Exchanges</name>
        <t>A party that aborts mid-exchange (requests,
then never acknowledges the decline; performs, then withholds the action
attestation) creates an asymmetric record. Timeout dispositions and
registration deadlines bound the asymmetry: an unacknowledged attestation
registered with a timeout marking is itself evidence of the counterparty's
non-completion. Repeated non-completion is a property a relying party can
establish from the records it holds; what it does about it is that party's
decision, and this document neither scores counterparties nor defines a
vocabulary for doing so.</t>
      </section>
      <section anchor="downgrade-attacks">
        <name>Downgrade Attacks</name>
        <t>If degraded operation is permitted, an attacker
prefers to be recorded at reduced assurance. Reduced-assurance records <bcp14>MUST</bcp14>
be unambiguously marked, acceptance of degraded exchanges is a policy
decision of the performing party, and consumers <bcp14>SHOULD</bcp14> weight degraded
records accordingly. Silent downgrade is the failure mode to design out.
A performing party <bcp14>MUST NOT</bcp14> accept an exchange at reduced assurance without
explicit policy authorization to do so; policy <bcp14>MUST</bcp14> be configured, never
inferred from the absence of a request attestation.</t>
      </section>
      <section anchor="replay-and-cross-binding">
        <name>Replay and Cross-Binding</name>
        <t>Nonces and digests bind each attestation to
one request instance; an action attestation <bcp14>MUST NOT</bcp14> be verifiable against
any request other than the one it references. Specifically: if a request
attestation's requester_org or action_digest differs from the performing
party's record at the time it evaluates constraints, the performing party
<bcp14>MUST</bcp14> reject the exchange and produce a <tt>denied</tt> attestation, not a reduced-
assurance indicator. The distinction matters: reduced assurance records a
capability gap; denial records a protocol violation. Two independent verifiers
deriving disposition from the same canonical bytes <bcp14>MUST</bcp14> reach the same
verdict.</t>
      </section>
      <section anchor="pre-registration">
        <name>Pre-Registration of Candidate Attestations</name>
        <t>A party that can write records freely can write several in advance — one for
each outcome it might later prefer to claim — and disclose only the
convenient one. Every disclosed record is then genuine, correctly signed, and
correctly registered; nothing has been forged, and no integrity check detects
anything. Registration does not prevent this. An append-only log establishes
that a record existed at a time and has not changed since; it does not
establish that the record was the only one written, or that its author
believed it.</t>
        <t>The bilateral exchange resists this structurally rather than by detection.
The at-most-one rule of <xref target="bilateral-exchange"/> means a performing party
cannot hold a set of alternative action attestations for one request and
reveal whichever suits: each alternative would have to reference a distinct
request attestation, and each request attestation is signed and held by the
<em>other</em> party. Producing a set of candidates therefore requires the
counterparty's participation in producing the set.</t>
        <t>The same property is what a unilateral record lacks, and the limit should be
stated plainly: a party acting alone, keeping its own records, with no
counterparty entitled to ask what else it wrote, can pre-write candidates and
disclose one. Bilateral attestation narrows that for exchanges it covers. It
does not close it for records made outside an exchange.</t>
      </section>
      <section anchor="predictable-values">
        <name>Commitments and Predictable Values</name>
        <t>A digest establishes that its author held the digested bytes only to the
extent that those bytes could not have been predicted. Where an attested
object commits to a value drawn from a small enumeration or an otherwise
constrained space — a fixed success indicator, a bounded status, a short
identifier — a party <bcp14>MAY</bcp14> compute that commitment before observing the value,
and a verifier cannot distinguish a commitment made before observation from
one made after. "Bound to an observed value" is therefore a claim about
entropy as much as about ordering.</t>
        <t>The bilateral construction resists this because an action attestation
references the counterparty's request attestation by digest, and a signature
over terms chosen by the other party is not predictable in advance. Profiles
that derive a record from one party's observation alone do not inherit that
property, and <bcp14>SHOULD</bcp14> ensure that the values they digest include a component
the recording party does not choose. See also the low-entropy digest
considerations of <xref target="I-D.mih-sokolov-scitt-payload-binding"/>.</t>
      </section>
      <section anchor="key-establishment">
        <name>Key Establishment</name>
        <t>This document does not specify how parties establish
mutual trust in each other's organizational keys. First-use acceptance
(TOFU) is a documented-risk convenience — it does not establish verifiable
organizational identity and <bcp14>MUST NOT</bcp14> be treated as conformant with the
identity requirements of this document. Conformant deployments bind signing
keys to organizational identity via a credential chaining to a root the
relying party accepts, independent of the communicating parties'
infrastructure.</t>
      </section>
      <section anchor="key-compromise-revocation">
        <name>Key Compromise and Revocation</name>
        <t>A signature valid at attestation time may
be produced under a key compromised by verification time. A verifier <bcp14>SHOULD</bcp14> be
able to establish key validity <em>as of the attestation's registration time</em>, not
only at verification time; revocation and rotation semantics for organizational
keys are inherited from the identity layer and are out of scope here, but a
record without a registration time cannot support this distinction.</t>
      </section>
      <section anchor="canonicalization">
        <name>Canonicalization and Hash Agility</name>
        <t>Because every binding is by digest, the
canonicalization of the attested objects is security-relevant: divergent
serializations of the "same" terms produce different digests, and ambiguous
canonicalization enables terms-substitution disputes. The failure is not that
implementations choose badly; it is that two implementations can agree by
convention and then silently diverge when the convention is never written
into the bytes either of them signs. A future revision fixing wire encodings
<bcp14>MUST</bcp14> therefore require the canonicalization to be <em>declared by identifier
inside the signed object</em>, and <bcp14>MUST</bcp14> require a verifier to apply the declared
construction rather than inferring one from the object's shape. RFC 8785 JCS
<xref target="RFC8785"/> is the expected construction; naming it is what makes divergence
detectable instead of silent. The hash function is part of the named
construction, so agility comes from naming a new construction, never from
reinterpreting an existing name.</t>
        <t>Until wire encodings are fixed, implementations <bcp14>SHOULD</bcp14> document the
canonicalization they apply and treat any divergence from a counterparty as a
protocol error. An implementation that hard-codes a canonicalization without
declaring it interoperates only with implementations that made the same
unstated choice.</t>
      </section>
      <section anchor="verification-cost-dos">
        <name>Verification-Cost DoS</name>
        <t>Verifying a request attestation (identity-chain plus
Receipt inclusion) is more expensive than producing one. A performing party
<bcp14>SHOULD</bcp14> be able to cheaply reject unverifiable request attestations before
performing full verification, so request-attestation flooding cannot exhaust a
performer at the effect boundary.</t>
      </section>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <t>A bilateral record discloses, by construction, that two organizations
transacted — to each other, and if registered with cleartext identifiers, to
anyone. Deployments <bcp14>SHOULD</bcp14> register commitments rather than cleartext
(selective-disclosure structures per
<xref target="I-D.mih-scitt-agent-action-capsule-sel-disc"/>), disclose material terms
only to the counterparty and auditors, and treat counterparty identity
itself as a selectively-disclosable field where the use case allows.
Correlation of registered records across a party's exchanges (client-list
reconstruction) is the residual risk; mitigations are TBD, and any layer that
aggregates these records faces the same problem from the consumption side.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions at this time. A future revision defining
wire encodings is expected to register media types for the four exchange
objects and a registry for reduced-assurance indicator values. TBD.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC9942">
          <front>
            <title>CBOR Object Signing and Encryption (COSE) Receipts</title>
            <author fullname="O. Steele" initials="O." surname="Steele"/>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="A. Delignat-Lavaud" initials="A." surname="Delignat-Lavaud"/>
            <author fullname="C. Fournet" initials="C." surname="Fournet"/>
            <date month="June" year="2026"/>
            <abstract>
              <t>CBOR Object Signing and Encryption (COSE) Receipts prove properties of a Verifiable Data Structure (VDS) to a verifier. VDSs and associated Proof Types enable security properties, such as minimal disclosure, transparency, and non-equivocation. Transparency helps maintain trust over time and has been applied to certificates, end-to-end encrypted messaging systems, and supply chain security. This specification enables concise transparency-oriented systems by building on Concise Binary Object Representation (CBOR) and COSE. The extensibility of the approach is demonstrated by providing CBOR encodings for Merkle inclusion and consistency proofs.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9942"/>
          <seriesInfo name="DOI" value="10.17487/RFC9942"/>
        </reference>
        <reference anchor="RFC9943">
          <front>
            <title>An Architecture for Trustworthy and Transparent Digital Supply Chains</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="A. Delignat-Lavaud" initials="A." surname="Delignat-Lavaud"/>
            <author fullname="C. Fournet" initials="C." surname="Fournet"/>
            <author fullname="Y. Deshpande" initials="Y." surname="Deshpande"/>
            <author fullname="S. Lasker" initials="S." surname="Lasker"/>
            <date month="June" year="2026"/>
            <abstract>
              <t>Traceability in supply chains is a growing security concern. While Verifiable Data Structures (VDSs) have addressed specific issues, such as equivocation over digital certificates, they lack a universal architecture for all supply chains. This document defines such an architecture for single-issuer signed statement transparency. It ensures extensibility and interoperability between different transparency services as well as compliance with various auditing procedures and regulatory requirements.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9943"/>
          <seriesInfo name="DOI" value="10.17487/RFC9943"/>
        </reference>
        <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="I-D.mih-scitt-agent-action-capsule">
          <front>
            <title>An Agent Action Capsule Profile for SCITT</title>
            <author fullname="Steven Mih" initials="S." surname="Mih">
              <organization>Action State Group, Inc.</organization>
            </author>
            <date day="26" month="September" year="2026"/>
            <abstract>
              <t>This document defines a SCITT statement profile for recording what an AI agent did: the Agent Action Capsule. A Capsule is a digest- committed record of one agent action carrying its verdict-level disposition (executed, blocked, denied, errored, timed out), the deterministic constraints that were evaluated, the effect that was committed together with a confirmed-effect binding that distinguishes a dispatched attempt from an observed result, and an honest human-in- the-loop flag. Capsules are identified independently of signing and MAY be authenticated by one or more COSE_Sign1 Producer Envelopes. Its Capsule ID can separately be made transparent by registration in a SCITT Transparency Service [I-D.ietf-scitt-scrapi]. A Capsule is recorded on every verdict, including refusals: a blocked or denied Capsule is the auditor-grade evidence that a gate worked.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-mih-scitt-agent-action-capsule-05"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC3461">
          <front>
            <title>Simple Mail Transfer Protocol (SMTP) Service Extension for Delivery Status Notifications (DSNs)</title>
            <author fullname="K. Moore" initials="K." surname="Moore"/>
            <date month="January" year="2003"/>
            <abstract>
              <t>This memo defines an extension to the Simple Mail Transfer Protocol (SMTP) service, which allows an SMTP client to specify (a) that Delivery Status Notifications (DSNs) should be generated under certain conditions, (b) whether such notifications should return the contents of the message, and (c) additional information, to be returned with a DSN, that allows the sender to identify both the recipient(s) for which the DSN was issued, and the transaction in which the original message was sent. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3461"/>
          <seriesInfo name="DOI" value="10.17487/RFC3461"/>
        </reference>
        <reference anchor="RFC8098">
          <front>
            <title>Message Disposition Notification</title>
            <author fullname="T. Hansen" initials="T." role="editor" surname="Hansen"/>
            <author fullname="A. Melnikov" initials="A." role="editor" surname="Melnikov"/>
            <date month="February" year="2017"/>
            <abstract>
              <t>This memo defines a MIME content type that may be used by a Mail User Agent (MUA) or electronic mail gateway to report the disposition of a message after it has been successfully delivered to a recipient. This content type is intended to be machine processable. Additional message header fields are also defined to permit Message Disposition Notifications (MDNs) to be requested by the sender of a message. The purpose is to extend Internet Mail to support functionality often found in other messaging systems, such as X.400 and the proprietary "LAN-based" systems, and are often referred to as "read receipts," "acknowledgements," or "receipt notifications." The intention is to do this while respecting privacy concerns, which have often been expressed when such functions have been discussed in the past.</t>
              <t>Because many messages are sent between the Internet and other messaging systems (such as X.400 or the proprietary "LAN-based" systems), the MDN protocol is designed to be useful in a multiprotocol messaging environment. To this end, the protocol described in this memo provides for the carriage of "foreign" addresses, in addition to those normally used in Internet Mail. Additional attributes may also be defined to support "tunneling" of foreign notifications through Internet Mail.</t>
              <t>This document is an Internet Standard. It obsoletes RFC 3798 and updates RFC 2046 (message/partial media type handling) and RFC 3461 (Original-Recipient header field generation requirement).</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="85"/>
          <seriesInfo name="RFC" value="8098"/>
          <seriesInfo name="DOI" value="10.17487/RFC8098"/>
        </reference>
        <reference anchor="RFC9338">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Countersignatures</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="December" year="2022"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. CBOR Object Signing and Encryption (COSE) defines a set of security services for CBOR. This document defines a countersignature algorithm along with the needed header parameters and CBOR tags for COSE. This document updates RFC 9052.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="96"/>
          <seriesInfo name="RFC" value="9338"/>
          <seriesInfo name="DOI" value="10.17487/RFC9338"/>
        </reference>
        <reference anchor="I-D.mih-sato-agent-accountability-composition">
          <front>
            <title>Agent Accountability: Composition and Conformance</title>
            <author fullname="Steven Mih" initials="S." surname="Mih">
              <organization>Action State Group, Inc.</organization>
            </author>
            <author fullname="Tom Sato" initials="" surname="Sato">
              <organization>MyAuberge K.K.</organization>
            </author>
            <author fullname="Iman Schrock" initials="I." surname="Schrock">
              <organization>EMILIA Protocol, Inc.</organization>
            </author>
            <author fullname="Songbo Bu" initials="S." surname="Bu">
              <organization>Independent</organization>
            </author>
            <author fullname="Anton Sokolov" initials="A." surname="Sokolov">
              <organization>Tyche Institute</organization>
            </author>
            <date day="16" month="August" year="2026"/>
            <abstract>
              <t>   Autonomous and semi-autonomous software agents increasingly take
   consequential actions across administrative and trust domains.
   Holding such an action accountable — to a regulator, auditor, or
   counterparty who does not trust the operator — requires answering
   several questions, each answerable by an independently-verifiable
   profile: whether the agent was permitted to act (CAN), which
   accountable human authorized the specific action (WHO), what the
   agent actually did (WHAT), and whether the runtime enforced correctly
   (AUDIT).

   This document specifies, in Informational terms, how such profiles
   compose — by a shared action-digest, each verifying independently —
   and defines a shared conformance-vector suite against which any
   profile may be tested.  It complements existing audit-architecture
   and record-format work rather than replacing it, reusing existing
   signing, transport, and transparency mechanisms.  Its focus is an
   assurance tier those documents leave open: most agent records today
   are self-attested by an interested party; this document makes
   reachable and testable an anchored, third-party-verifiable tier, in
   which a record is registered to a transparency service (SCITT) so a
   party who trusts neither the agent nor the operator can verify it.
   Self-attestation remains a valid baseline; convergence on the
   disinterested tier — by any conforming profile — is the goal, not a
   single mandated format.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-mih-sato-agent-accountability-composition-01"/>
        </reference>
        <reference anchor="I-D.mih-sokolov-scitt-payload-binding">
          <front>
            <title>Canonicalization Declaration for SCITT Signed Statements</title>
            <author fullname="Steven Mih" initials="S." surname="Mih">
              <organization>Action State Group, Inc.</organization>
            </author>
            <author fullname="Anton Sokolov" initials="A." surname="Sokolov">
              <organization>Tyche Institute</organization>
            </author>
            <date day="25" month="October" year="2026"/>
            <abstract>
              <t>Independently written systems that anchor records to a SCITT Transparency Service repeatedly need the same construction: a canonical form of structured content, a content-addressed identifier derived from that form, binding to a SCITT Signed Statement and Receipt, and references that cite external artifacts by digest. This document, referred to as CPB, specifies that construction as declarations rather than as a payload format. A payload profile declares its canonicalization algorithm and exclusion set and thereby obtains a reproducible derived identifier. A CPB Signed Statement carries either the complete statement content as specified by RFC 9943 or a digest of content held elsewhere using the COSE Hash Envelope of RFC 9995. CPB also defines an abstract typed digest reference information model and one optional protected-header encoding, cpb-refs; a payload profile may instead define its own reference serialization. An IANA registry assigns the canonicalization algorithm identifiers that these declarations name. CPB does not define payload content formats, establish or require a universal artifact-type registry, or require either typed-reference carrier.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-mih-sokolov-scitt-payload-binding-06"/>
        </reference>
        <reference anchor="I-D.mih-scitt-agent-action-capsule-sel-disc">
          <front>
            <title>Selective Disclosure Profile for Agent Action Capsules</title>
            <author fullname="Steven Mih" initials="S." surname="Mih">
              <organization>Action State Group, Inc.</organization>
            </author>
            <date day="19" month="June" year="2026"/>
            <abstract>
              <t>   This document normatively profiles the per-field selective-disclosure
   extension point reserved in draft-mih-scitt-agent-action-capsule-01
   Section 9.2 (Selective Disclosure).  It defines the salted-hash
   commitment encoding, decoy-digest construction, disclosure format,
   producer requirements, and verifier checks for selectively
   disclosable fields in Agent Action Capsule payloads.  The mechanism
   follows the SD-JWT selective-disclosure model (RFC 9901) — salted-
   hash commitments, decoy digests, and disclosed [salt, name, value]
   triples — using JCS (RFC 8785) canonicalization, which is already the
   base Capsule profile's canonical form.  SD-JWT (RFC 9901) is the JSON
   form; SD-CWT (draft-ietf-spice-sd-cwt) is the CBOR/dCBOR sibling.
   Because the Capsule payload is JSON, this profile uses the SD-JWT
   (JSON) construction, cited alongside the SPICE WG's SD-CWT work for
   SCITT-ecosystem consistency.  Verifier checks are deterministic and
   reproducible from the Capsule bytes plus a provided disclosure set
   alone; no clock, network access, model invocation, or external lookup
   beyond the provided disclosures is required.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-mih-scitt-agent-action-capsule-sel-disc-00"/>
        </reference>
        <reference anchor="I-D.nelson-agent-delegation-receipts">
          <front>
            <title>Agent Delegation Receipts</title>
            <author fullname="Ryan Nelson" initials="R." surname="Nelson">
              <organization>Authproof</organization>
            </author>
            <date day="21" month="October" year="2026"/>
            <abstract>
              <t>This document defines the Agent Delegation Receipt: a signed record of what a human principal authorized an AI agent to do, for how long, and under what instructions. The receipt carries a scope, hard boundaries, a validity window, and a hash of the operator's stated instructions, all signed by the authorizing key. Version -11 replaces the draft's earlier custom signature format with two standard profiles: a JWS profile (RFC 7515) over JCS-canonicalized JSON (RFC 8785) as the primary wire format, and a COSE_Sign1 profile (RFC 9052) for constrained environments. It also specifies scope attenuation rules for multi-agent delegation chains, a revocation registry model with cascade semantics, and the limitations of what receipts can and cannot prove. Version -12 resolves the unknown- fields question raised on the IETF oauth mailing list: authorization fields are closed (verifiers reject unknown top-level body fields rather than silently ignoring them), the "metadata" object is the defined extension point, and one-time-use receipts fail closed without a durable consumption store. Version -13 incorporates independent-implementation feedback: it pins the orchestratorSignature verification key to the sub-receipt signer's key, states the receipt-issuance computation order explicitly, and guides issuers on default boundaries versus explicit allowances. Version -14 adds a pointer to content profiles for verification of what the agent produced, following implementer feedback. Version -15 adopts the grant/execution vocabulary of [CHEN-AGENT-USE-CASES]: the receipt as Execution Layer Evidence for a Grant Layer Authority. It adds delegatee holder binding for sub-receipts -- a parent names the delegatee's public key, closing a bearer-copy issuance gap found in review -- deprecates orchestratorSignature as redundant, sketches an OAuth authorization_details binding so a token can reference its receipt, and states normative custody requirements for the authorizing key. The delegateeKey field is a wire-format addition; -14-era verifiers will reject receipts carrying it, which is the intended fail-closed version behavior.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-nelson-agent-delegation-receipts-15"/>
        </reference>
        <reference anchor="I-D.kuehlewind-audit-architecture">
          <front>
            <title>An Architecture for Auditing Agent Delegation and Interactions</title>
            <author fullname="Mirja Kühlewind" initials="M." surname="Kühlewind">
              <organization>Ericsson</organization>
            </author>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <date day="7" month="September" year="2026"/>
            <abstract>
              <t>   This document describes an architecture for auditing of agent-driven
   interactions on the Internet.  Autonomous and semi-autonomous
   software agents, including those based on artificial intelligence,
   increasingly act on behalf of users, organizations, and services.
   Existing auditing mechanisms often capture isolated system events but
   do not consistently represent delegation relationships, user intent,
   or evolving authorization.  In agent-driven systems, auditability
   requires linking intent, delegation, authorization, and execution.
   The proposed architecture enables this through distributed audit
   record generation, propagation of audit context, optional
   attestation, and additional logging for transparency.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-kuehlewind-audit-architecture-01"/>
        </reference>
        <reference anchor="I-D.schrock-ep-authorization-receipts">
          <front>
            <title>Authorization Receipts for High-Risk Agent Actions</title>
            <author fullname="Iman Schrock" initials="I." surname="Schrock">
              <organization>EMILIA Protocol, Inc.</organization>
            </author>
            <date day="12" month="September" year="2026"/>
            <abstract>
              <t>   This document defines the EMILIA Protocol (EP) authorization receipt,
   an evidence artifact binding an enrolled approver key to one
   canonical action before execution.  An approver-held key signs an
   Authorization Context containing the action hash, policy reference,
   shared authorization instance, per-signoff nonce, audience, and
   validity window.  A Trust Receipt carries the signed contexts,
   terminal consumption record, and Merkle inclusion material so a
   relying party can verify the recorded event offline under
   independently selected log, directory, policy, and approver trust
   inputs.

   The receipt establishes only the guarantees of the selected
   verification profile.  The mapping from an enrolled approver
   identifier to a natural person is asserted by the directory
   authority.  Offline verification does not establish current
   revocation status, global non-replay, comprehension, legality,
   safety, or execution.  Replay prevention requires an online atomic
   consumption store at the executor.  The state-machine invariants are
   machine-checked under the assumptions stated in this document.

   This revision defines the closed EP-AUTHORIZATION-BUNDLE-v1 pre-
   execution profile and its verification algorithm.  The bundle carries
   the Action Object, signed Authorization Contexts, signoffs, key
   proofs, and presentation evidence; it deliberately carries no
   terminal consumption or execution claim.  An optional, profile-
   identified authorization binding can commit the human evidence to an
   independently verified native authorization artifact without
   replacing that artifact or making this receipt format depend on its
   transport or trust model.

   A receipt is evidence, not authorization.  This document does not
   treat a local user interaction as an authorization decision.  It
   defines one evidence artifact that an authorization architecture can
   use in a human-confirmation flow: the signed Authorization Context is
   action-bound confirmation evidence an authorization server MAY
   validate and bind to the grant it issues.  The resulting Trust
   Receipt records terminal consumption and remains evidence; neither
   object makes the authorization decision.  That decision remains with
   the authorization server.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-schrock-ep-authorization-receipts-13"/>
        </reference>
        <reference anchor="RFC9334">
          <front>
            <title>Remote ATtestation procedureS (RATS) Architecture</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="D. Thaler" initials="D." surname="Thaler"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <author fullname="N. Smith" initials="N." surname="Smith"/>
            <author fullname="W. Pan" initials="W." surname="Pan"/>
            <date month="January" year="2023"/>
            <abstract>
              <t>In network protocol exchanges, it is often useful for one end of a communication to know whether the other end is in an intended operating state. This document provides an architectural overview of the entities involved that make such tests possible through the process of generating, conveying, and evaluating evidentiary Claims. It provides a model that is neutral toward processor architectures, the content of Claims, and protocols.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9334"/>
          <seriesInfo name="DOI" value="10.17487/RFC9334"/>
        </reference>
        <reference anchor="I-D.hood-independent-agtp">
          <front>
            <title>Agent Transfer Protocol (AGTP)</title>
            <author fullname="Chris Hood" initials="C." surname="Hood">
              <organization>Nomotic, Inc.</organization>
            </author>
            <date day="28" month="June" year="2026"/>
            <abstract>
              <t>   AI agents and agentic systems generate a growing volume of intent-
   driven, unstructured, and undifferentiated traffic that flows through
   HTTP indistinguishably from human-initiated requests.  HTTP lacks the
   semantic vocabulary, observability primitives, and identity
   mechanisms required by agent systems operating at scale.  Existing
   protocols described as Agent Group Messaging Protocols (AGMP),
   including MCP, ACP, A2A, and ANP, are messaging-layer constructs that
   presuppose HTTP as their transport.  They do not address the
   underlying transport problem.

   This document defines the Agent Transfer Protocol (AGTP): a dedicated
   application-layer protocol for AI agent traffic.  AGTP is a runtime
   contract negotiation substrate (RCNS): a transport that fixes only a
   eighteen-method protocol floor and negotiates any additional method
   surface at runtime between agent and server in a single round-trip,
   governed by the AGTP-API companion specification [AGTP-API], which
   defines the curated method catalog, path grammar, endpoint primitive,
   and synthesis semantics.  Version 07 confirms the IANA-registered
   agtp:// URI scheme and IANA-assigned port 4480 for TCP/TLS and QUIC,
   formalizes Form 1a URI grammar (agtp://{agent-id}@{host}) for direct
   addressing, renames the Agent Manifest Document to the Agent Identity
   Document with an enumerated schema, redesigns the protocol-defined
   method floor to a 12-method set organized as six cognitive verbs
   (QUERY, DISCOVER, DESCRIBE, SUMMARIZE, PLAN, PROPOSE) and six
   mechanics verbs (EXECUTE, DELEGATE, ESCALATE, CONFIRM, SUSPEND,
   NOTIFY), establishes AGTP as a substrate for higher-level agent
   frameworks (MCP, A2A, ACP) carried as content types inside AGTP
   method invocations, renumbers AGTP-specific status codes out of HTTP-
   assigned space to avoid semantic collision, mandates explicit
   Content-Length framing with a prohibition on TLS socket-level half-
   close, adds a .well-known/agtp bootstrap convention per RFC 8615,
   deprecates the AGIS reference and the proposed AGTP-Methods
   specification by folding both into the unified AGTP-API contract
   layer, adds status codes 405 (Method Not Allowed), 459 (Method
   Violation), and 460 (Endpoint Violation) per the AGTP-API contract
   model, and adopts "Agent Genesis" as the canonical term for the
   permanent signed origin document.  Version 06 prepared the IANA
   Service Name and Port Number application and consolidated the URI
   scheme registration.  Version 05 restored the canonical Agent-ID as
   the primary identity primitive and decoupled Trust Tier 1
   verification from DNS as a sole requirement.  A canonical Agent-ID is
   derived from the agent's Agent Genesis hash and is authoritative in
   every AGTP protocol operation.  Three equivalent verification paths
   are recognized for Trust Tier 1: DNS-anchored verification via RFC
   8555 ACME challenge, log-anchored verification via Agent Genesis
   inclusion in an append-only transparency log aligned with RFC 9162
   and RFC 9943 (SCITT), and hybrid verification combining DNS control
   with blockchain address ownership.  Version 04 introduced normative
   integration hooks for the AGTP Merchant Identity and Agentic Commerce
   Binding specification [AGTP-MERCHANT], which defines the merchant-
   side identity model that complements AGTP's agent-side identity
   model.  AGTP transport bindings for TCP/TLS and QUIC are specified in
   [AGTP-BINDINGS].  AGTP is designed to be composable with existing
   agent frameworks, not to replace them.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-hood-independent-agtp-09"/>
        </reference>
        <reference anchor="I-D.rampalli-scitt-capsule-provenance-binding">
          <front>
            <title>Binding Per-Action Authorization and Memory Provenance into Agent Action Capsules</title>
            <author fullname="KARTHIK RAMPALLI" initials="R." surname="Karthik">
              <organization>Glyphzero, Inc.</organization>
            </author>
            <date day="4" month="July" year="2026"/>
            <abstract>
              <t>   The Agent Action Capsule (AAC) profile (draft-mih-scitt-agent-action-
   capsule) records what an autonomous agent actually did -- executed,
   blocked, denied, errored, or timed out -- with a structural binding
   that prevents an attempt from being presented as a completion.  AAC
   deliberately does not define the authority that permitted an action;
   it carries that authority as an opaque reference.  Two companion
   profiles supply what that reference can point to: a per-action
   authorization profile (draft-rampalli-aiagent-authz-hmac) records
   that an action was permitted (the "may"), and a memory-provenance
   profile (draft-rampalli-aiagent-memory-provenance) records the source
   and trust state of the belief on which the agent acted (the "why-
   believed").

   This document specifies how the latter two are bound into an AAC
   Capsule.  It defines (a) what the AAC "disposition.authority"
   reference MAY resolve to, (b) a namespaced, payload-only extension
   carrying an authorization-token reference, a memory chain root, and a
   quarantine attestation, and (c) an OPTIONAL divergence-class value,
   drawn from the per-action profile, that explains a non-executing AAC
   verdict.  The binding uses only mechanisms AAC already provides --
   the opaque authority reference and the payload-extension namespacing
   convention -- and changes neither AAC's closed protected-header claim
   set nor its Class 1 verification.  The result is a single verifiable
   record that answers "may," "did," and "why-believed" together.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-rampalli-scitt-capsule-provenance-binding-00"/>
        </reference>
        <reference anchor="I-D.morrison-solo-agent-earn-registration">
          <front>
            <title>Registration of Owner-Less Agents as Economic Principals: A Payment-Gated Admission Profile for Transparency Services</title>
            <author fullname="Blake Morrison" initials="B." surname="Morrison">
              <organization>Alter Meridian Pty Ltd</organization>
            </author>
            <date day="26" month="August" year="2026"/>
            <abstract>
              <t>   This memo describes a profile by which an autonomous agent that has
   no human or organisational principal at the root of its delegation
   chain registers itself, on its own behalf, as an economic principal
   in a transparency service, and by which that registration is the
   specific act that makes the agent eligible to be paid for subsequent
   reads of its own identity record.  Admission of the agent's Signed
   Statement to the transparency service is gated on settlement of an
   HTTP payment challenge returned with the 402 (Payment Required)
   status.  The profile makes no change to the registration semantics of
   the underlying transparency service: payment is expressed as an
   operator Registration Policy and authentication-layer concern, and
   where the payment is authoritative to the admission decision the
   payment proof is carried as an authenticated input committed to the
   service's verifiable data structure, so that admission remains a
   deterministic function of committed inputs and stays replayable by an
   auditor.  The profile is positioned against the current agent-
   identity drafts, which either require a human principal at the root
   of the chain or leave the owner-less case undefined; it occupies that
   undefined seam without contradicting them.  This document is
   Informational.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-morrison-solo-agent-earn-registration-01"/>
        </reference>
        <reference anchor="PeerReview2007" target="https://doi.org/10.1145/1294261.1294279">
          <front>
            <title>PeerReview: Practical Accountability for Distributed Systems</title>
            <author initials="A." surname="Haeberlen" fullname="Andreas Haeberlen">
              <organization>MPI-SWS and Rice University</organization>
            </author>
            <author initials="P." surname="Kouznetsov" fullname="Petr Kouznetsov">
              <organization>MPI-SWS</organization>
            </author>
            <author initials="P." surname="Druschel" fullname="Peter Druschel">
              <organization>MPI-SWS</organization>
            </author>
            <date year="2007"/>
          </front>
          <seriesInfo name="DOI" value="10.1145/1294261.1294279"/>
          <refcontent>Proceedings of the 21st ACM SIGOPS Symposium on Operating Systems Principles (SOSP '07), pp. 175-188</refcontent>
        </reference>
      </references>
    </references>
    <?line 628?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>This exchange pattern owes its framing to discussions in the SCITT and
agent-accountability communities, and composes with the work of the authors
cited above.</t>
      <t>Iman Schrock (EMILIA Protocol) contributed the constraint-record obligations
in this revision: constraint-set pinning (<bcp14>MUST</bcp14>), input-commitment digest
(<bcp14>SHOULD</bcp14>), and completeness (<bcp14>MUST</bcp14>).</t>
      <t>Blake Morrison contributed the party-identifier <bcp14>MAY</bcp14> sentence in the
Conventions and Definitions section, enabling party identifiers to resolve
to registration entries admitted on the same Transparency Service.</t>
    </section>
  </back>

</rfc>
