Codex 一直要求核准?一次搞懂核准原則、沙箱和「不再詢問」

當指令需要離開沙箱時,Codex 會要求核准。大多數「它一直問」的抱怨,都來自太嚴格的沙箱、已不存在的設定,或只在工作階段內有效的「不再詢問」。

作者:Aslan,Pet Island 團隊 · 更新於 2026年10月26日 · 閱讀時間 5 分鐘

簡答

在目前的 Codex 中,approval_policy 可以是 on-request(預設值:模型需要時才詢問)、never 或 granular 表格;untrusted 已移除,on-failure 現在只是 on-request 的別名。決定你被詢問頻率的主要是沙箱:使用 sandbox_mode = "workspace-write" 時,Codex 會在你的專案內編輯和執行指令而不詢問。對於你一律信任的指令,請在 ~/.codex/rules/default.rules 中新增帶有 decision = "allow" 的 prefix_rule。「Don’t ask again for commands that start with …」(以 … 開頭的指令不再詢問)也會儲存在那裡。

首先:Codex 有哪些變更

許多指南和論壇回答描述的設定已經失效。調整任何東西之前,請先對照這份清單檢查你的 ~/.codex/config.toml:

舊設定現況
approval_policy = "untrusted"已移除。Codex 會回報「approval_policy = "untrusted" is no longer supported; remove this setting」(已不再支援,請移除此設定)。文件建議改用 sandbox_mode = "read-only" 搭配 on-request。
approval_policy = "on-failure"仍可使用,但只是 on-request 的別名。
--full-auto已不在 CLI 參考文件中。最接近的旗標是 --approve-for-me(別名 --not-so-yolo):以 on-request 和 workspace-write 沙箱進行自動核准審查。
config.toml 中的 [profiles.name]自 Codex 0.134.0 起,--profile name 改為讀取 $CODEX_HOME/name.config.toml。殘留的 profile = "x" 鍵現在會引發錯誤。
/approvals請改用 /permissions(「Set what Codex can do without asking first.」,設定 Codex 不必先詢問就能做的事)

Codex 的文件也搬家了:舊的 developers.openai.com/codex 頁面現在會重新導向到 learn.chatgpt.com。

Codex 如何決定是否詢問

兩項設定共同運作。沙箱限制指令能接觸的範圍:專案外的檔案、網路。核准原則決定當指令需要超出沙箱允許的範圍時會發生什麼事。

sandbox_modeCodex 不詢問就能做的事
read-only(預設)在唯讀沙箱中讀取檔案和執行指令
workspace-write在工作目錄中自動讀取、編輯和執行指令
danger-full-access全部都可以,沒有沙箱。不建議使用
approval_policy行為
on-request(預設)由模型決定何時詢問。沙箱允許的指令不需核准即可執行
never永不詢問。任何失敗都會回傳給模型,而不會轉交給你
{ granular = { … } }讓部分提示類別保持互動,其餘自動拒絕(sandbox_approval、rules、skill_approval、request_permissions、mcp_elicitations)

所以如果你處於 read-only,每次編輯都需要你同意。這正是「Codex 什麼都要問」最常見的原因。即使在 workspace-write 中,.git、.codex、.agents 和 .aws 仍維持唯讀,而且除非你開啟,否則網路存取是關閉的。

以下是 OpenAI 文件中的範例設定,並附上工作區選項的說明:

~/.codex/config.toml複製
approval_policy = "on-request"
sandbox_mode = "workspace-write"
 
[sandbox_workspace_write]
# Additional writable roots beyond the workspace (cwd). Default: []
writable_roots = []
# Allow outbound network access inside the sandbox. Default: false
network_access = false

較新的版本也提供權限設定檔(default_permissions,內建 :read-only、:workspace 和 :danger-full-access)。設定檔和 sandbox_mode 擇一使用,不要同時使用。

CLI、IDE 擴充功能和應用程式中的預設集

你不必編輯 TOML。在 CLI 中,/permissions 會開啟預設集;在應用程式和 IDE 擴充功能中,輸入框下方有權限控制項。CLI 的預設集有:

  • Read Only:讀取工作區;編輯檔案或存取網際網路都需要核准。
  • Default:在工作區內編輯;存取網際網路或編輯其他檔案需要核准。
  • Full Access:不詢問就編輯工作區外的檔案並使用網際網路。

應用程式和 IDE 擴充功能把同樣的選擇稱為 Ask for approval、Approve for me 和 Full access。較舊的 IDE 螢幕截圖則稱為 Chat、Agent 和 Agent (Full Access)。

用規則允許特定指令

當你希望 Codex 不詢問就在沙箱外執行某個指令(例如 gh pr view)時,就寫一條規則。規則屬於實驗性功能,存放在設定層旁 rules/ 資料夾內的 .rules 檔案中,例如 ~/.codex/rules/default.rules:

~/.codex/rules/default.rules複製
prefix_rule(
pattern = ["gh", "pr", "view"],
decision = "allow",
)
  • allow:不提示,直接在沙箱外執行。
  • prompt:每個符合的指令執行前都詢問。
  • forbidden:不詢問直接封鎖。

當多條規則符合時,最嚴格的勝出:forbidden 勝過 prompt,後者又勝過 allow。在依賴某條規則之前,先用 codex execpolicy check 測試指令。

「不再詢問」實際儲存了什麼

Codex CLI 的核准提示提供好幾種「是」,效期差異很大:

選項效期
Yes, proceed(是,繼續)僅此一個指令
Yes, and don’t ask again for commands that start with <prefix>(是,以此前綴開頭的指令不再詢問)永久(以規則寫入 ~/.codex/rules/default.rules)
Yes, and don’t ask again for this command in this session(是,本工作階段中此指令不再詢問)直到工作階段結束
Yes, and don’t ask again for these files(是,這些檔案不再詢問)檔案編輯,限本工作階段

如果你一直選工作階段選項,明天還是會被問。請選前綴選項,或自己寫規則。

Windows 上的 Codex

Windows 曾是「什麼都要問」最嚴重的平台。在 issue #10187 中,一位 OpenAI 團隊成員解釋了原因:「Without a sandboxing mechanism, all tool calls need to be manually approved on Windows.」(沒有沙箱機制時,Windows 上所有工具呼叫都需要手動核准。)Codex 現在有原生 Windows 沙箱,並預設使用:

  • mxc:在相容的 Windows 裝置上建議使用的沙箱。
  • elevated:MXC 無法使用時的首選備援。
  • unelevated:舊版備援。
~/.codex/config.toml複製
[windows]
sandbox = "elevated" # or "unelevated"
 
[features]
prefer_mxc = true

在 CLI 中執行 /setup-default-sandbox 來設定 elevated 沙箱(IT 人員可用 codex sandbox setup --elevated)。建議使用 Windows 11;Windows 10 1809 或更新版本則盡力支援。如果你在 WSL 中工作,Codex 會在那裡使用 Linux 沙箱,且已不再支援 WSL1。

專案設定只在受信任的專案中載入

儲存庫內的 .codex/config.toml 只有在你信任該專案時才會被讀取。如果你的專案設定似乎被忽略,原因就在這裡。使用者設定中的信任項目如下:

~/.codex/config.toml複製
[projects."/absolute/path/to/project"]
trust_level = "trusted"

設定是分層的,優先順序由高到低:命令列旗標和 -c 覆寫、受信任專案的 .codex/config.toml、--profile 檔案、你的 ~/.codex/config.toml,最後是系統預設值。

關於 --yolo

--dangerously-bypass-approvals-and-sandbox(別名 --yolo)會在沒有核准和沙箱的情況下執行所有指令。原始碼對它的描述是「EXTREMELY DANGEROUS. Intended solely for running in environments that are externally sandboxed.」(極度危險,僅適用於已由外部沙箱隔離的環境。)在設定檔中使用 approval_policy = "never" 搭配 danger-full-access 效果相同。如果你只是想減少提示,workspace-write 加上幾條 allow 規則就能做到,而且沙箱仍然開著。

針對你保留的提示

當 Codex 只詢問重要的事(網路、專案外的檔案、push)之後,剩下的問題是注意到這些提問。Pet Island 會把 Codex 的指令和檔案編輯核准,連同指令或差異內容放到螢幕頂端的一座小島上,你不用找到正確的終端機就能允許或拒絕。它會顯示 Codex 正在工作或已完成,點一下 Codex 的提問就能帶你到正確的視窗。它支援 Codex CLI 和 Codex 應用程式;如果島關閉了,Codex 會照常在自己的視窗中詢問。

常見問題

如何讓 Codex 不要一直要求核准?

使用 sandbox_mode = "workspace-write",讓 Codex 可以在專案內編輯和執行指令;保留 approval_policy = "on-request";並為你一律信任的指令,在 ~/.codex/rules/default.rules 中新增 decision = "allow" 的 prefix_rule 項目。

approval_policy = "untrusted" 還有支援嗎?

沒有。目前的 Codex 會以「approval_policy = "untrusted" is no longer supported; remove this setting」拒絕它。請改用 sandbox_mode = "read-only" 搭配 approval_policy = "on-request"。

--full-auto 怎麼了?

它已不在 Codex CLI 參考文件中。最接近的選項是 --approve-for-me(別名 --not-so-yolo),它以 on-request 和 workspace-write 沙箱進行自動核准審查。

為什麼「不再詢問」沒有持續生效?

「Don’t ask again for this command in this session」只在工作階段內有效。請選「don’t ask again for commands that start with …」,它會把規則存到 ~/.codex/rules/default.rules。

為什麼 Codex 在 Windows 上問得比較多?

沒有沙箱時,每個工具呼叫都需要核准。Codex 現在預設使用原生 Windows 沙箱;如果尚未設定,請執行 /setup-default-sandbox。

為什麼我專案的 .codex/config.toml 被忽略了?

Codex 只會為受信任的專案載入專案設定。

資料來源

本頁所有設定與行為均已於 2026年10月26日 對照下列頁面確認。代理程式更新很快;若內容不再相符,請以官方頁面為準。

延伸閱讀

從螢幕頂端回應每一個代理程式。

Windows 與 Mac · 免費試用 7 天,之後一次付清 $8.99 · 每筆銷售提撥 $1 餵養街頭動物

免費試用 Pet Island