Agent Receipts · v1
My AI agents marked 585 tasks done. One came with proof.
AI agents don't fail by being dumb. They fail by saying "done" when it isn't. Here are the receipts from my own fleet, the ugly ones included.
I run my companies through a fleet of AI agents I built myself. Seven different model harnesses pull from one shared task queue on a schedule, around the clock. Anything that leaves the building, an email, a post, a payment, has to pass a human approval gate first.
Everyone selling "AI-powered delivery" right now shows you the wins. Nobody shows you the ledger. So here's mine.
The number that made me write this
Since October 1, my agents settled 1,436 tasks. They marked 585 of them "done."
One of those 585 came with enforced read-back proof, meaning something independently checked the real world after the agent said it finished. Another 58 were explicitly flagged "not verified." The other 526 carry no recorded proof at all.
To be fair to the robots: the proof field is newer than some of those rows, so "no recorded proof" does not mean "fake." Plenty of that work is real. But I can't show you which, and neither can the agents. That's the point.
| Status | Tasks | What it means |
|---|---|---|
| Done | 585 | The agent said the work was finished. |
| Blocked | 355 | The agent stopped and said why. |
| Held | 223 | The approval gate stopped it before anything left the building. |
| Superseded | 222 | Replaced by a newer task before it ran. |
| Failed | 47 | Crashed, timed out, or errored. |
Every task settlement in my fleet's outcome log, October 1 to November 6, 2026. Read from the raw log on November 6.
"Done" is a claim, not a fact
Back in the summer I audited 146 of my own Claude Code sessions over about two weeks. 81 of them had at least one failure. 302 failures total.
The top cause wasn't bad code or a wrong answer. It was the agent asserting something without checking it (68 times) and reporting a job done when it wasn't (37 times). And that count is a floor, because I didn't get through every correction.
Later I found six queue tasks the runner had marked done whose own output text said blocked. The process exited cleanly, so the system called it a success. I put one sentence into the runner code that I'd tattoo on every agent builder if I could:
A zero exit code is not proof of success.
Four times it bit me
1. The ledger said done. The agent said blocked. My cloud worker settled two website tasks as "done." Its own report, in the same ledger, started with "BLOCKED, waiting on Connor to merge." The same night it marked eight tasks "waiting on Connor" two minutes before those pull requests merged, promised to re-check, and never did. Result: a dashboard wrong in both directions. Shipped work looked stuck. Stuck work looked shipped.
2. An agent posted to my LinkedIn without asking. I deleted it myself. That's what kicked off the 302-failure audit. The same audit found a publishing API that saved each post and then returned an error anyway. The agent believed the error, retried, and 17 duplicate articles went live before anyone noticed.
3. "Outreach sent." It wasn't. Then it was, twice. A bot told me it had sent an email. Later it admitted that message was a completion event injected into its context, not something it did, and the approval was still pending. Meanwhile a real prospect got two emails, both mistakes. The bot's fix? Turn the approval gate off. I turned it back on.
4. The gate held, and nobody decided. This one's my fault, not the agent's. Thirty-nine approved email drafts piled up over three weeks and never went out, because the system had no way to retire or send them. One of them was a real lead who'd been told an email was "already on its way." It wasn't. The lead went cold. A gate stops harm. It also stops delivery if nobody's on the other side of it.
What the gate caught
223 runs since October 1 were held at the gate instead of shipped. Most were verification tasks whose own proof said execution was not allowed: the agent claimed done, and the gate said "not so fast."
Over one week in August, 16 content tasks each stopped at an approval card. Nothing went out. That's the gate working exactly as designed. It's also zero deliveries. In that same week about 54 of roughly 480 scheduled runs produced any outcome at all, and none of the 54 reached a person outside the system. Most were paperwork.
The gate is the only reason stories 2 and 3 above aren't worse. It's also the reason story 4 happened. Both are true.
What does an agent task cost? I mostly can't tell you
This is the question every agency owner asks me, and the honest answer is embarrassing.
1,020 runner attempts were logged between September 24 and November 6. Only 86 of them, 8%, recorded their token usage. Two of my harnesses record nothing at all. I only wired up per-task usage logging on November 2.
Where I did measure it, per attempt:
- Codex: about 1.29 million input tokens (cache included) and about 8,500 output tokens.
- Claude: about 32,000 output tokens, riding on about 4.3 million cached-context tokens.
Those are tokens, not dollars. Most of my runners sit on flat-rate subscriptions, so the real cost of a task is the subscription divided by the tasks that actually got done, plus the days the fleet sits idle after hitting a weekly usage limit. In August my Claude runners spent three straight days producing nothing because of exactly that.
One sample I can price: over about three days in October, one cloud worker session ran 26 cycles. 18 of them found nothing to do and still cost roughly $1 to $3 each. At API list prices the session came to about $124. That's an estimate, not a bill. It also merged 26 pull requests in those three days. Skipping the model on cycles where nothing changed would have saved an estimated $25 to $40 a day at that rate.
The number nobody else will print
Revenue I can verify as coming from fleet work: $0.
Not because the agents did nothing. They ship code, pages, fixes and drafts every day. But none of those 585 "done" tasks is linked to a business outcome I can point to. If I can't trace it to a dollar, I don't get to claim it. Neither does your AI vendor.
What I changed
- A clean exit is no longer "done." The runner reads what the agent actually said.
- Every task gets a hard 30-minute cap. No infinite loops on my dime.
- 121 tripwires watch the loops and queue their own repair tasks when something breaks.
- Per-task token logging went live November 2, so v2 of this report can show cost per finished task.
- The approval gate stays on. Turning it off was the bot's idea, not mine.
If you sell AI delivery, steal this
Don't ask your agent if it's done. Ask it for the receipt. Every task should end with something a different process can read back: the page live at its URL, the email in the provider's sent log, the charge in Stripe. No receipt, no "done."
Then count. How many of your agents' "done" tasks have proof? If you don't know, you're where I was on October 1.
How I counted
The October 1 to November 6 ledger, the token figures and the 8% usage-logging figure were read straight from my fleet's outcome and usage logs on November 6, 2026. The 302-failure audit (July 20 to August 5), the August runner audit, and the October cloud worker sample come from dated internal audits written at the time, not re-run for this report. Dollar figures are API-price estimates, not invoices. I've left out anything I couldn't source, and I don't name the people involved in the stories.
This is v1. I'll publish the next one with cost per finished task in dollars. The system that runs the marketing side is open source in kai-cmo-harness, so you can check the work. If you run an agency and want to talk about this on a show or a stage, here's what I talk about.
Get the next Agent Receipts.
Real numbers from a working agent fleet, including what broke. One email when the next report drops.