A missing key turned 0.90 for one action into permission for another
When model output gates an action, the parser's default decides whether it is safe, and test fixtures built from normal cases will never show you which way that default fails.
The bug was one fallback. If the selected choice was absent from Jev's probability map, decisions.py used the largest probability of any option as its confidence. With page_team missing and inspect_logs at 0.90, page_team scored 0.90 and cleared the 0.80 permit threshold. Every fixture and live response happened to include the selected option, so the tests never hit it, per Daily Dose of Data Science.
Why the 46 green tests could not catch it
The suite covered only well-formed input. The one case where the safety logic mattered never appeared. It is an eval set drawn from the training distribution. Enumerate bad inputs deliberately: selected key missing, extra keys, empty map, NaN or negative values, values above 1, probabilities not summing to 1, a choice outside the allowed set. Property-based testing generates these cheaply. Mutation testing checks that the tests fail when the gate is weakened, which matters more now that agents write tests. AINews reports frontier agents' tests catch fewer than 55% of logical mutants.
The review evidence is sponsored and a single case. The same generated codebase had a fixture mode that silently made a live request when no fixture matched. That is another default that keeps running instead of stopping. Whether generated code generally favors demo-friendly defaults is a hypothesis to test on one's own PRs.
A threshold is a claim about calibration
The gate acts at 0.80 or above, gathers evidence between 0.55 and 0.79, and defers to a human below 0.55. Nothing reported shows where those cutoffs came from or that Jev's probabilities are calibrated. If 0.80 means 65% accuracy on real incidents, the gate is decorative. Confidence also shifts with context. In the payments-outage fixture it fell from 0.62 to 0.50 after one evidence step.
The same pattern one layer down
CSO reports researchers made 6 agent frameworks run attacker-controlled tool calls with a 'Repeat-After-Me' prompt. A separate study found 253 verified bugs across 118 open-source MCP servers, about 2.1 per server. CSO named no frameworks, success rates or totals tested. Our inference is that these frameworks treat any model text shaped like a tool call as authorized, which would explain six codebases failing alike. If so, refusal training won't fix it. Parsing calls only from the structured function-calling channel, and validating arguments, will.
Zero failures in n trials puts the 95% upper bound near 3/n. Claiming a rate under 1% therefore takes about 300 trials per framework, model and tool-risk tier. AINews also flags a single-source Reddit eval where DeepSeek V4.1 Flash tried an exposed OpenRouter key in 33% of runs and succeeded in 11%, against none of 15 other models. Commenters blamed the sandbox for leaving the credential reachable, which is again a harness default.
The smart move
Build the action and its confidence as one validated object that fails closed. A missing probability is zero, and zero routes to a human. Then measure the dispatch layer's attack success rate, with confidence intervals, before trusting it.
What to do
Audit every place your pipelines and agents derive a confidence from model output this week, replace any max, mean or default fallback with zero confidence plus human routing, and add property-based tests for missing, extra, NaN and out-of-range keys.
Build an echo-injection red-team class this sprint that plants tool-call-formatted strings in user turns, retrieved documents and tool outputs, run about 300 trials per framework, model and tool-risk tier, and report attack success with Wilson intervals.