微软开源MXC:给你的AI Agent套上安全沙箱,3分钟上手配置
一个真实的问题
你让AI Agent帮你整理项目文件,结果它把桌面上不相关的文件也删了。你让它调API拉数据,它顺手把.env里的密钥发到了外部服务。
这不是段子。过去一年,安全研究员反复证明了一件事:AI Agent越自主、越好用,搞砸事情的能力也越强。它们能打开文件、执行代码、发网络请求、操作其他软件——每一个动作都是潜在的安全漏洞。
微软在Build 2026上开源了MXC(Microsoft Execution Containers),试图解决这个问题。简单说就是:在操作系统层面画一个圈,Agent只能在圈里活动。
这篇文章带你从零跑通MXC的配置和使用。
MXC到底是什么
MXC是一套沙箱化代码执行系统,用来运行不受信任的代码——模型输出、插件、工具调用,都算。它在Windows、Linux、macOS三个平台都能用,后端从轻量级进程隔离到完整虚拟机都有,统一用JSON配置 + TypeScript SDK来管理。
GitHub仓库地址:https://github.com/microsoft/mxc
它的设计思路是两层分离:
- SandboxPolicy(安全策略):你写的,描述"Agent能干什么"
- ContainerConfig(容器配置):SDK自动生成的,描述"操作系统怎么执行限制"
你只管写策略,不用碰iptables、防火墙规则、cgroups这些底层东西。
各平台支持情况
| 平台 | 默认后端 | 其他可用后端 |
|---|---|---|
| Windows 11 24H2+ | processcontainer | windows_sandbox, wslc, microvm, hyperlight |
| Linux x64/ARM64 | bubblewrap | lxc, microvm, hyperlight |
| macOS ARM64/x64 | seatbelt | 暂无 |
Windows上的processcontainer、Linux上的bubblewrap是稳定后端,不需要开实验模式。其他后端(windows_sandbox、wslc、microvm、seatbelt)需要在配置里加 { experimental: true }。
macOS支持是0.6.0-alpha版本才加的,功能还比较有限,网络代理不支持。
安装和构建
前置条件:Rust工具链(自动锁定1.93版本)、Node.js ≥ 18、npm。
# 克隆仓库
git clone https://github.com/microsoft/mxc.git
cd mxc
# Linux构建
./build.sh
# macOS构建
./build-mac.sh
# Windows构建
build.bat
构建脚本会做三件事:编译平台对应的Rust二进制文件,把二进制文件复制到sdk/bin/目录下,编译TypeScript SDK。
SDK也可以直接从npm装:
npm install @microsoft/mxc-sdk
写你的第一个安全策略
MXC的策略是TypeScript对象,结构很直观。一个空策略 = 完全锁死:
import { spawnSandbox } from '@microsoft/mxc-sdk';
// 最严格模式:没有文件访问、没有网络、没有UI
await spawnSandbox("script.sh", { version: "0.5.0-dev" });
没写的字段默认都是"禁止"。这是MXC的安全保证——新版本加了新字段,老策略也不会因此多出权限。
下面是一个实际场景:让Agent只读当前项目目录,允许访问npm仓库,禁止操作剪贴板。
import { spawnSandbox } from '@microsoft/mxc-sdk';
const policy = {
version: "0.5.0-dev",
filesystem: {
readonlyPaths: ["/home/user/my-project"],
readwritePaths: ["/tmp/agent-workspace"],
tempDir: "isolated" // Agent用独立的临时目录
},
network: {
allowOutbound: true,
allowedHosts: ["registry.npmjs.org", "api.github.com"], // 只能访问这两个域名
},
ui: {
allowWindows: false,
clipboard: "none",
allowInputInjection: false
},
timeoutMs: 60000 // 60秒超时
};
await spawnSandbox("node agent.js", policy);
几个细节:
readonlyPaths和readwritePaths可以同时设,优先级是readwrite > readonlyallowedHosts设了之后,Agent只能访问列表里的域名,其他全部拦截tempDir: "isolated"会给Agent一个独立的临时目录,不跟宿主机共享timeoutMs到了直接杀进程,不等Agent"完成当前操作"
进阶用法:手动调配置
如果你需要更细的控制,可以先生成ContainerConfig,改完再启动:
import { createConfigFromPolicy, spawnSandboxFromConfig } from '@microsoft/mxc-sdk';
const policy = {
version: "0.5.0-dev",
filesystem: {
readwritePaths: ["/workspace"]
},
network: {
allowOutbound: true,
proxy: { builtinTestServer: true } // 用内置代理拦截所有流量
}
};
// 生成配置
const config = createConfigFromPolicy(policy, "process");
// 手动调整后端特定的参数
config.processContainer!.ui!.isolation = "atoms";
// 用修改后的配置启动沙箱
await spawnSandboxFromConfig(config);
proxy: { builtinTestServer: true }会把Agent的所有网络流量走内置代理,方便你审计Agent到底发了什么请求。这个功能在调试阶段特别有用。
实际场景:保护OpenClaw Agent
VentureBeat报道了Build 2026现场的一个演示:微软工程师在MXC沙箱里跑OpenClaw Agent,然后让Agent删除桌面上的所有文件。Agent试了——没删成,因为沙箱不允许。
文件系统策略限制了Agent的可见范围。对Agent来说,它看到的"文件系统"只有策略里声明的路径,桌面根本不在里面。
配合Intune企业策略,IT管理员还能集中管控:哪些文件对Agent只读、能不能截屏、能不能拿到位置信息。
踩坑记录
我测试下来碰到几个问题,记在这里:
1. macOS上网络策略有限制
macOS的seatbelt后端目前不支持proxy,allowedHosts和blockedHosts的行为也可能跟预期不一样。如果你在macOS上开发,建议先只用文件系统策略,网络策略等后续版本完善。
2. Windows上deniedPaths还没实现
官方文档说了:deniedPaths在Windows上暂不支持。你能用readwritePaths和readonlyPaths控制访问范围,但没法显式地"禁止某个路径"。
3. 这不是安全边界
README里有一段警告,大意是:当前版本的策略可能过于宽松,不要把MXC当成安全边界来依赖。它目前是early preview状态,适合开发和集成测试,不适合直接用在生产环境的安全防护上。
4. bubblewrap需要单独装
Linux上用默认的bubblewrap后端,需要先装bwrap:
# Ubuntu/Debian
sudo apt install bubblewrap
# Fedora
sudo dnf install bubblewrap
不装的话SDK会报找不到后端的错。
跟现有方案的区别
你可能会问:Docker不也能隔离吗?Codespaces不也是沙箱吗?
区别在定位上。Docker是通用容器方案,你得自己写Dockerfile、配网络、管权限。MXC专门为Agent场景设计,策略模型是"声明Agent能干什么"而不是"配置容器怎么运行"。
举个例子:你想让Agent只能访问两个API域名。Docker里你要配iptables规则或者搞一个代理容器。MXC里就是写 allowedHosts: ["api1.com", "api2.com"],一行搞定。
而且MXC的隔离级别是可调的。同一套策略,跑在processcontainer上就是轻量级进程隔离,换成microvm后端就是完整的微虚拟机。策略不用改,后端随时切。
总结
MXC解决的问题很明确:AI Agent需要执行代码和调用工具,但不应该有无限制的系统访问权限。
目前这个项目还是alpha阶段,API会变,策略可能过于宽松,macOS和Windows的部分功能还没补齐。但整体方向对路——用声明式策略 + 操作系统级隔离来管控Agent行为,比在应用层做权限检查靠谱得多。
如果你在做Agent相关的开发,建议现在就开始跟进这个项目,至少把SDK跑起来试试。等到需要上生产的时候再从头学,来不及了。
仓库地址:https://github.com/microsoft/mxc
SDK:npm install @microsoft/mxc-sdk
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐
所有评论(0)