commitbench

← all comparisons

Claude Sonnet 4.6 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 Sonnet 4.6
-23elo
BT rating · GPT-5.5
27elo
Per-task wins
184070
Tasks · repos
132 · 4
Edge
GPT-5.5

What the numbers say

Over 132 benchmarked tasks from 4 public repositories, Claude Sonnet 4.6 has a Bradley-Terry rating of -23 and GPT-5.5 27 (Elo-scaled, with the human commit anchored at 0). On the 128 tasks where both ran, GPT-5.5 won more often (70 to 18, with 40 tied). On cost, Claude Sonnet 4.6 runs at about $61.834 and GPT-5.5 at about $102.265 per run.

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

RepoTaskClaude Sonnet 4.6GPT-5.5
pooled: unsloth-zoo + vllm + llama.cppfix(moe_wna16): access tp_size via moe_config for RoutedExperts compatibility (#45404) · vllm1.59.3
vllm-project/vllmfix(moe_wna16): access tp_size via moe_config for RoutedExperts compatibility (#45404) · vllm1.59.3
pooled: unsloth-zoo + vllm + llama.cppfix(moe-fp8): inline weight/quant-state lookup; narrow ImportError scope · unsloth_zoo2.09.0
unslothai/unsloth-zoofix(moe-fp8): inline weight/quant-state lookup; narrow ImportError scope · unsloth_zoo2.09.0
ggml-org/llama.cppggml : fix ARM NEON nvfp4 dot product on non-dotprod targets (#21559) · ggml3.510.0
pooled: unsloth-zoo + vllm + llama.cppggml : fix ARM NEON nvfp4 dot product on non-dotprod targets (#21559) · ggml3.510.0
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 dense vLLM state dict parity · tests1.76.5
unslothai/unsloth-zooFix dense vLLM state dict parity · tests1.76.5
pooled: unsloth-zoo + vllm + llama.cpp[Bugfix] Default tie_weights to sharing the weight (fix tied quantized embeddings, e.g. ModelOpt Gemma4) (#45544) · vllm10.05.8
vllm-project/vllm[Bugfix] Default tie_weights to sharing the weight (fix tied quantized embeddings, e.g. ModelOpt Gemma4) (#45544) · vllm10.05.8
pooled: unsloth-zoo + vllm + llama.cppAuto-install fused lm_head + cross_entropy forward across transformers · tests6.89.8
unslothai/unsloth-zooAuto-install fused lm_head + cross_entropy forward across transformers · tests6.89.8
ggml-org/llama.cppggml-webgpu: support non-square subgroup matrix configs for Intel GPUs (#21669) · ggml5.58.5
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) · tests6.53.5
pooled: unsloth-zoo + vllm + llama.cpp[DeepEP V2] Fill invalid recv_topk_idx with -1 (#46432) · vllm7.010.0
pooled: unsloth-zoo + vllm + llama.cppggml-webgpu: support non-square subgroup matrix configs for Intel GPUs (#21669) · ggml5.58.5
vllm-project/vllm[Bugfix] Fix corrupt outputs in MoE FP8 LoRA responses and MoE base model responses when LoRAs are loaded (#42120) · tests6.53.5
vllm-project/vllm[DeepEP V2] Fill invalid recv_topk_idx with -1 (#46432) · vllm7.010.0
pooled: unsloth-zoo + vllm + llama.cppFix gptoss 4bit (#524) · unsloth_zoo4.06.5
unslothai/unsloth-zooFix gptoss 4bit (#524) · unsloth_zoo4.06.5
ggml-org/llama.cpp[SYCL] support bf16 on bin_bcast OP and unary OPs (#24838) · ggml8.010.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.cppCapture outputs fixes for transformers v5 (#713) · tests7.09.0
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) · tests8.010.0
pooled: unsloth-zoo + vllm + llama.cpp[SYCL] support bf16 on bin_bcast OP and unary OPs (#24838) · ggml8.010.0
unslothai/unsloth-zoofix(moe): loud-fail on silent fallbacks in MoE merge + FP8 forward paths · unsloth_zoo8.010.0
unslothai/unsloth-zooCapture outputs fixes for transformers v5 (#713) · tests7.09.0
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) · tests8.010.0
pooled: unsloth-zoo + vllm + llama.cppadd fixes for moe · unsloth_zoo8.110.0
unslothai/unsloth-zooadd fixes for moe · unsloth_zoo8.110.0
ggml-org/llama.cpp[SYCL] Add BF16 support to GET_ROWS operation (#21391) · ggml8.310.0
pooled: unsloth-zoo + vllm + llama.cpp[SYCL] Add BF16 support to GET_ROWS operation (#21391) · ggml8.310.0
pooled: unsloth-zoo + vllm + llama.cppfix(peft-param-wrapper): handle merge_and_unload for 4-bit MoE experts (B4) · unsloth_zoo8.310.0
unslothai/unsloth-zoofix(peft-param-wrapper): handle merge_and_unload for 4-bit MoE experts (B4) · unsloth_zoo8.310.0
ggml-org/llama.cppsycl: support reordered Q4_K/Q5_K/Q6_K MoE MUL_MAT_ID (#24452) · ggml8.19.7
pooled: unsloth-zoo + vllm + llama.cppHarden fused-forward AST rewriter and adapter · unsloth_zoo9.17.5
pooled: unsloth-zoo + vllm + llama.cppsycl: support reordered Q4_K/Q5_K/Q6_K MoE MUL_MAT_ID (#24452) · ggml8.19.7
unslothai/unsloth-zooHarden fused-forward AST rewriter and adapter · unsloth_zoo9.17.5
ggml-org/llama.cppsycl : support MUL_MAT and OUT_PROD with Q1_0 (#24721) · ggml8.29.7
ggml-org/llama.cppmetal : fix FA support logic (#21898) · ggml10.08.5
pooled: unsloth-zoo + vllm + llama.cppFix review findings for PR #3: Gemma4 LoRA/BnB patches, GDN extraction, finalize_huggingface_model · unsloth_zoo8.09.5
pooled: unsloth-zoo + vllm + llama.cpp[Bugfix][Model Runner V2][Spec Decode] Fix int32 offset overflow in sampler kernels (#46560) · tests7.59.0
pooled: unsloth-zoo + vllm + llama.cppsycl : support MUL_MAT and OUT_PROD with Q1_0 (#24721) · ggml8.29.7
pooled: unsloth-zoo + vllm + llama.cppmetal : fix FA support logic (#21898) · ggml10.08.5
unslothai/unsloth-zooFix review findings for PR #3: Gemma4 LoRA/BnB patches, GDN extraction, finalize_huggingface_model · unsloth_zoo8.09.5
vllm-project/vllm[Bugfix][Model Runner V2][Spec Decode] Fix int32 offset overflow in sampler kernels (#46560) · tests7.59.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.cppperf(moe-fp8): batched 3D dequant + FP8Experts dispatcher + Trainer guard · unsloth_zoo8.59.5
pooled: unsloth-zoo + vllm + llama.cppfix(moe-quant): gate v5-only patches · tests9.010.0
pooled: unsloth-zoo + vllm + llama.cppFix ModuleNotFoundError when loading gpt-oss models without triton_kernels (#4088) (#539) · unsloth_zoo9.010.0
pooled: unsloth-zoo + vllm + llama.cppAdd weights padding for fp8 per-block online quantization (#44763) · vllm9.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-zooperf(moe-fp8): batched 3D dequant + FP8Experts dispatcher + Trainer guard · unsloth_zoo8.59.5
unslothai/unsloth-zoofix(moe-quant): gate v5-only patches · tests9.010.0
unslothai/unsloth-zooFix ModuleNotFoundError when loading gpt-oss models without triton_kernels (#4088) (#539) · unsloth_zoo9.010.0
vllm-project/vllmAdd weights padding for fp8 per-block online quantization (#44763) · vllm9.010.0
pooled: unsloth-zoo + vllm + llama.cppFix LoRA scaling count mismatch on merge for Qwen2.5-VL exports (#2966) (#806) · tests7.58.3
pooled: unsloth-zoo + vllm + llama.cpp[XPU][MoE] Add WNA16 oracle backend for GPTQ sym-int4 (xpu_fused_moe) (#41426) · vllm8.59.3
unslothai/unsloth-zooFix LoRA scaling count mismatch on merge for Qwen2.5-VL exports (#2966) (#806) · tests7.58.3
vllm-project/vllm[XPU][MoE] Add WNA16 oracle backend for GPTQ sym-int4 (xpu_fused_moe) (#41426) · vllm8.59.3
ggml-org/llama.cppcuda: Q1_0 initial backend (#21629) · ggml9.09.7
pooled: unsloth-zoo + vllm + llama.cppcuda: Q1_0 initial backend (#21629) · ggml9.09.7
ggml-org/llama.cppconvert : minor fixes for numpy 2.x (#23571) · examples8.59.0
ggml-org/llama.cppsycl : fix the failed UT cases of conv_3d (#24900) · ggml9.510.0
pooled: unsloth-zoo + vllm + llama.cpp[XPU] Fix Triton attn fp8/bf16 check failing (#45758) · vllm10.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[Bugfix][Kernel] Fix mHC fused-RMSNorm big-fuse miscompile for hidden_size != 4096 (#44692) · vllm9.510.0
pooled: unsloth-zoo + vllm + llama.cpp[Bugfix] Fix minimax_qk_norm_fusion (#44983) · vllm5.05.5
pooled: unsloth-zoo + vllm + llama.cppnixl_ep: Skip post-receive quantization for NVFP4 (#45606) · vllm9.59.0
pooled: unsloth-zoo + vllm + llama.cppconvert : minor fixes for numpy 2.x (#23571) · examples8.59.0
pooled: unsloth-zoo + vllm + llama.cppsycl : fix the failed UT cases of conv_3d (#24900) · ggml9.510.0
vllm-project/vllm[XPU] Fix Triton attn fp8/bf16 check failing (#45758) · vllm10.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[Bugfix][Kernel] Fix mHC fused-RMSNorm big-fuse miscompile for hidden_size != 4096 (#44692) · vllm9.510.0
vllm-project/vllm[Bugfix] Fix minimax_qk_norm_fusion (#44983) · vllm5.05.5
vllm-project/vllmnixl_ep: Skip post-receive quantization for NVFP4 (#45606) · vllm9.59.0
pooled: unsloth-zoo + vllm + llama.cppfix(moe-bnb): dequant Params4bit experts in transformers v5 grouped/batched MoE forward (B6) · unsloth_zoo9.610.0
unslothai/unsloth-zoofix(moe-bnb): dequant Params4bit experts in transformers v5 grouped/batched MoE forward (B6) · unsloth_zoo9.610.0
pooled: unsloth-zoo + vllm + llama.cppfix(mlx): repair stub injection on Apple Silicon (3 sub-bugs) · unsloth_zoo9.710.0
pooled: unsloth-zoo + vllm + llama.cpp[Model]Fix MiniMaxM2ForCausalLM perf regression (#45935) · tests8.58.2
unslothai/unsloth-zoofix(mlx): repair stub injection on Apple Silicon (3 sub-bugs) · unsloth_zoo9.710.0
vllm-project/vllm[Model]Fix MiniMaxM2ForCausalLM perf regression (#45935) · tests8.58.2
pooled: unsloth-zoo + vllm + llama.cppfeat(mlx): add save_method to save_pretrained_merged · unsloth_zoo9.810.0
unslothai/unsloth-zoofeat(mlx): add save_method to save_pretrained_merged · unsloth_zoo9.810.0
ggml-org/llama.cppmetal: Q1_0 backend (#21528) · ggml9.910.0
pooled: unsloth-zoo + vllm + llama.cppmetal: Q1_0 backend (#21528) · ggml9.910.0
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.cppvulkan: Switch MUL_MAT_VEC to 4 K per iteration for F16/32 (#22887) · 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: `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.cppcuda : fix KQ mask offset integer overflow in fattn MMA kernel (#23610) · ggml10.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.cppFp8 compressed (#358) · 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[Perf][1/N] Expand Triton kernel warmup coverage, DSv4 (#46634) · vllm9.59.5
pooled: unsloth-zoo + vllm + llama.cppHumming support for 2/3/5/6/7-bit pack-quantized weight-only inference (#46389) · 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[DSv4 Perf] DSv4 flashinfer sparse index cache for metadata, 2%~4% TTFT improvement (#45863) · tests10.010.0
pooled: unsloth-zoo + vllm + llama.cpp[Perf] Fix dsv3_router_gemm heuristic (#44217) · vllm10.010.0
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.cppvulkan: Switch MUL_MAT_VEC to 4 K per iteration for F16/32 (#22887) · 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: `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.cppcuda : fix KQ mask offset integer overflow in fattn MMA kernel (#23610) · ggml10.010.0
unslothai/unsloth-zooUse torch.Tensor.reshape for non-contiguous tensor in ce loss function (#591) · unsloth_zoo10.010.0
unslothai/unsloth-zooFp8 compressed (#358) · 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[Perf][1/N] Expand Triton kernel warmup coverage, DSv4 (#46634) · vllm9.59.5
vllm-project/vllmHumming support for 2/3/5/6/7-bit pack-quantized weight-only inference (#46389) · 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[DSv4 Perf] DSv4 flashinfer sparse index cache for metadata, 2%~4% TTFT improvement (#45863) · tests10.010.0
vllm-project/vllm[Perf] Fix dsv3_router_gemm heuristic (#44217) · vllm10.010.0
ggml-org/llama.cppCUDA & CPU: support F32 kernel type for `CONV_TRANSPOSE_2D` (#17094) · ggml10.0-
ggml-org/llama.cppllama-fit: fix regex pattern for gate_up tensors (#20910) · src6.0-
pooled: unsloth-zoo + vllm + llama.cppCUDA & CPU: support F32 kernel type for `CONV_TRANSPOSE_2D` (#17094) · ggml10.0-
pooled: unsloth-zoo + vllm + llama.cppllama-fit: fix regex pattern for gate_up tensors (#20910) · src6.0-

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

By area of the codebase

AreaTasksClaude Sonnet 4.6GPT-5.5
ggml388.99.8
vllm328.39.2
unsloth_zoo288.19.4
tests247.78.6
conversion410.09.5
src48.010.0
examples28.59.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 Sonnet 4.6 or GPT-5.5?

GPT-5.5 ranks higher overall across 132 tasks from 4 public repositories. On the pairwise Bradley-Terry rating (Elo-scaled, anchored on the human commit at 0), Claude Sonnet 4.6 sits at -23 and GPT-5.5 at 27. Claude Sonnet 4.6 costs about $61.834 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 Sonnet 4.6 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 GPT-5.5Claude Opus vs GLM-5.2Claude Sonnet vs GLM-5.2GPT-5.5 vs GLM-5.2
Run this on your codebase

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

Benchmark your repo →