When Codex took over a bug Claude Code had already found, a hand-off in the hosted Friday app used a median of 21% fewer tokens than starting Codex over, and Codex explored half as much before its first edit. We ran 14 tasks, 6 of them in Express, the most used Node web framework. Every fix passed the project’s own tests. The runs were made on 13 and 14 October 2026, on the hosted Friday app, before the open-source app existed.
What did it measure?
Claude Code first found and explained a bug, changing nothing. Then Codex fixed it three ways, each in its own fresh copy, with one message from the person: a hand-off in the hosted Friday app with a one-line note, a fresh Codex session with the task restated, and a fresh Codex session with Claude Code’s whole answer pasted in.
This benchmark was run on the hosted Friday app of October 2026, not on the open-source app. The open-source app has hand-off too: when a tool hits its usage limit, the task moves to the agent best placed to finish it, with a record of what it did and changed. We have not run this benchmark on the open-source app, so these numbers are not a measurement of it.
Everything was measured from the hosted app’s session log, not the tools’ own claims, and checked by running the project’s own tests in the folder Codex worked in.
What held, against starting over?
- Tokens: fewer in 13 of 14 tasks, a median of 21% (about 49,000 per hand-off), and 592,827 in total. In Express alone, fewer in 6 of 6.
- Exploring before the first edit: a median of 2 steps against 4, fewer in 14 of 14.
- First edit sooner in 12 of 14, and finished sooner in 11 of 14, by a median of about 7 seconds. In Express alone the finish times were even, so we make no speed claim.
- Fixed: 14 of 14 every way. In Express, all 1,288 of its tests passed after every fix.
What did not hold?
Pasting Claude Code’s whole answer into Codex by hand did about as well: the same tokens and the same exploring, and in Express it finished faster. So we make no claim against a careful copy and paste. What a hand-off gives you is that handover, with what was asked, what was found, which files were read and what was run, in one click, every time, in the hosted app we tested.
Why do fewer tokens matter?
Coding agents on Claude and ChatGPT plans stop you at a usage limit rather than billing per token. Codex hit our own plan’s limit twice during this benchmark. As an estimate from the median, 21% fewer tokens per hand-off is about a quarter more hand-offs before you reach your limit.
Express: the results
| Median, Codex’s fixing run | Friday hand-off | Fresh, task restated | Fresh, answer pasted |
|---|---|---|---|
| Fixed (all 1,288 tests pass) | 6 of 6 | 6 of 6 | 6 of 6 |
| Total tokens | about 182k | about 234k | about 182k |
| Steps before first edit | 2 | 4 | 2 |
| Time to first edit | 29s | 32s | 28s |
| Wall time | 58s | 59s | 49s |
| Task and repetition | Hand-off: wall, first edit, steps | Restated: wall, first edit, steps | Pasted: wall, first edit, steps |
|---|---|---|---|
| cookie-maxage 1 | 64s, 36s, 2 | 60s, 32s, 4 | 50s, 27s, 2 |
| proxy-protocol 1 | 52s, 28s, 2 | 59s, 39s, 4 | 48s, 26s, 2 |
| merge-params 1 | 58s, 27s, 2 | 61s, 32s, 4 | 48s, 30s, 2 |
| query-parser 1 | 58s, 28s, 2 | 55s, 32s, 4 | 46s, 23s, 2 |
| charset 1 | 55s, 29s, 2 | 61s, 34s, 5 | 58s, 32s, 2 |
| cookie-maxage 2 | 65s, 37s, 3 | 52s, 30s, 4 | 58s, 34s, 3 |
Small library: the results
| Median, Codex’s fixing run | Friday hand-off | Fresh, task restated | Fresh, answer pasted |
|---|---|---|---|
| Fixed (all tests pass) | 8 of 8 | 8 of 8 | 8 of 8 |
| Steps before first edit | 1.5 | 4 | 2 |
| Time to first edit | 35s | 56s | 44s |
| Wall time | 46s | 64s | 54s |
| Task and repetition | Hand-off: wall, first edit, steps | Restated: wall, first edit, steps | Pasted: wall, first edit, steps |
|---|---|---|---|
| slug 1 | 92s, 75s, 2 | 102s, 89s, 6 | 50s, 40s, 5 |
| query 1 | 40s, 30s, 2 | 47s, 37s, 4 | 57s, 46s, 2 |
| date 1 | 60s, 46s, 2 | 82s, 74s, 4 | 76s, 64s, 2 |
| limiter 1 | 92s, 79s, 1 | 105s, 95s, 3 | 67s, 61s, 1 |
| cart 2 | 34s, 21s, 1 | 72s, 64s, 4 | 51s, 43s, 2 |
| slug 2 | 52s, 40s, 2 | 55s, 48s, 5 | 78s, 62s, 4 |
| date 2 | 37s, 31s, 1 | 46s, 36s, 4 | 33s, 27s, 2 |
| limiter 2 | 28s, 22s, 1 | 36s, 26s, 3 | 26s, 20s, 2 |
Tokens and every other field are in the raw data: Express and small library.
How was it set up?
- When: 13 and 14 October 2026, on one Windows 11 laptop (Intel Core i7-1255U, 16 GB RAM).
- Tools: Claude Code 2.1.251 on Sonnet, and Codex CLI 0.159.3 on gpt-6.1-sol, signed in to our own accounts, run through the hosted Friday app in Auto mode, with its second review and decision log off.
- Express 4.21.2: 4,050 lines of core and 1,288 tests. Five one-line bugs planted in its core: cookies, proxy headers, nested routers, the query parser and charsets. The failing test often points away from the cause.
- Small library: 96 lines of JavaScript and 5 tests, with five one-line bugs, each in a different file from its failing test.
- Each task ran twice, every run in its own fresh copy of the code.
What was set aside?
Codex’s plan limit refused runs twice. A task’s three ways are compared together, so a task where any was refused is set aside whole, not counted as a failure: 4 tasks in Express’s second repetition and 2 in the small library. Two runs that failed to start were rerun. One check was corrected: a fix that also added tests was first marked failed, though every test passed.
What are the limits?
- 14 tasks, one-line bugs, one machine and one account.
- Claude Code handing to Codex only.
- The saving should grow with longer investigations, where there is more to re-read. That is a hypothesis we have not measured yet.
- Cursor background agents and Codex cloud were not run. They need their own cloud products, which this setup could not drive fairly.