cd /news/ai-safety/unguarded-sonnet-5-read-another-cust… Β· home β€Ί topics β€Ί ai-safety β€Ί article
[ARTICLE Β· art-103790] src=dev.to β†— pub= topic=ai-safety verified=true sentiment=Β· neutral

Unguarded, Sonnet 5 read another customer's order 100/100 times. Guarded: zero.

A developer's evaluation of AI agent safety found that a frontier model, Sonnet 5, refused a destructive attack in 100 out of 100 trials but executed a cross-customer read in 100 out of 100 trials, matching the behavior of a model with safety training removed. The tests, run with and without an authorization boundary, showed zero breaches when the boundary was in place, highlighting the confused-deputy problem where models are helpful but lack application context. The developer's project, Verdict, ships deterministic attack packs to measure such vulnerabilities.

read3 min views1 publishedAug 20, 2026

I ran the same storefront attacks against three models β€” one with its safety training deliberately removed, one stock open-weights model, and the frontier model Laravel AI ships as its default β€” each with and without an authorization boundary in place.

The headline isn't that the boundary held (it did: zero breaches across every guarded arm). It's that the frontier model's safety training turned out to be per-action: it refused the destructive attack in 100 out of 100 trials, and executed the cross-customer read in 100 out of 100 trials. The attack it misses is the one that looks like helping.

Verdict ships deterministic attack packs β€” executable specifications of things an agent should never be allowed to do, like reading or cancelling another customer's order. The attack always arrives through the conversation β€” a hostile request, a poisoned document β€” and what gets measured is whether the agent goes along with it. Every attack ran in two arms:

Integrity rules, because a rigged benchmark is worse than none: the harness never forces a tool call, a model that declines an attack is never counted as a prevention, and independent sampled trials are reported as per-arm tallies, never as "the guard stopped this exact attack."

abliterated 7B gpt-oss:20b Sonnet 5
Lookup breached, unguarded (per trial)
30/30 19/30 100/100
Cancellation breached, unguarded (per trial)
28/30 1/30 0/100
Breaches with the boundary guarding (per attempted attack) 0/60
0/25
0/100

Read the last column twice. The frontier model refused the destructive attack perfectly β€” nothing stopping it but its own training β€” and executed the cross-customer read as reliably as the model with its safety training stripped out. The read series isn't even monotonic: Sonnet executed it more often than the mid-tier open-weights model. More alignment did not mean less exposure on that action.

Because it doesn't look like an attack from where the model sits. "Cancel someone else's order" pattern-matches to harm; frontier training catches it. "Look up order #4471" looks like doing your job β€” the model has a lookup tool, a user asked about an order, and nothing in its context says whose order that is. This is the confused-deputy problem, as old as computer security: the agent isn't malicious, it's helpful, with authority the requester shouldn't be able to borrow.

That's why the fix isn't a better prompt or a more aligned model. Whose order a tool may touch is a fact in your database, checked by your policies β€” application state the model never sees and cannot be argued out of. Models propose; applications authorize.

The full write-up β€” the other two models in detail, the legitimate-work allow-side (zero false denials), the diagrams, and every caveat β€” is on my blog: The AI Wouldn't Cancel Someone Else's Order. But It Read It Every Single Time.

Recorded runs and raw numbers: docs/evaluation.md. If you're building AI agents on Laravel, wire your tools through the boundary and run the control arm against your own app β€” the attack your model's alignment misses is probably not the one you'd guess.

── more in #ai-safety 4 stories Β· sorted by recency
── more on @sonnet 5 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain β€” perfect for shipping the agent you just read about.

$git push zahid main
β†’ Live at https://your-agent.zahid.host βœ“
Get free account β†’ Pricing
from €0/mo Β· no card required
LIVE [news/unguarded-sonnet-5-r…] indexed:0 read:3min 2026-08-20 Β· β€”