MXC - a sandboxed code execution system
Summary
Microsoft 开源了 MXC(Microsoft eXecution Container),一个用于在 Windows、Linux 和 macOS 上沙箱化运行不可信代码(模型输出、插件、工具)的系统,提供多种隔离后端和 Rust/.NET/Node SDK。
View Cached Full Text
Cached at: 10/09/26, 09:21 AM
microsoft/mxc
Source: https://github.com/microsoft/mxc
Microsoft eXecution Container (MXC)
MXC is a sandboxed code execution system for running untrusted code (model output, plugins, and tools) on Windows, Linux, and macOS. It provides multiple containment backends, from OS-native process sandboxes to full VMs, behind a unified containment model and typed SDKs.
Features
- Cross-platform: Windows, Linux, and macOS support with platform-appropriate containment backends
- JSON-based configuration: Versioned container-creation requests and security policies
- Multiple containment backends: ProcessContainer, Windows Sandbox, LXC, Bubblewrap, Seatbelt, MicroVM (Nanvix), Hyperlight, IsolationSession, and WSLC
- Policy-driven sandboxing:
- Filesystem policy: Read-only, read-write, and denied path lists
- Network policy: Proxy support, outbound controls, and backend-dependent host filtering
- UI policy: Clipboard, display, and GUI access controls
- State-aware lifecycle: Provision, start, execute, stop, and deprovision persistent containers
- Rust, .NET, and Node SDKs: Versioned APIs for one-shot and state-aware execution
- Diagnostics: Tools to understand access-denied failures in a container
What is MXC?
MXC is an SDK dependency that builds into your app.
flowchart LR
App["Your application<br/>Launch API"] --> SDK["MXC SDK<br/>Rust / .NET / Node<br/>(in process)"]
SDK --> Backend["Selected backend<br/>(in process)"]
Backend --> Container["Isolated workload<br/>ProcessContainer / WSLC / Bubblewrap / ..."]
Your application specifies:
- The container type
- The containment rules
- The workload command
MXC validates the request, selects the backend, and launches the workload in the resulting container.
What container types are supported?
MXC runs workloads through platform-appropriate container backends on Windows, Linux, and macOS.
| Runtime platform | Default backend | Other backends | Minimum host OS |
|---|---|---|---|
| Windows 11 x64 / ARM64 | processcontainer | windows_sandbox*, wslc, microvm*, hyperlight*, isolation_session | Windows OS-version support |
| Linux x64 / ARM64 | bubblewrap | lxc, microvm, hyperlight | - |
| macOS ARM64 / x64 | seatbelt | - | - |
* These backends are experimental.
How do I use MXC?
Install an SDK through your package manager. You do not need to clone this repository.
| SDK | Package |
|---|---|
| Rust | https://crates.io/crates/mxc-sdk |
| .NET | https://www.nuget.org/packages/Microsoft.Mxc.Sdk |
| Node | https://www.npmjs.com/package/@microsoft/mxc-sdk |
The Node and .NET packages include the native runtime assets. The Rust crate builds the MXC SDK, engine, and selected backends into the consuming application.
Non-SDK consumption: Platform-specific executor binaries, such as
wxc-exec.exe, accept JSON container-creation requests defined by the
stable schema. Use for testing or when the
SDK cannot be embedded in your app.
Running a contained workload
For complete SDK samples, see the Rust, .NET, and Node samples.
Sample Node snippet
import { spawn, type ContainerRequest } from '@microsoft/mxc-sdk/v1';
const request: ContainerRequest = {
command: 'node -e "console.log(\'hello from container\')"',
network: { egress: { default: 'deny' } },
timeoutMs: 30_000,
};
const child = await spawn(request);
See the runnable streaming standard-I/O sample and the SDK API reference.
My application won’t run in the sandbox!
Your application will hit access issues when running in a sandbox, until you’ve had time to tune your containment rules. We’re here to help.
Debug console mode
Native executors normally reserve standard input, output, and error for the
workload. Use --debug for MXC diagnostic output:
wxc-exec.exe --debug config.json
See MXC diagnostics for the complete developer reference.
Audit mode
Warning:
--auditturns off all sandbox security for the workload being analyzed. Never use it to run untrusted code.
Audit mode helps a policy author find access-denied failures and reconstruct a ProcessContainer policy that grants the files and capabilities a trusted tool actually needs. On supported Windows releases, run:
wxc-exec.exe --audit policy.json
MXC records the observed accesses and produces policy-authoring artifacts. See logging access denied for safe deny-and-record diagnostics, audit outputs, and supported workflows.
Telemetry
Official Microsoft builds can send optional diagnostic telemetry to Microsoft. Telemetry is off unless the individual run opts in, the Windows user has explicitly consented, administrative policy permits collection, and your application enables the telemetry option in a contained workload request. An administrator can block telemetry but cannot grant consent for the user.
Local open-source builds are not configured to route telemetry to Microsoft, and telemetry is a no-op on non-Windows platforms. See telemetry policy and consent for controls and privacy details.
Building from source
Build from source when developing MXC, changing the native runtime, or using the standalone executor binaries instead of a packaged SDK. Repository builds produce the platform-native runtime and executors and stage the native assets used by the Node SDK.
Build prerequisites are:
- Rust, pinned to version 1.93 by
src/rust-toolchain.toml - Node.js 24 or later and npm
- The platform toolchain and prerequisites described by the selected backend
Build
Windows
build.bat --all # Release build for current architecture
Linux
./build.sh --all # Release build
macOS
./build-mac.sh --all # Release build for native architecture
Documentation
Consumer documentation
| Document | Repository location | Purpose |
|---|---|---|
| SDK samples | samples/ | Runnable Rust, .NET, and Node scenarios |
| SDK API reference | docs/api-reference/ | Supported V1 operations and types |
| Container lifecycle | docs/container-lifecycle.md | Persistent container lifecycle overview |
| Logging access denied | docs/logging-access-denied.md | Diagnose blocked accesses and author policy |
| Telemetry | docs/telemetry.md | Consent and administrative controls |
| Backend guides | docs/backends/ | Platform and backend prerequisites and behavior |
Repository contributors should start with the MXC development documentation.
Contributing
See CONTRIBUTING.md for contribution guidelines.
License
See LICENSE.md for details.
Similar Articles
Mxc: Microsoft Execution Containers version 1.0.0
Microsoft 通用发布了 Microsoft Execution Containers (MXC) 1.0.0,这是一个策略驱动的执行容器层,用于在 Windows 上对 AI 代理的文件、网络和应用访问进行运行时隔离与管控,防止代理越权操作。
@AravSrinivas: While sandboxes are a commodity, serving millions of them under production-grade traffic requires a lot of detail to sc…
Perplexity 开源了其沙箱平台 SPACE(Sandboxed Platform for Agentic Code Execution),该平台基于 Firecracker 微虚拟机,为 Perplexity Computer 上运行的所有智能体提供隔离的代码执行环境,支持通过 HTTP API 管理沙箱生命周期。
@gerhart_x: "NVX is an ultra-light micro-VM sandbox for running untrusted workloads with hardware-enforced isolation. It is built o…
Microsoft has open-sourced NVX, an ultra-light micro-VM sandbox for running untrusted workloads with hardware-enforced isolation, built on OpenVMM with Linux as guest and support for KVM, MSHV, and Windows Hypervisor Platform.
WSL containers, Coreutils for Windows, and agents
Microsoft announces new developer features for Windows at Build 2026, including Coreutils for Windows, WSL containers, an Intelligent Terminal, and the Microsoft Execution Containers (MXC) SDK for secure agent execution.
@QingQ77: An open-source project written in Rust and C that uses JIT compilation to run Linux containers directly on macOS. https://github.com/ricccrd/dd It does not require a VM, hypervisor, or Linux kernel, but instead…
dd is an open-source tool written in Rust and C that runs Linux containers on macOS without a VM by using JIT compilation to translate container instructions and handle syscalls in userspace. It implements the Docker Engine API, supports arm64 and x86-64 Linux images, and offers performance comparable to or better than VM-based solutions.