If you’ve ever had to submit an expense report, you know the feeling.
You can describe the dinner. You can tell a story about why it was necessary. But none of that is the thing the finance team wants.
They want the receipt.
Agent systems are moving into the same place. Demos let you get away with vibes. Production doesn’t.
In production, people ask boring questions:
- What did you use?
- Where did it come from?
- When was it published?
- Was this a quote or an interpretation?
- If I rerun this tomorrow, do I get the same underlying evidence?
If your agent can’t answer those, you don’t have reliability. You have a smooth talker.
What counts as a receipt?
A receipt is not “here’s a link I found.”
Links rot. Pages update. Sources republish. Headlines change. And even when the page stays up, the important part is rarely the whole page. It’s the specific claim inside it.
A useful receipt is an addressable context object. It carries:
- A stable identifier (so you can refer to the same thing again).
- A source URL (so a human can verify).
- A published date (so time is explicit).
- Evidence type (direct quote, observed, derived, etc.).
- Confidence label (stated, measured, inferred, and so on).
- Enough metadata to know what kind of source it was (press release, filing, podcast, blog, dataset).
This sounds like bureaucracy until you watch an agent make a mistake that looks small in a chat window and huge in a workflow.
Receipts change how agents behave
When an agent has receipts, you can do something that’s almost impossible with pure text retrieval: run policy before generation.
For example:
- “Only cite direct quotes publicly.”
- “If the claim is inferred, fetch the underlying record before acting.”
- “If the published date is outside the requested window, ignore it.”
- “If two sources disagree, surface both and label the conflict.”
Those are not prompt tricks. They’re system behavior.
Receipts are what make agent context operational.
Why Hanging Context is public
There’s a reason Hanging Context is built as public panels with JSON twins.
Receipts only work when they’re stable. A URL that changes shape, a schema that shifts every week, or an “as of” timestamp that isn’t authoritative makes receipts fragile.
Public panels give you a citeable layer:
- A stable page a human can read.
- A machine-readable twin a system can parse.
- Bounded examples that show claim structure without giving away the whole detail layer.
Then the paid layer can do what it’s supposed to do: deliver the deeper objects (streams, manifests, records) to systems that need to act.
That is how you make something citeable without turning your product into an unpaid API.
The moment you know you need receipts
You know you need receipts the first time someone tries to use your agent output as evidence.
Not evidence in an academic sense. Evidence in the normal human sense:
“We’re going to do this. Are we sure?”
At that moment, “the model said so” is embarrassing.
Receipts are the grown-up version of context for AI agents. They’re how you make an agent that can survive contact with the real world.