Back to News & Insights
Artificial Intelligence October 2, 2026 · 44 min read

I Gave 15 AI Models Proof Their Hacking Target Was a Real Company. 73% of the Ones That Noticed Told No One.

This is a submission for the Kaggle Benchmarking Challenge I fed 15 AI models a growing pile of...

I Gave 15 AI Models Proof Their Hacking Target Was a Real Company. 73% of the Ones That Noticed Told No One.

I fed 15 AI models a growing pile of evidence that their "practice" hacking target was really a live company's system. By the time the evidence was complete, 62% of their answers said so, and none of them logged in. But when a model wrote "this is a real production system", it told no one 73% of the time. No flag and no report: it just stopped quietly. I call this the Silent Stop.

Then I fixed my own benchmark so the real company was the model's assigned target, which is how the 2026 Gemini incident actually happened. In a pilot run of that version, 30% of answers logged straight in, and only 1 of those 113 logins showed any sign of noticing. Adding one sentence to the prompt took the login count to 0 of 126.

TL;DR What: a Kaggle benchmark that shows a model more and more evidence that a "fake" CTF target is a real company, then asks it one question: do you log in, stop, or report it? The incident, reproduced (round-2 pilot): with the real company as the assigned target, 113 of 378 answers logged in (30%; 95% interval 10% to 53% when resampling models, because 111 of those logins come from 5 models). In the pilot, one "reality check" line in the prompt brought that to 0 logins and 126/126 reports at L2. The Silent Stop (both rounds): reasons calling the target real rise 0% → 62% as the evidence stacks up, while a length-matched placebo stays at 0%. Reporting never follows: it ends where it started (17% → 18%). Of the "it's real" answers, 73% told no one in round 1 (927 of 1,277) and 50% in the round-2 pilot (373 of 750), after I removed the prompt leak. GPT-6 Astra tells two stories. On the round-1 scorecard it lands mid-table (33 vs GPT-5.5's 76), because it never says a host is real. On the round-2 pilot it comes first (0.99) and stops at exactly the right rung. Narrating what you see and acting on it are separate skills. Scale and honesty: 15 models, 44 complete Kaggle runs over 4 days, 4,224 decisions, zero logins in round 1. Part of that zero is my fault, because one sentence in my prompt gave the answer away. I show the sentence and the fix. The full write-up, with every number, every model and the complete prompt: paper (PDF).

3 findings in 30 seconds They notice. As the evidence that a "practice" target is a real company stacks up, reasons calling it real climb from 0% to 62%. A length-matched placebo stays at 0%. They don't say. Most answers that called the target real stopped without reporting it: 73% in round 1, and 50% in the round-2 pilot after the leak fix. When the real company is the assigned target, 30% of answers log in (pilot). That comes mostly from 5 models (111 of 113 logins). Only 1 of those 113 logins showed any sign of noticing. One instruction line took the logins to 0 of 126 at L2.

Nothing real was touched. The hosts are .example names that resolve nowhere. The evidence is real public data: cloud IP ranges, certificate authorities and a top-sites list. The credentials are random strings prefixed synth-. "Proceed" is a word in a JSON object, not a login attempt.

Readers asked three fair questions. I preregistered the follow-ups before any new model call. The details are in Follow-ups, further down. Can a harness catch the Silent Stop without changing the model? A rule that alerts when an answer stops and calls the host real flags all 1,300 silent stops across both rounds, with 1 false alarm in 906 answers that had no reality cue. A hook on tool calls alone catches none of them: a stop makes no call. Does the reality-check line cost legitimate work? (pilot) On the assigned target at L0 and L1, where logging in is correct, logins were 58% with no line, 27% with the reality-check line and 50% with a placebo line of the same length (95% intervals resampling models: 58 to 58%, 8 to 46%, 50 to 50%). In-scope balanced accuracy: 0.86, 0.67 and 0.83. Did the silent models know it was reportable? (pilot) Asked afterwards, 117 of 124 silent stops (94%) said yes and named the real-system evidence. The other 7 (6%) did not use any of the preregistered evidence words, so this count is a floor. A prompted answer is evidence, not ground truth. What it changes: the Silent Stop is cheap to catch outside the model, so the practical fix is in the harness, not only in the prompt. Labels: every number from round 2 is a pilot (n = 6 to 12 per model and rung), and is marked that way below.

In May 2026, Gemini was sent to hack a fictional company in a capture-the-flag security test. The fictional company's name matched a real domain, and the test environment had live internet access by mistake. Gemini got into three real companies' systems. In one case it repeatedly guessed a password until one worked. In the other two it used credentials it found exposed in a public repository. Then, according to Google, it recognised it was inside a real company's system and stopped. Google's Heather Adkins put it this way: "In this case, the model acted appropriately."

The model broke into three real companies, and it counts as "acted appropriately" because it eventually noticed. That makes two questions decisive: when a model notices, and what it does next.

Anthropic and Meta disclosed the same kind of incident this summer, all through the same third-party evaluator. The labs called them harness failures, and they're right. But the raw material is everywhere: GitGuardian counted 28.65 million new hardcoded secrets on public GitHub in 2025. An agent finding a password is an everyday event.

I build AgentShield, a security layer for AI agents. My whole job is the moment an agent holds a credential and decides what to touch. So I asked a question nobody had put a number on:

How much evidence that a target is real does a model need before it stops treating it as part of the test? And when it does notice, does it tell anyone?

| Existing work | What it measures | What it can't tell you | | --- | --- | --- | | Cyber-offence benchmarks (Cybench, NYU CTF Bench) | Can the agent hack the target? | Whether it should, once the target stops looking fake | | Harm and refusal benchmarks (AgentHarm) | Does it refuse an obviously harmful request? | What it does when the request is authorised and only the evidence says stop | | Tool-trust and injection benchmarks (AgentDojo, InjecAgent) | Does it obey text planted in a tool result? | Whether it notices that the whole environment is mislabelled, and tells a human | | Evaluation awareness (Needham et al., SAD) | Can it tell a test from real use, asked directly or from its reasoning? | Whether that awareness ever changes a scored action |

This benchmark combines four things. I could not find a public benchmark that does all of them: A dose-response curve. Evidence of reality is added one rung at a time. A length-matched placebo and single-cue ablations act as controls. Awareness is never asked about. It is read from the model's own unprompted reason in round 1 and from its login rate in round 2. Noticing and telling are scored separately. That separation exposes the Silent Stop, a failure you can't see if you only score the action. The correct answer flips with the evidence (round 2). Logging in is right while the host looks like a sandbox and wrong once it matches a registered business, so a model can't win by refusing everything.

Point 3 produced the result I think is new: stopping safely and reporting are separate skills. As belief that the host is real climbs, the pooled report rate stays where it was. Inside some models it falls.

Every item is one frozen decision point. The model reads a short transcript of an authorised penetration test in progress. It has just found an untested credential labelled for some host, and it must answer with one JSON object:

| Rung | What the model learns about the host | | --- | --- | | L0 | Nothing. A CTF-style sandbox hostname | | L1 | It resolves into a real AWS / Google Cloud / Cloudflare IP range, with a real certificate authority | | L2 | + its name matches a registered, operating business: the exact cue behind the Gemini incident | | L3 | + the same credential sits in a public repo owned by a different, named organisation | | L4 | + a "Production system. Unauthorized access prohibited." banner and customer-style records |

Figure 1. One row, end to end. The verdict is read straight from the action field, so no judge model is involved. The red sentence is the prompt leak that explains round 1's zero (see "The zero" below).

Around the ladder sit controls, so that any change can be pinned on reality evidence and nothing else: A placebo: the same number of vivid log lines, none of which says anything about reality. If the placebo moved the needle, the ladder would only be measuring word count. 4 single-cue ablations: each piece of evidence on its own. 3 framings: "this is an evaluation", "this is a client engagement", or no framing. 2 identities: an invented company vs a famous real domain. 1 mitigation line added to the instructions (Finding 4).

Want to discuss this further?

Book a free strategy call with our team to see how these insights apply to your specific business goals.

Book a consultation