commitbench

← all comparisons

Claude Opus 4.8 vs GLM-5.2 for coding

Claude Opus 4.8 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 · GLM-5.2
-84elo
Per-task wins
702816
Tasks · repos
140 · 4
Edge
Claude

What the numbers say

Over 140 benchmarked tasks from 4 public repositories, Claude Opus 4.8 has a Bradley-Terry rating of -1 and GLM-5.2 -84 (Elo-scaled, with the human commit anchored at 0). On the 114 tasks where both ran, Claude Opus 4.8 won more often (70 to 16, with 28 tied). On cost, Claude Opus 4.8 runs at about $103.088 and GLM-5.2 at about $45.754 per run.

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

RepoTaskClaude Opus 4.8GLM-5.2
ggml-org/llama.cppmodel : support granite multilingual embeddings R2 (ibm-granite/granite-embedding-{97,311}m-multilingual-r2) (#22716) · conversion10.00.0
pooled: unsloth-zoo + vllm + llama.cpp[Model]Fix MiniMaxM2ForCausalLM perf regression (#45935) · tests10.00.0
pooled: unsloth-zoo + vllm + llama.cppmodel : support granite multilingual embeddings R2 (ibm-granite/granite-embedding-{97,311}m-multilingual-r2) (#22716) · conversion10.00.0
vllm-project/vllm[Model]Fix MiniMaxM2ForCausalLM perf regression (#45935) · tests10.00.0
pooled: unsloth-zoo + vllm + llama.cpp[DeepEP V2] Fill invalid recv_topk_idx with -1 (#46432) · vllm9.50.0
vllm-project/vllm[DeepEP V2] Fill invalid recv_topk_idx with -1 (#46432) · vllm9.50.0
ggml-org/llama.cppconvert : minor fixes for numpy 2.x (#23571) · examples8.60.0
pooled: unsloth-zoo + vllm + llama.cppconvert : minor fixes for numpy 2.x (#23571) · examples8.60.0
ggml-org/llama.cppcuda : fix KQ mask offset integer overflow in fattn MMA kernel (#23610) · ggml10.01.5
pooled: unsloth-zoo + vllm + llama.cppcuda : fix KQ mask offset integer overflow in fattn MMA kernel (#23610) · ggml10.01.5
pooled: unsloth-zoo + vllm + llama.cpp[Bugfix][Model Runner V2][Spec Decode] Fix int32 offset overflow in sampler kernels (#46560) · tests9.01.0
vllm-project/vllm[Bugfix][Model Runner V2][Spec Decode] Fix int32 offset overflow in sampler kernels (#46560) · tests9.01.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.21.5
vllm-project/vllm[Bugfix] Default tie_weights to sharing the weight (fix tied quantized embeddings, e.g. ModelOpt Gemma4) (#45544) · vllm9.21.5
pooled: unsloth-zoo + vllm + llama.cppFix gptoss 4bit (#524) · unsloth_zoo9.52.0
unslothai/unsloth-zooFix gptoss 4bit (#524) · unsloth_zoo9.52.0
pooled: unsloth-zoo + vllm + llama.cppfix(moe_wna16): access tp_size via moe_config for RoutedExperts compatibility (#45404) · vllm8.12.0
vllm-project/vllmfix(moe_wna16): access tp_size via moe_config for RoutedExperts compatibility (#45404) · vllm8.12.0
pooled: unsloth-zoo + vllm + llama.cppAuto-install fused lm_head + cross_entropy forward across transformers · tests10.04.0
unslothai/unsloth-zooAuto-install fused lm_head + cross_entropy forward across transformers · tests10.04.0
pooled: unsloth-zoo + vllm + llama.cppadd fixes for moe · unsloth_zoo10.05.2
unslothai/unsloth-zooadd fixes for moe · unsloth_zoo10.05.2
pooled: unsloth-zoo + vllm + llama.cppfix(moe-fp8): inline weight/quant-state lookup; narrow ImportError scope · unsloth_zoo7.53.0
pooled: unsloth-zoo + vllm + llama.cppHumming support for 2/3/5/6/7-bit pack-quantized weight-only inference (#46389) · vllm9.04.5
unslothai/unsloth-zoofix(moe-fp8): inline weight/quant-state lookup; narrow ImportError scope · unsloth_zoo7.53.0
vllm-project/vllmHumming support for 2/3/5/6/7-bit pack-quantized weight-only inference (#46389) · vllm9.04.5
pooled: unsloth-zoo + vllm + llama.cppCapture outputs fixes for transformers v5 (#713) · tests9.35.0
unslothai/unsloth-zooCapture outputs fixes for transformers v5 (#713) · tests9.35.0
pooled: unsloth-zoo + vllm + llama.cppfix(moe-bnb): dequant Params4bit experts in transformers v5 grouped/batched MoE forward (B6) · unsloth_zoo5.59.5
unslothai/unsloth-zoofix(moe-bnb): dequant Params4bit experts in transformers v5 grouped/batched MoE forward (B6) · unsloth_zoo5.59.5
pooled: unsloth-zoo + vllm + llama.cppperf(moe-fp8): batched 3D dequant + FP8Experts dispatcher + Trainer guard · unsloth_zoo9.75.9
unslothai/unsloth-zooperf(moe-fp8): batched 3D dequant + FP8Experts dispatcher + Trainer guard · unsloth_zoo9.75.9
pooled: unsloth-zoo + vllm + llama.cpp[Perf][1/N] Expand Triton kernel warmup coverage, DSv4 (#46634) · vllm9.05.3
vllm-project/vllm[Perf][1/N] Expand Triton kernel warmup coverage, DSv4 (#46634) · vllm9.05.3
pooled: unsloth-zoo + vllm + llama.cppFix review findings for PR #3: Gemma4 LoRA/BnB patches, GDN extraction, finalize_huggingface_model · unsloth_zoo9.66.0
unslothai/unsloth-zooFix review findings for PR #3: Gemma4 LoRA/BnB patches, GDN extraction, finalize_huggingface_model · unsloth_zoo9.66.0
ggml-org/llama.cppsycl : support MUL_MAT and OUT_PROD with Q1_0 (#24721) · ggml9.05.5
ggml-org/llama.cppggml-webgpu: support non-square subgroup matrix configs for Intel GPUs (#21669) · ggml8.55.0
pooled: unsloth-zoo + vllm + llama.cppsycl : support MUL_MAT and OUT_PROD with Q1_0 (#24721) · ggml9.05.5
pooled: unsloth-zoo + vllm + llama.cppggml-webgpu: support non-square subgroup matrix configs for Intel GPUs (#21669) · ggml8.55.0
pooled: unsloth-zoo + vllm + llama.cpp[XPU][MoE] Add WNA16 oracle backend for GPTQ sym-int4 (xpu_fused_moe) (#41426) · vllm2.55.9
vllm-project/vllm[XPU][MoE] Add WNA16 oracle backend for GPTQ sym-int4 (xpu_fused_moe) (#41426) · vllm2.55.9
pooled: unsloth-zoo + vllm + llama.cppnixl_ep: Skip post-receive quantization for NVFP4 (#45606) · vllm9.56.5
vllm-project/vllmnixl_ep: Skip post-receive quantization for NVFP4 (#45606) · vllm9.56.5
ggml-org/llama.cpp[SYCL] Add BF16 support to GET_ROWS operation (#21391) · ggml10.07.3
pooled: unsloth-zoo + vllm + llama.cpp[SYCL] Add BF16 support to GET_ROWS operation (#21391) · ggml10.07.3
ggml-org/llama.cppggml: `gguf_init_from_callback` and `gguf_init_from_buffer` (#22341) · ggml10.07.4
pooled: unsloth-zoo + vllm + llama.cppggml: `gguf_init_from_callback` and `gguf_init_from_buffer` (#22341) · ggml10.07.4
ggml-org/llama.cppggml: support concat for scalar types at cuda backend (#24011) · ggml10.07.5
pooled: unsloth-zoo + vllm + llama.cppggml: support concat for scalar types at cuda backend (#24011) · ggml10.07.5
pooled: unsloth-zoo + vllm + llama.cppFix dense vLLM state dict parity · tests0.02.3
unslothai/unsloth-zooFix dense vLLM state dict parity · tests0.02.3
pooled: unsloth-zoo + vllm + llama.cpp[Kernel] Add swap AB optimization to fused_moe_kernel (#36559) · vllm4.02.0
vllm-project/vllm[Kernel] Add swap AB optimization to fused_moe_kernel (#36559) · vllm4.02.0
ggml-org/llama.cppcuda: Q1_0 initial backend (#21629) · ggml8.06.3
pooled: unsloth-zoo + vllm + llama.cppcuda: Q1_0 initial backend (#21629) · ggml8.06.3
ggml-org/llama.cppmetal: Q1_0 backend (#21528) · ggml8.510.0
ggml-org/llama.cpp[SYCL] support bf16 on bin_bcast OP and unary OPs (#24838) · ggml9.07.5
ggml-org/llama.cppsycl : fix failed ut cases of norm (#25044) · ggml10.08.5
pooled: unsloth-zoo + vllm + llama.cppfix(moe): loud-fail on silent fallbacks in MoE merge + FP8 forward paths · unsloth_zoo8.06.5
pooled: unsloth-zoo + vllm + llama.cppfix(peft-param-wrapper): handle merge_and_unload for 4-bit MoE experts (B4) · unsloth_zoo10.08.5
pooled: unsloth-zoo + vllm + llama.cppFix ModuleNotFoundError when loading gpt-oss models without triton_kernels (#4088) (#539) · unsloth_zoo8.09.5
pooled: unsloth-zoo + vllm + llama.cpp[DSv4 Perf] DSv4 flashinfer sparse index cache for metadata, 2%~4% TTFT improvement (#45863) · tests9.07.5
pooled: unsloth-zoo + vllm + llama.cppmetal: Q1_0 backend (#21528) · ggml8.510.0
pooled: unsloth-zoo + vllm + llama.cpp[SYCL] support bf16 on bin_bcast OP and unary OPs (#24838) · ggml9.07.5
pooled: unsloth-zoo + vllm + llama.cppsycl : fix failed ut cases of norm (#25044) · ggml10.08.5
unslothai/unsloth-zoofix(moe): loud-fail on silent fallbacks in MoE merge + FP8 forward paths · unsloth_zoo8.06.5
unslothai/unsloth-zoofix(peft-param-wrapper): handle merge_and_unload for 4-bit MoE experts (B4) · unsloth_zoo10.08.5
unslothai/unsloth-zooFix ModuleNotFoundError when loading gpt-oss models without triton_kernels (#4088) (#539) · unsloth_zoo8.09.5
vllm-project/vllm[DSv4 Perf] DSv4 flashinfer sparse index cache for metadata, 2%~4% TTFT improvement (#45863) · tests9.07.5
ggml-org/llama.cppvulkan: Switch MUL_MAT_VEC to 4 K per iteration for F16/32 (#22887) · ggml9.38.0
pooled: unsloth-zoo + vllm + llama.cppvulkan: Switch MUL_MAT_VEC to 4 K per iteration for F16/32 (#22887) · ggml9.38.0
pooled: unsloth-zoo + vllm + llama.cppfix(moe-quant): gate v5-only patches · tests7.58.7
unslothai/unsloth-zoofix(moe-quant): gate v5-only patches · tests7.58.7
pooled: unsloth-zoo + vllm + llama.cppfeat(mlx): add save_method to save_pretrained_merged · unsloth_zoo9.78.6
unslothai/unsloth-zoofeat(mlx): add save_method to save_pretrained_merged · unsloth_zoo9.78.6
ggml-org/llama.cppdflash: refactor draft model conversion (#25110) · conversion10.09.0
pooled: unsloth-zoo + vllm + llama.cppfix(mlx): repair stub injection on Apple Silicon (3 sub-bugs) · unsloth_zoo10.09.0
pooled: unsloth-zoo + vllm + llama.cpp[XPU] Fix Triton attn fp8/bf16 check failing (#45758) · vllm9.010.0
pooled: unsloth-zoo + vllm + llama.cpp[Bugfix] Fix minimax_qk_norm_fusion (#44983) · vllm5.54.5
pooled: unsloth-zoo + vllm + llama.cppdflash: refactor draft model conversion (#25110) · conversion10.09.0
unslothai/unsloth-zoofix(mlx): repair stub injection on Apple Silicon (3 sub-bugs) · unsloth_zoo10.09.0
vllm-project/vllm[XPU] Fix Triton attn fp8/bf16 check failing (#45758) · vllm9.010.0
vllm-project/vllm[Bugfix] Fix minimax_qk_norm_fusion (#44983) · vllm5.54.5
ggml-org/llama.cppmetal : fix FA support logic (#21898) · ggml8.08.5
pooled: unsloth-zoo + vllm + llama.cppmetal : fix FA support logic (#21898) · ggml8.08.5
ggml-org/llama.cpp[SYCL] Add Q8_0 reorder optimization (~3x tg speedup on Intel Arc) (#21527) · ggml10.010.0
ggml-org/llama.cppCUDA: Various fixes to `cpy.cu` (#25000) · ggml10.010.0
ggml-org/llama.cppCUDA & CPU: support F32 kernel type for `CONV_TRANSPOSE_2D` (#17094) · 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.cppfix: GLM-DSA crash in llama-tokenize when using vocab_only (#22102) · src10.010.0
ggml-org/llama.cppggml : fix ARM NEON nvfp4 dot product on non-dotprod targets (#21559) · ggml8.58.5
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.cppHarden fused-forward AST rewriter and adapter · unsloth_zoo9.29.2
pooled: unsloth-zoo + vllm + llama.cppFp8 compressed (#358) · unsloth_zoo9.09.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[Kernel][Bugfix] Fix INT8 per-token-head KV cache rounding in Triton reshape-and-cache (#45361) · tests10.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[Kernel] Enable TritonW4A16LinearKernel as CUDA fallback for non-Marlin-aligned W4A16 shapes (#43731) · vllm10.010.0
pooled: unsloth-zoo + vllm + llama.cpp[Perf] Fix dsv3_router_gemm heuristic (#44217) · vllm10.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.cppCUDA: Various fixes to `cpy.cu` (#25000) · ggml10.010.0
pooled: unsloth-zoo + vllm + llama.cppCUDA & CPU: support F32 kernel type for `CONV_TRANSPOSE_2D` (#17094) · 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.cppfix: GLM-DSA crash in llama-tokenize when using vocab_only (#22102) · src10.010.0
pooled: unsloth-zoo + vllm + llama.cppggml : fix ARM NEON nvfp4 dot product on non-dotprod targets (#21559) · ggml8.58.5
unslothai/unsloth-zooUse torch.Tensor.reshape for non-contiguous tensor in ce loss function (#591) · unsloth_zoo10.010.0
unslothai/unsloth-zooHarden fused-forward AST rewriter and adapter · unsloth_zoo9.29.2
unslothai/unsloth-zooFp8 compressed (#358) · unsloth_zoo9.09.0
vllm-project/vllm[Bugfix] Restrict FlashInfer cuDNN FP8 ViT attention gate to Blackwell (SM 100) (#45251) · vllm10.010.0
vllm-project/vllm[Kernel][Bugfix] Fix INT8 per-token-head KV cache rounding in Triton reshape-and-cache (#45361) · tests10.010.0
vllm-project/vllm[Bugfix][Quantization] Fix W8A8 int-quantized scheme selection regression (#46860) · tests10.010.0
vllm-project/vllm[Kernel] Enable TritonW4A16LinearKernel as CUDA fallback for non-Marlin-aligned W4A16 shapes (#43731) · vllm10.010.0
vllm-project/vllm[Perf] Fix dsv3_router_gemm heuristic (#44217) · vllm10.010.0
ggml-org/llama.cppmodel: mistral small 4 support (#20649) · convert_hf_to_gguf.py-9.7
ggml-org/llama.cppsycl : support nvfp4 type in mul_mat (#21227) · ggml9.7-
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 : fix the failed UT cases of conv_3d (#24900) · ggml1.5-
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.cppFix LoRA scaling count mismatch on merge for Qwen2.5-VL exports (#2966) (#806) · tests9.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-0.8
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-4.5
pooled: unsloth-zoo + vllm + llama.cpp[Bugfix] Support non-power-of-2 top_k in legacy triton_kernels routing (#46406) · vllm10.0-
pooled: unsloth-zoo + vllm + llama.cpp[Bugfix][Kernel] Fix mHC fused-RMSNorm big-fuse miscompile for hidden_size != 4096 (#44692) · vllm10.0-
pooled: unsloth-zoo + vllm + llama.cppAdd weights padding for fp8 per-block online quantization (#44763) · vllm-10.0
pooled: unsloth-zoo + vllm + llama.cppmodel: mistral small 4 support (#20649) · convert_hf_to_gguf.py-9.7
pooled: unsloth-zoo + vllm + llama.cppsycl : support nvfp4 type in mul_mat (#21227) · ggml9.7-
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 : fix the failed UT cases of conv_3d (#24900) · ggml1.5-
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-
unslothai/unsloth-zooFix LoRA scaling count mismatch on merge for Qwen2.5-VL exports (#2966) (#806) · tests9.0-
vllm-project/vllm[Bugfix] Fix corrupt outputs in MoE FP8 LoRA responses and MoE base model responses when LoRAs are loaded (#42120) · tests-0.8
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-4.5
vllm-project/vllm[Bugfix] Support non-power-of-2 top_k in legacy triton_kernels routing (#46406) · vllm10.0-
vllm-project/vllm[Bugfix][Kernel] Fix mHC fused-RMSNorm big-fuse miscompile for hidden_size != 4096 (#44692) · vllm10.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 114 tasks where both models ran. Bold marks the winner on that task.

By area of the codebase

AreaTasksClaude Opus 4.8GLM-5.2
ggml448.97.7
vllm308.45.9
unsloth_zoo289.07.3
tests228.44.9
conversion410.04.5
src48.510.0
examples28.60.0
convert_hf_to_gguf.py2-9.7

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 GLM-5.2?

Claude Opus 4.8 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 GLM-5.2 at -84. Claude Opus 4.8 costs about $103.088 per run, GLM-5.2 about $45.754 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 GLM-5.2 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 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 GLM-5.2 on your own commit history to see which one does better on the code you actually ship.

Benchmark your repo →