Infrastructure Review Stack

Multi-Tenant Sandbox Isolation for AI Agent Platforms

Containers alone won't stop AI agents from leaking data or escaping to neighboring tenants.

Correspondent · · 11 min read
Cover illustration for “Multi-Tenant Sandbox Isolation for AI Agent Platforms”
Choosing a Sandbox for AI Agents · September 8, 2026 · 11 min read · 2,489 words

Multi-tenant AI agent platforms have an isolation problem traditional SaaS never had to solve. When an agent generates and runs code at inference time, based on a prompt the platform never saw coming, every tenant's workload becomes a potential threat to every other tenant sharing that infrastructure. This piece walks through why that's true, why containers alone don't close the gap, what the actual isolation options guarantee, and how the boundary needs to extend well past the compute layer.

The specific failure modes shared execution environments create for tenants

Start with the plainest failure mode: resource exhaustion. Co-located workloads on shared hardware show measurable performance interference, with degradation in the range of 5 to 50% just from neighboring processes competing for the same CPU cache, memory bandwidth, and I/O queues. One tenant's runaway loop becomes every other tenant's latency spike. That's true in ordinary cloud computing too, but it gets worse with agents, because an agent can write the infinite loop itself, in code nobody reviewed before it ran.

The second failure mode is sharper: kernel exploit propagation. Containers on the same host share one kernel. A vulnerability in that kernel doesn't stay contained to the tenant whose workload triggered it, it reaches every neighbor on the node. CNCF's analysis of the November 2025 runc breakouts said as much directly: these bugs "could be abused in real-world setups where a user can run a container from a malicious or compromised image," and flagged multi-tenant environments where users define their own containers as exactly the kind of setup that's at risk. That's not a hypothetical aimed at some other industry. That's a description of what an agent platform is.

Third: data leakage across process boundaries, which shows up in a spot most security reviews skip over. Agent platforms lean on vector databases for long-term memory, retrieval, and context. Mix embeddings from different tenants into a single index, and you get semantic leakage, one tenant's query returning fragments shaped by another tenant's data, even with zero kernel-level flaw involved. The isolation failure happens entirely inside the application logic, invisible to whatever container or VM boundary sits underneath it.

Layer credential exposure on top of that. Agents typically run with API tokens and environment variables sitting nearby: auth tokens, payment keys, database credentials. Without a hard boundary around that sandbox, a compromised agent doesn't just leak data, it can read its own environment and start acting as the platform's own infrastructure. And the industry survey data on this isn't reassuring: a CSA/Zenity study from 2026 found 53% of organizations report AI agents exceeding their intended permissions. That's over half of deployed agents running with more access than anyone meant to grant them, which means a sandbox flaw that would otherwise stay small gets amplified by the very permission structure surrounding it.

There's a concrete case study here worth sitting with. CVE-2024-21626, nicknamed Leaky Vessels, affected runc versions 1.1.11 and earlier. A crafted Dockerfile could set the WORKDIR to a path like /proc/self/fd/[N], referencing a leaked host file descriptor that resolves back to the host filesystem, enabling directory traversal straight out of the container. That's not an exotic attack requiring nation-state resources. It's a bug in a Dockerfile field.

And the ground is shifting under all of this. Frontier model performance on apprentice-level cybersecurity tasks went from under 10% success in late 2023 and early 2024 to around 50% in 2025. Sandbox designs built around what models could do a year and a half ago may already be undersized for what they can do now. Combine that trajectory with survey findings that 80% of organizations have already hit improper data exposure or unauthorized access from AI agents, and the pattern isn't abstract risk. It's already happening, just usually contained (so far) to single tenants. In a shared execution environment, that containment stops being guaranteed.

Why standard containers are not an adequate isolation boundary for agent workloads

Docker containers isolate through Linux namespaces and cgroups, which is a real boundary, just not the boundary most people assume it is. Every container on a host still shares that host's kernel. The isolation lives inside the kernel itself, which means the kernel is also the single point every tenant's workload touches at once. Kubernetes' own documentation is blunt about this, describing containers as offering "a weaker isolation boundary" than hardware-based virtual machines. That's not a criticism from an outside skeptic, it's the orchestration layer's own maintainers being honest about what they built.

History backs up the caution. runc, the low-level container runtime underneath Docker and most of the container ecosystem, has produced high-severity escape vulnerabilities more than once: CVE-2019-5736 and the CVE-2024-21626 case discussed above. Each of those disclosures opened a window where a process inside a container could reach the host, or reach a neighboring container. An agent doesn't need to be trying to exploit that window deliberately. A model chasing an unusual code path, or a prompt that happens to nudge it toward filesystem operations nobody anticipated, can stumble into the same crack a deliberate attacker would look for.

The deeper issue is a mismatch of assumptions. Containers work well when the platform wrote and reviewed every job that runs inside them, background workers, scheduled tasks, internal pipelines. Those workloads can be scoped tightly because someone already knows what they do. Code an LLM generated seconds ago from a customer's prompt can't be pre-audited in that way; there's no version of code review that happens between generation and execution fast enough to matter. Resource limits don't fix this either. CPU and memory cgroups control how much of the host a container can consume, but that's a resource governance property, not a security isolation property. A kernel exploit doesn't care how tightly memory is capped.

None of this makes containers obsolete. For trusted, platform-written jobs, internal workloads, scheduled maintenance tasks, containers remain a sensible, cheap, fast option. The mistake is reusing that same boundary for workloads where the code itself is the threat.

The isolation technology options and what each one actually guarantees

Diagram: Four Isolation Tiers: What Each One Actually Guarantees. Visualizes: Show four isolation approaches as a ranked spectrum from weakest to strongest boundary, with their key specs.

Four approaches dominate here, and they differ mainly in where the isolation boundary actually sits and what an attacker has to defeat to get past it.

Standard containers sit at the process level, sharing the host kernel. Boot time is measured in milliseconds, which is their real strength. They stop basic process interference and filesystem separation between well-behaved workloads, but they don't stop a kernel exploit from crossing tenant lines, and they're not the right tool for arbitrary AI-generated code running alongside other tenants.

gVisor moves the boundary up to the syscall level. Its Sentry process intercepts syscalls in user space, so only a narrow, vetted subset ever reaches the actual host kernel, shrinking the attack surface considerably compared to a standard container. Boot time stays in the millisecond range, though I/O-heavy workloads take a performance hit, somewhere in the range of 10 to 30% overhead depending on the workload. gVisor sits between containers and full VMs on the isolation spectrum, which makes it a reasonable fit for compute-heavy AI workloads and CI/CD pipelines where the threat model is moderate but full VM isolation isn't operationally justified.

Firecracker microVMs push the boundary down to hardware. Each workload gets its own guest kernel, enforced through KVM, meaning an attacker has to defeat both the guest kernel and the hypervisor to reach the host or another tenant. What used to make this option a non-starter, boot latency and memory overhead, has largely evaporated: Firecracker boots in around 125 milliseconds, carries less than 5 MiB of memory overhead per VM, and can spin up as many as 150 VMs per second on a single host. Those numbers matter because they remove the old argument against VM-per-tenant designs; a dedicated kernel no longer costs seconds of startup time or gigabytes of memory. AWS made this exact call for its own agent product: Bedrock AgentCore runs each user session inside a dedicated microVM, with isolated CPU, memory, and filesystem per session. For multi-tenant AI agent execution running genuinely untrusted code in production, this is the tier built for the job.

Kata Containers deliver the same hardware-level isolation as Firecracker but wrap it in standard container APIs, orchestrating Firecracker, Cloud Hypervisor, or QEMU underneath. Boot time runs around 200 milliseconds. From Kubernetes' point of view, it looks like an ordinary container; underneath, it's a full VM. That combination fits regulated industries running production Kubernetes that need VM-grade security without abandoning existing container workflows.

Two more options round this out, each with narrower scope. V8 Isolates virtualize the JavaScript runtime itself rather than a kernel or hardware layer; each isolate gets its own heap and global scope with no memory crossover, and startup is close to instant since there's no OS to boot at all. But the scope is narrow by design: this only works when the agent's execution is JavaScript or WASM, not a general answer for polyglot workloads. And Microsoft LiteBox, a Rust-based Library OS introduced in February 2026 that leans on AMD SEV-SNP confidential computing for a lighter-than-VM footprint, is still experimental. It's worth watching, but it doesn't yet have the production track record that Firecracker has accumulated through years of hardening in production environments.

The choice among these isn't about picking the "best" one in the abstract. It comes down to two questions: who controls the code being executed, and what does the workload actually need, in terms of latency budget, kernel dependencies, and GPU access. Defaults inherited from general-purpose container infrastructure answer neither question.

How to structure tenant boundaries across the full execution stack, not just the compute layer

Compute isolation is the floor. It is not the whole building. A tenant running inside a dedicated microVM still shares network paths, storage backends, and secret stores with everyone else on the platform, unless those get scoped per tenant too. So what does that scoping actually look like in practice?

Start with the network. Each tenant's agent should run on its own isolated network, disconnected from other agents sharing the host. Route all outbound traffic through an allowlist proxy, and reject arbitrary outbound connections by default, which closes off the most obvious paths for data exfiltration and lateral movement between tenants. Dedicated egress gateways per tenant push this further, offering a stronger degree of network-level separation. The broader container ecosystem, including projects under the CNCF umbrella, reflects a growing recognition that network isolation is its own layer, distinct from compute.

Filesystem and storage need the same treatment. Scope filesystem access to a single worktree holding only the data that specific agent is supposed to touch, not a shared volume the platform manages with row-level permissions bolted on afterward. Vector databases deserve particular attention here, since tenant-level index separation is the only real fix for the semantic leakage problem raised earlier. And there's a structural gap worth naming directly: traditional web apps check permissions at the API layer, but AI agents use tools to search across file repositories. If that search tool isn't constrained to the tenant's own workspace, the agent effectively holds admin access to the entire knowledge base, regardless of what the API layer thinks it's enforcing.

Credentials get their own answer: proxy-based secrets injection, where the credential never actually sits inside the sandbox. The sandbox calls out through a proxy that holds the secret on its behalf. That single design choice eliminates the failure mode where a compromised agent simply reads its own environment variables and walks off with an API token or a database password.

Inside the microVM itself, defense-in-depth still matters. User namespace remapping so container root isn't host root. Every Linux capability dropped, privilege escalation disabled, resource limits set to stop fork bombs before they start. None of this is new advice, these have been documented best practices for years, treated by a lot of teams as optional hardening. But once the workload includes a reasoning system with shell access and unpredictable output, optional stops being an honest description.

Last piece: least-privilege enforcement at the permission layer itself. That CSA/Zenity figure of 53% of organizations reporting agents exceeding intended permissions isn't a one-off number, it points at over-permissioning as the normal condition rather than the exception. Scoping each agent's permissions to the minimum a given task requires, and treating those grants as temporary rather than something that persists quietly across sessions, closes the gap between what the sandbox enforces and what the agent is actually allowed to do once inside it.

Three architectural patterns for multi-tenant isolation and the tradeoffs each one accepts

Diagram: Three Architectural Patterns: Security vs. Cost. Visualizes: Show three multi-tenant isolation patterns plotted against two axes — isolation strength (blast radius) and cost/operational complexity.

Three patterns cover most of how this actually gets built, and each one trades cost against blast radius in a different place.

Fully siloed gives each tenant a separate stack end to end: separate compute, separate storage, and separate data backendskets. Nothing is shared at any layer, which makes this the strongest security boundary available. It's also the most expensive per tenant, and the operational cost compounds as tenant count grows, since every update, patch, and configuration change now needs to propagate across N separate stacks instead of one. This pattern fits regulated enterprise customers with contractual data residency requirements, HIPAA or GDPR obligations, where the cost is justified by the compliance stakes.

Fully shared with logical isolation goes the other direction: one shared compute pool, shared LLM endpoints, isolation enforced entirely at the application layer through RBAC and namespace separation. Cost per tenant is lowest here, and it's the easiest pattern to operate at scale. But it only holds up when the platform controls every line of code that runs, which is exactly the assumption agent workloads break. This is the model traditional SaaS was built on, and it's insufficient for agent platforms by definition, not by degree.

Hybrid tiered isolation sits between the two, and it's the pattern most production agent platforms seem to converge on as they grow. Customer-facing agents executing arbitrary AI-generated code run inside microVMs with dedicated kernels. Internal background jobs, scheduled tasks, and platform-written workloads run in ordinary containers, since nobody needs to defend against code the platform wrote itself. An orchestration layer classifies each workload at dispatch time and routes it to the right tier. The tradeoff here is operational complexity: that classification logic becomes a security boundary in its own right, and it has to be correct every time, because a misclassified workload lands in the wrong tier and inherits the wrong assumptions.

Across all three, one principle holds steady: the isolation boundary chosen sets both the security ceiling and the per-tenant unit economics at the same time. Weaker isolation costs less per tenant but leaves shared surfaces exposed to everyone on the host. Stronger isolation shrinks the blast radius down to a single workload, at a price. There's no version of this that avoids the tradeoff entirely, and any platform running agents at scale is making this choice already, whether or not it was made on purpose.

Sources

  1. How to sandbox AI agents in 2026: MicroVMs, gVisor & isolation strategies | Blog — Northflank
  2. Multi-tenant AI agent isolation for SaaS platforms
  3. The New Multi-Tenant Challenge: Securing AI Agents in Cloud-Native Infrastructure
  4. Multi-Tenant AI Agent Data Isolation | CockroachDB
  5. What is Tenant Isolation? Multi-Tenant AI Security
  6. cloudnativenow.com
  7. augmentcode.com
  8. aws.amazon.com

More in Choosing a Sandbox for AI Agents