Proof-of-work for coding agents

Don't let your agent think slop.
Let it prove and

reason.

Arxloop thinks through traces of the running code, where an agent working in a loop spends tokens. On the same model and the same tasks as Claude Code: up to 97% fewer tokens and up to 80% lower cost.

receipt · run 8b9dac90
✓focused · cart_totalexit 0
✓regression · 214 testsexit 0
✗negative-total guardreverted
green lands · red reverts byte-exact · nothing half-applied
80% less
A small bug fix: $0.03 with Arxloop, $0.17 with Claude Code. Same model on both sides.
63% less
A real bug in a large codebase: $0.49 with Arxloop, $1.32 with Claude Code. Both passed every check they were never shown.
97% fewer tokens
A database migration: 44k tokens read with Arxloop, 1.3M with Claude Code. Across all 8 tasks: 93% fewer.

Measured against Claude Code

The same requests, word for word, to both, on the same model. Averaged over every task of a kind, bug fixes cost 65% less and builds 40% less. On a real open-source codebase, 7 of Arxloop’s 7 runs passed every check it was never shown.

92949698100$0.00$0.10$0.20$0.30$0.40$0.50$0.60$0.70Cost per task (USD) · ← cheaperHidden checks passed (%)Cheaper than Claude Code,with at least as many checks passedWeaverClaude Sonnet · 2 runsClaude CodeClaude Sonnet · 3 runsClaude Codeasked to write tests · 1 run
6 small engineering tasks as one suite. A labeled point is the mean of that agent’s runs and a faint dot is a single run. The dashed line is the frontier: the most hidden checks passed at or below a given cost.
The chart as a table
AgentRunsCost a taskHidden checks
WeaverClaude Sonnetmean of 2 runs$0.2586/88 (97.7%)
Claude CodeClaude Sonnetmean of 3 runs$0.43128/132 (97.0%)
Claude Codeasked to write tests1 run$0.6243/44 (97.7%)
What was askedArxloopClaude CodeArxloop’s cost
cost a runtokens readchecksrunscost a runtokens readchecksruns
A real bug in a large codebaseA routing bug in Flask, a widely used open-source web framework, that its maintainers fixed after a release.$0.49$0.39–$0.69234k15/153 runs$1.32$1.04–$1.513.7M15/153 runs63% less
A small bug fixA reported bug in a small project.$0.0310k8/82 runs$0.17$0.14–$0.24272k12/123 runs80% less
A real feature in a large codebaseA new setting in Flask, added on top of the fix in a new session.$0.61$0.52–$0.77256k36/364 runs$1.07$0.75–$1.252.9M27/273 runs42% less
A database migrationMoving a database to a new schema, safe to run twice.$0.24$0.21–$0.2844k24/242 runs$0.64$0.52–$0.701.3M36/363 runs62% less
A security auditFinding the security problems in a small service and fixing the serious ones.$0.28$0.20–$0.3675k27/282 runs$0.66$0.53–$0.721.3M39/423 runs57% less
Missing testsWriting the tests for a module that has none.$0.39$0.32–$0.4590k5/62 runs$0.51$0.46–$0.60922k8/93 runs25% less
A slow scriptMaking a script ten times faster, with the measurements.$0.31$0.30–$0.3367k12/122 runs$0.40$0.33–$0.50751k18/183 runs22% less
A data clean-upCleaning a contacts file and reporting what was rejected.$0.26$0.26–$0.2745k10/102 runs$0.24$0.19–$0.32278k15/153 runs12% more
  • Both sides used the same model (Claude Sonnet) through the same claude command line. Dollars are the list prices that tool reports for each call; nothing is re-priced. Tokens are what one run read, cache reads included.
  • Every result was graded by checks neither side was shown. On the real codebase those are its maintainers’ own tests for the two changes. Run in October 2026 on one machine.
  • On a team’s shared project, the second person’s work kept a rule the first person had stated once, in 2 of 2 runs. Without the shared project it kept it in 0. Claude Code kept it once a person had written the rule into its instructions file, at $1.19 a pickup against $0.91.
  • Two to four runs a task on each side: our own runs, on tasks we have been developing against. Read them as what happened on these requests.

Is your agent thinking too much?

agent — internal monologue
Hmm, wait — let me look more carefully…
Actually, I think I see the issue now.
You’re absolutely right — let me reconsider my approach.
Hold on, this might be connected to something else entirely…
[52,000 tokens later]
Ah, I see it now! Let me re-examine the function once more.

Does a profound internal monologue actually help? Is it useful? Is it how humans used to fix code?

We used to gather a trace, form a hypothesis about what’s wrong, make the fix, get it wrong, learn from it, and try again — not narrate a profound monologue with the memory of a goldfish, staring at the same function for the fifth time going “ah, I see it now!” (again).

All that thinking costs tokens. Our harness skips the monologue — and still reasons.

What it is built around

Done means checked

A change is finished when it has been shown to work, not when the model says it is.

It does not start from zero

What it learned about your project on the last request is there for the next one.

A team’s rules travel

What one person tells it once, the next person’s work respects without being told again.

You can see what happened

Every run leaves a record you can read, question and undo.

It works while you are away

Hand it recurring work on a schedule and read what it did in the morning.

Stop hoping the diff works. Prove it.