觀點 · 資訊分享

OpenAI 公開 Codex 的 Windows 沙盒設計:三種內建機制都不適用,最後靠專用使用者加防火牆擋網路

OpenAI 在 5 月 13 日分享 Codex 在 Windows 上做沙盒的過程:Windows 沒有現成可用的機制,免提權的原型擋不住網路,最後改成需管理員設定一次、用專用使用者與防火牆規則的版本。

發布
2026-05-14
篇幅
約 4 分鐘 · 1,832 字
結構
8 節 + 3 題常見問題
標籤
#OpenAI#Codex#沙盒#Windows#AI 代理安全
OpenAI 公開 Codex 的 Windows 沙盒設計:三種內建機制都不適用,最後靠專用使用者加防火牆擋網路

一句話看懂:Windows 沒有現成的沙盒機制可以直接用,OpenAI 試了免提權的版本後發現擋不住網路,最後改成設定時需管理員權限、用專用使用者加防火牆的設計。

Codex 的 Windows 沙盒資訊圖卡:Windows 沒有現成方案,OpenAI 自己做了沙盒

先用白話講:沙盒是什麼?為什麼 AI 需要它?

想像你請一位工讀生幫忙整理倉庫。你不會把整間公司的鑰匙都交給他,而是劃一個範圍:「你只能動這一區的東西,也不能打電話出去亂叫貨」。這個被圍起來的範圍,就是沙盒(sandbox)。

Codex 是 OpenAI 的寫程式 AI 代理,會直接在開發者的電腦上執行指令。官方說它預設以使用者本人的權限執行,能做使用者能做的所有事,這很強大,也有風險。所以預設模式是:可以讀幾乎任何檔案,只能寫工作資料夾,沒有指定就不連網路。要讓這條規則真正有效,就需要作業系統層級的沙盒來強制執行。

發生什麼事

OpenAI 在 5 月 13 日發表工程文章,說明 Windows 版的沙盒如何一步步做出來:

  • 作者加入 Codex 團隊時(2025 年 9 月),Windows 版還沒有沙盒,使用者只能二選一:幾乎每個指令都要批准(連讀檔也要),或開啟完全存取模式
  • macOS 有 Seatbelt,Linux 有 seccomp 或 bubblewrap,但 Windows 沒有現成能用的機制,所以只能自己做

三種現成方案為什麼不行

方案 卡關的原因
AppContainer 隔離很強,但設計給需求明確的單一應用;Codex 要跑 shell、Git、Python、各種建置工具,形狀不對
Windows Sandbox 是拋棄式的虛擬桌面,Codex 需要直接動使用者真正的專案;而且家用版 Windows 沒有這個功能
強制完整性控制(MIC) 要把工作資料夾標成低完整性,等於讓所有低完整性程序都能寫入,會改變專案資料夾的信任模型

兩代設計差在哪

第一版:免提權原型

  • 建立只給沙盒用的假身分(SID),再用「限制寫入的權杖」讓 Codex 只能寫工作資料夾,並額外禁止寫入 .git、.codex、.agents
  • 網路則靠覆寫環境變數(把代理指向無效位址等)讓常見工具失敗,但官方承認這只是「建議性」的,會被自己處理網路連線的程式繞過

第二版:需管理員設定的版本(目前使用)

  • 設定時需管理員權限,建立兩個專用的本機使用者:CodexSandboxOffline(被防火牆規則封鎖對外連線)與 CodexSandboxOnline
  • 帳號憑證用 Windows 的 DPAPI 加密保存;用防火牆規則封鎖 Offline 使用者的所有對外網路
  • 因為 Windows 的限制,另外做了 codex-command-runner.exe 負責在沙盒使用者的身分下產生受限權杖並執行指令
  • 最終架構有四層:codex.exe、負責設定的 codex-windows-sandbox-setup.exe、codex-command-runner.exe,以及實際執行的子程序

給開發者的技術細節

  • 沒有任何一種 Windows 機制剛好對應「安全的自主寫程式代理」,OpenAI 是把好幾種組合起來
  • 第一版的缺點包含設定速度(替工作資料夾套用 ACL 可能很慢)、改變行為的成本高,以及網路防護薄弱
  • 防火牆規則無法直接對應到「受限權杖」,所以才需要讓沙盒指令以另一個使用者身分執行,防火牆才能鎖定它

我的看法

我自己在 Windows 上用 AI 寫程式的時間不少,最容易遇到的就是「每個指令都問要不要批准」的疲勞,後來很容易變成直接全部放行。這篇文章讓我比較清楚:真正安全的做法需要作業系統層級的圍欄,光靠提示或環境變數是不夠的。

另一個提醒是:如果你把任何 AI 代理設成完全存取,等於把你本人的所有權限交給它,包含你電腦上的金鑰與專案。工具有沙盒就開著用,沒有的話,至少在獨立的帳號或虛擬機裡跑,會是比較安心的做法。

名詞小辭典

  • 沙盒(Sandbox):限制程式能做什麼的受限執行環境。
  • SID:Windows 用來識別使用者或群組身分的代碼。
  • ACL:存取控制清單,記錄誰可以讀、寫、執行某個檔案。
  • UAC:Windows 在需要管理員權限時跳出的確認視窗。

資料來源

常見問題

什麼是沙盒?
一個受限制的執行環境。把程式放進去跑,它能讀寫的檔案、能連的網路都被圍起來,就算出了差錯,也不容易影響到電腦其他地方。
為什麼 Windows 不能直接用現成的?
OpenAI 說 macOS 有 Seatbelt、Linux 有 seccomp 或 bubblewrap,但 Windows 沒有現成能同時滿足需求的機制。AppContainer 太窄、Windows Sandbox 是另一個拋棄式桌面且家用版不能用、MIC 會改變真實檔案系統的信任模型。
現在的版本要管理員權限嗎?
官方說目前的實作在設定階段需要管理員權限,因為要建立專用的本機使用者與防火牆規則;之後 Codex 本身以一般使用者身分執行。
LINE