一个真实的问题

你让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);

几个细节:

  • readonlyPathsreadwritePaths可以同时设,优先级是readwrite > readonly
  • allowedHosts设了之后,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,allowedHostsblockedHosts的行为也可能跟预期不一样。如果你在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

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐