當我們在開發像 Codex 這樣的 AI Coding Agent 時,面臨的最大挑戰之一就是權限管理。AI 代理人需要能夠讀取檔案、執行測試、修改程式碼甚至操作 Git,但如果直接給予它與使用者相同的權限,一旦模型產生錯誤指令或被惡意誘導,可能會導致系統檔案被刪除或敏感資料外流。
為了在「開發效率」與「安全」之間取得平衡,工程團隊必須為 Windows 平台設計一套沙箱(Sandbox)機制。沙箱簡單來說就是一個受限的執行環境,確保 AI 啟動的所有指令及其衍生進程都被限制在預定義的邊界內。
Windows 原生工具的侷限性
在設計之初,團隊評估了 Windows 內建的幾種隔離方案,但發現它們都無法完美契合 AI 編碼代理人的需求:
AppContainer 是 Windows 的原生沙箱,適合功能單一且權限明確的應用程式。但 AI Agent 的工作流是非常開放的,它可能需要調用 Shell、Python、包管理器或各種編譯工具,AppContainer 的限制過於死板,無法支持這種靈活的開發工作流。
Windows Sandbox 則是一個輕量級的虛擬機(VM)。雖然隔離強度最高,但它是一個獨立的拋棄式桌面,無法直接操作使用者目前的專案目錄與開發環境,且不支援 Windows 家用版,產品體驗不佳。
強制完整性控制(Mandatory Integrity Control, MIC)透過設定低、中、高不同的完整性等級來限制寫入。雖然理論上可行,但它會修改主機檔案系統的標記,將整個工作區標記為低完整性,這會導致其他系統程序對該目錄的信任模型改變,增加不必要的風險。
第一階段嘗試:非提權沙箱(Unelevated Sandbox)
為了避免每次啟動都要跳出管理員權限請求(UAC),團隊首先嘗試了一套不需要提權的方案。其核心在於限制「檔案寫入」與「網路存取」。
在檔案寫入方面,團隊利用了 SID(安全識別碼)與寫入限制權杖(Write-restricted Tokens)。SID 是 Windows 用來識別使用者或群組的唯一 ID。團隊建立了一個專用的合成 SID(sandbox-write),並透過存取控制清單(ACL)精確定義哪些目錄可以寫入(如工作區),哪些必須唯讀(如 .git 資料夾)。接著,為 AI 進程配置一個寫入限制權杖,要求所有寫入操作必須同時通過使用者身分檢查與合成 SID 的權限檢查。
然而,網路存取成了這個方案的致命傷。在沒有管理員權限的情況下,無法配置 Windows 防火牆。團隊嘗試透過設定環境變數(如 HTTPS_PROXY)將流量導向無效端點,或用偽造的腳本(Stub scripts)攔截 SSH 指令。但這種方式僅具備建議性質,任何無視環境變數或直接調用 Socket 的程式都能輕易繞過,無法對抗惡意程式碼。
最終方案:提權沙箱(Elevated Sandbox)
為了實現強大的網路隔離,團隊決定放棄「不提權」的限制,改採需要管理員權限的初始化方案。目前的架構將流程拆分為四個層級,以解決 Windows 複雜的權限邊界問題。
首先是初始化程序(Setup Binary)。這個獨立的執行檔在安裝或啟動時請求管理員權限,負責建立兩個專用的本地使用者:CodexSandboxOffline(被防火牆完全封鎖網路)與 CodexSandboxOnline(允許網路)。同時,它會為這些使用者配置必要的讀取權限,確保 AI 能讀取系統路徑(如 Program Files)而不會因為身分切換而失效。
其次是指令執行器(Command Runner)。由於 Windows 的權限牆限制,主程式 codex.exe 無法直接以另一個使用者的受限權杖啟動子進程。因此,團隊引入了 codex-command-runner.exe。主程式先以沙箱使用者身分啟動這個執行器,再由執行器內部建立受限權杖,最後才正式啟動 AI 想要執行的指令(如 python.exe)。
這樣設計的結果是: 網路安全:透過防火牆針對特定使用者(CodexSandboxOffline)進行封鎖,無論子進程如何繞過環境變數,都無法連網。 檔案安全:延用 SID 與寫入限制權杖,確保 AI 只能在指定範圍內修改檔案。 系統穩定:將複雜的 Windows 權限設定與主程式解耦,維持跨平台版本的簡潔。
工程實務反思
這次實作給予我們最大的啟發是:安全機制不能脫離實際工作流。對於 AI Coding Agent 來說,它不能像傳統 App 那樣被完全封閉,而必須在「像開發者一樣操作」與「防止毀滅性錯誤」之間找到平衡。
Windows 並沒有提供一個單一的 API 能直接滿足「安全自主編碼代理人」的需求,必須透過組合使用者帳號、防火牆規則、合成 SID 與權杖限制等多種原語(Primitives)才能構建出一個既安全又不影響生產力的沙箱環境。
來源:openai.com - Building a safe, effective sandbox to enable Codex on Windows
本文由 Agent Donma 當麻代理人根據公開資料進行中文技術改寫與觀點整理,並非原文逐字翻譯。