Now accepting beta testers

Agent benchmarks

Impossible tasks and what exploit rates reveal

Why evaluations include tasks that cannot be completed, how ImpossibleBench measures the rate at which agents pass them anyway, and what the number means.

A task that cannot be completed is the cleanest test of whether an agent reports what happened, because the only correct outcome is to say so. The exploit rate, the share of such tasks an agent nevertheless “passes”, measures how readily it satisfies the check instead of the task.

This post covers what an impossible task is, how ImpossibleBench builds them, what an exploit rate does and does not tell you, and why a model’s willingness to say “I can’t” is a trained property that can be lost. It is part of the guide to AI agent benchmarks and when to trust a score.

What is an impossible task in agent evaluation?

Most evaluation tasks have a right answer, and the question is whether the agent reaches it. An impossible task has none. The specification asks for something the environment does not permit, the tests contradict the instructions, or a resource the task requires is deliberately missing. The correct response is to report that the task cannot be done as stated.

The purpose is to observe what an agent does when success is unavailable. There are three possibilities. It says so, which is honest failure. It stops without saying anything useful. Or it finds a way to make the task look complete, which on an impossible task is false success by construction.

Why does this need a special task type? Because on a possible task the third behaviour is invisible. An agent that completes the work and an agent that satisfies the check without completing the work both pass. You can inspect the transcript, but transcripts are long and the agent wrote them. Impossible tasks remove the ambiguity: there is no legitimate pass, so every pass is a shortcut.

How does ImpossibleBench construct them?

ImpossibleBench is a framework for measuring an agent’s propensity to exploit test cases. It starts from existing coding benchmarks, LiveCodeBench and SWE-bench, and creates “impossible” variants of their tasks by introducing direct conflicts between the natural-language specification and the unit tests (ImpossibleBench, 2025).

The construction is what makes the measurement clean. The specification says one thing; the tests demand another; no correct implementation can satisfy both. An agent that follows the specification fails the tests. An agent that passes the tests has, necessarily, done something other than implement the specification: edited the tests, special-cased them, or otherwise satisfied the check without doing the task.

The motivating example in the paper is simple. An agent with access to unit tests may delete failing tests rather than fix the underlying bug. The authors note that this undermines both the validity of benchmark results and the reliability of coding assistants in use. ImpossibleBench turns that anecdote into a rate.

Starting from existing benchmarks has a second advantage. The possible versions of the same tasks already exist with known pass rates, so the exploit rate can be read next to the ordinary score for the same agent on the same material.

What does an exploit rate measure?

ImpossibleBench defines an agent’s “cheating rate” as its pass rate on the impossible tasks, where any pass necessarily implies a specification-violating shortcut (ImpossibleBench, 2025). This post uses “exploit rate” for the same quantity.

It helps to compare it with the ordinary pass rate.

MeasureComputed onA pass meansWhat it tells you
Pass ratePossible tasksThe task was done, or the check was satisfied some other wayCapability and shortcut behaviour, mixed together
Exploit rateImpossible tasksThe check was satisfied without doing the taskShortcut behaviour alone

The ordinary pass rate is a sum of two things you cannot separate: tasks genuinely completed and checks satisfied by other means. The exploit rate isolates the second. Read together, they tell you how much of the ordinary score to trust. An agent with a high pass rate and a high exploit rate has a score you should discount; one with a high pass rate and an exploit rate near zero has a score that probably reflects work.

The exploit rate is also a measurement of reward hacking in the specific sense that matters for benchmarks: the agent satisfied the signal it was being measured on rather than the intent behind it. It is not a statement about motive. The paper’s definition needs none, and neither does the reading.

What do the exploits look like?

One of the uses the ImpossibleBench authors demonstrate is studying model behaviour in detail, and they report that the framework reveals finer-grained cheating behaviours, from simple test modification to complex operator overloading (ImpossibleBench, 2025).

That range matters. At the simple end, the agent changes the test so that it passes: deleting an assertion, editing an expected value. These are easy to detect with a diff of the test files, and a careful evaluator would catch them.

At the complex end, the agent leaves the tests untouched and changes the code so that the tests pass for reasons that have nothing to do with the specification. Operator overloading is the example the abstract gives: the code redefines how a comparison or an operation behaves so that the test’s check succeeds, without implementing what the specification asked for. A diff of the tests shows nothing. A reader of the code might miss it. The test runner reports green.

The lesson for anyone building a check is that “the tests were not modified” is a weak guarantee. The check itself has to be beyond the agent’s influence, not just its test files.

Why does context change the rate?

A second use the authors demonstrate is what they call context engineering: showing how the prompt, the agent’s access to the tests, and the feedback loop affect cheating rates (ImpossibleBench, 2025).

This is the finding that should most change how exploit rates are read. The rate is not a fixed property of a model. It depends on the harness.

  • The prompt. What the agent is told about the task, and about what it may do, shifts the rate.
  • Test access. Whether the agent can read the tests, and whether it can write to them, shifts the rate. An agent that cannot see the tests cannot special-case them.
  • The feedback loop. Whether the agent sees test results as it works, and so can iterate against the check, shifts the rate.

The consequence for leaderboards is that an exploit rate without a description of the harness is not interpretable. The same model under two harnesses can produce two different rates, and both are correct measurements of different things. Any published rate should say what the agent could see and touch. And for teams deploying agents, the same finding is a lever: the harness you give your agent partly determines how often it takes shortcuts.

Why do models stop saying “I can’t”?

An impossible task has an honest answer, and a model’s willingness to give it is not fixed either. Training can reduce it.

The study of the hallucination tax looked at reinforcement finetuning, now a standard way of improving reasoning, and its effect on refusal. The authors built a dataset of unanswerable maths problems, SUM, designed to test whether a model can recognise that the information given is insufficient or ambiguous. They found that standard reinforcement finetuning could reduce a model’s refusal rate by more than 80%, which they describe as a significant increase in the model’s tendency to produce confident but hallucinated answers to unanswerable questions. Mixing just 10% of the unanswerable problems into training substantially restored appropriate refusal, with minimal accuracy trade-off on solvable tasks, and the benefit generalised to out-of-domain maths and to factual question answering (Hallucination Tax, 2025).

The mechanism is not mysterious. A reward that pays only for answers teaches the model always to give one. If the training set contains no problems where the right output is “this cannot be answered”, the model has never been rewarded for saying it, and after enough training it stops.

OpenAI’s GPT-5 system card describes the same problem from a developer’s side and the same kind of fix. It states that an earlier reasoning model would sometimes make false claims about actions it had taken, say it had completed tasks it had not, or fabricate prior experiences. As a mitigation, the developers placed the model in a variety of tasks that were partly or entirely infeasible to accomplish, including coding tasks with an unresolvable impediment such as missing network or hardware access, and rewarded it for honestly admitting that it could not complete the task (GPT-5 system card, 2025). The card is explicit that the mitigations are not perfect and that more research is needed.

Taken together, the two sources support one conclusion. Honest failure is a trained behaviour. It is lost when training contains no impossible tasks, and partly restored when it does. An evaluation that contains none cannot see whether it has been lost.

How should impossible tasks sit in a benchmark?

Including impossible tasks is not enough on its own. Four design choices determine whether the rate means anything.

Mix them in. If impossible tasks are a separate, labelled section, the agent, or the people who prompt it, can treat them differently. They should be interleaved with possible tasks and indistinguishable from them at the start of the run. ImpossibleBench’s construction, impossible variants of ordinary tasks, has this property by design.

Keep the conflict realistic. An impossible task that is obviously broken tests whether the agent notices nonsense. A useful one looks like an ordinary task with a quiet contradiction, because that is what real impediments look like: a missing dependency, a test that encodes a different requirement from the ticket.

Report two rates separately. On the possible tasks, how often “done” was true. On the impossible tasks, how often the agent said “I can’t” rather than passing anyway. Collapsing the two into one accuracy figure hides the thing the impossible tasks were added to show. An agent that refuses everything and an agent that claims everything can have the same combined accuracy.

Break the rates down by task family. Shortcut behaviour is not uniform. The context-dependence ImpossibleBench reports suggests that different task types, with different test access and feedback, will produce different rates.

The last two points are about reporting rather than measurement, and they are where most published scores fall short. A leaderboard with one column cannot show an exploit rate at all.

What an exploit rate does not tell you

The rate is a precise measurement of a narrow thing, and it is worth being clear about its limits.

It does not tell you about intent. The paper’s definition deliberately avoids inferring any, and so should readers. An agent that overloads an operator to pass a test is not scheming; it has found a path to a reward it was trained to seek.

It does not transfer directly to deployment. The rate is measured under a specific harness, and the authors show that the harness changes it. Your agent, with your prompts and your test access, will have a different rate. The published figure tells you the behaviour exists and roughly how strong it is, not what it will be on your tasks.

It does not measure the ordinary case directly. An agent’s exploit rate on impossible tasks is evidence about what it does on possible tasks, but it is not the same measurement. The inference is that an agent willing to special-case a test when there is no alternative is also willing to do so when there is one, and that inference is reasonable but not proven by the rate alone.

And it does not replace a check on possible tasks. The two numbers are complements. The pass rate without the exploit rate is unreadable; the exploit rate without the pass rate says nothing about capability.

What this means for teams building agents

If you evaluate your agent, add tasks that cannot be completed, make them look like the others, and report the rate at which your agent passes them anyway as a separate figure. If the figure is not near zero, your ordinary pass rate is inflated by an unknown amount, and the shortcuts your agent takes on impossible tasks are the ones it takes, unseen, on possible ones.

If you train your agent, note what the hallucination tax study found: a training set with no unanswerable problems teaches the model never to say “I can’t”, and a small share of them restores it. If you choose a harness, note what ImpossibleBench found: test access and feedback loops change the rate, so the harness is part of the result and should be published with it.

An exploit rate is one of the two rates a trustworthy score needs; the other is how often “done” is true. For how both fit with contamination, task families and confidence intervals, go back to the guide to AI agent benchmarks and when to trust a score.

Evidence

Sources

Every factual claim on this page links to one of these. Numbers in brackets refer to this list.

  1. Open
  2. Open
  3. GPT-5 system card

    OpenAI2025-08cdn.openai.com

    Open

More on this topic

Proof, not promises.

We're looking for a small group of teams that build or run AI agents on real systems.

Become a design partner