Windows 沙箱
Windows 沙箱
設定 Windows 上的原生 Codex 沙箱並排查其問題
通過原生 ChatGPT 桌面應用、 CLI 或 IDE 擴充套件,在 Windows 上使用 Codex。
Windows 版 ChatGPT 桌面應用支援並行聊天、 工作樹、計劃任務、Git 功能、內建瀏覽器、檔案預覽、 外掛和技能等核心工作流程。
該應用可以在 PowerShell 中使用 Windows 沙箱原生執行,無需
WSL 或虛擬機器。這樣既能讓 Codex 保持 Windows 原生
工作流程,又能實施有邊界的檔案系統和網路權限。
在 Windows 上使用 ChatGPT 桌面應用:通過原生 Windows 應用,在一處跨專案工作、並行執行聊天並審查結果。
原生 Windows 沙箱有兩種模式:
- 使用更強的
elevated沙箱在 Windows 上原生執行, - 使用備用
unelevated沙箱在 Windows 上原生執行。
設定 Windows 沙箱
在 Windows 上原生執行 Codex 時,代理模式使用 Windows 沙箱, 阻止向工作資料夾之外的檔案系統寫入,並在未經你明確核准時 阻止網路存取。
原生 Windows 沙箱支援兩種模式,你可以在
config.toml 中設定:
[windows]
sandbox = "elevated" # or "unelevated"elevated 是首選的原生 Windows 沙箱。它使用專用的
低權限沙箱使用者、檔案系統權限邊界、防火牆
規則,以及在沙箱中執行命令所需的本機策略更改。
unelevated 是備用的原生 Windows 沙箱。它使用從當前使用者派生的
受限 Windows 令牌執行命令,應用基於 ACL 的
檔案系統邊界,並使用環境級離線控制來取代
專用離線使用者防火牆規則。它比 elevated 弱,但在本機或
企業策略阻止需管理員核准的設定時,仍然很有用。
如果兩種模式都可用,請使用 elevated。如果預設原生沙箱
無法在你的環境中執行,請在排查設定問題期間使用 unelevated
作為備用方案。
企業管理員可以通過 requirements.toml,限制 Codex
可以使用哪些原生沙箱實現:
[windows]
allowed_sandbox_implementations = ["elevated"]此範例要求使用 elevated 沙箱,並阻止使用者回退到
unelevated。要允許任一實現,請同時包含兩個值;
未選擇模式時,Codex 優先使用 elevated。有關
支援的值,請參閱 requirements.toml 參考。
預設情況下,兩種沙箱模式還會使用專用桌面,以增強 UI
隔離。僅當相容性需要較舊的 Winsta0\\Default 行為時,
才設定 windows.sandbox_private_desktop = false。
沙箱權限
Windows 版本矩陣
| Windows 版本 | 支援級別 | 說明 |
|---|---|---|
| Windows 11 | 推薦 | Windows 上執行 Codex 的最佳基準。如果要標準化企業部署,請使用此版本。 |
| 近期且已完全更新的 Windows 10 | 盡力支援 | 可以執行,但可靠性低於 Windows 11。在 Windows 10 上,Codex 依賴包括 ConPTY 在內的現代控制台支援。實際需要 Windows 10 版本 1809 或更高版本。 |
| 較舊的 Windows 10 版本 | 不推薦 | 更可能缺少 ConPTY 等必需的控制台元件,也更可能在企業環境中失敗。 |
其他環境前提:
winget應當可用。如果缺失,請更新 Windows 或安裝 Windows Package Manager,再設定 Codex。- 推薦的原生沙箱依賴經管理員核准的設定。
- 即使作業系統版本本身符合要求,某些企業託管裝置也會阻止所需的設定步驟。
授予沙箱讀取權限
當命令因 Windows 沙箱無法讀取某個目錄而失敗時,請使用:
/sandbox-add-read-dir C:\absolute\directory\path路徑必須是現有的絕對目錄。命令成功後,之後在沙箱中執行的命令可在當前會話期間讀取該目錄。
預設使用原生 Windows 沙箱。當你需要 Linux 原生工具、工作流程已位於 WSL2 中,或 兩種原生 Windows 沙箱模式都無法滿足需求時,請選擇 WSL。
故障排除和常見問題
排查受管理 Windows 計算機的問題時,請先檢查原生 沙箱模式、Windows 版本以及 Codex 顯示的任何策略錯誤。大多數原生 Windows 支援問題源自沙箱設定、登入權限或檔案系統 權限,而非編輯器本身。
我的原生沙箱設定失敗
如果 Codex 無法完成 elevated 沙箱設定,最常見的原因
包括:
- Windows UAC 或管理員提示被拒絕,
- 計算機不允許建立本機使用者或組,
- 計算機不允許更改防火牆規則,
- 計算機阻止沙箱使用者所需的登入權限,
- 或其他企業策略阻止了部分設定流程。
可嘗試以下操作:
- 再次嘗試設定
elevated沙箱;如果環境允許, 請核准管理員提示。 - 如果公司筆記型電腦阻止此操作,請詢問 IT 團隊,該計算機 是否允許由管理員核准本機使用者/組建立、防火牆 設定以及必需的沙箱使用者登入權限設定。
- 如果預設設定仍然失敗,請使用
unelevated沙箱,以便在 調查問題期間繼續工作。
Codex 將我切換到了非提升權限沙箱
這意味著 Codex 無法在你的計算機上完成更強的 elevated 沙箱
設定。
- Codex 仍可在沙箱模式下執行。
- 它仍會應用基於 ACL 的檔案系統邊界,但不會使用
elevated的獨立沙箱使用者邊界,網路 隔離也較弱。 - 這是一個實用的備用方案,但不是首選的長期企業 設定。
如果你使用的是受管理的企業筆記型電腦,最佳長期解決方案通常是
在 IT 團隊的協助下讓 elevated 沙箱正常工作。
我看到了 Windows 錯誤 1385
如果沙箱命令因錯誤 1385 而失敗,說明 Windows 拒絕了沙箱使用者
啟動命令所需的登入類型。
實際上,這通常意味著 Codex 已成功建立沙箱使用者, 但 Windows 策略仍阻止這些使用者啟動沙箱 命令。
處理方法:
- 詢問 IT 團隊,裝置策略是否向 Codex 建立的沙箱使用者 授予了所需的登入權限。
- 如果問題僅影響部分計算機或團隊,請比較組策略或 OU 差異。
- 如果需要立即繼續工作,請在調查策略問題期間
使用
unelevated沙箱。 - 傳送
CODEX_HOME/.sandbox/sandbox.log,並附上你的 Windows 版本和 簡短的故障說明。
Codex 警告某些資料夾可由 Everyone 寫入
Codex 可能會警告某些資料夾可由 Everyone 寫入。
如果看到此警告,則這些資料夾的 Windows 權限過於寬泛, 沙箱無法對其提供完整保護。
處理方法:
- 檢查 Codex 在警告中列出的資料夾。
- 如果適合你的環境,請移除這些資料夾的
Everyone寫入 權限。 - 修正這些權限後,重啟 Codex 或重新執行沙箱設定。
如果不確定如何更改這些權限,請向 IT 團隊尋求幫助。
沙箱命令無法存取網路
根據所用權限模式,某些 Codex 聊天會被有意設定為 無法存取出站網路。
如果任務因無法存取網路而失敗:
- 檢查該任務是否本應在停用網路的情況下執行。
- 如果你原本需要網路存取,請重啟 Codex 並重試。
- 如果問題持續出現,請收集沙箱日誌,以便團隊檢查 計算機是否處於不完整或損壞的沙箱狀態。
沙箱之前可以正常工作,後來停止了
以下情況可能導致此問題:
- 移動儲存庫或工作區,
- 更改計算機權限,
- 更改 Windows 策略,
- 或更改其他系統設定。
可嘗試以下操作:
- 重啟 Codex。
- 再次嘗試設定
elevated沙箱。 - 如果仍未解決,請暫時使用
unelevated沙箱作為 備用方案。 - 收集沙箱日誌以供審查。
我需要向 OpenAI 傳送診斷資訊
如果問題仍然存在,請傳送:
CODEX_HOME/.sandbox/sandbox.log
同時附上以下資訊也會有所幫助:
- 對你嘗試執行的操作作簡短說明,
elevated沙箱是否失敗,或是否使用了unelevated沙箱,- 應用中顯示的任何錯誤訊息,
- 是否看到
1385或其他 Windows 或 PowerShell 錯誤, - 以及使用的是 Windows 11 還是 Windows 10。
請勿傳送:
CODEX_HOME/.sandbox-secrets/的內容
IDE 擴充套件已安裝但無響應
你的系統可能缺少某些原生依賴項所需的 C++ 開發工具:
- Visual Studio Build Tools(C++ 工作負載)
- Microsoft Visual C++ Redistributable (x64)
- 使用
winget時,執行winget install --id Microsoft.VisualStudio.2022.BuildTools -e
安裝後,請完全重啟 VS Code。