Claude Haiku 5.5 vs GPT-6 Luna
Anthropic released Claude Haiku 5.5 on 7 October at GPT-6 Luna's price per token for prompts up to 100k tokens. I ran both through the same tests that day, at medium and at xhigh effort.
Speed#
At medium they were close, 7.3 s for Haiku 5.5 and 7.6 s for GPT-6 Luna. At xhigh GPT-6 Luna usually finished first, 9.0 s against Haiku 5.5's 15.2 s. One failed GPT-6 Luna run at medium is left out.
The explain task. Each bar is the midpoint of six passed runs. Hover or tap a row for every number.
Outside the answer is model time that is not the answer's text: thinking, the request that asks to read the file and each reply's wait for its first token, not starting the tool or running the read.TPS has its own test below.
Every run, one row each
The table scrolls sideways on a small screen.
| Model and effort | Run | Seconds | Model time outside the answer | Visible tokens | Thinking tokens |
|---|---|---|---|---|---|
| Haiku 5.5, medium | 1 | 6.7 | 3.2 | 542 | 348 |
| Haiku 5.5, medium | 2 | 6.4 | 3.5 | 480 | 336 |
| Haiku 5.5, medium | 3 | 7.3 | 4.3 | 447 | 550 |
| Haiku 5.5, medium | 4 | 7.9 | 4.2 | 620 | 530 |
| Haiku 5.5, medium | 5 | 7.4 | 3.8 | 546 | 493 |
| Haiku 5.5, medium | 6 | 7.4 | 3.8 | 610 | 506 |
| GPT-6 Luna, medium | 1 | 7.4 | 2.3 | 111 | 0 |
| GPT-6 Luna, medium | 2 | 8.0 | 2.8 | 106 | 0 |
| GPT-6 Luna, medium | 3 | 3.8, failed | |||
| GPT-6 Luna, medium | 4 | 5.1 | 1.3 | 111 | 0 |
| GPT-6 Luna, medium | 5 | 8.1 | 2.6 | 115 | 0 |
| GPT-6 Luna, medium | 6 | 7.7 | 2.8 | 111 | 0 |
| GPT-6 Luna, medium | 7 | 6.8 | 1.8 | 91 | 0 |
| Haiku 5.5, xhigh | 1 | 10.6 | 7.0 | 541 | 1,240 |
| Haiku 5.5, xhigh | 2 | 16.1 | 13.0 | 643 | 2,088 |
| Haiku 5.5, xhigh | 3 | 8.9 | 4.9 | 702 | 761 |
| Haiku 5.5, xhigh | 4 | 15.3 | 12.1 | 589 | 2,086 |
| Haiku 5.5, xhigh | 5 | 16.1 | 13.3 | 593 | 2,500 |
| Haiku 5.5, xhigh | 6 | 15.1 | 11.9 | 652 | 2,266 |
| GPT-6 Luna, xhigh | 1 | 8.5 | 3.0 | 90 | 125 |
| GPT-6 Luna, xhigh | 2 | 10.5 | 5.9 | 99 | 155 |
| GPT-6 Luna, xhigh | 3 | 9.4 | 4.1 | 103 | 140 |
| GPT-6 Luna, xhigh | 4 | 6.6 | 2.7 | 90 | 120 |
| GPT-6 Luna, xhigh | 5 | 9.9 | 5.2 | 86 | 132 |
| GPT-6 Luna, xhigh | 6 | 7.9 | 2.8 | 103 | 160 |
Source: Daily Driver Bench at dailydriver.brenhq.com, updated 7 October 2026. 24 passed runs on 7 October, six per model and effort, one at a time, but for one rerun (see How I ran it): Claude Haiku 5.5 in Claude Code 2.1.284, GPT-6 Luna in Codex CLI 0.159.0, apps and plugins off.
The race#
- Haiku 5.5, medium: 6.4 to 7.9 s
- GPT-6 Luna, medium: 5.1 to 8.1 s
- Haiku 5.5, xhigh: 8.9 to 16.1 s
- GPT-6 Luna, xhigh: 6.6 to 10.5 s
TPS#
On a long answer, every Haiku 5.5 run wrote visible tokens faster than every GPT-6 Luna run, in each vendor's own count: 239 against 122 a second at medium, 297 against 126 at xhigh.
The explain task asking for a walkthrough of at least 600 words. Each bar is the midpoint of six runs. Hover or tap a row for every number.
TPS is visible answer tokens a second as the text reached my terminal, from its first words to its last. It is not API speed, and tokens are each vendor's own, so a Haiku token and a Luna token are not the same amount of text. Every run's text arrived in 20 or more bursts, so every run counts. Every GPT-6 Luna run in this test came in bunches, the way 13 of its 23 shorter explain answers did; none came word by word, so this test does not time that way (see How I ran it).
Every run, one row each
The table scrolls sideways on a small screen.
| Model and effort | Run | TPS | Visible tokens | Seconds writing | Bursts |
|---|---|---|---|---|---|
| Haiku 5.5, medium | 1 | 240.2 | 1,317 | 5.5 | 271 |
| Haiku 5.5, medium | 2 | 228.8 | 1,848 | 8.1 | 372 |
| Haiku 5.5, medium | 3 | 250.9 | 1,428 | 5.7 | 279 |
| Haiku 5.5, medium | 4 | 239.8 | 1,347 | 5.6 | 267 |
| Haiku 5.5, medium | 5 | 238.7 | 1,441 | 6.0 | 282 |
| Haiku 5.5, medium | 6 | 229.8 | 1,543 | 6.7 | 325 |
| GPT-6 Luna, medium | 1 | 142.3 | 865 | 6.1 | 53 |
| GPT-6 Luna, medium | 2 | 137.2 | 899 | 6.6 | 60 |
| GPT-6 Luna, medium | 3 | 123.1 | 909 | 7.4 | 63 |
| GPT-6 Luna, medium | 4 | 120.8 | 1,053 | 8.7 | 69 |
| GPT-6 Luna, medium | 5 | 120.1 | 954 | 7.9 | 68 |
| GPT-6 Luna, medium | 6 | 116.2 | 848 | 7.3 | 61 |
| Haiku 5.5, xhigh | 1 | 319.5 | 1,597 | 5.0 | 247 |
| Haiku 5.5, xhigh | 2 | 296.1 | 1,925 | 6.5 | 315 |
| Haiku 5.5, xhigh | 3 | 284.8 | 1,759 | 6.2 | 297 |
| Haiku 5.5, xhigh | 4 | 298.8 | 1,724 | 5.8 | 280 |
| Haiku 5.5, xhigh | 5 | 288.1 | 1,882 | 6.5 | 318 |
| Haiku 5.5, xhigh | 6 | 302.3 | 2,041 | 6.8 | 317 |
| GPT-6 Luna, xhigh | 1 | 126.6 | 1,064 | 8.4 | 75 |
| GPT-6 Luna, xhigh | 2 | 122.2 | 979 | 8.0 | 72 |
| GPT-6 Luna, xhigh | 3 | 125.6 | 1,004 | 8.0 | 73 |
| GPT-6 Luna, xhigh | 4 | 109.3 | 1,066 | 9.8 | 74 |
| GPT-6 Luna, xhigh | 5 | 125.7 | 1,075 | 8.6 | 79 |
| GPT-6 Luna, xhigh | 6 | 143.1 | 936 | 6.5 | 60 |
Source: Daily Driver Bench at dailydriver.brenhq.com, updated 7 October 2026. 24 passed runs on 7 October, six per model and effort, one at a time: Claude Haiku 5.5 in Claude Code 2.1.284, GPT-6 Luna in Codex CLI 0.159.0, apps and plugins off.
Real app work#
Planted bugs fixed, out of 20, in a typical run: Haiku 5.5 19 and GPT-6 Luna 18 at medium, both 20 at xhigh. Both passed all 17 ticket checks in a typical run, at both efforts.
A bug hunt with 20 planted bugs and three sprint tickets in a small TypeScript app, graded by hidden tests. Each bar is the midpoint of three runs. Hover or tap a row for every run.
| Model and effort | Bug hunt cost | Tickets cost |
|---|---|---|
| Haiku 5.5, medium | $0.030 | $0.053 to $0.26 |
| GPT-6 Luna, medium | $0.007 to $0.008 | $0.011 to $0.013 |
| Haiku 5.5, xhigh | $0.064 to $0.32 | $0.091 to $0.46 |
| GPT-6 Luna, xhigh | $0.035 to $0.037 | $0.021 to $0.023 |
Cost of a typical run, at each vendor's list price. Some Haiku 5.5 runs' prompts passed 100k tokens, where Anthropic charges a higher rate per request; the run records keep only the last request's size, so those costs are a range from every request at the lower rate to every request at the higher one. GPT-6 Luna's are a range from its input rate to its cache-write rate for uncached prompt tokens, because Codex logs no cache writes. Below full marks on the tickets: GPT-6 Luna, medium's tickets run 3, 15 of 17. Broke something that had worked: GPT-6 Luna, medium's bug hunt run 3 (1 regression).
Source: Daily Driver Bench at dailydriver.brenhq.com, updated 7 October 2026. 24 runs, three per task, model and effort, graded by the same hidden tests as the Quick suite page's real-work test.
Skills#
With no skill, GPT-6 Luna wrote fewer output tokens than Haiku 5.5 on the four tasks at both efforts, but took longer in total.
Explain, feature, bug fix and build, three runs each. Hover or tap a row for each task.
| Model and effort | Cost of the four tasks |
|---|---|
| Haiku 5.5, medium | $0.020 |
| GPT-6 Luna, medium | $0.012 to $0.014 |
| Haiku 5.5, xhigh | $0.028 |
| GPT-6 Luna, xhigh | $0.014 to $0.016 |
Held-out tests, new inputs for the same behavior, passed on the no-skill coding runs: Haiku 5.5, medium 9 of 9, GPT-6 Luna, medium 9 of 9, Haiku 5.5, xhigh 9 of 9, GPT-6 Luna, xhigh 9 of 9.
GPT-6 Luna cost less for the four tasks at both efforts: $0.012 to $0.014 against Haiku 5.5's $0.020 at medium, $0.014 to $0.016 against $0.028 at xhigh. Each bar and cost adds up a typical run of each task, at each vendor's list prices (see Cost below); GPT-6 Luna's costs are a range because Codex logs no cache writes.
Source: Daily Driver Bench at dailydriver.brenhq.com, updated 7 October 2026. 48 no-skill runs, three per task, model and effort; 48 passed. Costs at each vendor's list price per token; see Cost below.
Text output: shorter answers
caveman fell short of its claimed 65% on every model and effort.
Visible output tokens on the explain task, the midpoint of 3 runs. Right of No skill means the skill used less. Visible output tokens: what the model writes, minus its hidden thinking.
- What the skill claims
- Outlined: skill and no-skill runs overlapped, so it could be chance
Source: Daily Driver Bench at dailydriver.brenhq.com, updated 7 October 2026. 3 runs per model and effort, task and skill, in Claude Code and Codex CLI. Each change is against the same task with no skill. Every run had the account extras off.
Code output: less code
ponytail cut code by 8% to 30%, clearly on 3 of 4, short of its claimed 54%, and karpathy-skills by 4% to 21%, clearly on 1 of 4.
Lines of code on the build task, the midpoint of 3 runs. Right of No skill means the skill used less. Lines of code: lines added in the diff the run leaves behind.
- What the skill claims
- Outlined: skill and no-skill runs overlapped, so it could be chance
Code size is compared on the build task only. The explain task writes no code, and the feature and bug fix edits added 1 to 6 lines with no skill, too few to compare.
ponytail
karpathy-skills
Source: Daily Driver Bench at dailydriver.brenhq.com, updated 7 October 2026. 3 runs per model and effort, task and skill, in Claude Code and Codex CLI. Each change is against the same task with no skill. Every run had the account extras off.
ponytail also claims fewer tokens (22%), cheaper (20%) and faster (27%) on the build task. Measured on the four model and effort pairs, those held in 0 of 12 checks. Counting every number the skills claim, 0 of 20 checks held.
ASD-STE100#
Asking for ASD-STE100 made Haiku 5.5's answers longer, 31% at medium and 55% at xhigh, clearly at both, and GPT-6 Luna's 5% shorter at medium and 9% longer at xhigh, within the runs' spread. Every run with it passed.
Visible output tokens on the explain task, the midpoint of 3 runs. Right of No skill means the skill used less. Visible output tokens: what the model writes, minus its hidden thinking.
- Outlined: skill and no-skill runs overlapped, so it could be chance
Source: Daily Driver Bench at dailydriver.brenhq.com, updated 7 October 2026. 3 runs per model and effort, task and skill, in Claude Code and Codex CLI. Each change is against the same task with no skill. Every run had the account extras off.
On the ASD-STE100 page, GPT-6 Luna failed every run with the instruction at low effort; here, at medium and xhigh, every run with it passed. The no-instruction side is the skills test's no-skill explain runs, same day and setting.
Cost#
For prompts up to 100k tokens, Claude Haiku 5.5 and GPT-6 Luna list the same price per token: $0.10 per million input tokens and $0.50 per million output.
US dollars per million tokens, standard tier, as each vendor lists them.
| Per million tokens | Claude Haiku 5.5 | GPT-6 Luna |
|---|---|---|
| Input | $0.10 | $0.10 |
| Cached input | $0.01 | $0.01 |
| Cache writes | $0.125, or $0.20 for the one-hour cache | $0.125 |
| Output | $0.50 | $0.50 |
Haiku 5.5's prices rise to $0.50 input and $2.50 output for a request whose prompt passes 100k tokens. Claude Code writes Anthropic's one-hour cache, at twice the input price, and the costs here include those writes. Codex logs no cache-write count, so GPT-6 Luna's costs are shown as a range: its uncached prompt tokens from the $0.10 input rate to the $0.125 cache-write rate.
Source: Daily Driver Bench at dailydriver.brenhq.com, updated 7 October 2026. Anthropic's Claude Haiku 5.5 page and prompt-caching docs; OpenAI's API pricing page.
How I ran it#
Background, method and definitions
Claude Haiku 5.5 ran in Claude Code 2.1.284 and GPT-6 Luna in Codex CLI 0.159.0, in the bench's Docker container with the account's apps, plugins and connectors off, at medium and at xhigh effort. Those are each tool's own settings: Claude Code's --effort and Codex's reasoning effort. Left alone, Claude Code 2.1.284 runs Haiku 5.5 at high and Codex runs GPT-6 Luna at medium, so I ran both at the same two levels. Speed, TPS and skills results use the runs that passed their check; the failed ones are counted below and kept in the data. Real app work scores every run. The plan was written down before the runs.
The speed test is the explain task the GPT-6.1 Sol page uses: the tool reads a small Python file and explains how it adds up monthly totals and what happens with a bad date, without changing anything. The clock runs from starting the tool until it exits, one run at a time, with nothing else running, except the run that replaced a failed GPT-6 Luna medium run and the Claude Code check below, which ran while other tests ran. A run passes when its answer contains both "month" and "ValueError".
TPS comes from its own test: the same task, asking for a walkthrough of the file of at least 600 words, six runs per model and effort, one at a time. TPS is the answer reply's output tokens minus its hidden thinking, each vendor's own count, over the seconds from its first text to its last, as the text reaches my machine. A run counts only when its text arrived in at least 20 separate bursts, where text more than 5 ms after the previous text starts a new one; text a service holds back and sends at once arrives in one or two, and its rate would mean nothing. In the trial runs before the counted ones, Claude Sonnet 5.5's answers arrived in 1 and 2 bursts, which is why the GPT-6.1 Sol page has no Claude TPS, while Haiku 5.5's arrived in about a hundred. Anthropic and OpenAI count tokens differently, so a Haiku token and a Luna token are not the same amount of text.
Why TPS has its own test: on the explain task, GPT-6 Luna's answers ran 82 to 132 visible tokens. On 13 of its 23 passed speed runs, on both Codex releases, they came in 6 to 11 bunches, too few to time, and OpenAI's per-turn timing event carried none of its engine fields. On the other 10, the text came word by word (61 to 90 bursts, 57.7 to 61.5 TPS) and the event carried them. At xhigh, the bunched runs reached their first words sooner, 1.1 to 1.7 s after the answer's request against 2.8 to 4.1 s, which a delay on this machine would not cause. OpenAI's timing events suggest it delivered GPT-6 Luna's text two ways. Leaving the bunched runs out would have timed only the runs that came word by word, so the TPS test asks for a long answer, which gives every run enough bursts to count.
A newer Codex release did the same. On Codex CLI 0.161.0, the newest, at medium, 5 of 6 passed and 3 streamed; at xhigh, 6 of 6 passed and 2 streamed. On 0.159.0, the counted runs gave at medium, 6 of 7 passed and 3 streamed; at xhigh, 6 of 6 passed and 2 streamed. The rest came in bunches on both releases. The newer release's runs are a check and stay out of the results.
Every failed run was GPT-6 Luna at medium on the explain task: 1 of 7 speed runs, 4 of 18 skills and ASD-STE100 runs (2 with the placebo and 2 with ponytail) and 1 of 6 runs on Codex CLI 0.161.0. Each answered in one reply without trying a tool; the ones whose text was kept said none of its tools could read the file, though Codex had given it a shell. In a probe of 36 more runs at medium, 3 did the same. On every request, the failed ones included, OpenAI's reply listed the same 11 tools, Codex's shell (functions.exec) among them, and the failed runs' prompts were 12,290 to 12,294 tokens against 12,290 to 12,296 on runs that passed. No GPT-6 Luna xhigh run and no Haiku 5.5 run did this. Results use passed runs. The speed table lists its failed run, and every failed run stays in results.json.
Claude Code 2.1.284 predates the first release that lists Haiku 5.5, 2.1.293: 2.1.284 accepts the model, but prices its runs at Opus 5.5's rates and runs it at high effort when none is set. So I reran Haiku 5.5's speed test on 2.1.293: 6.6 to 9.0 s at medium and 11.4 to 14.9 s at xhigh, against 6.4 to 7.9 s and 8.9 to 16.1 s on 2.1.284, with 503 and 1,955 thinking tokens in the answer in a typical run against 500 and 2,087. The runs overlap and every counted run set its effort, so the 2.1.284 runs stand, though I had planned to rerun everything if the default differed, and it did: with no effort set, 2.1.293 ran Haiku 5.5 at medium, the same default Codex uses for GPT-6 Luna. Only speed was checked, so skills and real-work token counts on 2.1.293 could differ. These check runs ran while other tests were running.
The skills test is the Skills page's: four small tasks (explain, feature, bug fix and build), each run three times with no skill, with a placebo instruction file and with caveman, ponytail and karpathy-skills as instruction files, for both models at both efforts. The ASD-STE100 test adds Karpathy's one-line instruction to the explain task, three runs each. Costs use each vendor's list price per token for prompts up to 100k tokens. No skills run's prompt passed 100k; eight real-work runs did, and their costs show as a range there.
Changes after the runs started, each logged with its reason: one failed GPT-6 Luna medium speed run was replaced by a seventh, and every result uses passed runs; GPT-6 Luna's costs became a range because Codex logs no cache writes; Haiku 5.5 runs whose prompts passed 100k tokens show a cost range because only the last request's size was kept; Haiku 5.5's cache writes use the one-hour rate of $0.20, the one Claude Code's requests pay; the X video shows the six passed GPT-6 Luna medium runs; TPS moved to its own long-answer test, and a TPS median needs at least three runs that count; and that test logs only Codex's WebSocket messages, because with its full trace log on, Codex 0.159.0 began to hang after its turn. The plan and every change to it, as logged, are in haiku-luna-plan.txt.
The run records are in results.json, under h2h_timing_runs, h2h_tps_runs, h2h_runs, h2h_real_runs, h2h_cli_check, h2h_tools_probe and h2h_timing_smoke.