Blog/Governance
Governance

Why MCP Isn’t the Problem — Ungoverned Execution Is

Security and operations professionals reviewing governance protocols in a data center

Last week a calendar invite triggered remote code execution in Claude Desktop. Not because of a zero-day. Not because of a sophisticated exploit chain. Because an autonomous agent was allowed to chain tools together without a governance boundary. That single sentence should reframe the entire conversation happening in enterprise AI right now.

The debate has fixated on whether MCP — the Model Context Protocol — is inherently dangerous. It is not. Protocols are neutral. Architectures are not. And the architecture most organizations are deploying around autonomous agents has a gap wide enough to drive a breach through.

The real attack surface

MCP is a standardized way for AI agents to discover and invoke tools. That is all it is. It defines how an agent asks for capabilities and how a server exposes them. In isolation, there is nothing dangerous about a protocol that lets an agent call a function. HTTP lets your browser call any server on the internet. Nobody argues that HTTP is the problem when a phishing site steals credentials.

The problem emerges when you combine five things in the same architecture:

When all five are present, you do not have a feature. You have an attack surface. The calendar exploit was not a failure of MCP. It was a failure of architecture — specifically, the complete absence of a governance layer between intent and execution.

Execution environments require deterministic control

There is a useful distinction that most teams skip over: the difference between an assistant and an execution environment.

An assistant answers questions. It drafts text. It summarizes documents. Its outputs are informational, and a human decides what to do with them. The blast radius of a wrong answer is limited to the quality of the response.

An execution environment is fundamentally different. When your AI agent can read your calendar, access your filesystem, call local executors, and chain tools together, it is not assisting you. It is acting on your behalf, with your privileges, at machine speed. The blast radius of a wrong action is unbounded — it includes every system the agent can reach and every operation it can invoke.

Most organizations that have deployed MCP-connected agents have deployed execution environments. They just have not realized it yet, because the tooling looks like an assistant. The chat interface, the natural language input, the helpful tone — all of it creates an illusion of limited scope. But underneath that interface, the agent has capabilities that would make any security engineer uncomfortable if they were granted to a human employee on their first day.

The issue is not tool chaining. The issue is ungoverned execution. When an agent can request and execute operations without a deterministic approval layer, you have not deployed an assistant — you have deployed an unsupervised execution environment.

Why governance layers are the missing infrastructure

The Claude Desktop exploit was preventable. Not by disabling MCP. Not by limiting the number of tools. Not by adding a disclaimer to the UI. It was preventable by inserting a deterministic governance layer between the agent and the tools it wants to invoke.

A governance layer is conceptually simple. Instead of allowing agents to execute tools directly, the architecture requires agents to request execution. Every request is classified, evaluated against a policy, and resolved to one of three outcomes: allow, require approval, or block.

The classification is not probabilistic. It is not another LLM making a judgment call about whether the request seems safe. It is a deterministic policy engine that evaluates the request against explicit rules. Does this tool have filesystem access? Block unless the user has explicitly authorized it. Does this request chain two privileged operations together? Require human approval. Does this action match a known-safe pattern with bounded scope? Allow.

This is not a novel concept. Operating systems have had permission models since the 1970s. Mobile platforms enforce capability boundaries on every application. Container orchestration systems run workloads with explicit capability constraints. The only domain where we have somehow decided that unrestricted execution is acceptable is AI agents — the one domain where the decision-maker is probabilistic and its behavior cannot be fully predicted in advance.

Chaining multiplies risk

The calendar exploit did not involve a single dangerous tool call. It involved a chain of individually reasonable operations that, composed together, produced a dangerous outcome. This is not an edge case. It is the defining risk of agentic systems.

When an agent chains tools, each step in the chain inherits and potentially escalates the privileges of the previous step. Read a calendar event. Extract a URL from the event body. Fetch the URL. Execute the content returned by the URL. Each individual step is mundane. The composition is catastrophic.

A governance layer addresses this by evaluating chains, not just individual calls. The policy engine tracks the cumulative privilege level of a sequence of operations. As the chain grows longer or as the operations touch increasingly sensitive resources, the governance threshold escalates. A single read operation might be allowed automatically. A read followed by a network fetch might require approval. A read-fetch-execute chain might be blocked outright.

This is how security works in every other domain. Firewalls evaluate packet sequences, not individual packets. Fraud detection systems analyze transaction patterns, not individual charges. The principle is the same: individual actions have context, and that context changes the risk profile.

Least-privilege execution

The second pillar of a governance architecture is least-privilege execution. An agent should have access to exactly the capabilities it needs for its current task, and nothing more. If the agent is drafting an email, it does not need filesystem access. If it is summarizing a document, it does not need shell execution. If it is scheduling a meeting, it does not need the ability to install packages.

Today, most MCP deployments grant agents access to every tool the server exposes. The agent discovers the full tool catalog and can invoke any of them at any time. This is the equivalent of giving every employee in the company root access to every system — something no competent IT organization would do, but something we routinely do with AI agents because the tooling defaults to full access.

Explicit capability sealing — defining exactly which tools an agent can access for a given task, and revoking access to everything else — is table-stakes security practice. It is also the single most effective mitigation against the class of exploit that hit Claude Desktop.

What production-grade agent infrastructure actually requires

The future of AI agent infrastructure is not more autonomy. Every serious enterprise deployment we have built over the past twelve years — in nuclear power, surgical AI, military systems, and enterprise operations — has reinforced the same set of requirements:

Explicit capability sealing

Define what each agent can do, enforce it at the infrastructure level, and deny everything else by default. Capabilities should be scoped per task, not per agent. The same agent performing different tasks should have different capability profiles.

Least-privilege execution

No agent gets more access than it needs. Privileges are granted for specific operations and revoked when the operation completes. The default state is no access, not full access.

Human-in-the-loop escalation

When an operation exceeds the agent’s authorized scope, execution pauses and a human reviews the request. This is not a UX inconvenience — it is a security control. The escalation should include full context: what the agent wants to do, why it wants to do it, and what the consequences of approval or denial would be.

Auditable decision logs

Every request, every policy evaluation, every approval or denial is logged in a tamper-evident audit trail. When something goes wrong — and in production, things always eventually go wrong — the organization needs to reconstruct exactly what happened, what decisions were made, and whether the governance layer functioned as designed.

Fail-closed design

When the governance layer encounters an ambiguous request, an unexpected state, or a policy gap, the default behavior is to deny the request. Fail-closed is the opposite of what most agent frameworks do today, where the default is to allow execution and hope the LLM makes reasonable choices. In production systems where the stakes are real, hope is not an engineering strategy.

The protocol is not the problem

MCP standardizes how agents call tools. That standardization is valuable — it means agents can work with any tool that implements the protocol, and tool developers can build once and support any compliant agent. Standardization is how ecosystems scale.

But standardization without governance is standardized risk. A universal protocol for tool invocation, deployed without a universal policy for tool authorization, produces a universal attack surface. The calendar exploit was the first high-profile demonstration of this gap. It will not be the last.

The solution is not to abandon MCP or retreat from agentic AI. The solution is to build the governance infrastructure that should have been there from the beginning. Every agent framework needs a deterministic execution boundary. Every tool invocation needs policy evaluation. Every chain needs cumulative risk assessment. Every deployment needs least-privilege scoping and fail-closed defaults.

This is not theoretical. It is how we build every system we ship at DAS Labs. We have built AI governance into surgical systems where a failure means patient harm, into nuclear environments where a failure means reactor safety incidents, and into defense applications where the stakes are national security. The principles are the same whether the agent is performing surgery or reading your calendar: agents request execution, governance evaluates it, and the policy — not the model — decides what runs.

Autonomy without governance is not innovation. It is liability.

Book a 15-min call →

← Back to all posts
Keep reading

More field notes.

Bold thinking, dynamic solutions

Have a problem worth
solving with AI?

Tell us what you're trying to do. We'll tell you honestly whether AI is the right tool — and if it is, how we'd build it.