| Internet-Draft | AI-Decision-Receipt | October 2026 |
| Dobson | Expires 29 April 2027 | [Page] |
Automated systems, including AI models and AI agents, increasingly make decisions and take actions that affect people, money and data. Emerging work on agent identity answers which agent made a request and whether it was authorised. It does not give the parties involved a portable, independently checkable record of what was decided.¶
This document defines AI-Decision-Receipt, an HTTP response header field that carries a compact receipt for a governed automated decision: the outcome, a fingerprint of the exact request the decision was made on, the position and hash of the record in the issuer's tamper-evident log, and a location where anyone can verify that record without trusting the issuer. The field uses the Structured Field Values for HTTP Dictionary type.¶
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 29 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.¶
When an automated system decides something - to allow a payment, to refuse an application, to let an agent call a tool - the parties affected usually receive no durable evidence of that decision. Logs, where they exist, are held by the operator of the system and can be edited by that operator. A later dispute between a customer, a regulator, an insurer and the operator then depends on whose account is believed.¶
Several efforts address the identity of automated clients: HTTP Message Signatures [RFC9421] profiles that let a website verify which bot or agent sent a request, and OAuth-based delegation that records which person or organisation authorised an agent. Identity answers "who acted" and "were they allowed to". It does not answer "what exactly was decided, on exactly what input, and can that be shown later to someone who trusts none of the parties".¶
This document defines a small, transport-level receipt for that second question. A system that governs or records an automated decision (the issuer) returns the AI-Decision-Receipt header field with its HTTP response. The receipt binds:¶
The receipt is deliberately small and is not itself proof. It is a pointer that lets any party fetch the proof and check it with their own tools. The design follows the same principle as Certificate Transparency [RFC6962]: the issuer commits to a record in a log that anyone can audit, so a later change to that record cannot be hidden.¶
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.¶
AI-Decision-Receipt is a Dictionary Structured Field (Section 3.2 of [RFC9651]). It is a response header field. It MUST NOT be sent as a trailer field, because a relying party needs it to be bound to the response it accompanies. Its members are defined below.¶
Receivers MUST ignore members they do not recognise, so that later versions can add members without breaking existing receivers. Parameters on members are not defined by this document and MUST be ignored.¶
A response from an issuer that sealed an ALLOW decision (line breaks added and hash values shortened for readability; real seal and req values are 64 hexadecimal characters):¶
Issuers that serve cross-origin requests SHOULD include AI-Decision-Receipt in Access-Control-Expose-Headers, so that web applications can read the receipt.¶
An issuer that emits a receipt containing block, seal and verify:¶
A relying party verifies a receipt as follows:¶
A receipt that passes these checks shows that the issuer recorded the stated decision about the stated request, at or before the anchored time, and has not since changed that record without detection. It does not show that the decision was correct, lawful or fair; it makes the decision available to be examined.¶
Agent identity mechanisms and this receipt are complementary. Identity establishes who sent a request and under whose authority; the receipt establishes what was decided about it and lets anyone check that record later. When an issuer has authenticated the client - for example by verifying an HTTP Message Signature [RFC9421] - it SHOULD place the verified key identifier in the agent member and include it in the sealed record, so that the identity of the agent and the decision about its request are bound in the same tamper-evident entry.¶
An issuer MUST NOT populate agent from unauthenticated information such as the User-Agent header field.¶
This section records the status of known implementations of the protocol defined by this specification at the time of posting of this Internet-Draft, and is based on a proposal described in [RFC7942]. It is to be removed before publication as an RFC.¶
Organisation: Monop Content, United Kingdom.¶
Description: emits AI-Decision-Receipt version 1 on every response from its AI gateway (which sits in front of OpenAI and Anthropic model APIs) and on every response from its decision API. Records are sealed in a SHA-256 hash chain that is anchored hourly in Bitcoin through OpenTimestamps and observed by independent witness chains. Records can be checked in a web browser or with a standalone script that makes no network calls to the issuer.¶
Specification and checker: https://sebbi.pro/standard/ai-decision-receipt¶
Level of maturity: in production.¶
Coverage: all members defined in this document except agent.¶
Contact: the author of this document.¶
A receipt is an assertion by the issuer until it has been verified as described in Section 5. Relying parties MUST NOT treat the presence of the field as evidence that a decision was recorded.¶
The header field is not itself signed. An intermediary that can modify the response can alter or remove it. Integrity of the field in transit depends on the transport (for example TLS). Where a receipt must be attributable to the issuer independently of transport, the issuer MAY sign the response, including this field, with HTTP Message Signatures [RFC9421]. Regardless of signing, a forged receipt fails verification against the issuer's log.¶
An issuer controls its own log. Without external anchoring or witnessing, an issuer could rebuild its log from an earlier point. The anchoring requirement in Section 4 exists to make such rewriting detectable; relying parties that need strong assurance SHOULD check anchors themselves.¶
A receipt can be replayed alongside a different response. Relying parties SHOULD use req, and where present call and agent, to check that a receipt belongs to the exchange it accompanies.¶
Verify URIs are retrieved by relying parties. Relying parties SHOULD only follow verify URIs whose host matches the issuer or is otherwise trusted for that issuer, to avoid being directed to arbitrary hosts.¶
The req member is a hash, not the request itself. A hash of a short or predictable request body can be reversed by guessing. Issuers SHOULD NOT publish request bodies at the verify URI, and SHOULD consider whether published hashes of low-entropy requests could reveal personal data; where they could, the issuer MAY include a secret random value, returned only to the client, in the hashed material.¶
The verify URI is public. Records published there MUST NOT contain personal data unless the issuer has a lawful basis to publish it; publishing only hashes is sufficient for verification.¶
The agent member can link requests made by the same agent. Issuers SHOULD include it only when the client has authenticated as that agent.¶
IANA is requested to register the following entry in the "Hypertext Transfer Protocol (HTTP) Field Name Registry" defined in Section 16.3.1 of [RFC9110]:¶
The design draws on the transparency-log approach of Certificate Transparency and on the Structured Field Values work of the HTTP Working Group.¶