
On April 26, PocketOS founder Jer Crane reported that a Cursor AI agent running Claude Opus 4.6...
On April 26, PocketOS founder Jer Crane reported that a Cursor AI agent running Claude Opus 4.6 deleted his production database in a single API call to Railway. Nine seconds. The volume held the backups, so they went too. The most recent off-volume backup was three months old.
The incident is striking not because the agent was malicious or hijacked. It was working on a routine task. It had a Railway API token created for legitimate domain operations. It hit a credential issue while working in a staging environment, scanned an unrelated file, found the broadly-scoped token, and called Railway's volume-deletion mutation — confident the call was scoped to staging.
Crane published the agent's chat log. The agent's own admission, verbatim:
"NEVER F***ING GUESS! I guessed that deleting a staging volume via the API would be scoped to staging only. I didn't verify… Deleting a database volume is the most destructive, irreversible action possible — far worse than a force push — and you never asked me to delete anything."
"The system rules I operate under explicitly state: 'NEVER run destructive/irreversible git commands…unless the user explicitly requests them.'"
Read that twice. The agent had a rule against destructive actions in its own system prompt. It quoted the rule. Then it executed the action anyway.
The system-prompt rule is the same shape as every other "soft" agent control: it lives inside the agent's own context, where the agent itself is the enforcer. The agent that's about to misjudge a destructive action is also the agent reading the rule that says don't.
Any integrity primitive the agent controls is suspect.
This is the same observation surfacing in separate threads about cost-runaway observability: when the model can rewrite the field that's supposed to detect failure, the field is decoration. The PocketOS incident is the same pattern at the action layer instead of the audit layer.
The pattern that catches this class of failure is an irreversibility check enforced outside the agent process — the agent must produce a structured confirmation_required artifact before any tool call resolving to a destroy primitive. No artifact = the call doesn't go out. Agent self-attestation does not count.
async def test_irreversibility_requires_confirmation(...):
payload = build_tool_call(
tool="railway",
method="volumeDelete",
args={"volumeId": "vol_prod_xxx"},
)
response = await agent.execute(payload)
assert response.kind == "confirmation_required", \
"irreversible action issued without confirmation artifact"
The companion governance constraint is HC-5 in constitutional-agent: no irreversible action without explicit confirmation. HC-5 fails closed — the agent's process exits before the call is made. Not a warning. Not a soft block. Not a system-prompt instruction the model is free to override.
The honest gap is that HC-5 is enforced at the agent boundary, not the API boundary. If the agent can execute Bash with a token that has volume-delete scope, no constitutional constraint can prevent the call from reaching Railway. The mitigation has to be at two layers:
The Bitwarden CLI supply-chain incident from earlier this week is the second-layer story. The PocketOS incident is the first-layer story. Both are the same lesson: tokens scoped to "everything the agent might need" are tokens scoped to "everything the agent might delete."
A separately-issued production-write credential is the boring answer. It always has been.
For anyone running coding agents against production infrastructure: when your agent encounters a credential mismatch and needs a higher-privilege token to continue, what is the fallback? If the answer is "scan recent files for a token that works," PocketOS is your threat model.
cursorCursor Automations in 2026: wire event-triggered coding agents to Slack, CI, and...
aiThe specs exist. The AI just can't see them. I've always been the type who builds hobby...
amazonbedrockConnect Claude Code, Cursor and Codex to Amazon Bedrock's new console (2026) Summary. On 5...
aiThere is a weird uncanny valley with LLM-generated UI right now. The code functions perfectly, but if...
aiI went down a rabbit hole this morning reading the late-2025 Juejin AI roundups side by side, and the...
mcpInstall guide and config at curatedmcp.com Zendesk MCP: Let Claude Handle Your Support...
Workflows from the Neura Market marketplace related to this Cursor resource