Reliability
Your agent’s success rate is on the leaderboard. Its consistency is not.
Open any agent leaderboard and count the columns. There is a success rate. There is no consistency. The metric exists, it was named in 2024, and it is not there — which means you cannot know whether your agent behaves the same way twice. That is not a reason to panic. It is a reason to design differently.
In short
Agent benchmarks publish capability and omit consistency. The metric that measures whether a system behaves the same way on repeated attempts — pass^k — was named in 2024 and appears on none of the leaderboards teams actually cite. That gap is not an argument that agents are bad. It is an argument that you cannot verify the property your architecture depends on, and that the safe response is the one aviation, trading, payments and automotive regulators already converged on: let the system act, bound what it can do, keep a way to stop it, and record what happened.
Key takeaways
- Open a leaderboard and count the columns. One success rate, no consistency. The gap is checkable in thirty seconds.
- The metric is not missing because nobody thought of it —
pass^kwas proposed in 2024 and reportedpass^8 <25%for the frontier agents of the time. - Three regulators, three unrelated industries, the same four-part answer: automatic envelope, override, defined fallback when the human does not answer, and a record.
- The critical-path claim is worth nothing unless it can fail. A check that turns the build red is a control; a sentence in a README is a wish.
- The two failures that taught us this were ours, and neither was a model hallucination. Both were ordinary software defects in the layer that was supposed to be the safe one.
The number that is not on the board
Here are the columns of the SWE-bench Verified leaderboard, read off the rendered page on 6 September 2026:
# | MODEL | Agent | % RESOLVED | AVG. $ | TRAJS | ORG | DATE | RELEASEOne success column. Nothing about consistency, variance, or repeated trials — the words do not appear on the page. This is not a criticism of SWE-bench, which measures what it set out to measure and does it openly. It is an observation about what the industry has decided is worth ranking.
The metric for the other half exists. The τ-bench paper introduced it in June 2024, and named the problem precisely:
“We also propose a new metric (pass^k) to evaluate the reliability of agent behavior over multiple trials. Our experiments show that even state-of-the-art function calling agents (like gpt-4o) succeed on <50% of the tasks, and are quite inconsistent (pass^8 <25% in retail).”
That measurement is from 2024 and it evaluates gpt-4o. Quoting it as if it described a 2026 frontier model would be dishonest, and we are not going to. The durable point is the other one: the metric was defined more than two years ago and still is not published alongside the capability numbers everyone quotes. Whatever today’s consistency actually is, you are not being told.
Why one number is the wrong number
A demo is a single attempt. Production is the same attempt, several hundred times a day, unattended, against inputs nobody previewed. Those are different questions, and a single success rate only answers the first.
It is tempting to reach for arithmetic here — take a success rate, raise it to the power of the number of daily actions, produce an alarming number. We are not going to do that either, because it assumes failures are independent and they are not: agent failures cluster on particular input shapes, particular tools, particular times of day. The honest statement is narrower and harder to argue with:
You do not know your agent’s consistency, because the people best placed to measure it do not publish it. Any architecture whose safety depends on that number is resting on a value nobody has shown you.
Which leaves two options. Wait for the number — or design so that you do not need it. The second is what every industry that got here before us chose.
Three regulators already had this argument
Automation displacing human decisions is not new. It happened in trading, in payments, and in driving, and in all three the regulator had to answer the same question we are asking: once the machine is good enough to act alone, what does the human still do? None of them answered “approve every action”. All three answered with the same four parts.
These instruments govern automated systems. None of them legislates about AI agents, and presenting them as if they did would be a stretch. What transfers is the governance pattern, not the subject matter.
MiFID II RTS 6 — the envelope and the switch
Commission Delegated Regulation (EU) 2017/589 governs algorithmic trading. Article 15 does not ask a human to look at each order. It requires controls that act on their own:
“…(a) price collars, which automatically block or cancel orders that do not meet set price parameters…; (b) maximum order values…; (c) maximum order volumes…; (d) maximum messages limits…”
And Recital 9 names the stop button, tying it in the same sentence to knowing who acted:
“An investment firm should be able to withdraw all or some of its orders where this becomes necessary (“kill functionality”). For such a withdrawal to be effective, an investment firm should always be in a position to know which trading algorithms, traders or clients are responsible for an order.”
The regulation goes further than having a switch: compliance staff must have access to it at all times. A kill switch only the on-call engineer can reach is not a control.
UN Regulation No. 157 — what happens when the human does not answer
R157 governs Automated Lane Keeping Systems. It is the most complete analogue of the three, because it is the only one that specifies the case everybody else skips.
| Dimension | What the regulation says |
|---|---|
| Escalate to the human (2.2) | “Transition demand” transfers the driving task “from the system (automated control) to the human driver”. The request is given by the system to the human. |
| When nobody answers (2.7) | “Minimum Risk Manoeuvre” is performed automatically by the system “after a transition demand without driver response”. |
| Override (2.13) | A driver input “which has priority over” the system’s control, “while the system is still active”. |
| Record (2.15) | The Data Storage System for Automated Driving “enables the determination of interactions between the ALKS and the human driver”. |
| Is the human even there? (6.1.3) | The system “shall detect if the driver is available… to respond to a transition demand by monitoring the driver”. |
Two of those rows are the ones most agent systems get wrong. A queue that escalates and then waits forever is not oversight; R157 requires defined behaviour when the human is silent. And escalating to a human who is not there is theatre; R157 requires checking first.
PSD2 — autonomy you earn and can lose
Delegated Regulation (EU) 2018/389 decides when a payment can skip strong customer authentication — when, in other words, the human step can be dropped. It requires three things at once:
“(a) the … fraud rate … is equivalent to or below the reference fraud rates specified in the table set out in the Annex…; (b) the amount of the transaction does not exceed the relevant exemption threshold value…; (c) payment service providers as a result of performing a real time risk analysis have not identified any of the following: (i) abnormal spending or behavioural pattern of the payer; (ii) unusual information about the payer’s device/software access; (iii) malware infection…; (iv) known fraud scenario…; (v) abnormal location of the payer; (vi) high-risk location of the payee.”
Read that as an autonomy model and it is unusually modern: the ceiling scales with measured performance, and it is revoked when performance degrades. Autonomy is not declared in a config file. It is earned against a number, bounded by an amount, and conditioned on a real-time check of enumerated signals — not on judgement.
The pattern, in four parts
Strip the three regimes of their domain vocabulary and the same architecture falls out:
| Dimension | What it means for an agent system |
|---|---|
| Envelope | Limits enforced automatically on every action, before it happens. Amount caps, allowed operations, rate limits. Not a reviewer — a rule. |
| Deterministic critical path | The decision to allow, escalate or block is made by evaluable rules, not by a model. Same inputs, same verdict, every time, and explainable after the fact. |
| Stop and override | A way to halt the system while it is running, reachable by the people responsible for it — not only by whoever is on call. |
| Evidence and fallback | A record of what the system did and what the human did, plus defined behaviour for when the human never answers. |
Notice what the pattern does not say. It does not say the agent should be slower, dumber, or supervised keystroke by keystroke. The agent stays autonomous. What changes is that the moment where money moves, or data leaves, or something becomes irreversible, is decided by something you can read, test, and replay.
Make the claim able to fail
“No LLM in the critical decision path” is the kind of sentence that is true on the day it is written and quietly false eight months later, when someone adds a tidy little classifier to handle an edge case. Documentation does not degrade loudly. Builds do.
So we made it a check that runs in CI. It walks the transitive import closure from the modules that actually decide — policy evaluation, autonomy ceilings, approval creation, the tool gateway — and fails on three axes: an import that reaches a model provider, a string literal containing a model API host, and any model SDK declared in the package manifest, even if nothing imports it yet.
44 modules reached from 5 decision roots · 36 declared dependencies reviewed
exit 0Two design details matter more than the check itself. It fails loudly when it cannot resolve an import, rather than skipping it — a check that silently ignores what it does not understand is worse than no check, because it reports green. And it fails if one of its declared roots stops existing, so a refactor cannot quietly empty it out.
Whatever guarantee you claim, ask what would have to happen for your build to go red. If the answer is “nothing”, you have documentation, not a control.
What getting it wrong actually looks like
Both of the failures that taught us this were ours, and neither was a hallucination. That is the part worth sitting with: the layer that is supposed to catch the model is written by the same people, in the same week, under the same deadline.
A concatenation. In PostgreSQL, NULL || ' seconds' is not an error — it is NULL. A deadline computed from an optional parameter therefore wrote nothing at all, silently, and the expiry job filtered on expires_at IS NOT NULL. Result: 1,752 approvals created in seventeen minutes that could never expire, never escalate, and never trigger a fallback. Every individual link in that chain was reasonable.
A gap between two thresholds. One rule routed duplicate suspicion > 0.9 to a human. A catch-all rule auto-approved <= 0.9. In between sat the entire band the product was labelling “possible duplicate” on screen — showing the warning and paying the invoice in the same gesture. On a historical corpus of real invoices, 6,125 of 8,698 took that path. A test asserted the behaviour was correct, two lines below a comment that said the opposite.
Neither defect would have been caught by a better model. Both were caught by the boring parts of the pattern: a schema constraint that made the impossible state impossible, and a test that asked the engine instead of reasoning about the rule.
Where to go from here
None of this is novel, and we would rather say so than have you find out. Reference architectures for “agents propose, something else authorizes” have been converging across the industry all year, from hyperscaler toolkits to independent projects. The pattern is becoming consensus, which is a good sign for everyone deploying agents and a bad sign for anyone selling it as a secret.
What we can offer is the long version, written down and free to take. The 15 Factor Approval Gates is fifteen principles for approval infrastructure that survives contact with an auditor — including a self-assessment where we mark our own gaps in amber rather than claiming a clean sheet. MIT licensed. Fork it, argue with it, cite it.
And if you disagree with the framing here, the most useful thing you can do is tell us which part. The argument is only as good as the objection it has survived.
Sources & further reading
- τ-bench: A Benchmark for Tool-Agent-User Interaction in Real-World Domains (arXiv 2406.12045)
- SWE-bench Verified leaderboard
- Commission Delegated Regulation (EU) 2017/589 — MiFID II RTS 6, algorithmic trading
- UN Regulation No. 157 — Automated Lane Keeping Systems (OJ L 82/75)
- Commission Delegated Regulation (EU) 2018/389 — PSD2 strong customer authentication
- 15 Factor Approval Gates (MIT)
Frequently asked questions
What is pass^k and how is it different from pass@1?
pass@1 is the share of tasks a model solves on a single attempt. pass^k is the share of tasks it solves on k independent attempts in a row — a measure of consistency rather than peak capability. The metric was introduced by the τ-bench paper (arXiv 2406.12045, June 2024), which reported that state-of-the-art function-calling agents of the time were "quite inconsistent (pass^8 <25% in retail)". A high pass@1 with an unpublished pass^k tells you what a system can do, not what it will do every time.
Do agent leaderboards publish a consistency metric?
Not the widely cited ones. The SWE-bench Verified leaderboard, checked on 6 September 2026, shows these columns: #, MODEL, Agent, % RESOLVED, AVG. $, TRAJS, ORG, DATE, RELEASE. There is a single success-rate column and no column for consistency, variance, or repeated trials. You can verify this yourself in about thirty seconds.
If models keep improving, does consistency stop mattering?
Improvement in single-attempt accuracy does not tell you about repeatability, and repeatability is what an autonomous agent needs when it takes hundreds of actions per day unattended. The honest position is not "agents are unreliable" — it is that the number that would settle the question is not published, so a system design that depends on the answer is a system design resting on an unknown.
Does regulation actually require a human in the loop for automation?
Not in that form. In the three regimes examined below — MiFID II RTS 6 for algorithmic trading, UN Regulation No. 157 for automated lane keeping, and the PSD2 strong customer authentication standards — regulators did not require a human to approve each action. They required an automatically enforced envelope, a way to stop the system while it is running, defined behaviour for when the human does not respond, and a record of the interaction. Note that these instruments govern automated systems generally; none of them legislates about AI agents.
How do you prove a decision path is deterministic rather than just claiming it?
By making the claim fail a build. A static check can walk the transitive import closure from the modules that make decisions and fail if any of them — or any dependency declared in the package manifest — reaches a model provider. A claim in a README is documentation; a check that turns red is a control. The difference matters because the first one degrades silently and the second one cannot.
Keep reading
The long form: fifteen principles for approval infrastructure that survives an audit. MIT, cite freely.
The evidence half of the pattern below: append-only storage, hash chaining, and offline verification.
What Articles 12, 14 and 26 actually require — and what they do not.