Claude Code vs Codex:一張不容易過期的功能對照表
本篇是「Codex 和 Claude Code 雙修」系列的第 2 / 7 篇。你可以從系列總覽開始閱讀,也可以直接接著看本文。
把 Claude Code 換成 Codex 時,我最早做的是整理一張「這個功能在另一邊叫什麼」的表。很快就發現,逐一抄旗標不是好方法:CLI 更新後,最先過期的就是模型名稱、預設模式和實驗功能。
這篇改用比較耐久的方式,對照兩邊的能力與責任邊界。指令只保留穩定入口;實際使用前,仍應跑一次 claude --help 或 codex --help。
這是系列第 2 篇,內容查核日期為 2026-07-14。上一篇先談如何依權限、環境與工作流分工。
先看總表
| 工作 | Claude Code | Codex | 是否可直接對照 |
|---|---|---|---|
| 互動式 coding | claude | codex | 大致可以 |
| 非互動執行 | claude -p | codex exec | 可以,但輸出與 session 行為不同 |
| 專案規則 | CLAUDE.md | AGENTS.md | 概念相近,載入規則不同 |
| 專案設定 | .claude/settings.json | .codex/config.toml | 不可共用格式 |
| 權限控制 | permission modes + rules | approval policy | 只能部分對照 |
| 執行隔離 | sandbox | sandbox mode | 概念相近,實作依平台而異 |
| 可重用工作流 | Skills | Skills | 共用核心格式 |
| 外部工具 | MCP | MCP | server 可共用,client 設定分開 |
| 次級 agent | subagents / agent teams | subagents | 能力相近,協作模型不同 |
| 檢查變更 | 自訂 review 工作流 | codex review | Codex 有明確入口;兩邊都可用 prompt review |
這張表最重要的欄位是最後一欄。看到概念相近,不代表能把設定原封不動搬過去。
互動模式與非互動執行
兩邊最基本的入口很接近:
claude
codex
要放進腳本或 CI,則分別使用:
claude -p "Explain the current diff"
codex exec "Explain the current diff"
兩邊都能輸出機器可讀結果,但參數名稱與 session 行為不同。Claude Code 可搭配 --output-format、--json-schema,Codex 可用 --json、--output-schema 和 --output-last-message。自動化時要把 schema、exit code、逾時和空輸出都當成介面的一部分,不要只解析自然語言。
如果腳本要可重現,還要固定:
- 工作目錄;
- 權限與沙箱設定;
- 可用工具;
- 是否保留 session;
- 允許讀取哪些 repo instructions。
模型名稱反而不適合寫死在通用教學裡。帳號方案、CLI 版本與可用模型都會變,應從當下的模型選擇介面或官方文件確認。
權限:不要只背「危險模式」的對照
最容易被抄進筆記的對照通常是:
claude --dangerously-skip-permissions
codex --yolo
兩者都會跳過重要護欄,但不是安全模型的完整描述,也不該成為預設設定。
Claude Code 使用 permission mode 搭配 allow/deny rules,並可用 sandbox 限制 Bash 指令。Codex 則把 approval policy 與 sandbox mode 分成兩個維度。以 Codex 為例:
codex -a on-request -s workspace-write
codex exec -a never -s read-only "Review the current diff"
第一行允許在工作區寫入,必要時詢問;第二行不等待批准,但程序只有讀取權限。never 不是「什麼都能做」,它只表示不會詢問,實際能力仍受 sandbox 限制。
反過來說,--yolo 會同時放寬重要限制。只有在容器、VM 或隔離 runner 已經把檔案、網路與 credentials 關好時,才考慮使用。
官方參考:Claude Code permission modes、Codex approvals and security、Codex sandboxing。
專案規則與設定檔要分成兩層
我會把檔案分成「告訴 agent 怎麼工作」和「控制 client 怎麼執行」兩類:
專案規則
Claude Code CLAUDE.md
Codex AGENTS.md
內容適合放架構、指令、測試要求、命名慣例與禁止事項。Claude Code 可以從 CLAUDE.md 匯入 AGENTS.md,所以共用核心不必複製兩份。
執行設定
Claude Code .claude/settings.json
Codex .codex/config.toml
這裡才放權限規則、hooks、MCP 或 client 行為。Codex 也支援受信任專案內的 .codex/config.toml,不是只能改使用者層級的 ~/.codex/config.toml。
兩邊都有多層設定與覆寫規則。不要因為檔名看起來相近,就假設 precedence 也一樣。第三篇會整理一個可維護的 repo 結構。
Skills:共同語言,但不是完全相同的 runtime
Claude Code 與 Codex 都支援 Agent Skills 規格,核心是一個含 frontmatter 的 SKILL.md。因此,任務步驟、參考資料與腳本通常可以共用。
差別在掃描位置和工具專屬欄位:
Claude Code .claude/skills/<name>/SKILL.md
Codex .agents/skills/<name>/SKILL.md
格式相容不代表執行結果相同。Skill 如果依賴某個 client 才有的工具、hook、subagent 類型或權限模式,就要加上相容性說明,或拆出薄薄的工具專屬 adapter。
另外,Codex 的 custom prompts 已標記為 deprecated,新的可重用流程應優先寫成 Skills;Claude Code 的舊式 commands 也已併入 Skills 的使用方式。不要再把 ~/.codex/prompts 與 .claude/commands 當成長期共用方案。
MCP:共用 server,不共用設定格式
兩邊都是 MCP client,所以同一個 filesystem、資料庫或內部 API server 可以各自註冊:
claude mcp list
codex mcp list
但 client 設定、環境變數轉交與 OAuth token 仍各自管理。Claude Code 常用 .mcp.json 保存 project scope;Codex 則放在 config.toml 的 mcp_servers。第五篇會提供不把 secret 寫進 repo 的範例。
Subagents:都有,但不要把名稱當成相同架構
Claude Code 有 subagents,也提供實驗性的 agent teams;Codex 支援 subagents,互動介面可檢視或切換 agent。兩邊都能把研究、實作、測試或 review 拆給次級 agent,但上下文傳遞、工具限制與結果彙整方式並不相同。
實務上先定義任務邊界,比先追求最多 agent 更重要:
- 每個 agent 只負責一個可驗證輸出;
- 說清楚能否改檔;
- 指定回報格式;
- 避免多個 agent 同時改同一段程式;
- 最後由單一 owner 整合和跑測試。
Review、checkpoint 與 session:這些最不適合硬配對
Codex 有 codex review,可針對未提交變更、base branch 或特定 commit 檢查。Claude Code 沒有完全相同的 shell 子指令,但可以在唯讀/plan 工作流中 review diff。
Claude Code 的 checkpointing 與 /rewind,和 Codex 的 resume、fork 也不是同一件事:一邊偏向回復對話中的程式狀態,一邊偏向延續或分岔 session。選擇時先問自己要的是「復原檔案」、「回到對話節點」,還是「保留原 session 開新分支」。
一張實際選擇表
| 情境 | 建議起點 |
|---|---|
| 邊讀邊問、逐步探索 | 選你較熟悉的互動 CLI,先用唯讀/plan 模式 |
| CI 產生結構化結果 | claude -p 或 codex exec,加 schema 與明確 exit policy |
| 高風險 repo | 先縮小 sandbox、network 和 secrets,再談自動化 |
| 跨工具共用規則 | AGENTS.md 做核心,CLAUDE.md 匯入並補充 |
| 跨工具共用流程 | 寫成標準 Skill,分別放到兩邊的 discovery 路徑 |
| 第二意見 | author 完成 diff 後,讓另一個工具唯讀 review,再跑測試 |
最耐用的對照不是「A 旗標等於 B 旗標」,而是知道每個設定到底控制哪一層。CLI 更新時,只要重新查該層的入口,不用推翻整套工作流。
上一篇:Claude Code 和 Codex 怎麼分工? · 下一篇:共用專案規則:CLAUDE.md、AGENTS.md 與設定檔