Codex 一直要求核准?一次搞懂核准原則、沙箱和「不再詢問」
當指令需要離開沙箱時,Codex 會要求核准。大多數「它一直問」的抱怨,都來自太嚴格的沙箱、已不存在的設定,或只在工作階段內有效的「不再詢問」。
簡答
在目前的 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_mode | Codex 不詢問就能做的事 |
|---|---|
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 文件中的範例設定,並附上工作區選項的說明:
較新的版本也提供權限設定檔(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:
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:舊版備援。
在 CLI 中執行 /setup-default-sandbox 來設定 elevated 沙箱(IT 人員可用 codex sandbox setup --elevated)。建議使用 Windows 11;Windows 10 1809 或更新版本則盡力支援。如果你在 WSL 中工作,Codex 會在那裡使用 Linux 沙箱,且已不再支援 WSL1。
專案設定只在受信任的專案中載入
儲存庫內的 .codex/config.toml 只有在你信任該專案時才會被讀取。如果你的專案設定似乎被忽略,原因就在這裡。使用者設定中的信任項目如下:
設定是分層的,優先順序由高到低:命令列旗標和 -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日 對照下列頁面確認。代理程式更新很快;若內容不再相符,請以官方頁面為準。
- OpenAI:Codex 代理程式核准與安全性
- OpenAI:Codex 權限模式
- OpenAI:Codex 設定基礎
- OpenAI:Codex 範例設定
- OpenAI:Codex 規則
- OpenAI:Codex Windows 沙箱
- OpenAI:Codex CLI 參考
- OpenAI:Codex 斜線指令
- openai/codex 原始碼(核准提示、設定錯誤)
- Issue #10187:Codex 一再要求核准指令
- Issue #5131:檔案編輯每次都得核准
- Issue #29406:選了不再詢問,核准提示仍持續出現