Claude Haiku 5.5 vs GPT-6 Luna
Claude Haiku 5.5 and GPT-6 Luna charge practically the same to read a 26.2K-token pull request ($0.0026). Above 100K tokens long-context rates apply, and GPT-6 Luna becomes the cheaper one. Both sit in the economy price tier, so the choice between them is about review quality more than budget. The benchmark cannot separate their recall: Claude Haiku 5.5 minus GPT-6 Luna is −4 pts (95% interval −21 pts to +13 pts).
Side by side
| Figure | Claude Haiku 5.5 | GPT-6 Luna |
|---|---|---|
| Price tier | Economy | Economy |
| Bugs caughtshare of known bugs | 64% | 67% (better) |
| False alarmsper clean PR | 1.4 | 0.7 (better) |
| Cost per reviewmeasured | $0.0038 | $0.0028 (better) |
| Cost per bug caught | $0.0064 | $0.0046 (better) |
| Exact linecatches on the expected lines | 82% | 97% (better) |
| Review timemean | 15s (better) | 29s |
| Typical review calllist price | $0.0038 | $0.0038 |
| Input / 1M tokens | $0.10 | $0.10 |
| Output / 1M tokens | $0.50 | $0.50 |
| Context window | 1M | 1.1M |
- Above 100K tokens, long-context rates mean GPT-6 Luna is the cheaper of the two.
- Above 272K tokens, long-context rates mean GPT-6 Luna is the cheaper of the two.
Head to head
The known bugs both were scored on, by who caught each in at least one run.
By language
| Model | All | TypeScript6 bugs | Go4 bugs | Java4 bugs | Rust4 bugs | C#3 bugs | JavaScript3 bugs | Kotlin3 bugs | PHP3 bugs | Python3 bugs | Ruby3 bugs | Swift3 bugs | C++2 bugs | C1 bug |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Claude Haiku 5.5 | 64% | 83% | 75% | 40% | 75% | 67% | 33% | 67% | 100% | 39% | 67% | 67% | 50% | 0% |
| GPT-6 Luna | 67% | 83% | 25% | 65% | 75% | 56% | 67% | 67% | 67% | 100% | 67% | 100% | 50% | 0% |
Of the 42 known bugs both were scored on, both caught 22 and neither caught 7. Claude Haiku 5.5 caught 6 bugs that GPT-6 Luna missed: 3 in Go, 1 in PHP, 1 in Ruby and 1 in TypeScript. GPT-6 Luna caught 7 bugs that Claude Haiku 5.5 missed: 1 in Go, 1 in Java, 1 in JavaScript, 1 in Python, 1 in Ruby, 1 in Swift and 1 in TypeScript, most of them logic bugs.
On pull requests with no known bug, Claude Haiku 5.5 raised 1.4 false alarms per review and GPT-6 Luna 0.7. A measured review cost $0.0038 on Claude Haiku 5.5, 35% more than $0.0028 on GPT-6 Luna.
| Pull request | Language · kind | Claude Haiku 5.5 | GPT-6 Luna |
|---|---|---|---|
| go-gitea/giteaperf(gitdiff): optimize inline diff highlighting using cache | Go · Error handling | 1/1 | 0/1 |
| golang/gocrypto/tls: add LocalCertificate to ConnectionState | Go · Logic | 1/1 | 0/1 |
| socketry/asyncBarrier wait in completion order + `Queue#close`. | Ruby · Concurrency | 1/1 | 0/1 |
| symfony/symfony[Security] Allow multiple OIDC discovery endpoints | PHP · Security | 1/1 | 0/1 |
| traefik/traefikAdd the option to define custom cipher suites for backend serversTransport | Go · API misuse | 1/1 | 0/1 |
| withastro/astroPort Go's csrf protection | TypeScript · Logic | 1/1 | 0/1 |
| TanStack/queryfix(query-core): fix hydration bugs for already resolved promises | TypeScript · Logic | 0/1 | 1/1 |
| aio-libs/aiohttpkeep websocket compression state across interleaved control frames | Python · Logic | 0/1 | 1/1 |
| go-chi/chifeat: middleware.ClientIP, a replacement for middleware.RealIP | Go · Security | 0/1 | 1/1 |
| mockito/mockitoAdd core API to enable Kotlin singleton mocking | Java · API misuse | 0/1 | 1/1 |
| pinojs/thread-streamrefactor: replace setTimeout with Atomics.waitAsync | JavaScript · Concurrency | 0/1 | 1/1 |
| pointfreeco/swift-navigationUIKit: Fix switch presented child double dismiss | Swift · Logic | 0/1 | 1/1 |
| rails/railsReimplement Action Cable redis adapter with redis-client | Ruby · Logic | 0/1 | 1/1 |
Defects caught over all runs: a PR reviewed three times with one known bug shows 3/3 when it was caught every time.
Every bug each was scored on: Claude Haiku 5.5 and GPT-6 Luna.