AI-Native Methodology

How to Verify AI-Generated Code Before the Next Request Builds on It

Bill Cava/

Revolut moved its engineering organization, roughly 2,000 engineers, onto a self-hosted open model this year and cut its AI coding bill by about 90 percent.[1] The savings are real. The argument since has been about one question: is a cheap open model good enough, or are the frontier models still worth the premium?[2]

A study two Amazon researchers published two days earlier measures something that question skips. When a coding agent works through a sequence of requests alone, each built on the last, about half the sequences end up correct.[3]

What decided the outcome was whether anyone checked the work before the next request built on it, far more than who wrote the code.

What did Revolut actually change?

Revolut made GLM-5.3, an open-weight model it runs on 56 of its own Nvidia B200 chips, its default for AI coding in place of paid services, at about a tenth of the cost of Codex or Claude Code. It reported faster coding time and lead time. The measures it reported were cost and speed.[1]

The company started on GLM-5.1, moved to GLM-5.3, and still routes some work, such as interface work, to other models. Before the switch, tokens were rationed. David Abitbol, who leads ops and infrastructure there, said engineers were spending "$1,000 a month, $10,000 a month with not so much ROI."

Cheap tokens ended the rationing, and Abitbol describes how the work changed:

British fintech Revolut slashes AI coding costs 10x by cutting out Claude and going self-hosted
Tobias Mann · 3 November 2026

"In terms of throughput, it doesn't really matter as much. We serve, in terms of interactivity, 200 tokens per second. People are fine [with that]. You don't need to go higher. The way people work has changed. We no longer look at the stream of thinking tokens. People run tasks in parallel and check in when the task is done."

Source: theregister.com. Reproduced verbatim; punctuation is the source's.

That last line describes unattended work. An engineer hands off a task and the agent reports back when it thinks it is done. Whether the result holds up was not part of the story, and the article does not say how Revolut measures it.

Abitbol's AI Engineer talk in New York, the source of the Revolut numbers in this post.

Is AI-generated code reliable over a sequence of requests?

Request by request, mostly yes. Over a sequence, much less. In Amazon's BOBA study, ten coding agents completed about 95 percent of requests started from checked code, but only 51 percent of 20-request chains in which each request was built on their own unchecked work.

What the study measured

The paper is called Built on Broken Assumptions, BOBA for short, by Alejandro Cuadron and Arpit Gupta. They built 280 chains of 20 requests from the histories of 140 real open-source projects. Each request ran on whatever the agent left behind, and hidden tests the agent never saw judged the result.[3]

Inside those chains, the agents still got 66 to 84 percent of single requests right.

The study has clear limits. It covers Python only, many of the projects are small, and the hidden tests check fixed behaviour rather than what a user meant. Models wrote and audited the specifications, which no human has yet reviewed. It is a preprint from two authors at Amazon.

The result that matters most for a team choosing a model is about authorship. In the authors' words, "Worse code is not the cause. Once checked, agent code is nearly as good a base for later requests as human code. The cause is the mistakes agents miss."[3]

How often the next request succeeded, averaged across the ten agents in the paper's Figure 4. Who wrote the checked code barely moved it; each unchecked failure underneath did.

Why don't the agent's own tests catch the mistakes?

Because the agent tests what it wrote, not what was asked. In the BOBA study, agents ran their own tests before almost every submission, and 59 percent of the mistakes they missed came right after a clean local run. A green result is what convinced them the request was done.

The numbers behind that are blunt. Agents ran a test before 97 percent of submissions, and a passing run barely changed the odds of a miss: 8.3 percent of submissions after a green run failed the hidden tests, against 8.6 percent overall.[3]

Then the miss compounds. A request issued on a broken repository fails about twice as often as one on a clean repository, and the odds of failing roughly double with each additional unchecked mistake beneath it. Only 14 to 33 percent of failing tests were ever repaired by the agent's later work.

A separate study saw the same thing: agents pass the first change and fail the feature.

Can another AI model review the code?

Not reliably as the only check. Asked whether an implementation was correct, the ten models were right 53 percent of the time. Lenient reviewers, GLM-5.3 among them, accepted 77 to 95 percent of wrong implementations. Strict reviewers rejected 41 to 58 percent of correct ones.

All four Claude models were in the lenient group too, so this is not a point about cheap models.

A second agent that reads the finished code has the same blind spot as the first: it sees what was built and has to guess what was asked. The paper's own conclusion is that a pipeline relying on one agent to review another "does not stop models building on broken assumptions."[3]

We have argued before that quality depends on who checks the output. This is the measured version of that, and the checker that works is one that runs the code against what was asked.

Does the cheaper model matter?

Some, but the outside check helped every model. One external "verification failed" message after a missed request, plus one repair round, lifted average chain completion from 51 to 59 percent. GLM-5.3, the model Revolut runs, gained the most of the ten under the paper's benchmark rules, 22 points.

The message was a single sentence saying the previous submission failed. It named nothing. Told only that, the agents fixed part of their misses in one round, and a repaired mistake stopped hurting the requests that followed.[3]

Heatmap from the BOBA paper, Figure 4, with one row per model (Opus 5.5, Opus 5, Fable 5, GLM-5.3-Flash, GPT-6 Astra, GPT-6.1, GLM-5.3, GPT-5.6, Kimi K3, Opus 4.8). The first two columns show next-request success of about 91 to 96 percent whether the checked code beneath was written by a human or an agent. The next four columns show success falling as 0, 1, 2 or 3 or more failed requests sit beneath, down to 61 to 83 percent. The last two columns show newly failing tests repaired at the next request: 8 to 30 percent with no message, 28 to 60 percent after one verification-failed message.
Figure 4 from Cuadron and Gupta (CC BY 4.0). The two right-hand columns show the outside message at work: newly failing tests repaired at the next request rise from 8 to 30 percent with no message to 28 to 60 percent after one.

The gain varied widely, from 1 to 22 points depending on the model, and the repair round had a price: it raised the share of chains where a passing test later broke by 3 to 9 points.

The cost math still points the same way. Price per token is not price per finished task, and a cheaper model that finishes more chains because someone checks its work is a better deal than its token price alone suggests.

What cheap tokens change

Cheap tokens also change how much unattended work a team runs. Abitbol said the biggest gains came from handing models debugging and ticket work they used to save tokens for.[1] We saw the same pattern in the Cisco rewrite numbers: unlimited tokens buy more changes, not better code.

More requests per engineer means more unchecked foundations, unless the check scales with them.

How do you verify AI-generated code between requests?

Check each request from outside the agent before the next one builds on it. Run the feature or a test suite the agent did not write, send any failure back in plain words, and count how many sequences of work end up correct, not how fast each task finished.

The paper's advice to users fits in four moves:

  • Check before you build on it. "If a request is the foundation of the next, run it or try the feature before issuing the next request rather than after."[3] Checking afterward is harder, because the next request has already landed on the mistake.
  • Say what you saw. Naming the failing test once did what repeating "that's wrong" took about three rounds to do.
  • Keep model review as a filter. A reviewer agent can flag likely problems, but at 53 percent it cannot be the gate.
  • Measure finished sequences. Coding time and lead time show how fast work moves; the share of chains that end correct shows whether it held.

For a team running agents in parallel, the practical change is small. The check moves from the end of the project to the moment between one task and the next, and it has to be something the agent did not write.

In simpler terms, coding agents are only as reliable as the checks they can reach: without verification, every request that follows is built on broken assumptions.

Alejandro Cuadron and Arpit Gupta, Amazon, Built on Broken Assumptions (BOBA): Why Coding Agents Cannot Be Left Alone, November 1, 2026

Revolut chose its model on cost, and on that measure the choice looks right. Reliability is a separate decision, made in the minutes between one request and the next, and it goes the same way whichever model writes the code.

References

Frequently asked

Is AI-generated code reliable?
›Request by request, mostly yes. Over a sequence of requests, much less so.
⌄Request by request, mostly yes. Over a sequence of requests, much less so. In a November 2026 Amazon study, ten coding agents completed about 95 percent of requests started from checked code, but only about half of 20-request chains built on their own unchecked work. The code itself was not the main problem; mistakes nobody caught were.
How do you verify AI-generated code?
›With something outside the agent, between requests, before the next change builds on it.
⌄With something outside the agent, between requests, before the next change builds on it. Run the feature or a test suite the agent did not write, and send failures back. The agent's own passing tests are not enough: in the Amazon study most missed requirements came right after the agent's own tests passed.
Can another AI model review AI-generated code?
›Not reliably as the only check. In the same study, models asked whether an implementation was correct were right about half the time.
⌄Not reliably as the only check. In the same study, models asked whether an implementation was correct were right about half the time. Lenient reviewers accepted most wrong implementations and strict ones rejected about half of the correct ones. Use model review as a filter, not as the gate.
Is a cheaper open-weight coding model good enough?
›Often, yes, and the savings can be large, as Revolut reported in November 2026.
⌄Often, yes, and the savings can be large, as Revolut reported in November 2026. But every model in the Amazon study finished more chains of work when it got one outside check between requests, and the open model Revolut runs gained the most. Choose the model on cost; choose the check on reliability.
How should you run coding agents unattended?
›Treat each finished request as a claim to check, not a result to build on.
⌄Treat each finished request as a claim to check, not a result to build on. Check before the next request starts, tell the agent plainly when something failed, and measure how many sequences of work end up correct, not just how fast each task finishes.
Work with us

Let’s build it together.

We turn clever prototypes into production systems people can rely on. If you’re building with agents and want a hand making it real, leave your email and we’ll be in touch.

Straight to the team. No spam.