commitbench

← all comparisons

Claude Opus 4.8 vs GPT-5.5 for coding

GPT-5.5 ranks higher on real GitHub commits. Each agent gets a repository at a past commit and a description of the next change, edits the code on its own, and is graded from 0 to 10. Pick any two models below to switch the comparison.

vs
BT rating · Claude Opus 4.8
-1elo
BT rating · GPT-5.5
27elo
Per-task wins
244650
Tasks · repos
140 · 4
Edge
GPT-5.5

What the numbers say

Over 140 benchmarked tasks from 4 public repositories, Claude Opus 4.8 has a Bradley-Terry rating of -1 and GPT-5.5 27 (Elo-scaled, with the human commit anchored at 0). On the 120 tasks where both ran, GPT-5.5 won more often (50 to 24, with 46 tied). On cost, Claude Opus 4.8 runs at about $103.088 and GPT-5.5 at about $102.265 per run.

Head-to-head, per task (rubric scores, 0–10)

RepoTaskClaude Opus 4.8GPT-5.5
ggml-org/llama.cppsycl : fix the failed UT cases of conv_3d (#24900) · ggml1.510.0
pooled: unsloth-zoo + vllm + llama.cppsycl : fix the failed UT cases of conv_3d (#24900) · ggml1.510.0
pooled: unsloth-zoo + vllm + llama.cpp[XPU][MoE] Add WNA16 oracle backend for GPTQ sym-int4 (xpu_fused_moe) (#41426) · vllm2.59.3
vllm-project/vllm[XPU][MoE] Add WNA16 oracle backend for GPTQ sym-int4 (xpu_fused_moe) (#41426) · vllm2.59.3
pooled: unsloth-zoo + vllm + llama.cppFix dense vLLM state dict parity · tests0.06.5
unslothai/unsloth-zooFix dense vLLM state dict parity · tests0.06.5
pooled: unsloth-zoo + vllm + llama.cpp[Kernel] Add swap AB optimization to fused_moe_kernel (#36559) · vllm4.010.0
vllm-project/vllm[Kernel] Add swap AB optimization to fused_moe_kernel (#36559) · vllm4.010.0
pooled: unsloth-zoo + vllm + llama.cppfix(moe-bnb): dequant Params4bit experts in transformers v5 grouped/batched MoE forward (B6) · unsloth_zoo5.510.0
unslothai/unsloth-zoofix(moe-bnb): dequant Params4bit experts in transformers v5 grouped/batched MoE forward (B6) · unsloth_zoo5.510.0
pooled: unsloth-zoo + vllm + llama.cpp[Bugfix] Default tie_weights to sharing the weight (fix tied quantized embeddings, e.g. ModelOpt Gemma4) (#45544) · vllm9.25.8
vllm-project/vllm[Bugfix] Default tie_weights to sharing the weight (fix tied quantized embeddings, e.g. ModelOpt Gemma4) (#45544) · vllm9.25.8
pooled: unsloth-zoo + vllm + llama.cppFix gptoss 4bit (#524) · unsloth_zoo9.56.5
unslothai/unsloth-zooFix gptoss 4bit (#524) · unsloth_zoo9.56.5
pooled: unsloth-zoo + vllm + llama.cppfix(moe-quant): gate v5-only patches · tests7.510.0
unslothai/unsloth-zoofix(moe-quant): gate v5-only patches · tests7.510.0
pooled: unsloth-zoo + vllm + llama.cppfix(moe): loud-fail on silent fallbacks in MoE merge + FP8 forward paths · unsloth_zoo8.010.0
pooled: unsloth-zoo + vllm + llama.cppFix ModuleNotFoundError when loading gpt-oss models without triton_kernels (#4088) (#539) · unsloth_zoo8.010.0
unslothai/unsloth-zoofix(moe): loud-fail on silent fallbacks in MoE merge + FP8 forward paths · unsloth_zoo8.010.0
unslothai/unsloth-zooFix ModuleNotFoundError when loading gpt-oss models without triton_kernels (#4088) (#539) · unsloth_zoo8.010.0
pooled: unsloth-zoo + vllm + llama.cpp[Model]Fix MiniMaxM2ForCausalLM perf regression (#45935) · tests10.08.2
vllm-project/vllm[Model]Fix MiniMaxM2ForCausalLM perf regression (#45935) · tests10.08.2
ggml-org/llama.cppcuda: Q1_0 initial backend (#21629) · ggml8.09.7
pooled: unsloth-zoo + vllm + llama.cppHarden fused-forward AST rewriter and adapter · unsloth_zoo9.27.5
pooled: unsloth-zoo + vllm + llama.cppcuda: Q1_0 initial backend (#21629) · ggml8.09.7
unslothai/unsloth-zooHarden fused-forward AST rewriter and adapter · unsloth_zoo9.27.5
ggml-org/llama.cppmetal: Q1_0 backend (#21528) · ggml8.510.0
ggml-org/llama.cppggml : fix ARM NEON nvfp4 dot product on non-dotprod targets (#21559) · ggml8.510.0
pooled: unsloth-zoo + vllm + llama.cppfix(moe-fp8): inline weight/quant-state lookup; narrow ImportError scope · unsloth_zoo7.59.0
pooled: unsloth-zoo + vllm + llama.cppmetal: Q1_0 backend (#21528) · ggml8.510.0
pooled: unsloth-zoo + vllm + llama.cppggml : fix ARM NEON nvfp4 dot product on non-dotprod targets (#21559) · ggml8.510.0
unslothai/unsloth-zoofix(moe-fp8): inline weight/quant-state lookup; narrow ImportError scope · unsloth_zoo7.59.0
pooled: unsloth-zoo + vllm + llama.cppfix(moe_wna16): access tp_size via moe_config for RoutedExperts compatibility (#45404) · vllm8.19.3
vllm-project/vllmfix(moe_wna16): access tp_size via moe_config for RoutedExperts compatibility (#45404) · vllm8.19.3
ggml-org/llama.cpp[SYCL] support bf16 on bin_bcast OP and unary OPs (#24838) · ggml9.010.0
ggml-org/llama.cppmodel : support granite multilingual embeddings R2 (ibm-granite/granite-embedding-{97,311}m-multilingual-r2) (#22716) · conversion10.09.0
pooled: unsloth-zoo + vllm + llama.cppFp8 compressed (#358) · unsloth_zoo9.010.0
pooled: unsloth-zoo + vllm + llama.cppHumming support for 2/3/5/6/7-bit pack-quantized weight-only inference (#46389) · vllm9.010.0
pooled: unsloth-zoo + vllm + llama.cpp[DSv4 Perf] DSv4 flashinfer sparse index cache for metadata, 2%~4% TTFT improvement (#45863) · tests9.010.0
pooled: unsloth-zoo + vllm + llama.cpp[SYCL] support bf16 on bin_bcast OP and unary OPs (#24838) · ggml9.010.0
pooled: unsloth-zoo + vllm + llama.cppmodel : support granite multilingual embeddings R2 (ibm-granite/granite-embedding-{97,311}m-multilingual-r2) (#22716) · conversion10.09.0
unslothai/unsloth-zooFp8 compressed (#358) · unsloth_zoo9.010.0
vllm-project/vllmHumming support for 2/3/5/6/7-bit pack-quantized weight-only inference (#46389) · vllm9.010.0
vllm-project/vllm[DSv4 Perf] DSv4 flashinfer sparse index cache for metadata, 2%~4% TTFT improvement (#45863) · tests9.010.0
pooled: unsloth-zoo + vllm + llama.cppFix LoRA scaling count mismatch on merge for Qwen2.5-VL exports (#2966) (#806) · tests9.08.3
unslothai/unsloth-zooFix LoRA scaling count mismatch on merge for Qwen2.5-VL exports (#2966) (#806) · tests9.08.3
ggml-org/llama.cppsycl : support MUL_MAT and OUT_PROD with Q1_0 (#24721) · ggml9.09.7
ggml-org/llama.cppvulkan: Switch MUL_MAT_VEC to 4 K per iteration for F16/32 (#22887) · ggml9.310.0
pooled: unsloth-zoo + vllm + llama.cppsycl : support MUL_MAT and OUT_PROD with Q1_0 (#24721) · ggml9.09.7
pooled: unsloth-zoo + vllm + llama.cppvulkan: Switch MUL_MAT_VEC to 4 K per iteration for F16/32 (#22887) · ggml9.310.0
ggml-org/llama.cppmetal : fix FA support logic (#21898) · ggml8.08.5
pooled: unsloth-zoo + vllm + llama.cpp[XPU] Fix Triton attn fp8/bf16 check failing (#45758) · vllm9.09.5
pooled: unsloth-zoo + vllm + llama.cpp[Kernel][Bugfix] Fix INT8 per-token-head KV cache rounding in Triton reshape-and-cache (#45361) · tests10.09.5
pooled: unsloth-zoo + vllm + llama.cpp[Perf][1/N] Expand Triton kernel warmup coverage, DSv4 (#46634) · vllm9.09.5
pooled: unsloth-zoo + vllm + llama.cpp[DeepEP V2] Fill invalid recv_topk_idx with -1 (#46432) · vllm9.510.0
pooled: unsloth-zoo + vllm + llama.cppnixl_ep: Skip post-receive quantization for NVFP4 (#45606) · vllm9.59.0
pooled: unsloth-zoo + vllm + llama.cppmetal : fix FA support logic (#21898) · ggml8.08.5
vllm-project/vllm[XPU] Fix Triton attn fp8/bf16 check failing (#45758) · vllm9.09.5
vllm-project/vllm[Kernel][Bugfix] Fix INT8 per-token-head KV cache rounding in Triton reshape-and-cache (#45361) · tests10.09.5
vllm-project/vllm[Perf][1/N] Expand Triton kernel warmup coverage, DSv4 (#46634) · vllm9.09.5
vllm-project/vllm[DeepEP V2] Fill invalid recv_topk_idx with -1 (#46432) · vllm9.510.0
vllm-project/vllmnixl_ep: Skip post-receive quantization for NVFP4 (#45606) · vllm9.59.0
ggml-org/llama.cppconvert : minor fixes for numpy 2.x (#23571) · examples8.69.0
pooled: unsloth-zoo + vllm + llama.cppconvert : minor fixes for numpy 2.x (#23571) · examples8.69.0
pooled: unsloth-zoo + vllm + llama.cppfeat(mlx): add save_method to save_pretrained_merged · unsloth_zoo9.710.0
unslothai/unsloth-zoofeat(mlx): add save_method to save_pretrained_merged · unsloth_zoo9.710.0
pooled: unsloth-zoo + vllm + llama.cppCapture outputs fixes for transformers v5 (#713) · tests9.39.0
unslothai/unsloth-zooCapture outputs fixes for transformers v5 (#713) · tests9.39.0
pooled: unsloth-zoo + vllm + llama.cppperf(moe-fp8): batched 3D dequant + FP8Experts dispatcher + Trainer guard · unsloth_zoo9.79.5
pooled: unsloth-zoo + vllm + llama.cppAuto-install fused lm_head + cross_entropy forward across transformers · tests10.09.8
unslothai/unsloth-zooperf(moe-fp8): batched 3D dequant + FP8Experts dispatcher + Trainer guard · unsloth_zoo9.79.5
unslothai/unsloth-zooAuto-install fused lm_head + cross_entropy forward across transformers · tests10.09.8
pooled: unsloth-zoo + vllm + llama.cppFix review findings for PR #3: Gemma4 LoRA/BnB patches, GDN extraction, finalize_huggingface_model · unsloth_zoo9.69.5
unslothai/unsloth-zooFix review findings for PR #3: Gemma4 LoRA/BnB patches, GDN extraction, finalize_huggingface_model · unsloth_zoo9.69.5
ggml-org/llama.cppdflash: refactor draft model conversion (#25110) · conversion10.010.0
ggml-org/llama.cpp[SYCL] Add Q8_0 reorder optimization (~3x tg speedup on Intel Arc) (#21527) · ggml10.010.0
ggml-org/llama.cppggml: support concat for scalar types at cuda backend (#24011) · ggml10.010.0
ggml-org/llama.cppCUDA: Various fixes to `cpy.cu` (#25000) · ggml10.010.0
ggml-org/llama.cppggml: vectorize ggml_vec_dot_q4_1_q8_1 with WASM SIMD128 (#22209) · ggml10.010.0
ggml-org/llama.cppsycl : fix failed ut cases of norm (#25044) · ggml10.010.0
ggml-org/llama.cppggml-webgpu: support non-square subgroup matrix configs for Intel GPUs (#21669) · ggml8.58.5
ggml-org/llama.cppggml: `gguf_init_from_callback` and `gguf_init_from_buffer` (#22341) · ggml10.010.0
ggml-org/llama.cppfix: GLM-DSA crash in llama-tokenize when using vocab_only (#22102) · src10.010.0
ggml-org/llama.cpp[SYCL] Add BF16 support to GET_ROWS operation (#21391) · ggml10.010.0
ggml-org/llama.cppcuda : fix KQ mask offset integer overflow in fattn MMA kernel (#23610) · ggml10.010.0
pooled: unsloth-zoo + vllm + llama.cppadd fixes for moe · unsloth_zoo10.010.0
pooled: unsloth-zoo + vllm + llama.cppUse torch.Tensor.reshape for non-contiguous tensor in ce loss function (#591) · unsloth_zoo10.010.0
pooled: unsloth-zoo + vllm + llama.cppfix(mlx): repair stub injection on Apple Silicon (3 sub-bugs) · unsloth_zoo10.010.0
pooled: unsloth-zoo + vllm + llama.cppfix(peft-param-wrapper): handle merge_and_unload for 4-bit MoE experts (B4) · unsloth_zoo10.010.0
pooled: unsloth-zoo + vllm + llama.cpp[Bugfix] Restrict FlashInfer cuDNN FP8 ViT attention gate to Blackwell (SM 100) (#45251) · vllm10.010.0
pooled: unsloth-zoo + vllm + llama.cpp[Bugfix][Quantization] Fix W8A8 int-quantized scheme selection regression (#46860) · tests10.010.0
pooled: unsloth-zoo + vllm + llama.cpp[Bugfix] Support non-power-of-2 top_k in legacy triton_kernels routing (#46406) · vllm10.010.0
pooled: unsloth-zoo + vllm + llama.cpp[Bugfix][Kernel] Fix mHC fused-RMSNorm big-fuse miscompile for hidden_size != 4096 (#44692) · vllm10.010.0
pooled: unsloth-zoo + vllm + llama.cpp[Kernel] Enable TritonW4A16LinearKernel as CUDA fallback for non-Marlin-aligned W4A16 shapes (#43731) · vllm10.010.0
pooled: unsloth-zoo + vllm + llama.cpp[Bugfix][Model Runner V2][Spec Decode] Fix int32 offset overflow in sampler kernels (#46560) · tests9.09.0
pooled: unsloth-zoo + vllm + llama.cpp[Perf] Fix dsv3_router_gemm heuristic (#44217) · vllm10.010.0
pooled: unsloth-zoo + vllm + llama.cpp[Bugfix] Fix minimax_qk_norm_fusion (#44983) · vllm5.55.5
pooled: unsloth-zoo + vllm + llama.cppdflash: refactor draft model conversion (#25110) · conversion10.010.0
pooled: unsloth-zoo + vllm + llama.cpp[SYCL] Add Q8_0 reorder optimization (~3x tg speedup on Intel Arc) (#21527) · ggml10.010.0
pooled: unsloth-zoo + vllm + llama.cppggml: support concat for scalar types at cuda backend (#24011) · ggml10.010.0
pooled: unsloth-zoo + vllm + llama.cppCUDA: Various fixes to `cpy.cu` (#25000) · ggml10.010.0
pooled: unsloth-zoo + vllm + llama.cppggml: vectorize ggml_vec_dot_q4_1_q8_1 with WASM SIMD128 (#22209) · ggml10.010.0
pooled: unsloth-zoo + vllm + llama.cppsycl : fix failed ut cases of norm (#25044) · ggml10.010.0
pooled: unsloth-zoo + vllm + llama.cppggml-webgpu: support non-square subgroup matrix configs for Intel GPUs (#21669) · ggml8.58.5
pooled: unsloth-zoo + vllm + llama.cppggml: `gguf_init_from_callback` and `gguf_init_from_buffer` (#22341) · ggml10.010.0
pooled: unsloth-zoo + vllm + llama.cppfix: GLM-DSA crash in llama-tokenize when using vocab_only (#22102) · src10.010.0
pooled: unsloth-zoo + vllm + llama.cpp[SYCL] Add BF16 support to GET_ROWS operation (#21391) · ggml10.010.0
pooled: unsloth-zoo + vllm + llama.cppcuda : fix KQ mask offset integer overflow in fattn MMA kernel (#23610) · ggml10.010.0
unslothai/unsloth-zooadd fixes for moe · unsloth_zoo10.010.0
unslothai/unsloth-zooUse torch.Tensor.reshape for non-contiguous tensor in ce loss function (#591) · unsloth_zoo10.010.0
unslothai/unsloth-zoofix(mlx): repair stub injection on Apple Silicon (3 sub-bugs) · unsloth_zoo10.010.0
unslothai/unsloth-zoofix(peft-param-wrapper): handle merge_and_unload for 4-bit MoE experts (B4) · unsloth_zoo10.010.0
vllm-project/vllm[Bugfix] Restrict FlashInfer cuDNN FP8 ViT attention gate to Blackwell (SM 100) (#45251) · vllm10.010.0
vllm-project/vllm[Bugfix][Quantization] Fix W8A8 int-quantized scheme selection regression (#46860) · tests10.010.0
vllm-project/vllm[Bugfix] Support non-power-of-2 top_k in legacy triton_kernels routing (#46406) · vllm10.010.0
vllm-project/vllm[Bugfix][Kernel] Fix mHC fused-RMSNorm big-fuse miscompile for hidden_size != 4096 (#44692) · vllm10.010.0
vllm-project/vllm[Kernel] Enable TritonW4A16LinearKernel as CUDA fallback for non-Marlin-aligned W4A16 shapes (#43731) · vllm10.010.0
vllm-project/vllm[Bugfix][Model Runner V2][Spec Decode] Fix int32 offset overflow in sampler kernels (#46560) · tests9.09.0
vllm-project/vllm[Perf] Fix dsv3_router_gemm heuristic (#44217) · vllm10.010.0
vllm-project/vllm[Bugfix] Fix minimax_qk_norm_fusion (#44983) · vllm5.55.5
ggml-org/llama.cppsycl : support nvfp4 type in mul_mat (#21227) · ggml9.7-
ggml-org/llama.cppCUDA & CPU: support F32 kernel type for `CONV_TRANSPOSE_2D` (#17094) · ggml10.0-
ggml-org/llama.cppggml : extend im2col f16 (ggml/1434) · ggml10.0-
ggml-org/llama.cpphexagon: dma optimizations (mostly fixing regressions) (#21137) · ggml7.0-
ggml-org/llama.cppsycl: support reordered Q4_K/Q5_K/Q6_K MoE MUL_MAT_ID (#24452) · ggml-9.7
ggml-org/llama.cppCUDA : Fix CUB's argsort when nrows % block_size == 0 CCCL < 3.1 (#21181) · ggml8.0-
ggml-org/llama.cppllama-fit: fix regex pattern for gate_up tensors (#20910) · src7.0-
pooled: unsloth-zoo + vllm + llama.cpp[Bugfix] Fix corrupt outputs in MoE FP8 LoRA responses and MoE base model responses when LoRAs are loaded (#42120) · tests-3.5
pooled: unsloth-zoo + vllm + llama.cpp[AMD][OCP MX][CI] Fix tests to not dispatch on `UNFUSED_TRITON` backend on MI300, improve w_mxfp4_a_fp8 emulation support (#46142) · tests-10.0
pooled: unsloth-zoo + vllm + llama.cppAdd weights padding for fp8 per-block online quantization (#44763) · vllm-10.0
pooled: unsloth-zoo + vllm + llama.cppsycl : support nvfp4 type in mul_mat (#21227) · ggml9.7-
pooled: unsloth-zoo + vllm + llama.cppCUDA & CPU: support F32 kernel type for `CONV_TRANSPOSE_2D` (#17094) · ggml10.0-
pooled: unsloth-zoo + vllm + llama.cppggml : extend im2col f16 (ggml/1434) · ggml10.0-
pooled: unsloth-zoo + vllm + llama.cpphexagon: dma optimizations (mostly fixing regressions) (#21137) · ggml7.0-
pooled: unsloth-zoo + vllm + llama.cppsycl: support reordered Q4_K/Q5_K/Q6_K MoE MUL_MAT_ID (#24452) · ggml-9.7
pooled: unsloth-zoo + vllm + llama.cppCUDA : Fix CUB's argsort when nrows % block_size == 0 CCCL < 3.1 (#21181) · ggml8.0-
pooled: unsloth-zoo + vllm + llama.cppllama-fit: fix regex pattern for gate_up tensors (#20910) · src7.0-
vllm-project/vllm[Bugfix] Fix corrupt outputs in MoE FP8 LoRA responses and MoE base model responses when LoRAs are loaded (#42120) · tests-3.5
vllm-project/vllm[AMD][OCP MX][CI] Fix tests to not dispatch on `UNFUSED_TRITON` backend on MI300, improve w_mxfp4_a_fp8 emulation support (#46142) · tests-10.0
vllm-project/vllmAdd weights padding for fp8 per-block online quantization (#44763) · vllm-10.0

Scores run from 0 to 10. Head-to-head counts only the 120 tasks where both models ran. Bold marks the winner on that task.

By area of the codebase

AreaTasksClaude Opus 4.8GPT-5.5
ggml448.99.8
vllm328.49.2
unsloth_zoo289.09.4
tests248.48.6
conversion410.09.5
src48.510.0
examples28.69.0

How the benchmark works

A task here is a single commit. CommitBench checks out the repository one commit before the change, writes a short description of the work from the diff, and gives the agent nothing but that description and the codebase. The agent navigates and edits the files itself, the same way it would on a real ticket.

Every agent's change is then compared head-to-head against every other one — and against the human commit — by a blind judge that never sees which model wrote which diff. Those pairwise wins become a Bradley-Terry rating (Elo-scaled, with the human commit anchored at 0), which is the ranking shown here. A fixed rubric still scores each change for the per-task detail. Cost and speed come from each run's own token and timing reports, priced at one consistent rate so the numbers line up across agents.

Common questions

Which is better for coding, Claude Opus 4.8 or GPT-5.5?

GPT-5.5 ranks higher overall across 140 tasks from 4 public repositories. On the pairwise Bradley-Terry rating (Elo-scaled, anchored on the human commit at 0), Claude Opus 4.8 sits at -1 and GPT-5.5 at 27. Claude Opus 4.8 costs about $103.088 per run, GPT-5.5 about $102.265 per run.

How is the ranking calculated?

Each task is a real commit from a public repository. The agent gets the code at the commit before the change and a written description of the work, then edits the files itself. Every agent's diff is then compared head-to-head against every other one — and against the human commit — by a blind judge that never sees which model produced which diff. Those pairwise wins and losses become a Bradley-Terry rating (Elo-scaled), so the ranking reflects which changes actually win comparisons, not whether they match the original wording.

Could the agents have seen the answers already?

Two things limit that. The task description is rewritten from the change rather than copied from the commit message, and the grader is given the rubric instead of the original answer. Building tasks from recent commits also reduces how much a model could have trained on the result.

Can I compare Claude Opus 4.8 and GPT-5.5 on my own code?

Yes. Point CommitBench at your repository and it builds the same kind of tasks from your own commit history, so the ranking reflects the code you actually work on.

Other comparisons

Claude Opus vs Claude SonnetClaude Opus vs GLM-5.2Claude Sonnet vs GPT-5.5Claude Sonnet vs GLM-5.2GPT-5.5 vs GLM-5.2
Run this on your codebase

Public repos give the general picture. Benchmark Claude Opus 4.8 against GPT-5.5 on your own commit history to see which one does better on the code you actually ship.

Benchmark your repo →