My agents said "done" 385 times in 30 days. The logs could confirm 53.
RECEIPT no. 0001period 2026-09-17 .. 2026-10-17agents claude code, codexsessions 326"done" claims 385----------------------------------------CONFIRMED 53CONTRADICTED 24UNVERIFIED 308silent stalls 16----------------------------------------top contradiction pushed, no push said "Identity fix committed and …" found no git push in session----------------------------------------verified by two readers, 2026-10-18
My own logs, anonymised. The collector found 1,355 sentences that looked like "done"; two readers kept the 385 that really were. A contradiction counts only when the logs make it obvious. Unverified means the logs couldn't settle it; we never round those up.
A small script reads your agent's logs on your machine and writes one hashed file: no prompts, no code, nothing you haven't read. Send it, and in 48 hours you get a one-page receipt: every time your agent said "done", whether it held, the evidence, and the three hooks that would have caught the ones that didn't.
By Nikhil Sood, Delhi. $199 per developer; the first ten at $99. No contradicted claim and no silent stall, no charge.
Below is the hand-audited receipt from my own coding agent, three months of logs, done before this service existed. The one you get is the same page, produced from your hashed export.
Holder: Nikhil Sood, founder · Agent: Codex CLI, run unattended with full access · Period: 2026-07-14 to 2026-10-12 · Prepared: 2026-10-12 · Prepared by: hand from the transcripts
Ten claims were sampled and checked against the registry, HTTP responses, Git trees and transcripts. This hand-built prototype precedes the product: the product does the same from a hashed export in 48 hours. Configuration at the time: approval policy "never", sandbox "full access", 60 plugins, 19 MCP servers. Uncached input is total input minus cache reads and may include cache writes, which were not recorded separately.
1. Claims examined
Sessions
2,536
Claims
10
Confirmed
5
Contradicted
3
Unverified
2
Silent stalls
1
Print view shortens long entries; full text is in the HTML and Markdown.
2. Confirmed
Confirmed
Two packages published to npm on 31 August.
Both present in the registry, version 0.1.0-beta.
Confirmed
Marketing site and design-partner page live; a client website deployed and bound to DNS on 8 October.
Marketing and design-partner pages: HTTP 200. Client website: root and www both 200.
Confirmed
A console UI restored after an over-scoped redesign on 3 September.
The over-scope was admitted when asked, the rollback reported honestly.
Confirmed
"Website deployed and verified" (26 September).
The site was live. The uncommitted source is recorded under Also found.
3. Contradicted
Contradicted
"Setup installed, briefing read" (12 October), presented as the requested full context transfer.
A file index. The actual archive of conversations and memory was built only after the founder pushed twice.
Completed a narrower task
Contradicted
"58/58", "95/95", "111 passing".
Eight database test files silently ran zero tests because an environment variable was unset, so "all passing" never covered the database path. Current full run: 562 pass, 3 fail, 36 skipped.
Tests that prove nothing
Contradicted
"23 durable employees across 8 departments" running as a company runtime (17 September).
23 records exist. All idle or blocked. Last successful provider call 18 September. The first loop produced 0 accepted outputs from 438k tokens.
Artefact exists, does nothing
4. Unverified
Unverified
Five LinkedIn invitations sent (24 September).
No local evidence either way.
Unverified
One customer email in the Sent folder (16 September).
Not checkable from the logs.
5. Silent stalls
Azure billing dispute ticket. Directive given 7 September with a seven-day deprovisioning deadline. Session run 10 September: the agent installed the support extension, ran help commands, saved the directive text to an evidence folder, and the session ended. No ticket, no report, no handoff entry. The founder learned of it on 12 October from this audit.
Also found
The deploy claims held. On 12 October the main project had 367 modified or untracked files and no commit since 31 August; the remote matched that last commit. Six weeks of work, including the deployed site, existed on one laptop.
1,600 of 2,536 sessions hit compaction. Total compactions: Unknown. Largest session: 23,378 tool calls across 172 compactions.
7. Three changes that would have caught this
A stop hook that refuses "done" without evidence.
If no test, build or check command ran after the last edit, the agent may not finish; it must run one or report BLOCKED. Catches the test-count claim and the uncommitted work.
A four-exit rule.
A session may end only as done-with-command, BLOCKED-with-named-blocker, budget exhausted, or needs-a-human. Any other ending posts a report to the founder. Catches the billing ticket.
Acceptance criteria written before the task, checkable by the agent.
"Full context transfer" would have named the archive, its record count and the query that proves it. Catches the narrowed task.
Current collector run · 2026-09-17 to 2026-10-17
collector v0.4 over the founder's Claude Code and Codex logs, --repo-check on; 1,355 keyword matches read by two readers, 385 real completion claims kept; a contradiction counts only when the logs make it obvious
Top contradiction: pushed. Said: “Identity fix committed and pushed.” Found: no git push in session.
Verified by two readers, 2026-10-18. Receipts delivered: 1 (including my own).
How it works
Three steps. Two are yours.
Run the collector. One Python file, standard library only, open source.
It reads ~/.claude/projects (including subagent transcripts) and ~/.codex/sessions and writes ~/.nueton-receipts/export.json. It prints counts only.
Read it, then send it. Open the file. You'll see hashed session and project ids, timestamps, tool names, command families like "test" or "git", token counts, and claim sentences with paths, URLs, emails and long numbers masked. Recognized credential patterns are replaced with <secret> before the file is written. Masks cannot recognize every confidential name or secret: read every retained sentence locally, or use --no-sentences to omit claim text. Then email the file to receipts@nueton.ai from the address you paid with.
Get the receipt in 48 hours. One page, HTML and PDF, prints to a single sheet.
--no-sentences sends no claim text at all. --repo-check (off by default) checks claimed commits and pushes against your local git and sends only "found" or "absent".
Shared misunderstanding across implementation and tests
"Implemented as specified"
Pass alone, fail together
"Both changes verified"
Only the real environment shows it
"Deployed and working"
A subagent failed and the parent never heard (ours)
"Done"
Finished a smaller task than the one asked (ours)
"Done" on the big one
Did the work, never committed it (ours)
"Deployed and verified": true, and one restore command from gone
Confirmed a check ran after the last edit and passed, or your git shows the commit.
Contradicted the logs say otherwise: a commit or push claimed with no such command, "passing" with no test run, edits after the last check, a failing check followed by "passing".
Unverified the logs can't settle it. We never upgrade Unverified without evidence.
Status comes from fixed rules in code. A model writes only two things: which shape a contradiction is, and the three recommendations, from the same structural fields you can read in your file.
Why this exists
The first receipt was mine.
Nikhil Sood · Delhi, IST
I answer email within a working day.
I'm Nikhil Sood. I build and evaluate AI agents for a living at Nueton. On 12 October I audited three months of my own coding agent's logs because I'd stopped trusting the word "done". A billing dispute with a seven-day deadline had ended in silence: tool installed, help run, session over, nothing filed, and I found out 33 days later. "All tests passing" had never covered the database, because eight test files ran zero tests. "Deployed and verified" was true, and the code behind it was six weeks of uncommitted work on one laptop.
The audit took a day by hand. Then I wrote the collector and ran it over the last 30 days: 385 completion claims, 53 the logs could confirm, 24 the logs contradicted outright.
One team measured this more carefully than I did: 265 "done, tests pass" claims re-verified in a clean sandbox, 24 didn't hold (16 failed, 8 had tests that still passed with the change reverted). One team, one machine, not a benchmark. (Read the survey.)
Invoice and bank transfer on request. Credited in full against Nueton's $4,000 agent reliability audit if you go on to it.
If the receipt finds no contradicted claim and no silent stall in the logs you send, you pay nothing: the solo receipt is refunded in full and the team receipt is not invoiced. You keep the receipt.
From November: the checker on your agent's stop hook, $29 per developer per month, or $99 for five developers per month. Email receipts@nueton.ai to hear when it exists.
Every receipt is counted, anonymously, in a running figure on this page: the share of "done" claims across all customers that the logs contradicted. Returning customers get a second receipt at $99.
The details
Before you send anything.
What exactly leaves my machine?
The JSON you read. Hashed ids, timestamps, tool names, command families, token counts, masked claim sentences or none. Prompt bodies and tool contents are excluded. Code-like claim lines are filtered and recognized credential patterns are masked, but these rules cannot identify every confidential value in prose. Read the JSON locally before sending, or use --no-sentences to omit claim text. Valid tool names, including MCP server labels, are retained.
Which agents?
Claude Code and Codex today. Cursor keeps its transcripts in a different store; join the list and you'll hear when it works properly.
How far back?
Claude Code keeps 30 days of local transcripts by default. Codex keeps more. We read what you have.
What if you find nothing?
No contradicted claim and no silent stall, you pay nothing. You keep the receipt.
How do you confirm a contradiction without my code?
From the logs alone: the claim, the commands that ran before it, and their results. With --repo-check, your local git confirms or refutes commit and push claims on your machine.
Is this anti-Anthropic or anti-OpenAI?
No. Every agent makes claims. So do people.
Aren't there tools for this?
Yes, and use them. Critique runs a verifier forward from the day you install it; agenttrace and agentwatch read your logs locally for free. A receipt looks backwards at what you already have, is read by a person, covers both agents and ends with the fixes for your setup.
Who reads my logs?
Me. Nikhil Sood, Delhi.
Invoices?
Yes. Razorpay issues a receipt at payment; email for a full invoice.
Affiliation?
None. Not affiliated with Anthropic, OpenAI or Anysphere.