| Internet-Draft | PSI Agent | October 2026 |
| Singh | Expires 16 April 2027 | [Page] |
This document defines a profile of Proof of Stateful Integrity (PSI) for recording actions taken by software agents, including calls to language models and tools. The agent runtime computes a digest of each action locally and seals only the digest, so later alteration or omission of a recorded action is detectable. A receipt shows that a specific action record existed unchanged at a time; it does not show that the action was correct, safe, authorised, or lawful, and it allocates no liability.¶
This revision withdraws the liability-allocation language of revision 00 and aligns the Merkle commitment with draft-singh-psi-merkle-01.¶
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.¶
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.¶
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."¶
This Internet-Draft will expire on 16 April 2027.¶
Copyright (c) 2026 IETF Trust and the persons identified as the document authors. All rights reserved.¶
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Revised BSD License.¶
Agents act without a human reviewing each step. When a result is disputed, parties need to know which actions were recorded and whether the record was edited. The key words "MUST", "MUST NOT", "SHOULD", and "MAY" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.¶
An action record is a JSON object that MUST contain event (for example llm_end, tool_end, decision), name (the function or tool), and result or outputs; it MAY contain args and prev, the digest of the previous action in the same run. The digest is SHA-256 over the canonical form of [RFC8785]. Records SHOULD NOT contain personal data; if they must, a salt of at least 128 bits MUST be included.¶
The runtime submits sha256:<digest> to the issuer and receives a receipt per [PSI]. Sealing SHOULD be asynchronous so the agent does not wait on the network, and a sealing failure MUST NOT alter the agent's action. A run is chained by including prev; sealing the final digest of the chain commits the whole run.¶
A verifier recomputes the digest from the held record, checks the receipt signature (Ed25519 [RFC8032], and ML-DSA-65 [FIPS204] when present), and checks inclusion per [I-D.merkle].¶
A runtime that is compromised can seal false records; sealing does not attest to the runtime. Unsealed actions are not detected unless runs are chained. Digests of low-entropy records can be guessed; use a salt.¶
This document has no IANA actions.¶