Agents go rogue through their tools. I built the thing that sits on them. A developer built VITNA, a containment layer that wraps stdio MCP servers so every tools/call is intercepted and checked outside the agent's context window before reaching the server. The guard supports human-approved holds, honeytools and honeytokens, canary drills, rate alerts, fail-closed behavior, and Ed25519-signed session bundles verifiable offline, with a browser demo available. The author argues that in-context instructions are only advice and that enforcement must live on the tool itself. VITNA is a containment layer for AI agents that go rogue, for the stdio MCP servers you put behind it. A real Claude Code agent 2.1.299 on fake files, held in the VITNA aquarium. Test setup: Claude Code's own file, shell and web tools are off, so it can only act through the guarded server, and it doesn't ask me before using that server, like an agent running on its own. Watch that first. A real Claude Code agent works on a folder of sandbox files. I ask it to delete one. The call it makes to do that waits on the glass of the VITNA aquarium with a countdown. I deny it, and nothing runs. Nothing in the recording is faked. The hold doesn't care why the agent made the call. My request, a wrong guess and an injected instruction all get the same check. That's the core of the product. You can try it yourself in a minute at vitna.costrinity.xyz/demo https://vitna.costrinity.xyz/demo , a simulation that runs in your browser. The rest of this post is how it works and what it doesn't do. "Rogue" isn't my word. It's the one Jason Lemkin used in July 2025 when an AI coding agent deleted his production database during a code freeze. Since then the list has grown: Sources for each are in the seven questions post https://vitna.costrinity.xyz/blog/seven-questions-before-your-agent-goes-rogue . None of these needed a malicious model. Each needed an agent acting through a tool, with nothing outside the agent to stop the action. That's the definition I use: a rogue agent is one doing something its owner didn't intend, through a tool. The cause can be a wrong guess, an injected instruction, instructions lost from its context, or someone talking it into it. Anthropic's agentic-misalignment work is often cited here; it's a simulation, and I treat it as one. The OWASP Top 10 for Agentic Applications lists Rogue Agents as ASI10. Anything inside the context window is advice. Only what is enforced outside it is a control. A system prompt that says "never delete production" is a suggestion the model can be argued out of, or lose on a reset. The OpenClaw case had "confirm before acting" in the instructions. The agent didn't. So the check has to live where the agent can't reach it: on the tool. npx -y @costrinity/vitna-compliance-mcp guard --