Microsoft 于 2026 年 10 月 7 日宣布 Microsoft Execution Containers(MXC)正式推出。对于运行 AI 代理建议命令的团队,实际问题是命令需要访问哪些文件和网络连接,以及哪个 MXC 后端能够执行这些限制。Microsoft 的发布公告介绍了隔离目标;代码库的使用文档提供了配置细节。本指南依据这些文档编写。BIG CHANGE 未安装 MXC,也未运行受隔离的工作负载。

重大变化

  • 变化内容: 开发者可以通过一个 MXC SDK 接口传入命令及其资源策略,由该接口选择受支持的主机后端。10 月 7 日的版本为代理工具提供了有文档说明的集成方式,而不是依赖模型自觉遵守策略。
  • 重要之处: 团队可以允许编程命令访问工作目录,同时将其他文件位置和出站连接排除在工作负载的权限范围之外。实际效果取决于所选后端和主机,因此团队在依赖某项限制前应确认后端实际执行的内容。
  • 值得关注: Microsoft 的策略配置模式有助于诊断受支持的 Windows ProcessContainer 主机上被阻止的操作。下一步需要判断拟授予的权限是否确有必要,以及缩小策略范围后,生产运行是否采用强制执行模式。

先了解主机和命令

MXC 是集成在启动工作负载的应用程序中的库。其README列出了 Rust、.NET 和 Node SDK,以及供无法嵌入 SDK 的应用程序使用的原生执行程序。Node 包含有原生运行时资源,要求 Node.js 24 或更高版本;在 Windows 上,代码库要求使用 Node 24.21.0 或更高版本,或 26.8.0 或更高版本,以支持原生 stdio 传输。公共 API 从@microsoft/mxc-sdk/v1导入,而不是从包根目录导入。.NET 包也包含原生资源。Rust crate 会将 SDK、引擎和所选后端构建到使用它的应用程序中。原生执行程序需要针对相应平台构建代码库。

编写策略前先选择后端。代码库列出的 Windows 11 默认后端是processcontainer,Linux 默认后端是bubblewrap,macOS 默认后端是seatbelt。Windows 还提供wslc和isolation_session;windows_sandbox、microvm和hyperlight被标记为实验性选项。Linux 需要相应的运行时,例如其默认后端所用的 Bubblewrap。Windows 版本表列出了 ProcessContainer 和 IsolationSession 所需的最低系统版本。应在实际执行任务的计算机上验证主机是否可用,以及它是否支持所请求的策略。

记录实际命令、工作目录、需要读取和修改的文件,以及所需的网络目标。将这些内容视为由应用程序或操作人员提供的策略输入。Microsoft 表示,策略位于代理工作负载之外,因此生成的代码无法扩大自身权限。命令的预期输出包括常规的 stdout、stderr 和退出状态,以及 SDK 返回的警告或可选元数据。只有在受支持的 Windows ProcessContainer 主机上使用文档说明的诊断模式,才能获得活动报告。

使用 Node SDK 声明精简策略

Node SDK 指南介绍了这一 V1 结构。请在运行受支持 Node 版本的应用程序中安装 SDK:

Terminal
npm install @microsoft/mxc-sdk

此示例改编自 Microsoft 的运行至完成示例:它请求只读访问应用程序当前目录,同时拒绝出站网络连接。命令本身只打印一行,因此没有测试这两项限制。这是文档中的起点,不是 BIG CHANGE 的测试。请根据要隔离的工作负载替换命令和路径;仅在需要修改的目录中使用readwritePaths。

TypeScript
import { getPlatformSupport, run } from '@microsoft/mxc-sdk/v1';
import type { ContainerRequest } from '@microsoft/mxc-sdk/v1';

if (!getPlatformSupport().isSupported) {
  throw new Error('MXC is not available on this host');
}

const request: ContainerRequest = {
  command: 'node -e "console.log(\'hello from container\')"',
  filesystem: { readonlyPaths: [process.cwd()] },
  network: { egress: { default: 'deny' } },
  timeoutMs: 30_000,
};

const result = await run(request);
console.log(result.stdout, result.stderr, result.exitCode, result.warnings);

run会返回捕获的 stdout 和 stderr、退出代码、超时状态及警告。文件访问被阻止时,工作负载看到的可能只是普通的“访问被拒绝”错误;成功退出本身并不能证明所有预期限制都经过测试。若要达到任务的成功标准,请在选定的受支持后端上运行可信工作负载,确认其使用获准资源,再单独尝试访问未授权资源。对操作结果和诊断信息进行检查后,再将策略用于代理生成的命令。SDK 示例涵盖文件系统授权、网络阻断、输出捕获和拒绝日志记录。它们需要预先准备好的主机。BIG CHANGE 未执行这些步骤。

对于原生执行器用户,稳定版 JSON 架构为1.0.0;完整请求需要一个version、隔离方式选择以及process.commandLine。当前开发版架构为1.1.0-alpha。V1 SDK 会自行选择传输协议,因此不要在类型化的ContainerRequest中填写原生架构版本。架构指南还指出,network.defaultPolicy和allowedHosts等旧字段已弃用。当前策略采用有方向的network.egress和network.ingress;直接规则与运行时代理的行为及后端支持各不相同。

诊断拒绝情况,然后执行策略

Microsoft 的10 月 7 日模式表区分了三种结果。强制执行模式会阻止未授权访问,且不生成活动报告。学习模式会阻止并记录未授权访问。宽松模式会记录策略本应拒绝的访问,但仍允许其继续。Microsoft 的拒绝捕获参考文档将这些学习功能限定在基于 AppContainer 的 Windows ProcessContainer 路径中。其他主机即使接受同一个策略字段,也不会因此获得同等报告能力。

使用可信工具编写策略时,Windows 原生执行器支持一种可生成策略文件的--audit流程。Microsoft 警告,该流程会关闭被分析工作负载的沙盒安全保护,因此不适用于不可信命令。如果主机支持,更安全的诊断方式是拒绝并记录访问:尝试的访问仍会被阻止,报告会指出被拒绝的内容。逐项检查记录的路径或功能是否与任务相关,只授予命令所需的权限,并在强制执行模式下运行最终工作负载。报告可能泄露敏感资源名称,应妥善处理。

后端选择会改变策略能够承诺的效果。架构指南指出,isolation_session无法限制网络,并要求明确采用不受限的网络配置。该指南还指出,Windows ProcessContainer 和 macOS Seatbelt 会执行 UI 限制,其他后端则不实现这些限制;WSLC 和 IsolationSession 会拒绝提供的 UI 策略。Seatbelt 指南说明,macOS 原生配置无法筛选单个远程主机;Bubblewrap 指南则介绍 Linux 运行时和网络前提。因此,多个 SDK 类型接受同一个 JSON 字段,并不表示它们都能以同样方式执行策略。请查阅所选后端的指南,并在目标主机上验证请求。

Microsoft 代码库采用 MIT 许可证,但面向用户的文档未列出 MXC 包的价格。主机、计算资源以及模型提供商的费用各不相同。Windows 公告称 MXC 已正式推出,但一些后端选项仍处于实验阶段,原生开发版架构仍为 alpha。选择工作负载运行位置时,应分别考虑这些发布阶段。

来源与延伸阅读

  • Microsoft Windows Developer Blog,2026 年 10 月 7 日支持了发布信息、面向代理的用途以及三种模式的定义。这是 Microsoft 对其产品的描述,并非 BIG CHANGE 的安全测试。
  • MXC 代码库 README列出了 SDK、主机默认后端、实验性后端、构建前提和原生执行器路径。代码库会持续变化;相关信息于 2026 年 10 月 8 日核对。
  • Node SDK 用户指南说明了 Node 前提、V1 导入方式、类型化请求和捕获的输出。上面的代码改编自其中的示例;本文未运行该代码。
  • 配置架构指南区分稳定版原生 JSON1.0.0和持续变化的1.1.0-alpha,并记录策略字段和各后端的限制。
  • 学习模式与拒绝捕获参考文档介绍 Windows ProcessContainer 诊断,并警告宽松模式审计的风险。报告内容取决于主机和模式。
  • 后端指南和Windows 版本表可用于检查特定主机;本文不认证读者计算机上的任何配置。