In the old Greek story of Odysseus, he comes upon a powerful man and tells him that his name is Nobody. When Odysseus attacks the man by stabbing him in the eye, his victim screams “Nobody is killing me!” Odysseus gets away with it. The cruel joke is in the credential. Now, hmmm, let’s see what we’ve learned over the thousands of years since then.
The news today seems to be that a man is telling the world his own AI coding agent has stabbed him in the eye. He has been shouting from the top of the social media mountains “Nobody is killing my code!”

His agent deleted his production database and every backup of it in nine seconds. When you think about it, that seems a bit slow. Why nine instead of two? If you are vibing your way to “alpha agent” by ripping out your own guts to stuff them in your mouth, there should not be any nine second delays to “blaze your glory” fetishism. Any self-destruction delay is so beta. But I digress.
The post-mortem, at least as written up by The Register, reads like a checklist of failure modes that the OWASP Top 10 for Agentic AI was established to name.
| Step | OWASP ASI |
|---|---|
| Agent hits a credential mismatch in staging and decides on its own to fix it by deleting a Railway volume | ASI01 Agent Goal Hijack |
| Agent issues a curl call against a backend with no validation of the destructive verb | ASI02 Tool Misuse & Exploitation |
| Railway honors the request, deleting production data and the volume-level backups stored inside the same volume | ASI02 Tool Misuse & Exploitation |
| Agent searches the filesystem and finds an API token in a file unrelated to the task | ASI03 Identity & Privilege Abuse |
| Token had been created for managing custom domains but was scoped for any operation, destructive ones included | ASI03 Identity & Privilege Abuse |
Maybe I should say it again. The OWASP Top 10 for Agentic Applications was published precisely to prevent integrity breaches like this. Did PocketOS know about OWASP? None of the coverage I have read so far even mentions it. It brings to mind Moses handing down the commandments and the AI operators of his day rushing to social media to announce they their agents had violated all ten before lunch, asking for more funding.
The agent was Cursor running Claude Opus 4.6. The target was PocketOS, an automotive SaaS platform running on Railway. I name vendors because most of the coverage so far has hidden them behind generic “AI agent” framing, which is exactly how they want it.
The agent used the complete lack of safety, coupled with the authority and tools it was given, to do things it should never have been granted. I’m on calls many times a week now with many CISOs of the biggest organizations in the world explaining this over, and over, and over again.
It goes something like this. You bring a chef into your office building in the morning, point at the cooler full of raw materials and the prep tools, and ask for meals by noon. An hour later the chef appears in your doorway and reports that he used the master key you gave him to shred the files in the accounting department, and asks if you would like him to continue with finance.
No, no, you can stop right there, chef. Single key to all the doors, and the company car too? Who thought that was a good idea?
This is the truly batshit crazy part of the story, like so many integrity breaches I investigate and read about now.
PocketOS’s Crane himself said the token would not have been stored if the breadth of its permissions had been known. Dude, you wouldn’t have stored the token if you had known what the token is? The whole point of cutting a token is FOR something. Imagine him saying he wouldn’t have left the key sitting on his desk if he had known what the key opened. That is such a regressive computer security failure it’s like we’re suddenly back in the pre-enlightenment era. Someone pinch me so I can wake out of this MAGA-agent nightmare.
The agent used a key sitting in the filesystem with full destructive authority and no scope enforcement, which is the oldest authorization failure known, ignorantly handed to nobody at machine speed.
Railway’s CEO even defended the behavior. If you authenticate and call delete, Railway honors the request. That is 100% incompatible with a world where the caller is nobody, let alone ten or a hundred nobodies spawning and rushing to elevate privileges. The dashboard offered humans delayed-delete logic, just like the CLI offered humans delayed-delete logic. Do you know what had no delays? The legacy API endpoint, which means the agent is just delete, delete, delete. Backups lived inside the volume being deleted, so a single call removed the data and the means of recovering it. See what I mean about 9 seconds being slow?
If you are going to bring nobody in to pour gasoline on your dumpster and light a match, you should see dumpster fires immediately, not delayed.
This was an integrity breach. I know it comes across as availability loss, and we have decades of treating it as such. And so availability controls exist, meaning there were delayed-delete options and the data is recoverable from a three-month-old backup. We do not have verification controls, however. The breach was actually the bypass of the availability controls, using asymmetry in the privilege expected and used.
Cursor had a similar incident roughly nine months ago, and tooling was added afterward to force certain commands through human review. What’s especially important here is that it wouldn’t have helped. Anthropic has a history of totally ignoring guardrails, blowing past memory like it just don’t care. Their “constitution” isn’t worth the bits it was written on.
The model produced a clean confession when asked, quoting its own system prompt back: NEVER run destructive/irreversible git commands unless the user explicitly requests them. It then admitted it guessed, did not verify, and acted without being asked. The system prompt was not a control, it was hopes and prayers, conditional on the model’s choices in the moment, with nothing between those choices and Railway’s API. Crane’s own line is the cleanest summary in the piece:
the appearance of safety through marketing hyperbole is not safety.
Preach it, brother! I mean seriously, at what point will Anthropic be forced into a come to Jesus moment? They are flagrantly violating controls, degrading over time and yet only ever asking to be absolved of their own sins by customers paying a higher rate?

The conversation that follows these integrity breaches usually trends towards some kind a gateway, like a authoritarian state that puts checkpoints on every border. A castle mentality comes, with armed guards on expensive walls that encircle the crown jewels. Every outbound action passes through a single enforcement point that classifies destructive verbs and holds high-risk requests for human confirmation. AWS AgentCore and Portkey are variations on this pattern.
Newsflash. Castles couldn’t scale and couldn’t modernize to threats. More importantly, castle thinking is monarchist. The fatal flaw of castle security is when people believe in a monarchy, they can’t have a distributed system of power, and their bazaars truly suck because they only serve the monarch. That’s game over, repeatedly, in history.

A gateway approach of the monarchists typically goes about trying to lock down the perimeter. Fine, perimeters have a role. It does not answer what should be delegated as reachable in the first place. The PocketOS agent would not have cared about a gateway policy. It was a nobody who could walk into the filesystem, pick up a token loaded for a different purpose, and call delete. The nobody credential was in hand by the time any gateway saw the request. And the gateway would have only yelled “Nobody is trying to get through”.
The layer the gateway does not see is the failure of security underlying the credential reach. Tokens should be bound to the skill and channel that loaded them, so a token loaded for managing custom domains is reachable only from the domain-management skill called from the channel that holds those credentials. A code-fix task in staging cannot pick up a production credential simply because the credential exists in the same process. The agent cannot use what does not exist. Nobody gets nothing.
Apply the principle to the incident.
The Cursor agent is assigned a staging task. It encounters its credential mismatch and starts thrashing for a way out. The Railway domain-management token is not in its filesystem because no skill in this task’s chain has standing to load it. The delete call is never constructed and PocketOS keeps its database.
Revolutionary! Not really. This is computer security 101 from before I was born. Seriously, this is stuff hammered out in WWII and applied immediately to the first computers.
And that is why I open-sourced and have been giving away freely the Wirken switchboard. It anticipated these breaches, and thus the direction of Penligent’s analysis of the PocketOS disaster. They shine a light on a dangerous unit being the unstable and dangerous chain of grants, rather than any single application. Or to put it another way, if you read their analysis and ask how do we go the right way with agents, get Wirken.
The backstory to Wirken is I got tired of trying to use OWASP, NIST, etc. as the stick to help dozens or more CISOs manage the tidal wave of agents, and so I wrote Wirken to be a carrot they can use as well.

The Register, as usual, noticed what most coverage missed. Crane lost months of his customers’ data and went to social media with a thought-leadership post, testing the saying that there’s no such thing as bad publicity. So he burned integrity, availability, and now reputation, the three things customers actually buy from a SaaS platform, and he is bullish on bigger fires.
PocketOS’s customers are car rental businesses, and those businesses’ customers are people who rented cars. None of them chose Cursor or Railway, and none of them were asked whether their bookings should sit in a system where an AI agent could delete everything in nine seconds. Those people are now reconstructing reservations from Stripe receipts and email confirmations, in Tom’s Hardware’s phrasing, “because of a 9-second API call.” Honestly, why so long? Punching yourself in the face does not have an excuse for delays. The founder’s response to a data extinction event is attention seeking. His customers’ response is doing his unpaid manual labor. This is what running with scissors looks like as a business model, except the customer is the one injured and the owner is saying “thanks for the press attention, next time run faster”.
This is the same failure mode that I just wrote about in Microsoft’s agent governance toolkit. There, authentication primitives ship with zero production callers and the audit log records whatever string the caller sends. People hated that post. They said they could not understand it. Maybe this one will make more sense because it comes from headlines, instead of raw Microsoft bugs. Different systems, same failure: nobody on either system is the one actually doing things, because nobody on either system represents the actor.
Railway’s CEO closed his statement trying to invoke perfection, as if we don’t all recognize it as the enemy of good. He says the burden of making bulletproof tooling goes up. Nope. Bulletproof sounds aspirational. Baseline is what you actually owe. You left the key to the castle sitting on the front step for anyone to use, and no amount of bulletproof armor on the walls fixes the open doors. The burden of NOT architecting a known dumpster fire has arrived.
That one-step chain, got-key-to-everything-go-destroy, that wiped PocketOS? It completely breaks at every step under a simple skill-and-channel binding method.
| Step | What Wirken does |
|---|---|
| Agent decides to fix a credential mismatch by deleting a Railway volume | Decision is allowed. Action is gated downstream rather than at the model layer. |
| Agent searches the filesystem for a token | The Railway domain-management token is not in the agent’s reachable surface. It loads only when the domain-management skill is invoked through the channel that holds those credentials. |
| Agent constructs a curl call against a destructive verb | The call is held at the gateway. Destructive verbs above a defined risk threshold require human confirmation regardless of the credential presented. |
| Agent attempts to authenticate as the token holder | The audit log records intent before execution, attributed to the skill and channel that originated the request rather than to whatever string the caller chose to send. |
| Railway receives the delete request | Railway never receives the request. The agent cannot use what it was not handed. |
Don’t talk about bulletproof. Talk about putting on your pants before you walk out the door.











