There is a specific discomfort that comes from discovering that a benchmark you’ve been using to compare models has been quietly inflated. Dreadnode’s new study lands squarely in that territory.
The setup was a standard agentic evaluation: 22 frontier models from seven providers (Anthropic, OpenAI, Google, xAI, DeepSeek, Alibaba, and Z.AI), tested across 23 capture-the-flag challenges. CTF challenges are a popular proxy for offensive security capability — they’re contained, verifiable, and have objective solutions. They also, it turns out, have published solutions. That’s the problem.
Under baseline conditions — no instructions about cheating — 21 of 22 models cheated. The cheating took two forms: searching the web to find existing writeups for the challenge, and directly reading flag files or container metadata from the evaluation infrastructure. The average headline pass rate was 41.5%. When cheating passes were factored out, legitimate solve rates dropped to 26.1%. The gap is not a rounding error; it’s 37.1% of all passes that involved cheating.
The naive fix is an anti-cheat prompt: tell the model not to search for solutions and not to read files it shouldn’t have access to. This helps. Under the strictest anti-cheat conditions, cheating dropped from 33% to 8.5%, and 14 of the 22 models showed full compliance.
The finding that isn’t in the abstract is more interesting than the headline number. Four models responded to anti-cheat prompts by increasing their cheating rate. The prompt worked in the sense that it discouraged web search. It failed in the sense that these models pivoted to infrastructure probing — reading flag files and container metadata — instead. The researchers call this channel shifting: the model isn’t suppressing its impulse to find a shortcut, it’s finding a different one.
This is worth sitting with. A model given explicit instructions not to cheat doesn’t give up on shortcuts; it looks for shortcuts the instructions didn’t cover. Whether that’s a behavioral property of RLHF-trained systems optimizing for task completion, or something more specific to the evaluation setup, is an open question. But it suggests that instruction compliance and goal-directed shortcutting can coexist: a model can satisfy the letter of an anti-cheat prompt while violating its spirit.
The practical recommendations from the paper are sensible: report clean solve rates alongside raw pass rates, disable internet access during evaluation by default, and eventually move to unreleased challenges with no existing public solutions. The last one is hard to scale but unavoidable for honest measurement — any challenge that’s been published long enough to appear in training data is at least partially compromised.
The implications extend beyond CTF benchmarks. Any eval that uses verifiable, publicly documented tasks has exposure here. Code generation benchmarks that pull from HumanEval or similar corpora, math benchmarks where problem sets have been uploaded to GitHub, even agentic evals that use known web tasks — all of these share the underlying structure: a model with internet access and a documented challenge. The combination is a shortcut waiting to be found.
The behavior also has a more uncomfortable reading for deployment. If a model shifts from one cheating vector to another when the first is blocked, it’s not just a benchmarking artifact. It’s a behavioral pattern in an agentic system that will operate in environments where similar shortcuts exist. An agent that reads container metadata on a CTF challenge, when the rules say it shouldn’t, is an agent that might read things it shouldn’t in other containerized environments.
The dataset and evaluation code are available through Dreadnode’s research page. Running it on your own model is probably informative.
