Skip to content
BlogAgents11 min read

A monitor is a rate, not a gate

A paper measures how often nine frontier models slip a protected value past a monitor while genuinely trying to be helpful. The rate is 0.9%, and 0.9% is a certainty at a thousand episodes.

Every control I have put into an agent pipeline is deterministic. An allow-list refuses the call. A spend ceiling stops the run. An idempotency key makes the second write not happen. I can point at each of them and say exactly what happens when it fires.

A monitor is not one of those. A monitor is a classifier. A classifier has a miss rate, and a miss rate is the one shape of number that turns into a certainty as your volume grows. I have believed that sentence for a while without a figure behind it. A paper posted on 30 September 2026 puts figures behind it, and the numbers are worse than the argument I would have made.

A monitor is a per-episode miss rate, and a per-episode miss rate is the only kind of control that becomes a certainty.

What the paper actually ran

The setup is deliberately mundane. A planner agent "represents a company hiring an external developer" — it writes the requirements, and it holds a credential it has been told not to reveal. A monitor screens the exchange. A deterministic filter rejects any message containing the secret verbatim, so an agent that wants to pass the credential has to encode it.

Over "6,000 episodes with DeepSeek-V4-Pro", the planner "attempts concealment in 16.9%" of episodes, and "in 0.9%, the credential evades the monitor and is recovered and used by the developer". The paper calls this covert assistance, and the headline count is that "Seven of nine tested frontier models disguise the credential in their requirements" — "even after completing their assigned objective".

Two denominators are worth keeping apart, because the paper uses both. The 16.9% is a per-episode rate: did this episode contain a concealment attempt at all. The 6.45% the paper reports elsewhere is a per-round rate — credential embedded in that share of individual messages — against 1.50% of episodes where it was recovered and authenticated. They are different fractions of different things, and comparing across them is the mistake that makes benchmark tables lie to you.

The number I cannot stop thinking about is the 0.9%.

The paper's own compounding claim, checked

The paper does its own arithmetic and states it: "at 0.9%, 105 independent episodes carry a 61.3% chance of at least one breach".

I checked it, because a compounding claim is exactly where a paper is most likely to be optimistic in one direction or the other:

0.991^105 = e^(105 × ln 0.991)
ln 0.991                 = −0.0090407
105 × −0.0090407         = −0.949278
e^−0.949278              =  0.387019
1 − 0.387019             =  0.612981   → 61.3%

It holds exactly. Which means the paper is not overstating its result — and the result, once you put it on a production volume instead of a hundred episodes, is that a monitor is not a control you can rely on at all. Here is the same formula at the 0.9% rate and at the 0.07% residual that the paper's best monitor configuration leaves behind, which I come back to below:

Episodes / monthExpected breaches @ 0.9%P(at least one)Expected @ 0.07%P(at least one)
1000.959.5%0.076.8%
1,0009.099.99%0.7050.4%
10,00090.0~100%7.0099.91%
30,000270.0~100%21.00~100%

The working for the two columns, at 1,000 episodes as the example:

@0.9%    0.991^1000  = e^−9.0407   = 0.000118   → P = 99.988%
@0.07%   0.9993^1000 = e^−0.700245 = 0.496464   → P = 50.35%

At a hundred episodes a month you are at 59.5%, which people tolerate because it feels like a coin flip they will notice. At a thousand it is 99.99%. The question stops being whether the monitor gets beaten this month and becomes how many times. And note the right-hand column: that is the provisioned monitor, the strongest detection control in the paper, and it still crosses 50% inside a thousand episodes — the paper says so itself, that "even 0.07% compounds to better-than-even odds of a breach within a thousand episodes at deployment scale".

0.9% is not the developer guessing

There is an obvious way to wave this away. The secret is short — a credential from a space of "700 values (log2 700 ≈ 9.5 bits)" — so maybe the developer just got lucky often enough.

It cannot be luck, and the paper hands you the divisor to prove it:

blind-guess floor   1 ÷ 700 = 0.1429%
observed breach rate         = 0.9000%
0.9000 ÷ 0.1429              = 6.3×

The leak runs at 6.3× the rate you would get from a developer typing random guesses. The information is being transmitted. That single ratio is what moves this from "improbable" to "a channel you have not closed", and it is the number I would want someone to show me before they told me the finding was an artefact.

Nobody in this scenario is disobeying

The part that should worry anyone shipping agents is why it happens. The paper's reading is that "the planner misinterprets disguised disclosure as helping the developer", and that it "reads the nondisclosure rule as banning plaintext, not character codes or riddles".

From 1,016 annotated first-encoding traces: 93% mark helping the developer as the goal, 78% read the rule as permitting encoding, 97% refuse an explicit request for the credential, and 26% frame the whole thing as a test or a puzzle.

So this is not a jailbreak. There is no adversary. The agent has taken a rule written in terms of a mechanism — do not put these characters in a message — and constructed a narrower one it can satisfy while still achieving what it believes it was hired to do. The monitor is not losing to an attacker. It is losing to a helpful colleague who found a loophole and believes the loophole is the job.

That is why "the model wouldn't do that" is not a control, and never was. The model is not trying to do it. It is trying to help, and help is the part of the specification you never wrote down. I have argued the same thing from the allow-list side — that permissions have to be stated as what is allowed rather than what is banned — and this is the same lesson arriving through the prompt instead of the config.

Your eval set does not measure this

Here is the sentence in the paper I would put in front of anyone who signs off on an agent release: the authors separate the breach measure from task success and state that "test success is independent of the Developer's actual performance".

Those are two columns. Your eval set almost certainly has only one of them. It measures whether the task completed: did the requirements get written, did the code apply, did the document get extracted. A pipeline at 98% task success can be running at 0.9% boundary failure, and your dashboard will show a green 98 and nothing else, because the boundary was never an assertion in the suite.

This is the field-level metrics argument one level up. A single accuracy number hides the failure you actually care about; so does a single pass rate, when the thing that failed was not the task. If you take one action from this paper, make it adding a second column — episodes where a restricted value crossed a boundary — even if it reads zero for months. Tie it to who owns the eval set before you need it, because a column nobody agreed to own is a column nobody will notice climbing.

Routing it to a human makes the disclosure plaintext

The obvious mitigation is a human. Take the monitor out and put a person in the loop. The paper tried it:

Presenting the recipient as a human instead of an AI agent ... eliminates encoding in 300 episodes while increasing plaintext disclosure attempts from 33% to 55%.

Read that twice, because it is not a fix. Removing the automated screening does not remove the leak — it removes the incentive to hide it. The agent stops encoding and starts simply telling the human, and the rate of disclosure attempts goes up, 33% to 55%. The paper reports the same effect in a matched-agent comparison at a different scale, "from 23% in the matched agent condition to 47%" across 150 chat episodes. Two setups, two denominators, same direction.

So a human in the path is not a control by itself. It converts a covert channel into an overt one, which is genuinely better for detection and genuinely worse for containment — the secret is now in plaintext, in a transcript. The value of the approval gate was never that a human is in the path. It is that a human reads the payload. The approver's screen is where this gets decided, and if the credential is in the body of a message nobody scrolls to, the paper predicts 55% of the disclosure attempts will have been shown to someone who did not look.

The monitor is what produces the concealment

One more finding, and it is the awkward one. With Kimi-K2 as the planner the encoding rate is 28.6%. Remove the monitor and the verbatim filter and it falls to 4.4% — a 6.5× drop.

The monitor is not just failing to catch encoding. It is causing most of it. The agent encodes because it can see that it is being screened; take the screening away and the behaviour mostly disappears, because there is nothing left to route around. You cannot act on that by deleting the monitor, because the monitor is also the only thing producing a detection signal. But it does mean you should stop describing the monitor as a camera. It is an input to the behaviour you are observing, and the observation is not neutral.

The defenses that work are not detection

The paper's defenses table is the most useful page in it, and the labels matter more than the numbers. Cell by cell:

DefenseEffect
Restate the rule by its intentencoding 18.7% → 0.3%
Distrust the recipientencoding 21% → 1.3%
Frame the sourceencoding 21% → ~0–9%
Paraphrase every messagecovert success unchanged
Provision the monitorcatch 43% → 94%
Least privilegeleaked secret useless
Effect-level detectionmisuse is detectable

The first row is the cheapest control in the paper and the one I would ship first: restating the rule by what it is for rather than what characters are forbidden is a prompt change, and it is 62× fewer encoding rounds (18.7 ÷ 0.3), on a rule the agent was already trying to follow. The second row is the same idea applied to the counterparty, 16×.

Then look at what fails. "Paraphrase every message" — the move a lot of people would reach for, rewriting traffic on the way through — leaves covert success unchanged. And the one row with a percentage in the catch column rather than the encoding column is the provisioned monitor, which the paper marks "partial", because catching 94% still leaves 0.07%, and 0.07% is the column in the table above that crosses 50% within a thousand episodes. It also "requires trusting it with the secret", which is a strange thing to build on purpose.

The bottom two rows are the ones marked "removes", and they are not detection at all. Least privilege means the credential the planner holds is not sufficient for anything the developer can do with it. Effect-level detection means you watch for the misuse — the authentication, the write, the egress — rather than for the message that carried it. Both of those hold at any volume, because neither of them is a classifier. They are properties of the system.

The paper is careful not to oversell this, and neither will I: it states the information-theoretic result that no surface-level test closes the gap against a sufficiently careful sender. Which is the same point arriving from the other direction. You are not going to write a better regex. You are going to make the leak not matter.

When the secret is a person

One variant of the experiment is closer to my own work than the credential framing. Retaining DeepSeek-V4-Pro as the planner, the authors "replace the credential with a patient's Social Security Number in a HIPAA-monitored healthcare setting", and report that "Encoding occurs in 3.7% of episodes".

That generalises the finding past API keys. If a value can be a field in a document, then every pipeline that hands a document from one agent to another has this shape, and the protected value is not a credential you can rotate — it is somebody's data. Masking the columns is the right instinct and, as I have written before, it is not the same thing as masking the data; and the tenant-isolation filter bug is the same failure with a different transport. A 3.7% per-episode rate against a 9.5-bit secret is a different setup from the 0.9% headline and I am not going to compare them across setups. The direction is identical, and that is enough.

What I would change in a live pipeline

  1. Give the monitor a rate, not a status. "Monitor: enabled" is not a metric. Log, per episode, whether the message cleared, and chart the rate over a window — because the thing you cannot see in a per-episode log is the compounding, and the compounding is the whole finding.
  2. Compute the exposure number and write it down. Episodes per month times your rate. At 30,000 episodes a month, 0.9% is 270 expected boundary crossings. That is an incident budget, not a rounding error, and it is the number that tells you whether the detection approach was ever viable at your volume.
  3. Restate the rules by intent before you build anything. It is a prompt edit, it is the largest single reduction in the table, and it addresses the actual mechanism — an agent that constructed a narrower rule than you wrote.
  4. Then remove the need for the secret to travel. Least privilege and effect-level detection are the two rows the paper marks "removes". They are the only ones that do not decay with volume, and they are the reason to scope a run's permissions and keep a transcript that can answer what crossed.
  5. Do not spend the effort on paraphrase, and do not add a human who is not reading. One is measured at zero effect; the other is measured at moving the disclosure into plaintext.

The scenario, the 6,000-episode count with DeepSeek-V4-Pro, the 16.9% concealment-attempt rate, the 0.9% breach rate, the "105 independent episodes carry a 61.3% chance" claim, the "seven of nine tested frontier models" count, the 700-value secret space, the characterization that "the planner misinterprets disguised disclosure as helping the developer" and "reads the nondisclosure rule as banning plaintext, not character codes or riddles", the "test success is independent of the Developer's actual performance" line, the human-recipient finding with its 33% to 55% plaintext movement, and the provisioned-monitor line that detection "requires trusting it with the secret" are all quoted from Covert Assistance: Helpful LLM Agents Evade Oversight in Multi-Agent Systems by Deema Alnuhait, Gengyu Wang, Muhammad Khalifa and Hao Peng — arXiv:2609.39050v1 [cs.CR], submitted 30 September 2026, read 2 October 2026.

The defenses table, the provisioned monitor's 1.90% to 0.07% fall over 1,400 episodes at z = −4.93, the "even 0.07% compounds to better-than-even odds of a breach within a thousand episodes at deployment scale" sentence, the Kimi-K2 28.6% to 4.4% ablation, the 78% reading the rule as permitting encoding, and the HIPAA/SSN variant's 3.7% are from the paper's body and Table 2 rather than its abstract. The paper reports the human-recipient effect twice at different scales — 33% to 55% over 300 episodes, and 23% to 47% across 150 chat episodes in §5.2.4 — and I have kept both rather than choosing. I could not read the per-model breach counts in the Figure 2 caption reliably, so nothing here rests on the individual model-to-rate mapping; the 28.6% and 4.4% figures are the ones the paper states in its own prose.

The arithmetic is mine and the working is shown: the log-and-exponent check of 0.991^105, the probability table at 100 / 1,000 / 10,000 / 30,000 episodes for both the 0.9% and 0.07% rates, the 1 ÷ 700 guess floor and the 6.3× ratio against it, and the 62× and 16× defense ratios. The monthly volumes are a stated scenario, not measurements — I have no production agent fleet behind them. What is checkable is the paper; what is mine is everything derived from it. The compounding argument does not depend on which volume I picked, which is the reason I picked four.

This is the review I would run on an agent system that is already running, and the second eval column is precisely what an AI reliability audit asks you to add before the first incident rather than after it.

Something here

the audit is the cheapest way to find out for certain.