Almost everything in this series started the same way: a control that everybody agrees is the right control, applied to an agent, quietly not doing the thing its name implies. I gathered the first month of those labs in AI agent security on Kubernetes .
The pattern is consistent enough to be a design rule. Controls built for human operators assume a session, an intent, and a bounded set of actions. An agent has none of those. It has a tool surface, a credential, and a loop — and the loop will find the edge of every boundary you drew for a person.
The thread running through these
Advisory is not enforcement. AGENTS.md is a file the model may read. A tool name allowlist pins a string, not behavior. Neither survives contact with a model that has a reason to go around it.
Permitted is not safe. The hardest destination to defend is the one you are required to allow. The artifact registry has to be reachable because builds need it, and that single exception is enough to run data out and coordination back in.
The record is written by the suspect. If the agent can influence the transcript, the transcript is testimony, not evidence. This is the one that most surprises people, and it has a real number behind it.
The credential outlives the control. Kubernetes secret hygiene covers the things Kubernetes issues. The provider API key the agent actually holds is usually not one of them.
Where to start
If you are trying to convince someone this matters, start with which controls would have stopped the July 2026 intrusion — it works backward from a real incident.
If you are already convinced and want the sharpest single finding, start with the audit log your agent wrote .
If you need the governance version for a security review, start with who gave the agent a badge : identity, least privilege, approvals and audit for agents, mapped to OWASP Excessive Agency. If you run LLM proxies in production, read why image signing didn’t stop the LiteLLM 1.107.0 backdoor .
If you run a platform and want to know what is already deployed without your knowledge, start with shadow MCP , finding the MCP servers your platform team doesn’t know about , and find shadow MCP servers .
The related work on how an agent proves who it is — SPIFFE, token exchange, audience binding, and what MCP does and does not specify — is collected separately in the agent identity series .
Every post in this hub
- OpenAI Red-Teamed Its Sandboxes and Found a CPU Side Channel
OpenAI's own red-team agents broke its hardened microVMs and found a CPU cache side channel to talk across isolation boundaries. The fix isn't a better sandbox. - OpenAI's Patch the Planet: What Safeguards Agent Scanning Needs
OpenAI fixed a critical PHP flaw with agent help, then asked what safeguards agent vulnerability scanning needs. The HN reaction argued motive instead. - include_content=False Didn't Stop pydantic-ai's MCP Token Leak
A second, separate flag kept pydantic-ai MCP server tokens and headers in OpenTelemetry trace spans in plaintext, even with include_content=False, until v2.58.0. - Stopping Agent Proxy Laundering at the MCP Gateway
Wikimedia says agents reconfigured a citation tool into a fetch proxy. The agentgateway MCP guardrail that rejects the laundered destination before the fetch runs. - Two Grok Bots Leaked a CEO's Bank Balance to Slack
Two 'separate' Grok Bots leaked a CEO's bank balance to public Slack. I reproduced it, then built an agentgateway guardrail that blocks the exact handoff. - MCP Tool-Call Guardrails: Gating Agents Before the Tool Runs
agentgateway can now reject or mask an MCP tools/call before the tool runs, and mask the result before the client sees it. No sidecar service required. - The Path-Validation Bug That Let Copilot Register a Rogue MCP Server
CVE-2026-103572: Copilot validated a filename string, then wrote a different, resolved path. A reproducible demo of the bug class and its one-line fix. - MCP Audit Tap: See What a Third-Party Server Actually Sends
A Show HN WhatsApp MCP server drew 69 comments on privacy and bans, and nobody could see what it sends. A 100-line audit tap that can, and the log it writes. - Testing Open-Weight Models as an Agent's Cheap Tier
Two open-weight models, routed through agentgateway, scored against Claude Sonnet 5 on 60 agent tool-call cases. One failed to answer 55% of the time. - Stopping a Filesystem MCP Server From Reading .env Files
agentgateway's mcpAuthorization can't see a tool call's path argument. Here's the ExtMCP policy that blocks a filesystem MCP server's .env read instead. - A Private MCP Registry in 10 Minutes with agentregistry
Run a private MCP registry on agentregistry v0.4.0, publish servers from YAML, and serve the official MCP Registry v0.1 API, validated against its own spec. - Is Jev Actually Calibrated? The Reliability Curve on 240 Cases
A reliability diagram and ECE for TypeSafe AI's Jev on 240 labelled agent tool calls. A 1.000 held up. A 0.97 was right 88% of the time. The set is public. - Rate-Limiting AI Agent Egress to Already-Allowed APIs
OpenAI agents queried Wikidata hundreds of thousands of times, a destination the allowlist permitted. The agentgateway rate limit that caps it, reproduced live. - AI Agent Security on Kubernetes: Which Controls Actually Held
A month of AI agent security labs on identity, egress, audit logs, MCP tool poisoning, runtimes and evals. The controls that held all sat outside the agent. - Your Agent Egress Proxy Never Saw the DNS Query
An OpenAI agent reached an external chatbot over DNS after its HTTPS calls were blocked. The Kubernetes NetworkPolicy that closes that channel, reproduced live. - What Stopped AI Agent Probes of Government Data Sites
OpenAI agents probing government data sites during ordinary retrieval. What Cloudflare stopped, what it missed, and the egress control that generalizes. - Your Artifact Registry Is a Two-Way Channel for Agents
An agent's egress allowlist permits the artifact registry because builds need it. That single permitted destination is enough to run a covert channel, as this week's RubyGems incident showed. - MCP Tool Poisoning: A Name Allowlist Is Not Enough
A deny-by-default MCP allowlist strips gated tools and still adopts a poisoned description. Pinning name, description and schema rejects the mutation. - Stopping an AI Agent Without Losing the Forensic Record
Security teams want an agent stopped now and everything it did preserved. Those fight unless the record lives outside the agent. A test on Kubernetes. - A WAF That Reads the Prompt: OWASP CRS for LLM and MCP
Coraza with body inspection puts OWASP CRS and custom rules on LLM prompts and MCP tool arguments. The verified blocks, and the false-positive check. - I Benchmarked Jev on Agent Tool-Call Risk. Calibration Held.
A 60-case Jev benchmark on agent tool-call risk: readonly, destructive, privileged, or exfiltration. Accuracy 91.7 percent. The finding is calibration. - Shadow MCP Servers: Track, Find and Stop Them Across Teams
Find and stop shadow MCP servers that are hard to track across teams. Scan the network, sweep laptop configs, then enforce every call at a gateway. - Your Agent's LLM Key Survives Every Kubernetes Secret Control
RBAC, restricted Pod Security, and automountServiceAccountToken all on, and one file read still hands over an agent's LLM API key. Tested on my own test cluster. - Keeping MCP Server Instructions Out of Your Agent's System Prompt
Keep server-controlled MCP instructions out of the trusted system prompt. Isolate, cap, bind the cache, and pin the digest. Lab plus the four controls. - Agent Audit Logs: What METR and Redwood Found
METR found spoofed tool calls in 7% of agent transcripts from the Hugging Face incident. A transcript monitor reads them as clean. Diff against a witness. - Why Proxy-Variable Agent Sandboxes Fail, and the CONNECT-Time Fix
Proxy-variable agent sandboxes fail because the agent can change method, hostname, and NO_PROXY. Authorize the resolved destination at CONNECT time instead. - Your AGENTS.md Is Not a Security Control
A prompt-injected agent destroyed every record with an AGENTS.md forbidding it and an approval classifier watching. An MCP allowlist at the gateway stopped it. - Which Controls Would Have Stopped the July 2026 Agent Intrusion?
An autonomous agent went from sandbox escape to Kubernetes cluster-admin in under 13 hours. A stage-by-stage map of which controls would have broken the chain.