沙箱與批准
Codex 被允許做什麼是由沙箱模式(Codex 被允許在沒有監督的情況下做什麼)和批准策略(您何時必須確認操作)的組合控制的。本頁解釋了選項、它們如何相互作用,以及沙箱在每個平台上的行為。
批准策略
Codex 保守地啟動。在您明確告訴它工作目錄是受信任的之前,CLI 預設為只讀。Codex 可以檢查文件並回答問題,但每個編輯或命令都需要批准。
當您將工作目錄標記為受信任時(例如通過入職提示或 /approvals → "Trust this directory"),Codex 將預設預設升級到代理,這允許在工作區內進行寫入。Codex 僅在需要離開工作區或在沙箱外重新運行時打斷您。注意工作區包括工作目錄加上 /tmp 等臨時目錄。使用 /status 確認確切的可寫入根目錄。
如果您想對受信任的存儲庫獲得最大的護欄,請從 /approvals 選擇器切換回只讀。如果您真的需要無人值守的自動化,請使用 Full Access——但要有意,因為這會跳過沙箱和批准。
我可以在沒有任何批准的情況下運行嗎?
可以,您可以使用 --ask-for-approval never 禁用所有批准提示。此選項與所有 --sandbox 模式一起工作,因此您仍然可以完全控制 Codex 的自主級別。它將使用您提供的任何約束來盡力而為。
常見沙箱+批准組合
| 意圖 | 標誌 | 效果 |
|---|---|---|
| 安全只讀瀏覽 | --sandbox read-only --ask-for-approval on-request | Codex 可以讀取文件並回答問題。Codex 需要批准才能進行編輯、運行命令或訪問網絡。 |
| 只讀非交互(CI) | --sandbox read-only --ask-for-approval never | 僅讀取;永不升級 |
| 讓它編輯存儲庫,如果有風險則詢問 | --sandbox workspace-write --ask-for-approval on-request | Codex 可以讀取文件、進行編輯,並在工作區中運行命令。Codex 需要批准工作區外的操作或網絡訪問。 |
| 自動(預設;受信任的存儲庫) | --full-auto(等同於 --sandbox workspace-write + --ask-for-approval on-request) | Codex 運行可以在工作區內進行寫入的沙箱命令,無需提示。僅在必須離開沙箱時升級。 |
| YOLO(不推薦) | --dangerously-bypass-approvals-and-sandbox(別名:--yolo) | 沒有沙箱;沒有提示 |
注意:在
workspace-write中,網絡預設禁用,除非在配置中啟用([sandbox_workspace_write].network_access = true)。
在 config.toml 中進行微調
# 批准模式
approval_policy = "untrusted"
sandbox_mode = "read-only"
# 全自動模式
approval_policy = "on-request"
sandbox_mode = "workspace-write"
# 可選:在 workspace-write 模式下允許網絡
[sandbox_workspace_write]
network_access = true您也可以將預設保存為配置文件:
[profiles.full_auto]
approval_policy = "on-request"
sandbox_mode = "workspace-write"
[profiles.readonly_quiet]
approval_policy = "never"
sandbox_mode = "read-only"按平台的沙箱機制
Codex 用於強制沙箱策略的機制取決於您的操作系統:
macOS 12+
使用 Apple Seatbelt。Codex 用與所選 --sandbox 模式對應的配置文件調用 sandbox-exec,在操作系統級別約束文件系統和網絡訪問。
Linux
結合 Landlock 和 seccomp API 來近似相同的保證。需要內核支持;較舊的內核可能不會公開必要的功能。
在容器化的 Linux 環境中(例如 Docker),當主機或容器配置不公開 Landlock/seccomp 時,沙箱可能不會工作。在這些情況下,配置容器以提供您需要的隔離,並在該容器內使用 --sandbox danger-full-access(或簡寫 --dangerously-bypass-approvals-and-sandbox)運行 Codex。
Windows
Windows 沙箱支持仍處於實驗階段。工作方式:
- 在從 AppContainer 配置文件派生的受限令牌內啟動命令。
- 通過將能力 SID 附加到該配置文件來授予僅特別請求的文件系統能力。
- 通過覆蓋與代理相關的環境變量並為常見網絡工具插入存根可執行文件來禁用出站網絡訪問。
其主要限制是它不能防止在 Everyone SID 已具有寫入權限的任何目錄中進行文件寫入、刪除或創建(例如,全局可寫入的文件夾)。 有關更多討論和限制,請參見 Windows 沙箱安全詳情。
用 Codex 沙箱進行實驗
要測試命令在 Codex 沙箱下的行為,請使用 CLI 幫助程序:
# macOS
codex sandbox macos [--full-auto] [COMMAND]...
# Linux
codex sandbox linux [--full-auto] [COMMAND]...
# 舊別名
codex debug seatbelt [--full-auto] [COMMAND]...
codex debug landlock [--full-auto] [COMMAND]...