沙盒與權限
Codex 能跑指令、改檔案,所以權限要分開看兩層:
- Sandbox(沙盒):它實際碰得到哪些檔案與網路。
- Approval(核准):越界或高風險動作要不要先問你。
官方說明:Agent approvals & security、進階設定。
設定放在 ~/.codex/config.toml(使用者)或受信任專案的 .codex/config.toml。CLI 也可用 /permissions 或啟動旗標覆寫。
沙盒模式
sandbox_mode |
能做什麼 | 適合 |
|---|---|---|
read-only |
讀檔、分析,不寫入工作區 | 先摸清專案、問問題 |
workspace-write |
在工作區寫檔與跑指令 | 一般開發(建議預設) |
danger-full-access |
幾乎不限制檔案系統 | 僅限你已另外隔離的環境 |
workspace-write 預設沒有外連網路。需要下載套件或打 API 時再打開:
sandbox_mode = "workspace-write"
approval_policy = "on-request"
[sandbox_workspace_write]
network_access = true
即使工作區可寫,有些環境仍會把 .git/ 當保護路徑,所以 git commit 可能還是會跳出沙盒並要求核准。這是刻意的。
核准政策
現行日常用這兩個:
approval_policy |
行為 |
|---|---|
on-request |
需要更高權限或越界時暫停問你 |
never |
不再詢問;搭配寬鬆沙盒風險最高 |
舊的 untrusted 已淘汰,留在設定檔可能讓客戶端無法啟動,請刪掉。非互動的 codex exec 常用 never,但沙盒仍應收斂。
互動開發的實用組合:
對應旗標大致是 --sandbox workspace-write --ask-for-approval on-request。
Cloud 的兩階段
Cloud 不共用你的本機沙盒,而是:
- Setup:可上網,安裝你列出的依賴,此時可用 secrets。
- Agent:預設離線;secrets 在這階段前移除。
要讓雲端代理上網,在該 environment 另外開,並限制網域。這跟本機 network_access = true 是兩套開關。
實務建議
- 新 repo 先
read-only問清楚,再切workspace-write。 - 不要為了少按幾次核准就開
danger-full-access。 - 網路預設關閉,用到再開。
- 密鑰放環境變數或 Cloud setup secrets,不要寫進
AGENTS.md或 prompt。 - 任務前後靠 Git checkpoint;權限再寬,回退仍要靠版本控制。