Warden is featured on Product Hunt

Vote for us

v0.1.17Sandbox runtime for MCP servers

Give MCP servers a sandbox, not your filesystem.

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.

install
$npm install -g warden-sandbox-cli

No daemon · Linux · macOS · Windows

Watch the sandbox enforce a policy in real time

Live boundary demo

MCP has no concept of a boundary.

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.

ENFORCING

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

One file describes exactly what a server can touch.

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

warden.yaml
1command: ["node", "server.js"] 3filesystem:4read: ["./data"]5write: ["./output"] 7network:8allow: ["api.github.com"] 10env:11allow: ["GITHUB_TOKEN"] 13limits:14memory_mb: 51215timeout_s: 300

Hover a grant to locate it in the file

Sandbox backends

One policy, three sandboxing backends.

Warden picks the strongest backend your OS supports automaticallythe same policy file works everywhere.

Verified

Linux

bubblewrap

unprivileged user namespaces

Linux backend architecture with bubblewrap sandboxing

Verified on real hardware

In progress

macOS

sandbox-exec

with Docker fallback

macOS security architecture with Seatbelt sandboxing

CI-verified · hardware run pending

Verified

Windows

AppContainer + WFP

Job Objects · ETW audit

Windows backend architecture with AppContainer, WFP and ETW

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

It blocks attacks by design, not by accident.

Six hard invariants, each verified by escape tests that confirm the sandbox actually prevents the access it claims to block.

Guarantees
Step 1 of 6
Startup decision flow: no valid backend means the process refuses to run

Fail-closed by default

Warden refuses to start without a valid sandbox backend. If enforcement can't be verified, the server never runs.

01/06
Escape tests7/7 containedLinux · Arch x86_64 · real hardware
  • PASSread grants accessible
  • PASSunlisted paths invisible
  • PASSwrite grants writable
  • PASSwrites outside grants denied
  • PASSexit codes propagated
  • PASSenvironment passthrough filtered
  • PASSfail-closed without bwrap
  • PENDINGmacOS (Seatbelt)unit tests pass; real-machine escape tests require macOS hardware

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

Watch it enforce a policy.

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.

warden-demo · rendered in React · 24s loopScene 1/4

$

0:00.0 / 0:24.0

24s loop · click the stage or scrub the timeline

How to use Warden.

4 commands · 2 minutes

From install to a sandboxed server in four steps. No daemon, no config files beyond the policy, no changes to your existing MCP setup.

Quick Start
Step 1 of 4
Installing the Warden CLI in a terminal

Install Warden

Install the CLI globally via npm. Works on Linux, macOS, and Windows.

01/04

What's supported.

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.

Capabilities
Step 1 of 8
Filesystem capabilities architecture with deny-by-default grants

Filesystem

Deny-by-default read/write grants. Anything unlisted is invisiblenot merely unreadable.

01/08

Windows: four layers, one boundary.

v0.1.6

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.

Windows Layers
Step 1 of 4
Windows AppContainer token security boundary

AppContainer Token

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.

01/04
Compatibility

Tested against 18 real servers, not just our own fixtures.

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 matrix

14 pass

Filesystem, GitHub, Slack, Postgres, SQLite, Brave Search, Drive, Git + more

2 conditional

Fetch and Kubernetesneed per-deployment hosts

2 faildocumented

Docker socket and Playwright wildcards can't be sandboxed honestly

Security architecture across filesystem, network, and environment layers

One policy, every layer. Filesystem, network, environment, and audit are enforced togetherthe same policy shape protects all 18 servers.

Try it against a server you didn't write.

That's the real testnot the one that already trusts you.

View on GitHub