一个真实的问题你让AI Agent帮你整理项目文件结果它把桌面上不相关的文件也删了。你让它调API拉数据它顺手把.env里的密钥发到了外部服务。这不是段子。过去一年安全研究员反复证明了一件事AI Agent越自主、越好用搞砸事情的能力也越强。它们能打开文件、执行代码、发网络请求、操作其他软件——每一个动作都是潜在的安全漏洞。微软在Build 2026上开源了MXCMicrosoft 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 24H2processcontainerwindows_sandbox, wslc, microvm, hyperlightLinux x64/ARM64bubblewraplxc, microvm, hyperlightmacOS ARM64/x64seatbelt暂无Windows上的processcontainer、Linux上的bubblewrap是稳定后端不需要开实验模式。其他后端windows_sandbox、wslc、microvm、seatbelt需要在配置里加{ experimental: true }。macOS支持是0.6.0-alpha版本才加的功能还比较有限网络代理不支持。安装和构建前置条件Rust工具链自动锁定1.93版本、Node.js ≥ 18、npm。# 克隆仓库gitclonehttps://github.com/microsoft/mxc.gitcdmxc# Linux构建./build.sh# macOS构建./build-mac.sh# Windows构建build.bat构建脚本会做三件事编译平台对应的Rust二进制文件把二进制文件复制到sdk/bin/目录下编译TypeScript SDK。SDK也可以直接从npm装npminstallmicrosoft/mxc-sdk写你的第一个安全策略MXC的策略是TypeScript对象结构很直观。一个空策略 完全锁死import{spawnSandbox}frommicrosoft/mxc-sdk;// 最严格模式没有文件访问、没有网络、没有UIawaitspawnSandbox(script.sh,{version:0.5.0-dev});没写的字段默认都是禁止。这是MXC的安全保证——新版本加了新字段老策略也不会因此多出权限。下面是一个实际场景让Agent只读当前项目目录允许访问npm仓库禁止操作剪贴板。import{spawnSandbox}frommicrosoft/mxc-sdk;constpolicy{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秒超时};awaitspawnSandbox(node agent.js,policy);几个细节readonlyPaths和readwritePaths可以同时设优先级是readwrite readonlyallowedHosts设了之后Agent只能访问列表里的域名其他全部拦截tempDir: isolated会给Agent一个独立的临时目录不跟宿主机共享timeoutMs到了直接杀进程不等Agent完成当前操作进阶用法手动调配置如果你需要更细的控制可以先生成ContainerConfig改完再启动import{createConfigFromPolicy,spawnSandboxFromConfig}frommicrosoft/mxc-sdk;constpolicy{version:0.5.0-dev,filesystem:{readwritePaths:[/workspace]},network:{allowOutbound:true,proxy:{builtinTestServer:true}// 用内置代理拦截所有流量}};// 生成配置constconfigcreateConfigFromPolicy(policy,process);// 手动调整后端特定的参数config.processContainer!.ui!.isolationatoms;// 用修改后的配置启动沙箱awaitspawnSandboxFromConfig(config);proxy: { builtinTestServer: true }会把Agent的所有网络流量走内置代理方便你审计Agent到底发了什么请求。这个功能在调试阶段特别有用。实际场景保护OpenClaw AgentVentureBeat报道了Build 2026现场的一个演示微软工程师在MXC沙箱里跑OpenClaw Agent然后让Agent删除桌面上的所有文件。Agent试了——没删成因为沙箱不允许。文件系统策略限制了Agent的可见范围。对Agent来说它看到的文件系统只有策略里声明的路径桌面根本不在里面。配合Intune企业策略IT管理员还能集中管控哪些文件对Agent只读、能不能截屏、能不能拿到位置信息。踩坑记录我测试下来碰到几个问题记在这里1. macOS上网络策略有限制macOS的seatbelt后端目前不支持proxyallowedHosts和blockedHosts的行为也可能跟预期不一样。如果你在macOS上开发建议先只用文件系统策略网络策略等后续版本完善。2. Windows上deniedPaths还没实现官方文档说了deniedPaths在Windows上暂不支持。你能用readwritePaths和readonlyPaths控制访问范围但没法显式地禁止某个路径。3. 这不是安全边界README里有一段警告大意是当前版本的策略可能过于宽松不要把MXC当成安全边界来依赖。它目前是early preview状态适合开发和集成测试不适合直接用在生产环境的安全防护上。4. bubblewrap需要单独装Linux上用默认的bubblewrap后端需要先装bwrap# Ubuntu/Debiansudoaptinstallbubblewrap# Fedorasudodnfinstallbubblewrap不装的话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/mxcSDKnpm install microsoft/mxc-sdk
微软开源MXC:给你的AI Agent套上安全沙箱,3分钟上手配置
一个真实的问题你让AI Agent帮你整理项目文件结果它把桌面上不相关的文件也删了。你让它调API拉数据它顺手把.env里的密钥发到了外部服务。这不是段子。过去一年安全研究员反复证明了一件事AI Agent越自主、越好用搞砸事情的能力也越强。它们能打开文件、执行代码、发网络请求、操作其他软件——每一个动作都是潜在的安全漏洞。微软在Build 2026上开源了MXCMicrosoft 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 24H2processcontainerwindows_sandbox, wslc, microvm, hyperlightLinux x64/ARM64bubblewraplxc, microvm, hyperlightmacOS ARM64/x64seatbelt暂无Windows上的processcontainer、Linux上的bubblewrap是稳定后端不需要开实验模式。其他后端windows_sandbox、wslc、microvm、seatbelt需要在配置里加{ experimental: true }。macOS支持是0.6.0-alpha版本才加的功能还比较有限网络代理不支持。安装和构建前置条件Rust工具链自动锁定1.93版本、Node.js ≥ 18、npm。# 克隆仓库gitclonehttps://github.com/microsoft/mxc.gitcdmxc# Linux构建./build.sh# macOS构建./build-mac.sh# Windows构建build.bat构建脚本会做三件事编译平台对应的Rust二进制文件把二进制文件复制到sdk/bin/目录下编译TypeScript SDK。SDK也可以直接从npm装npminstallmicrosoft/mxc-sdk写你的第一个安全策略MXC的策略是TypeScript对象结构很直观。一个空策略 完全锁死import{spawnSandbox}frommicrosoft/mxc-sdk;// 最严格模式没有文件访问、没有网络、没有UIawaitspawnSandbox(script.sh,{version:0.5.0-dev});没写的字段默认都是禁止。这是MXC的安全保证——新版本加了新字段老策略也不会因此多出权限。下面是一个实际场景让Agent只读当前项目目录允许访问npm仓库禁止操作剪贴板。import{spawnSandbox}frommicrosoft/mxc-sdk;constpolicy{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秒超时};awaitspawnSandbox(node agent.js,policy);几个细节readonlyPaths和readwritePaths可以同时设优先级是readwrite readonlyallowedHosts设了之后Agent只能访问列表里的域名其他全部拦截tempDir: isolated会给Agent一个独立的临时目录不跟宿主机共享timeoutMs到了直接杀进程不等Agent完成当前操作进阶用法手动调配置如果你需要更细的控制可以先生成ContainerConfig改完再启动import{createConfigFromPolicy,spawnSandboxFromConfig}frommicrosoft/mxc-sdk;constpolicy{version:0.5.0-dev,filesystem:{readwritePaths:[/workspace]},network:{allowOutbound:true,proxy:{builtinTestServer:true}// 用内置代理拦截所有流量}};// 生成配置constconfigcreateConfigFromPolicy(policy,process);// 手动调整后端特定的参数config.processContainer!.ui!.isolationatoms;// 用修改后的配置启动沙箱awaitspawnSandboxFromConfig(config);proxy: { builtinTestServer: true }会把Agent的所有网络流量走内置代理方便你审计Agent到底发了什么请求。这个功能在调试阶段特别有用。实际场景保护OpenClaw AgentVentureBeat报道了Build 2026现场的一个演示微软工程师在MXC沙箱里跑OpenClaw Agent然后让Agent删除桌面上的所有文件。Agent试了——没删成因为沙箱不允许。文件系统策略限制了Agent的可见范围。对Agent来说它看到的文件系统只有策略里声明的路径桌面根本不在里面。配合Intune企业策略IT管理员还能集中管控哪些文件对Agent只读、能不能截屏、能不能拿到位置信息。踩坑记录我测试下来碰到几个问题记在这里1. macOS上网络策略有限制macOS的seatbelt后端目前不支持proxyallowedHosts和blockedHosts的行为也可能跟预期不一样。如果你在macOS上开发建议先只用文件系统策略网络策略等后续版本完善。2. Windows上deniedPaths还没实现官方文档说了deniedPaths在Windows上暂不支持。你能用readwritePaths和readonlyPaths控制访问范围但没法显式地禁止某个路径。3. 这不是安全边界README里有一段警告大意是当前版本的策略可能过于宽松不要把MXC当成安全边界来依赖。它目前是early preview状态适合开发和集成测试不适合直接用在生产环境的安全防护上。4. bubblewrap需要单独装Linux上用默认的bubblewrap后端需要先装bwrap# Ubuntu/Debiansudoaptinstallbubblewrap# Fedorasudodnfinstallbubblewrap不装的话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/mxcSDKnpm install microsoft/mxc-sdk