Windows Sandbox MCP

io.github.fmueckePublished by GitHub account fmueckev1.0.0Updated Nov 7, 2026

Run risky commands in a disposable, offline Windows Sandbox (Windows only, needs a one-time setup).

VerifiedSTDIODesktop onlyDeveloper ToolsSecurity & Monitoring

Overview

AI-generated overview

Runs risky commands inside a disposable, offline Windows Sandbox guest, isolated from the rest of the host, on Windows only.

What you can do
  • Start a fresh sandbox guest, optionally mapping an input folder read-only and an output folder writable
  • Run commands in the guest as system or user, both elevated, and read results from the output folder
  • Check the running state, sandbox id and mapped folders
  • Stop and discard the guest, which also happens on disconnect, idle timeout or broker exit
When to use it
Useful when an assistant needs to execute untrusted or potentially destructive commands, scripts or downloads without exposing the host machine, and when results can be exchanged through mapped input and output folders.
Requirements
Windows 11 24H2 or later with Windows Sandbox enabled, a one-time admin install and setup, and two accounts: the interactive user running a broker and a separate agent account running the MCP proxy. The release build is self-contained, so no .NET is needed.
Before you install
The broker runs with the interactive user's rights, so the program must live in a location only admins or that user can write to; setup and serve refuse unsafe locations. Commands run elevated in the guest, and the guest has no network access. Only one session can connect at a time, and the guest is discarded on stop, disconnect or idle timeout.

Installation

In SourceWeft

  1. Open Windows Sandbox MCP in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

Windows Sandbox MCP

MCP server that lets a restricted agent run risky commands in a fresh, offline Windows Sandbox guest, without access to anything else on the host. Design and validated wsb.exe behaviour: SPEC.md. Reporting vulnerabilities: SECURITY.md.

wsb-mcp is the name of the executable, the project and the solution.

Agent host ──stdio──> wsb-mcp proxy ──named pipe──> wsb-mcp serve ──> wsb.exe           (agent account)        (ACL: agent only)  (your account)

Tools

ToolPurpose
sandbox_startStart a guest; optionally map inputPath read-only at C:\SandboxIn and outputPath writable at C:\SandboxOut.
sandbox_execRun a command (runAs system or user, both elevated). Returns the guest exit code only; redirect output to files in C:\SandboxOut.
sandbox_statusRunning state, id, mapped folders.
sandbox_stopStop and discard the guest.

The guest is also stopped when the agent disconnects, after the idle timeout, and when the broker exits.

Build and test

powershell
dotnet builddotnet run --project tests/WsbMcp.Tests          # all tests, optional name filter as argumentpwsh -NoProfile -File tests/WindowsSandboxTest.Tests.ps1   # psm1 tests

The tests use a fake wsb.exe and do not need Windows Sandbox.

Installation

Two accounts are involved:

  • You: the interactive user, who runs the broker.
  • The agent: for example AgentSandbox, which runs Claude Code and the proxy.

Requirements: Windows 11 24H2 or later, with Windows Sandbox enabled. To enable it, run this as admin and reboot:

powershell
Enable-WindowsOptionalFeature -Online -FeatureName Containers-DisposableClientVM -All

The release build is self-contained, so no .NET is needed.

Quick start

  1. Install the program (admin; installs below C:\Program Files):
    powershell
    winget install fmuecke.WsbMcp --scope machine
  2. Set up the broker. Run this as you, in a normal terminal, not elevated:
    powershell
    wsb-mcp setup --agent AgentSandbox --root C:\AgentSandbox
    • --root is the folder below which the agent may map folders into the sandbox.
    • setup checks the prerequisites, writes the config, and registers a logon task that starts the broker hidden in your desktop session.
    • It then starts the broker and prints the next step.
  3. Connect Claude Code. As the agent, in Claude Code:
    /plugin marketplace add fmuecke/windows-sandbox-mcp/plugin install wsb-mcp@windows-sandbox-mcp
    The plugin adds the four tools plus a skill that teaches Claude how to use them. Without plugins, use this instead: claude mcp add --scope user wsb -- wsb-mcp proxy.

Check everything with wsb-mcp diag, run as you or as the agent. If the broker isn't running, the tools say so and tell you what to run. Once it's running, the next call works without restarting Claude Code.

Commands

CommandRun asPurpose
wsb-mcp setup --agent <account> --root <dir> [--pipe <name>] [--no-autostart] [--force]you (not elevated)One-time setup: config, logon task, start.
wsb-mcp start / wsb-mcp stopyouStart the broker now / stop it (and its guest) gracefully.
wsb-mcp diagyou or the agentCheck each link of the chain, with a fix for each failure.
wsb-mcp uninstall [--keep-config]youStop, then remove the logon task, config and log.
wsb-mcp serve [--config <path>]youRun the broker in the foreground; Ctrl+C stops it.
wsb-mcp proxy [--pipe <name>]the agent's MCP hoststdio bridge to the broker; you never run this yourself.

The config is %LOCALAPPDATA%\wsb-mcp\config.json. setup writes the first three keys; the others are optional:

json
{  "agentAccount": "AgentSandbox",  "allowedRoot": "C:\\AgentSandbox",  "pipeName": "wsb-mcp",  "idleTimeoutMinutes": 30,  "maxExecTimeoutSeconds": 1800,  "startupTimeoutSeconds": 120,  "logPath": "%LOCALAPPDATA%\\wsb-mcp\\broker.log"}

Unknown keys are rejected. wsbPath overrides wsb.exe, for tests.

Why the location matters

The broker runs with your rights. If anyone else could replace its exe, they could run code as you. So serve and setup refuse to run if anyone other than SYSTEM, Administrators, TrustedInstaller or you could do one of the following:

  • change the exe;
  • add files next to it;
  • rename or re-permission any folder on its path.

The winget install below C:\Program Files passes by default. The broker also refuses a config or log inside allowedRoot.

Agent accounts with managed Claude Code settings

If C:\Program Files\ClaudeCode\managed-settings.json restricts MCP servers, admin changes are needed:

  • strictKnownMarketplaces: add this repository's marketplace, for /plugin marketplace add.
  • allowedMcpServers: add { "serverCommand": ["wsb-mcp", "proxy"] }, the command the plugin runs.
  • strictPluginOnlyCustomization containing "mcp": only the plugin route works. Alternatively, define the server centrally in C:\Program Files\ClaudeCode\managed-mcp.json:
    json
    { "mcpServers": { "wsb": { "command": "wsb-mcp", "args": ["proxy"] } } }

Symptom of a blocking policy: /mcp shows "No MCP servers configured".

Without winget

Download the zip for your architecture from the Releases page. CI builds and tests it from its tag, and GitHub signs its build provenance. Verify the zip, and extract it into a folder only admins (or you) can write:

powershell
$zip = "$env:USERPROFILE\Downloads\wsb-mcp-<version>-win-x64.zip"gh attestation verify $zip --repo fmuecke/windows-sandbox-mcp$dir = "$env:ProgramFiles\wsb-mcp"            # as adminExpand-Archive $zip -DestinationPath $dir -Force

Then run & "$dir\wsb-mcp.exe" setup ... as in step 2. For the Claude side, setup prints the full exe path to use. SHA256SUMS.txt only detects a damaged download. It does not prove who built the zip; the attestation does.

From source: build a reviewed commit in a clone the agent cannot modify, for example with dotnet publish src/WsbMcp -c Release -r win-x64 -o $dir. That needs the .NET 10 SDK and NuGet access. Never build in a checkout the agent can write, such as one below C:\AgentSandbox.

Verify against the real sandbox

As the agent account, with the broker running:

powershell
pwsh -NoProfile -File tests\smoke\real-smoke.ps1 -ProxyExe (Get-Command wsb-mcp).Source -HoldForCtrlC

It runs 22 checks (19 without -HoldForCtrlC):

  • folder rules
  • read-only input
  • no network
  • exit codes
  • runAs: user
  • timeout
  • stop on disconnect

At the end it asks you to stop the broker (wsb-mcp stop) and checks that the tools then return the offline hint. Afterwards wsb list must show no sandbox.

Update

Windows locks the exe while the broker runs, so stop it first:

powershell
wsb-mcp stopwinget upgrade fmuecke.WsbMcp     # adminwsb-mcp start

Troubleshooting

Start with wsb-mcp diag. Common cases:

SymptomCause / fix
Tool error "The wsb-mcp broker is not reachable"The broker isn't running (wsb-mcp start), was never set up (wsb-mcp setup), or another session is connected (one at a time).
/mcp: "No MCP servers configured"A managed policy blocks the server. See "Agent accounts with managed Claude Code settings".
setup / serve: "not in a safe location" / "refusing to serve"The exe is in a folder others can write to. Install with winget or below C:\Program Files.
The broker log shows client.rejectedThe connecting account is not agentAccount, or it connected anonymously.
serve: "The stop event … already exists"A broker is already running, or another process created the event. Run wsb-mcp stop, or sign out and back in.
Rule 4 rejects a folder you think is fineThe agent lacks list (input) or create-file (output) rights on that exact folder. Check with icacls.
runAs: user fails with "No user session"The broker isn't running in your interactive desktop session. Use the logon task, not a service.

Uninstall

powershell
wsb-mcp uninstall                 # as you: task, config, logwinget uninstall fmuecke.WsbMcp   # admin

In Claude Code, as the agent: /plugin uninstall wsb-mcp (or claude mcp remove wsb).

License

MIT - Florian Mücke, 2026

Source: README.md at commit 768b6a1

Tools

0
SourceWeft started this package once in an isolated sandbox, without credentials, to list its tools. That failed: the package type cannot run in the sandbox.

Version history

1
  1. v1.0.0LatestNov 7, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts