What leaves a receipt
Agent actions, links and administrative changes land on the same trail, so “who did what” and “who read what” live in one place.
What a receipt holds
manifest_hash points to the provenance manifest of that delivery, which records:
- every item included, with the event it came from;
- every exclusion, with its reason:
policy,verification,budgetorquarantine; - the versions of the compiler, template, policy and extractor;
- tokens per section and the prompt-cache decision.
The chain
Receipts are append-only. Each one carries its position (seq) and the hash of the previous receipt (prev_hash), chained per space, per slice and per day. A small space has one slice; a large one has up to 16, chosen by the profile, so the busiest space still writes without a single bottleneck. Once a day the heads of the slices are combined into a daily root, which goes to immutable storage with object lock. Changing any past receipt breaks every hash after it and no longer matches the root.
A quick continuity check over one page of a slice:
GET /v1/receipts/verify?day=2026-09-22 walks every slice of that day and answers valid, the count of receipts, the heads of each slice, any breaks it found, and whether the recomputed root matches the anchored one (root_matches).
The receipt routes are governance routes: a Console person with the security role, or a key with the admin scope. Filter the list by profile_id, conversation_id, source_id, kind and a since/until window, and page with cursor. See List receipts.
Three questions receipts answer
Why did the agent say X? At 2:07 pm the voice agent told Marina the $40 credit was already applied. The receipt ofcall-4471 lists act_01J8ZK, the billing agent’s 2:06 pm action, among the delivered items; the manifest shows it came from the credit action on invoice:erp:0823, confirmed by the ERP event. Receipt, manifest, item, event: four steps from the sentence to its source, and GET /v1/lineage/receipt/{receipt_id} walks them for you, returning the receipt, the delivered items with their origin and the exclusions.
Who saw fact F? GET /v1/lineage/fact/{fact_id} returns every receipt whose delivery carried that fact: each source that received it, with purpose, level and time.
What was withheld, and why? withheld says how many items the policy held back; the manifest says which reason applied to each (policy, verification, budget or quarantine). The agent learns only the count, never the content, so it knows that verifying the customer releases more.
Receipts in your SIEM
Receipts leave in seconds through the same delivery mechanism as webhooks, as JSON in the OCSF schema, or as files in your bucket together with the continuous export. You choose the path. SIEM delivery is optional on the Production plan and included on the Regulated plan.Receipts and erasure
When a data subject is forgotten, read receipts are not rewritten: they already hold only ids and hashes, so they prove a read happened without keeping what was read. The erasure itself leaves anadmin receipt, the erasure receipt, which lists what was erased and the export runs that already contained it. Measurement rows follow the retention and policy of the receipt they belong to.
Next steps
Privacy, erasure and export
the erasure receipt and the lineage it walks.
Context use
every signal opens the receipt of its delivery.
Context and views
withheld items and the verification levels.
List receipts
the endpoint in detail.

