Codex vs Claude Code in 2026: 120 missions on the same 20 tickets
On 20 tickets in one codebase, codex resolved 55 of 60 for $3.63 per resolved ticket and claude-code 58 of 60 for $4.69. Each ran three models.
On the same 20 tickets in one codebase, the codex harness resolved 55 of 60 missions for $3.63 per resolved ticket. The claude-code harness resolved 58 of 60 for $4.69. Each harness ran as the builder with three models of its own family, one model at each price tier. The codex missions cost less and took less time at every tier. The claude-code missions resolved more tickets with the two cheaper models, and at the top tier both resolved all 20. The figures come from SHIP's SWE-in-a-team benchmark, with one run per ticket.
Compare the two harnesses at each price tier
A harness runs the model of its own vendor, so this comparison pairs models by list price. The table recomputes the six configurations from the public per-run data. Each row is 20 missions on the same 20 tickets from one SaaS fixture, one run per ticket. The planner, reviewer and tester stayed on claude-opus-4.8 via claude-code. Cost is API-equivalent USD for the whole mission, and a ticket counts as resolved only if hidden acceptance tests passed.
| Tier | Model | Harness | Price per Mtok (in / out) | Resolved | Per resolved ticket | Median wall time |
|---|---|---|---|---|---|---|
| Top | claude-opus-5 | claude-code | $5 / $25 | 20 of 20 | $5.48 | 23.0 min |
| Top | gpt-5.6-sol | codex | $5 / $30 | 20 of 20 | $3.83 | 16.3 min |
| Mid | claude-sonnet-5 | claude-code | $2 / $10 | 20 of 20 | $4.31 | 20.7 min |
| Mid | gpt-5.6-terra | codex | $2 / $12 | 19 of 20 | $3.88 | 18.5 min |
| Budget | claude-haiku-4-5 | claude-code | $1 / $5 | 18 of 20 | $4.23 | 22.7 min |
| Budget | gpt-5.6-luna | codex | $0.20 / $1.20 | 16 of 20 | $3.08 | 14.0 min |
At the top and mid tiers, the two models in a pair have about the same list price. The budget pair is not equal. The input price of gpt-5.6-luna is a fifth of the claude-haiku-4-5 price, and its output price is a quarter. So part of that gap is the model's price and not the harness.
The top tier gives the most direct comparison, because the two models have the same input price. Both resolved all 20 tickets. The gpt-5.6-sol missions on codex cost 30% less per resolved ticket, and their median mission was about 7 minutes shorter.
Add up the three tiers
Pooled across the three tiers, codex spent $72.44 less than claude-code on the same 60 missions, 27% less, and resolved 55 against 58. Per resolved ticket, claude-code cost 29% more.
| Harness | Missions | Resolved | Total spend | Per resolved ticket | Median wall time | Total wall time |
|---|---|---|---|---|---|---|
| claude-code | 60 | 58 | $272.07 | $4.69 | 22.3 min | 23.2 h |
| codex | 60 | 55 | $199.63 | $3.63 | 16.1 min | 17.0 h |
The time difference comes from the builder stage. The median codex builder stage took 1.6 to 2.1 minutes, by model. The median claude-code builder stage took 4.9 to 8.6 minutes. Over 60 missions each, the codex builder worked for 2.4 hours in total and the claude-code builder for 7.1 hours.
Read the five misses before you read the price
codex's five misses all came from the two cheaper models: four with gpt-5.6-luna and one with gpt-5.6-terra. None of them reached Ready for Acceptance. In each one, the builder repeated the same CI failure on every retry until SHIP's oscillation limit stopped the mission. The SWE-in-a-team post describes these runs in detail.
claude-code's two misses, both with claude-haiku-4-5, failed in the other way. Both missions passed CI, the reviewer and the tester, and then failed the hidden tests. That difference matters to the person who accepts the work. A stopped mission shows that the ticket is still open. A mission that passed every gate looks done, and here only the hidden tests found the two faults.
The rejection counts show the same split. Over 20 missions, a gate sent the work back to the builder 21 times with gpt-5.6-luna and 14 times with gpt-5.6-terra. With claude-haiku-4-5 and claude-sonnet-5 it was 3 and 2. At the top tier the counts were equal, 1 for claude-opus-5 and 2 for gpt-5.6-sol.
Part of luna's low price comes from those stops. A mission that stops at CI never pays for the reviewer or the tester, so four of luna's 20 missions skipped two paid stages.
Look at the tickets behind the totals
Ticket by ticket, codex cost less than claude-code on 19 of 20 tickets at the top tier. It cost less on 13 at the mid tier and on 17 at the budget tier. It finished faster on all 20 tickets at the top and budget tiers and on 15 at the mid tier.
The widest gap at the top tier was the migration from Supabase to Cloudflare D1 (R1). Both builders resolved it with no rejections. claude-opus-5 on claude-code took 38 minutes and cost $10.48. gpt-5.6-sol on codex took 23 minutes and cost $5.45. The builder stage accounts for almost the whole difference: $6.74 and 20 minutes against $1.78 and 6 minutes. The two replays below show where each mission spent its time.
claude-code, claude-opus-5, ticket R1
Planner ──▶ Builder ──▶ CI ✓ ──▶ Review ✓ ──▶ Deploy ✓ ──▶ Test ✓
38 minutes, $10.48, no rejections, resolvedcodex, gpt-5.6-sol, ticket R1
Planner ──▶ Builder ──▶ CI ✓ ──▶ Review ✓ ──▶ Deploy ✓ ──▶ Test ✓
23 minutes, $5.45, no rejections, resolvedOne pair of missions shows what a gap can look like on one ticket. For what to expect across tickets, use the pooled figures.
Separate the harness from the model
A coding agent harness is the program that turns a model into a coding agent. It writes the system prompt, gives the model tools such as file edits and shell commands, and feeds each result back to the model. In this comparison the harness and the model changed together, because claude-code ran Anthropic models and codex ran OpenAI models. The 20 tickets, the planner, the reviewer, the tester, CI, the preview deploy and the hidden tests were the same on both sides.
So this data cannot say how much of a gap comes from the harness and how much from the model. It does show which vendor's coding agent, on that vendor's own models, got more tickets to an accepted pull request for less money.
Choose a builder for your repository
On this data, gpt-5.6-sol on codex is the strongest builder of the six. Three configurations resolved all 20 tickets, and it had the lowest cost per resolved ticket of those three. Of the two mid-tier models, claude-sonnet-5 on claude-code is the stronger choice, because it resolved all 20 for $4.31. With the budget models, codex cost less but resolved fewer, and the missions it lost stopped at CI.
The builder is one line of configuration, so test both on your own code. A benchmark from someone else's repository is only a first guide. In ship.yml, set it on the builder:
# ship.yml
agents:
builder:
harness: codex
model: gpt-5.6-solharness accepts claude-code and codex among its values, and model passes a concrete model id through unchanged (configuration schema). To try the other harness on one mission and keep the project setting, override it from the CLI:
ship delegate plan SHIP-412 --file docs/plan.md --harness claude-code --model claude-sonnet-5SHIP records cost, duration and outcome per stage for every mission. Two missions on similar tickets give you your own version of the first table.
Check the method and sources
Every figure on this page is recomputed from the per-run CSV, from the six rows whose config is haiku, sonnet, opus, codex-luna, codex-terra or codex-sol, 120 missions in all. Cost per resolved ticket is the sum of cost_usd divided by the count of rows where resolved is true. Median wall time is the median of wall_seconds. The builder stage times, the builder stage costs and the rejection counts come from the per-stage records behind the benchmark's mission replays.
Each configuration ran each ticket once, on one fixture: a SaaS app where studios sell classes to members, written for the benchmark. The hidden acceptance tests stay private, so no builder saw them.
The builders ran claude-code 2.1.211 and codex 0.142.4, and codex ran at medium effort. Both vendors now list newer models than the ones in the study. The Codex models page lists GPT-6.1 Sol. GitHub's Copilot model list includes Claude Opus 5.5. Both pages were read on October 16, 2026. Cost is API-equivalent: the tokens each call used, multiplied by the list price of the model that served it.
The method, the oscillation limit and the account of the codex runs that stopped at CI come from the SWE-in-a-team post, published August 31, 2026.
Questions
Is Codex or Claude Code better for a real codebase?
SHIP's SWE-in-a-team benchmark ran both harnesses on 20 tickets in one SaaS codebase, with three models each. The claude-code harness resolved 58 of 60 missions, and the codex harness resolved 55. Per resolved ticket, codex cost 29% less, and its median mission was 6 minutes shorter. At the top tier, both resolved all 20.
Is Codex cheaper than Claude Code?
In SWE-in-a-team it was, at every price tier. Per resolved ticket, gpt-5.6-sol on codex cost $3.83 against $5.48 for claude-opus-5 on claude-code, and gpt-5.6-terra cost $3.88 against $4.31 for claude-sonnet-5. Cost is API-equivalent spend for the whole mission.
Is Codex faster than Claude Code?
In SWE-in-a-team, the codex builder stage was shorter at every tier. Its median was 1.6 to 2.1 minutes, against 4.9 to 8.6 minutes for claude-code. Whole missions also took less time, a median of 16.1 minutes for codex against 22.3 for claude-code.
Why did Codex resolve fewer tickets than Claude Code?
All five codex misses came from the two cheaper models: four from gpt-5.6-luna and one from gpt-5.6-terra. In each one, the builder repeated the same CI failure until SHIP stopped the mission. The two claude-code misses, both with claude-haiku-4-5, reached Ready for Acceptance and then failed the hidden tests.
How was Codex compared with Claude Code?
SHIP ran six builder configurations on the same 20 tickets, one run per ticket. The claude-code harness ran claude-haiku-4-5, claude-sonnet-5 and claude-opus-5. The codex harness ran gpt-5.6-luna, gpt-5.6-terra and gpt-5.6-sol. The planner, reviewer and tester stayed on claude-opus-4.8 via claude-code for every mission.