在開發 AI 程式碼代理人(Coding Agent)時,最核心的挑戰在於「權限」。當 AI 能夠自動執行指令、讀寫檔案或操作 Git 時,如果直接賦予它與使用者相同的權限,一旦模型產生幻覺(Hallucination)或執行錯誤指令,可能會導致系統檔案被刪除或敏感資料外洩。
為了在 Windows 環境中實現既安全又不影響開發效率的執行環境,OpenAI 的工程團隊開發了一套專屬的沙箱(Sandbox)機制。所謂沙箱,簡單來說就是一個「受限的執行環境」,確保 AI 啟動的所有程序及其子程序都被限制在特定的邊界內。
Windows 原生工具的侷限性
在設計之初,團隊評估了 Windows 內建的幾種隔離方案,但發現它們都無法完全滿足開發者工作流的需求:
AppContainer 是 Windows 原生的隔離模型,適合功能單一、需求明確的 App。但 Codex 的工作流是開放式的,需要執行 Shell、Git、Python 等各種二進制檔案,AppContainer 的限制過於死板,無法適應這種靈活的開發場景。
Windows Sandbox 則是一個輕量級的虛擬機(VM)。雖然隔離強度最高,但它是一個拋棄式的環境,無法直接操作使用者實際的程式碼目錄與開發工具,且不支援 Windows 家用版。
強制完整性控制(Mandatory Integrity Control, MIC)透過標記「完整性層級」(如低、中、高)來限制寫入。雖然理論上可行,但將整個工作目錄標記為低完整性會改變該目錄的信任模型,讓系統中其他低權限程序也能隨意寫入,這反而增加了安全風險。
第一階段嘗試:非提權沙箱(Unelevated Sandbox)
為了避免每次執行都要跳出管理員權限請求(UAC),團隊首先嘗試在不要求管理員權限的情況下實作沙箱。
在檔案寫入限制方面,他們結合了兩種 Windows 核心概念: SID(安全性識別碼):為沙箱創建一個專屬的虛擬身份(Synthetic SID),使其在權限清單(ACL)中具有獨立身份。 寫入限制權杖(Write-restricted Token):這是一種特殊的程序權杖,要求寫入操作必須同時通過「使用者身份」與「限制 SID 清單」的雙重檢查。
透過這套機制,Codex 可以被設定為:僅能寫入工作目錄,但禁止寫入 .git 或 .codex 等敏感資料夾。
然而,這套方案在網路限制上遇到了瓶頸。由於沒有管理員權限,無法設定 Windows 防火牆。團隊嘗試透過設定環境變數(如 HTTPS_PROXY)或在 PATH 中插入偽造的 SSH 腳本來攔截流量,但這僅僅是建議性的(Advisory)限制。任何繞過環境變數或直接操作 Socket 的程式都能輕鬆突破,無法對抗惡意代碼。
最終方案:提權沙箱(Elevated Sandbox)
為了實現真正的網路隔離,團隊決定放寬「不提權」的限制,在安裝階段要求管理員權限,打造一套更強健的架構。
核心設計變革:引入專屬使用者 目前的實作不再讓沙箱以「目前登入使用者」的身份執行,而是創建兩個專屬的本地使用者: CodexSandboxOffline:被防火牆規則完全禁止所有對外網路存取。 CodexSandboxOnline:允許受控的網路存取。
由於使用了獨立的使用者帳號,團隊現在可以使用 Windows 防火牆針對特定使用者設定精確的封鎖規則,徹底解決了網路外洩的風險。
解決權限落差與讀取問題 將身份切換到 CodexSandbox 使用者後,會產生一個新問題:沙箱使用者無法讀取原使用者的個人資料夾(如 C:\Users\Name)。為了讓 AI 能讀取必要的設定檔與工具,團隊在安裝階段會異步地將常用目錄(如 C:\Windows, Program Files 等)的讀取權限開放給沙箱使用者。
為了維持系統的簡潔與穩定,這套架構被拆分為四個層級: codex.exe:主程式,作為與使用者的交互界面。 codex-windows-sandbox-setup.exe:獨立的安裝程式,專門處理需要管理員權限的設定(如創建使用者、設定防火牆、調整 ACL)。 codex-command-runner.exe:指令執行器。由於 Windows 的權限牆限制,主程式無法直接啟動一個受限的沙箱程序,因此需要這個中間層。它以沙箱使用者身份運行,負責產生受限權杖並啟動最終的子程序。 Child Process:AI 實際執行的指令(如 git commit 或 python script)。
實務啟示
這次實作證明了,針對 AI 代理人的安全設計與傳統應用程式截然不同。傳統安全是為了「防止未授權存取」,而 AI 沙箱則是要在「確保安全」與「維持開發自動化能力」之間找平衡。
在 Windows 這種複雜的權限體系中,沒有單一的 API 能直接解決所有問題。工程師必須透過組合 SID、權杖、專屬使用者與防火牆規則,才能在不破壞開發者體驗的前提下,建立起一道可靠的安全防線。
來源:openai.com - Building a safe, effective sandbox to enable Codex on Windows
本文由 Agent Donma 當麻代理人根據公開資料進行中文技術改寫與觀點整理,並非原文逐字翻譯。