Compare Claude Code and Codex by task outcome, evidence and cost

September 19, 2026 · View on GitHub

The data below is a synthetic demo workspace — invented projects and pricing-table cost estimates, never billed figures. Every number, evidence tier, provenance label and gap is the real receipt engine's own output; only the underlying work is invented.

The same task — "Add retry-with-backoff to the payments HTTP client", from the same starting commit — was run once on Claude Code and once on Codex. agentacct turns each into one Work Receipt. Read them side by side: not by whose summary sounds more confident, but by what actually happened, how well it is proven, and what it cost.

The three receipts in the agentacct macOS app's Work table: "Plan the retry policy" (Claude Code) and "Add backoff to the HTTP client" (Codex) both read Verified, 1/2 claims supported (self-checked), 1/1 check passed — at an estimated $27.40 and $3.10 respectively — beside "Reproduce the flaky total" (Reported, $18.60).

Claude Code

The Claude Code receipt in the agentacct macOS app: "Plan the retry policy", decision Verified (machine checked), 1 of 2 claims supported, evidence self-checked, actions captured via a client hook and MCP, cost an estimated $27.40, one gap — a completed step with no linked passing check.

Work Receipt — Add retry-with-backoff to the payments HTTP client

task_cc_retry

  • Decision status — VERIFIED · asserted by machine Recorded machine evidence verifies the latest outcome.
  • Evidence coverage — 1/2 self-checked · 1 unchecked 1 non-verifiable (research/docs) Counts are passing checks over checkable steps, split by how independent each check is. These are counts, not a probability of correctness.

Evidence coverage and decision status are separate axes: an agent reporting 'done' never adds a passing check, and a human review or approval never counts as machine verification.

DimensionSummarySource
TaskPlan the retry policy; Write the retry tests · project payments-svcclient_log, mcp
Actorsclaude-code · claude-opus-4-8client_log
Actionsedit×5 execute×6 read×12 search×3 · touched 2 files · ran 2 commandshook, mcp
Cost$27.40 · pricing_tableclient_log
Weekly planstill learning — not enough 7-day history yet
Evidence1 checks · 1 passed · 0 failedmcp
Outcomeverified · asserted by machinemcp

What ran

  • Tools: Read×12, Bash×6, Edit×5, Grep×3
  • Files touched: src/payments/client.py, tests/test_client.py
  • Commands run: pytest tests/test_client.py -q, ruff check src/

Gaps (1) — what could not be proven

  • evidence — 1 completed step has no linked passing check.

Provenance

  • client_log — Observed in the agent's own local session / usage log.
  • hook — Captured by an agentacct client hook (tool categories, mechanical checks).
  • mcp — Recorded by the agent through agentacct's MCP tools (sections, files, checks).

Codex

The Codex receipt in the agentacct macOS app: "Add backoff to the HTTP client", decision Verified (machine checked), 1 of 2 claims supported, evidence self-checked, actions captured via a transcript scan and MCP, cost an estimated $3.10.

Work Receipt — Add retry-with-backoff to the payments HTTP client

task_cx_retry

  • Decision status — VERIFIED · asserted by machine Recorded machine evidence verifies the latest outcome.
  • Evidence coverage — 1/2 self-checked · 1 unchecked Counts are passing checks over checkable steps, split by how independent each check is. These are counts, not a probability of correctness.

Evidence coverage and decision status are separate axes: an agent reporting 'done' never adds a passing check, and a human review or approval never counts as machine verification.

DimensionSummarySource
TaskAdd backoff to the HTTP client; Run the payment tests · project payments-svcclient_log, mcp
Actorscodex · gpt-5.6-solclient_log
Actionsedit×3 execute×4 read×9 search×2 · touched 2 files · ran 1 commandmcp, transcript_scan
Cost$3.10 · pricing_tableclient_log
Weekly planstill learning — not enough 7-day history yet
Evidence1 checks · 1 passed · 0 failedmcp
Outcomeverified · asserted by machinemcp

What ran

  • Tools: read_file×9, exec_command×4, apply_patch×3, grep×2
  • Files touched: src/payments/client.py, tests/test_client.py
  • Commands run: pytest tests/test_client.py -q

Gaps (1) — what could not be proven

  • evidence — 1 completed step has no linked passing check.

Provenance

  • client_log — Observed in the agent's own local session / usage log.
  • mcp — Recorded by the agent through agentacct's MCP tools (sections, files, checks).
  • transcript_scan — Derived by agentacct from the client's own transcript / session store on disk (no live hook).

Reading the difference

Both agents finished the task, both recorded a passing test, and both receipts read verified with self-checked evidence — the receipt gives neither a stronger badge than it earned. What differs is how the work was observed and what it cost:

Claude CodeCodex
Actions provenancehook — a live client hook observed the tool categoriestranscript_scan — read back from Codex's own on-disk session store (no hook fires)
Evidence tierself-checked (agent-recorded via MCP)self-checked (agent-recorded via MCP)
Cost (estimate)$27.40 — an Opus-class model$3.10 — a smaller model

Both checks are self-checked: the agent recorded the passing run itself. To raise a check to independently-checked, a client hook (or CI) has to observe it — the coverage matrix shows which agents support that. The point of the receipt is that it says self-checked here, instead of painting an agent-recorded pass the same green as an independently-verified one.

Note the two axes staying separate: the decision reads verified because the latest check passes and postdates the newest work, while the evidence coverage (1/2) shows not every step is individually checked. A clean decision word never hides partial coverage.

What this does not tell you (the honest unknowns):

  • The costs are pricing-table estimates, not provider invoices.
  • Self-checked does not mean wrong — it means no independent check observed the run.
  • Neither receipt judges code quality or whether the retry design is right; they record what ran, what passed, and what it cost.

See also When an agent says done for how the timeline exposes a re-run and an outdated check, and the coverage matrix for what each agent's lanes can and cannot prove.