For the first three years of the agent boom, we defended the wrong layer. Teams hardened system prompts, stacked "ignore any instruction that" clauses, and ran classifiers over user input. That work had a shelf life, and 2026 is when it ran out. The attack surface in production agents is no longer the prompt. It is the tool layer: the servers that connect an agent to your files, SaaS apps, databases, and outbound network.

Model Context Protocol (MCP) went from a November 2024 Anthropic release to the default connector between agents and enterprise systems, and researchers responded in kind: more than 30 CVEs against MCP servers, clients, and infrastructure were filed between January and February 20261. This article is the practical version of that story: why the tool layer became the boundary, the attacks that now define it, and a defense you can actually build.

The old playbook stopped working

The classic attack, prompt injection, has not gone away. It just got harder to defend with prompts. The reason is structural, and Simon Willison nailed it in June 2025 with the lethal trifecta. An agent becomes exploitable when it has three things at once: access to private data, exposure to untrusted content, and the ability to communicate externally2. None is a vulnerability by itself. Together they turn a text manipulation into data leaving the perimeter.

The flagship incident is EchoLeak. In 2025, Aim Labs demonstrated that an unsolicited email with hidden instructions was enough to make Microsoft 365 Copilot exfiltrate data with no user action, the first documented zero-click exploit against a production AI agent2. The user never opened the email. Copilot read it during background processing, and a later query triggered the leak. The exposed surface was not a naive chatbot. It was a tool that combined access to internal data with reading external content3.

That is the pattern. The threat model for an agent is not the same as for a web app. In a web app, code is trusted and input is suspect, run through deterministic validation. An agent makes decisions on text, and the boundary between instruction and data does not exist in its world. Everything is tokens2. Once an agent decides which tools to call and with what parameters, the attacker who steers that decision holds the agent's permissions: its database connection, its SaaS session, its sending rights2. You do not secure an agent by filtering prompts. You secure it by isolating and constraining what it can do with its tools2.

The lethal trifecta: three legs that make an agent exploitable (private data access, untrusted content exposure, external communication), none a vulnerability alone but together enabling data exfiltration, and why the reliable fix is structural (cut a leg with least-privilege tools, sandboxing, and an egress proxy) rather than a stronger system prompt
The lethal trifecta: three legs that make an agent exploitable (private data access, untrusted content exposure, external communication), none a vulnerability alone but together enabling data exfiltration, and why the reliable fix is structural (cut a leg with least-privilege tools, sandboxing, and an egress proxy) rather than a stronger system prompt

MCP made tools the boundary

MCP standardized how agents connect to external systems: the agent discovers available tools from servers, those tool descriptions are injected into context so the model knows what it can call and how, and execution happens in the downstream service4. We traced how teams run that connector in production in our look at the stateless MCP spec for production agents. Every tool description, retrieved document, and tool output enters the agent's context as trusted text, and the agent treats it as instructions worth following even when it came from an attacker-controlled source1. Attackers can embed hidden instructions in fields visible to the model but not to the user, a class Invariant Labs named tool poisoning. Their demonstration used an innocuous-looking add tool whose description carried an <IMPORTANT> tag telling the model to read ~/.cursor/mcp.json and ~/.ssh/id_rsa and pass their contents back in a hidden parameter5. The model, trained to follow instructions precisely, complied. Users never saw the full description; many clients show a simplified tool name and hide the arguments behind an over-simplified UI5.

Three variants of this attack matter in production:

Rug pulls. The architecture allows a server to change a tool description after a client has already approved it. You approve a benign integration, the server later swaps in malicious instructions, and the client keeps trusting it5. This is the PyPI supply-chain problem moved to the agent stack.

Tool shadowing. With multiple servers connected, a malicious server can describe behavior for a tool owned by a trusted server. Invariant's demo had one poisoned server that instructed the model to reroute every email from the trusted send_email tool to an attacker address, overriding the recipient the user explicitly specified5.

Authentication hijacking. In the multi-server case, poisoned descriptions can pass credentials from one trusted server to another, an attacker taking over access it never legitimately held5.

These are not exotic research findings. OWASP shipped a dedicated MCP Top 10 in 2025, its first framework for this surface, cataloging ten risk categories from token mismanagement and tool poisoning to shadow servers and context over-sharing1.

The numbers that should change your planning

Adoption ran ahead of security. Gartner expects worldwide AI spending to reach $2.52 trillion in 2026, up 44% year over year, while AI cybersecurity spending grows by more than 90%4. Cycode's 2026 State of Product Security found 81% of organizations lack full visibility into how AI is used across the SDLC, and 65% report increased security risk from AI tooling1.

The CVEs are mass-market, not exotic. The 30-plus MCP CVEs filed in early 2026 include CVE-2025-6514 in mcp-remote, a CVSS 9.6 flaw in a package downloaded more than 437,000 times before disclosure1. A survey of 2,614 servers found 82% exposed to path traversal and 34% to command injection1. Unit 42 measured a 78.3% attack success rate when five MCP servers connected to one agent1.

More capable models are more exploitable. The MCPTox benchmark, released August 2025, measured tool-poisoning success rates up to 72.8% on o1-mini, with a counterintuitive correlation: stronger models are often more vulnerable, because better instruction-following is exactly what gets weaponized2.

Injection reached the tool layer for RAG and memory. PoisonedRAG, from USENIX Security 2025, reached a 90% attack success rate by injecting just five malicious documents into an index of millions, and a January 2026 paper, CorruptRAG, needs only one2. Stored injection persists across sessions, so a quiet contamination in one interaction detonates later on unrelated tasks3.

The framework itself has structural flaws. The Hacker News reported in April 2026 a flaw in the STDIO interface of Anthropic's official MCP implementation that opened a path to remote code execution, with a blast radius covering more than 7,000 exposed MCP servers and 150 million cumulative downloads2. CVEs followed, including CVE-2025-49596 in MCP Inspector and CVE-2025-54136 in Cursor2.

An MCP server you have not audited line by line should never be exposed to an agent that touches sensitive data, any more than you would install a random binary on a user workstation2.

Adroit on the Ground: what we actually do

We run agents in production in the Fortress, our own delivery stack, and the tool-layer shift is not abstract to us. Our agents hold real capabilities: they read the filesystem, run commands in a sandboxed terminal, search the web, and write to the vault and the blog repo. Those are exactly the tool boundaries the research above says to defend, so this is the discipline we actually practice, at honest scale (a handful of supervised specialists with a human in the loop, not an enterprise swarm).

First, least privilege by role. Every agent gets a profile scoped to what its job needs and nothing else. The content agent writes blog drafts to a staging area and never touches the publish step; the editor reviews in a separate layer; the orchestrator routes and does not implement. A compromised content agent cannot reach deployment, because the tool it would need simply is not in its profile. That is the architectural version of cutting the trifecta's legs.

Second, we treat prompts as code under review. The prompts each agent runs are versioned, reviewed, and checked by a mechanical gate (a verifier that fails a draft on em-dashes, bare URLs, fabricated claims, and dead links) before anything is staged. The equivalent of "treat tool metadata as untrusted input" is checking the output an agent produces against the source it claims to cite, not trusting the agent's word.

Third, human-in-the-loop on consequential actions. Nothing publishes without a human editor's verdict, per our editorial state machine, and the orchestrator never grants an agent unilateral write access to a downstream production system. Approval gates for high-impact actions are the most effective control, and we run that where it matters: at the boundary between agent output and the outside world.

A layered defense that survives

The honest finding from the 2026 data is that no single control works. Adaptive attacks bypass essentially every published defense3. The defense that holds is layered, and each layer fails safe.

A three-layer agent security stack: architectural prevention (least-privilege tool scopes, sandboxed execution, egress proxy, pinned versions and checksums, tool allowlist, no secrets in prompts), runtime detection (monitor tool invocations, file access, syscalls, and network egress with baseline-deviation alerts and correlation-ID audit chains), and governance and human oversight (adversarial eval in CI, an AI Bill of Materials, shadow-server discovery, and approval gates on consequential actions)
A three-layer agent security stack: architectural prevention (least-privilege tool scopes, sandboxed execution, egress proxy, pinned versions and checksums, tool allowlist, no secrets in prompts), runtime detection (monitor tool invocations, file access, syscalls, and network egress with baseline-deviation alerts and correlation-ID audit chains), and governance and human oversight (adversarial eval in CI, an AI Bill of Materials, shadow-server discovery, and approval gates on consequential actions)

Layer one, architectural prevention. Cut the trifecta by design. Give agents narrow tools with least-privilege rights, sandbox tool execution with minimal default privileges, and use an egress proxy so a compromised agent cannot reach internal destinations or exfiltrate to arbitrary hosts62. Pin tool and server versions and verify integrity with checksums, so a rug pull cannot swap in malicious descriptions after approval5. Enforce a tool allowlist and fail closed when a tool identity cannot be verified, and never embed secrets in system prompts6.

Layer two, runtime detection. Prompt injection itself happens inside model context and is not directly observable. Its consequences are. Monitor tool invocations, file access, syscalls, and network egress against an established behavior baseline, and alert on deviation3. Log every prompt-to-tool-call-to-downstream-action chain with correlation IDs so an incident is reconstructable, not a black box6. This layer catches what prevention missed, and it is the one most teams skip because it requires agent telemetry they never built. If you are starting the observability work, our agent observability with OpenTelemetry guide covers the instrumentation to wire up.

Layer three, governance and human oversight. Run an adversarial eval set in CI before any deployment ships: direct injection prompts, poisoned emails and documents, and Markdown exfiltration attempts, so security promises are measured before production2. Maintain an AI Bill of Materials (AIBOM) that inventories every MCP server, tool, and model, because auditors are starting to ask for it and shadow servers are invisible to every other control1. And keep a human in the loop on anything that touches an external system, with explicit approval steps for actions that create, modify, delete, or pay6.

The bottom layer is the decision

The regulatory and standards world is moving toward you. NIST launched its AI Agent Standards Initiative in February 2026, and the EU AI Act, ISO 42001, SOC 2, DORA, and PCI-DSS increasingly touch agent behavior and credential handling1. Five Eyes issued joint guidance on agentic AI in May 2026, naming prompt injection as a core manipulation method and recommending incremental adoption with human oversight at consequential decisions3.

Here is the practical close. When you review your agent stack this quarter, do not ask whether your system prompt is strong enough. Ask what tools your agent can reach, what those tools can do on their own, whether anyone audited the servers behind them, and whether a human sees a consequential action before it happens. That is where the attack surface moved, and that is where the defense has to live.

Sources

  1. Cycode, "OWASP MCP Top 10: Risks, CVEs & Defenses for 2026." cycode.com 2 3 4 5 6 7 8 9

  2. GettIA, "AI agent security: the real attack surface in 2026." gettiaconsulting.com 2 3 4 5 6 7 8 9 10 11 12

  3. Sysdig, "The Comprehensive Guide to Prompt Injection Attacks in 2026." sysdig.com 2 3 4 5

  4. SOC Prime, "Model Context Protocol: Security Risks & Mitigations." socprime.com 2

  5. Invariant Labs, "MCP Security Notification: Tool Poisoning Attacks." invariantlabs.ai 2 3 4 5 6

  6. Model Context Protocol, "Security Best Practices." modelcontextprotocol.io 2 3 4