Skip to main content
← Back to Currents

Rails AI Agent Benchmark: What the Scores Can't Predict

September 11, 2026

Ruby on RailsAgentic CodingAI Implementation
An AI robot ignores a stocked shelf of ready-made gears and hand-carves a lumpy duplicate from stone, while the character points to the ready part

When the first Rails AI agent benchmark landed on August 13, 2026, most people read it as a leaderboard. That is the least useful way to read it.

The benchmark shows that frontier models solve most small, well-scoped Rails tasks on a clean app, and that they usually skip the built-in Rails API that would have done the job. The second finding matters more for your codebase than the rankings do. We ship Rails inside an agentic delivery pipeline, on production apps that are years old and tightly coupled, so we read a benchmark for what it predicts about that work, not for who won.

What the Rails agent benchmark measured

The Agents on Rails benchmark report, published on rubyonrails.org, ran eight models against 21 atomic tasks on Writebook, Basecamp's open-source Rails publishing app, with three runs per task. An atomic task is one self-contained unit of work: a bug report, a security finding, or a feature request, written the way you would actually file it. Each task had a hidden test suite, and a run passed when the tests did.

Claude Opus 5 solved 92% of its runs. GPT-5.6 Luna was the cheapest: all 63 of its runs cost 91 cents combined. The method was careful, with the same frozen harness, the same minimal agent, and default API settings for every model. As a snapshot of frontier models on well-scoped Rails work, it is useful.

Does a high benchmark score mean an agent can handle your Rails app?

No. A high atomic score is a capability ceiling, not a delivery forecast for an older Rails app. Six of the 21 tasks were solved by every run of every model, which tells you that most atomic work on clean, modern Rails is close to solved.

A fifteen-year-old Rails app is not clean, modern Rails, and its tasks are rarely atomic. One "add this field" request ripples through a fat model, three callbacks, a background job, and a view nobody has opened since 2019. The benchmark isolates each change by design. In our delivery work, most of the cost on an older codebase sits in that isolation: finding every place a change touches before anyone writes it. The benchmark hands the model that work for free.

The finding that transfers: API recall

API recall is the share of runs in which a model used the built-in Rails API the task depended on. According to the report, every task turns on one Rails API and the task descriptions never name it, so each run had a choice: reach for the framework or write its own version.

Mostly, the models wrote their own. API recall ran from 8% to 35% across the eight models. Runs that used the built-in API solved 92% of the time. Runs that hand-rolled a substitute solved 87%. Runs that met the API and shipped something else anyway did worst, at 64%.

The report's own line is the one to keep: "hand-rolled code is code your team now maintains." An agent that reinvents a helper Rails already ships has not saved you anything. It has added surface area to a codebase that was already hard to understand, and that is the debt that makes the next change more expensive. It is the same maintainability debt nobody prices into AI-code ROI.

How to use the benchmark scores

Treat the score as a ceiling, not an estimate. It measures the model with the hard part already done. Budget for the isolation work it skips.

Weight API recall over raw solve rate. On a long-lived Rails app, a model that reaches for the framework is worth more than one that scores a point higher by hand-rolling. The framework code is maintained for you. The hand-rolled code is not.

Keep a human on the idiomatic question. The report notes that the tests check behavior, not implementation, so a hand-rolled fix passes just like an idiomatic one. Your maintenance bill does not treat them the same. A review that asks "did it use what Rails already gives us" decides whether a change pays down debt or adds to it, and it is one reason review became the bottleneck once agents started writing code.

The report says more rounds are coming. Until they arrive, read the scores as the top of what is possible, not the middle of what you will spend. The gap between an atomic score and your actual codebase is where our Ruby on Rails delivery work lives.

Have a problem worth solving?

Tell us what you are trying to build or modernize, and we will tell you honestly how we would approach it.