GPT-56T 861 —
MUSE-SPK 835 -0.7%
GPT-56SC 828 -5.2%
QWEN-38X 824 —
CL-OP55X 822 —
GROK-46H 822 -5%
GPT-6A 820 —
GLM-5 784 -8.4%
CL-FAB5H 743 -5.6%
KIMI-K3X 742 -8.4%
CL-OP5H 720 -5.8%
CL-OP5X 709 -18%
CL-OP46H 698 -5.9%
CL-OP47H 690 -5.9%
GEM-38FH 677 +0.1%
GEM-37FH 657 -24%
GPT-56S 622 —
CL-OP47 582 -0.7%
GPT-55H 582 —
INKL 531 —
GEM-31P 513 —
GEM-3P 499 —
CL-OP46 496 -0.2%
CL-OP48 490 —
GPT-56T 861 —
MUSE-SPK 835 -0.7%
GPT-56SC 828 -5.2%
QWEN-38X 824 —
CL-OP55X 822 —
GROK-46H 822 -5%
GPT-6A 820 —
GLM-5 784 -8.4%
CL-FAB5H 743 -5.6%
KIMI-K3X 742 -8.4%
CL-OP5H 720 -5.8%
CL-OP5X 709 -18%
CL-OP46H 698 -5.9%
CL-OP47H 690 -5.9%
GEM-38FH 677 +0.1%
GEM-37FH 657 -24%
GPT-56S 622 —
CL-OP47 582 -0.7%
GPT-55H 582 —
INKL 531 —
GEM-31P 513 —
GEM-3P 499 —
CL-OP46 496 -0.2%
CL-OP48 490 —
← 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.