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。其公開 API 必須從@microsoft/mxc-sdk/v1匯入,而非從套件根目錄匯入。.NET 套件也包含原生資產。Rust crate 會將 SDK、引擎和選定的後端建置到使用中的應用程式中。原生執行器則需要針對平台建置存放庫。

撰寫原則前先選擇後端。存放庫列出processcontainer做為 Windows 11 的預設後端,bubblewrap做為 Linux 的預設後端,並以seatbelt做為 macOS 的預設後端。Windows 另提供wslc和isolation_session;windows_sandbox、microvm以及hyperlight則標示為實驗性功能。Linux 必須具備所選的執行環境,例如其預設後端所需的 Bubblewrap。Windows 版本表列出 ProcessContainer 與 IsolationSession 的最低組建版本。仍須在實際執行工作的主機上,確認功能是否可用,以及是否支援所需的原則。

記下實際命令、工作目錄、需要讀取和修改的檔案,以及所需的網路目的地。將這些項目視為由應用程式或操作人員提供的原則輸入。Microsoft 表示原則位於代理工作負載之外,因此產生的程式碼無法擴大自身權限。命令預期輸出包括一般的標準輸出、標準錯誤和結束狀態,以及 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會傳回擷取的標準輸出和標準錯誤、結束代碼、逾時狀態及警告。遭封鎖的檔案存取可能只會讓工作負載看到一般的存取遭拒錯誤;命令成功結束,也不能證明所有預期限制都已測試。依照本指南的成功標準,請在所選且受支援的後端上,先執行會使用已授權資源的可信任工作負載,再另外刻意嘗試存取未授權資源。使用代理程式產生的命令前,應檢查操作結果和診斷資訊。SDK 範例示範檔案系統授權、封鎖網路、擷取輸出和拒絕記錄。這些範例需要預先準備好的主機。BIG CHANGE 並未執行其中任何步驟。

對於原生執行器使用者,穩定版 JSON 結構描述為1.0.0,完整請求還需要version版本、隔離選項和process.commandLine。目前的開發中結構描述為1.1.0-alpha。V1 SDK 會自行選擇線上通訊格式,因此不要在型別化的ContainerRequest中放入原生結構描述版本。結構描述指南也指出,舊欄位例如network.defaultPolicy和allowedHosts已淘汰。目前原則使用方向性network.egress和network.ingress;直接規則與執行階段 Proxy 的行為及後端支援各不相同。

診斷拒絕操作,再啟用強制執行

Microsoft 的10 月 7 日模式表區分三種結果。強制執行會封鎖未授權存取,且不產生活動報告。學習會封鎖未授權存取並記錄下來。寬鬆則記錄原則原本會拒絕的存取,但仍允許其繼續。Microsoft 的拒絕擷取參考文件將這些學習診斷功能限定在以 Windows AppContainer 為基礎的 ProcessContainer 路徑。其他主機即使接受相同的原則欄位,也不會因此提供相同的報告功能。

在撰寫原則時,Windows 原生執行器支援可信任工具使用--audit流程產生原則檔。Microsoft 警告,此流程會關閉受分析工作負載的沙箱安全,因此不適用於不受信任的命令。若主機支援,較安全的診斷方式是拒絕並記錄:存取仍會遭封鎖,報告則指出遭拒的項目。請逐一檢查記錄的路徑或功能是否符合任務需求,只授予命令所需的權限,並在強制執行模式中執行最終工作負載。報告可能揭露敏感資源名稱,應妥善處理。

後端選擇會影響原則能提供什麼保證。結構描述指南指出,isolation_session無法限制網路,並要求明確設定為不限制網路。指南也指出,UI 限制只由 Windows ProcessContainer 和 macOS Seatbelt 強制執行;其他後端不會實作這些限制,而 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 匯入方式、型別化請求和擷取輸出。上方程式碼改編自其範例,並未在此執行。
  • 設定結構描述指南區分目前穩定版1.0.0原生 JSON 與可變動的1.1.0-alpha,並說明原則欄位和後端特定限制。
  • 學習模式與拒絕擷取參考文件說明 Windows ProcessContainer 診斷功能,並警告寬鬆稽核的風險。報告內容取決於主機與模式。
  • 後端指南及Windows 版本表是檢查特定主機時應參考的資料;本文不保證任何設定能在讀者的機器上運作。