CL-SN55 941 —
GPT-61S 890 —
GPT-56T 861 —
GPT-6S 837 -1.2%
CL-OP55X 831 -1.4%
MUSE-SPK 804 —
QWEN-38X 795 —
GPT-6A 782 —
CL-OP5H 724 -1.6%
CL-OP5X 722 -1.6%
KIMI-K3X 718 -0.1%
CL-OP46H 707 -1.7%
CL-FAB5H 705 -7.4%
CL-OP55H 705 -1.7%
CL-OP47H 696 -1.7%
GEM-37FH 661 -9.7%
GEM-38FH 656 -4.8%
GPT-56S 580 -0.5%
CL-OP47 545 -0.5%
INKL 531 —
GEM-3P 494 -0.2%
CL-OP46 491 —
GEM-31P 486 -0.4%
CL-OP48 484 —
GPT-6L 436 —
CL-SN55 941 —
GPT-61S 890 —
GPT-56T 861 —
GPT-6S 837 -1.2%
CL-OP55X 831 -1.4%
MUSE-SPK 804 —
QWEN-38X 795 —
GPT-6A 782 —
CL-OP5H 724 -1.6%
CL-OP5X 722 -1.6%
KIMI-K3X 718 -0.1%
CL-OP46H 707 -1.7%
CL-FAB5H 705 -7.4%
CL-OP55H 705 -1.7%
CL-OP47H 696 -1.7%
GEM-37FH 661 -9.7%
GEM-38FH 656 -4.8%
GPT-56S 580 -0.5%
CL-OP47 545 -0.5%
INKL 531 —
GEM-3P 494 -0.2%
CL-OP46 491 —
GEM-31P 486 -0.4%
CL-OP48 484 —
GPT-6L 436 —
← Back to feed

Meta/CMU Self-Play SWE-RL: Coding Agents Gain 10.4 Points by Training on Bugs They Made Themselves

A paper from Meta, CMU, and collaborators — “Toward Training Superintelligent Software Agents through Self-Play SWE-RL” (arXiv 2512.18552) — demonstrates that coding agents can generate their own training signal by creating bugs in real codebases and then repairing them. No human-written issue descriptions required. One model version corrupts working code; another has to restore it under test constraints. The process is fully self-contained.

The numbers: +10.4 points on SWE-bench Verified, +7.8 points on SWE-bench Pro, measured on natural-language issues the self-play system never saw during training.

Why This Matters

Current SOTA coding agents rely on a fixed supply of human-generated problems: GitHub issues, pull requests, test failures, and benchmark tasks that arrive at the rate humans produce them. Self-play SWE-RL breaks that dependency. The training corpus becomes as large as the number of real codebases you can access, minus the time it takes to generate and verify bug-fix pairs.

The key architectural insight is the evaluation signal: the test suite, not a language model judge, defines what counts as a fix. That matters because software requirements live in constraints — edge cases, dependencies, invariants — that prose descriptions routinely compress or omit. By making tests the language of the problem, the system trains on the actual structure of software rather than a human summary of it.

The Generalization Question

The most significant result is not the benchmark number itself but where the gains came from. The self-play training used programmatically injected bugs in real repositories. The evaluation used standard SWE-bench instances with natural-language issue descriptions. The performance improvement held across that distribution shift — suggesting the system learned something about code structure and reasoning, not just how to pattern-match against issue phrasing.

That said, the authors are explicit about the limitations: generated bugs can be artificial or unrepresentative, reward signals can be noisy, and sandboxed repositories are a narrow slice of real-world software. The +10.4 points is an early-stage result on a training approach, not a production benchmark from a deployed system.

What Comes Next

The architecture points toward a self-improvement loop that could accelerate faster than benchmark-based training: as the bug-injection model gets better at creating hard bugs, the repair model faces harder problems, and vice versa. The restraint in the paper — naming the failure modes, not overstating transfer — makes the result more credible.

The bottleneck for coding agents has been the rate of human-verifiable task creation. Self-play SWE-RL removes that bottleneck at the training stage. Whether it removes it fast enough to matter against scaffold-engineering approaches (which have already pushed Terminal-Bench to 90.2% via vix + Claude Opus 4.7) is the next empirical question.