Linux
bubblewrap
unprivileged user namespaces

Verified on real hardware
Warden is featured on Product Hunt
Vote for usv0.1.17Sandbox runtime for MCP servers
Warden runs MCP servers in a restricted sandbox. Only the files, hosts, and env vars you explicitly grant are visible. Everything else is denied by default.
npm install -g warden-sandbox-cliNo daemon · Linux · macOS · Windows
Watch the sandbox enforce a policy in real time
Live boundary demo
An agent asks for a file, a host, a secretand the protocol happily complies. Pick a request, flip the switch, and watch Warden verdict every call at the boundary.
AI agent
mcp client
fs.read
WARDEN
./workspace
granted
./workspace/data.json
● evaluating fs.read at the boundary…
Audit log
agent connecting…
0
allowed
0
denied
0
exposed
How it works
No code changes, no SDK. Write the grants, run Warden, everything else disappears.
01
Write a policy
warden.yaml lists every grant
02
Run Warden
warden run --policy warden.yaml
03
Stay sandboxed
denied calls fail · all logged
1command: ["node", "server.js"] 3filesystem:4read: ["./data"]5write: ["./output"] 7network:8allow: ["api.github.com"] 10env:11allow: ["GITHUB_TOKEN"] 13limits:14memory_mb: 51215timeout_s: 300Hover a grant to locate it in the file
Sandbox backends
Warden picks the strongest backend your OS supports automaticallythe same policy file works everywhere.
bubblewrap
unprivileged user namespaces

Verified on real hardware
sandbox-exec
with Docker fallback

CI-verified · hardware run pending
AppContainer + WFP
Job Objects · ETW audit

CI-verified escape tests
Fail-closed by default. If no backend can be applied correctly, Warden refuses to run unsandboxed rather than falling back silently.
Guarantees
Six hard invariants, each verified by escape tests that confirm the sandbox actually prevents the access it claims to block.
Warden refuses to start without a valid sandbox backend. If enforcement can't be verified, the server never runs.

Reproduce itcontrol must land unsandboxed, be contained sandboxed:
We publish only claims backed by committed test fixtures and source code. Every run confirms containment host-sidecollector logs, vault hashes, escape probesand writes evidence files. See the attack harness.
Live demo · rendered in React
A Warden sandbox from the inside: the policy grants are applied, a granted call succeeds, and everything outside the grant is stopped at the boundary and written to the audit log.
$ ▌
24s loop · click the stage or scrub the timeline
From install to a sandboxed server in four steps. No daemon, no config files beyond the policy, no changes to your existing MCP setup.
Install the CLI globally via npm. Works on Linux, macOS, and Windows.

Every item below ships in the CLI today and is covered by the test suite. Nothing on this page is a roadmap promisethat list lives separately, labeled as roadmap.
Deny-by-default read/write grants. Anything unlisted is invisiblenot merely unreadable.

The Windows backend stacks four OS-native primitives so each sandboxed MCP server gets exactly the access its policy allows — no more, no fallback, no silent escalation.
Every sandboxed process runs under a LowBox token that denies all filesystem, network, and environment access by default. The token is the hard boundaryno syscall can cross it.

Every server ships with the exact policy it needed, pinned as a regression fixtureso an update can't silently break what used to work.
Read the full compatibility matrixFilesystem, GitHub, Slack, Postgres, SQLite, Brave Search, Drive, Git + more
Fetch and Kubernetesneed per-deployment hosts
Docker socket and Playwright wildcards can't be sandboxed honestly

One policy, every layer. Filesystem, network, environment, and audit are enforced togetherthe same policy shape protects all 18 servers.
I built Warden to sandbox MCP servers, then gave AI a scenario to break out. On Linux 8/8 proof-harness steps held; on Windows 5/5 attack scenarios were blocked. Here's the evidence.
Read article →Warden makes ungranted paths invisible instead of unreadable — bind mounts, not permission bits. Why invisibility is the stronger boundary, and how it's tested.
Read article →14 pass, 2 conditional, 2 fail — the full compatibility matrix for running real-world MCP servers under Warden, with pinned policies and honest failure classifications.
Read article →That's the real testnot the one that already trusts you.
View on GitHub