大部分「Codex CLI vs Claude Code」的比較文都在問錯的問題。它們問誰寫 code 比較準、誰的 context 管理比較聰明,然後給你一張兩欄的表,最後結論是「各有優缺點,看你的需求」。

看你的需求——這四個字等於什麼都沒說。

真正該問的是這個:你公司已經買了 ChatGPT 的 seat 嗎?如果買了,Codex CLI 對你的邊際成本是零。codex 這個 CLI 本身是 Apache-2.0 的開源軟體(gh api repos/openai/codex 查到的 license.spdx_id 就是 Apache-2.0archivedfalse,最後一次 push 就在查詢當天 2026-09-04),付費方案買的是用量上限,不是產品本身。官方的說法是 Codex 包含在 ChatGPT Free、Go、Plus、Pro、Business、Enterprise 裡面,沒有獨立的 Codex 訂閱這種東西。

Claude Code 那邊的門檻不一樣。官方文件寫得很直白:「Most surfaces require a Claude subscription or Anthropic Console account.」桌面 App 那段更直接:「A paid subscription is required.」

所以帳單這一關,答案是不對稱的:如果你已經在付 ChatGPT,Codex CLI 你今天就該裝起來,因為它不多收你一毛錢。反過來如果你已經在付 Claude,那你早就有 Claude Code 了。兩邊都沒付?那你要先決定的是訂閱,不是 CLI。

「附贈」的那份帳,是跟你的聊天視窗一起算的

免費附贈通常有代價,這次的代價寫在同一頁文件上,只是很少人往下捲。

官方的原文是這樣寫的:「Local messages and cloud chats share your plan’s usage allowance.」你在終端機裡跑的東西,跟你在雲端開的任務,吃的是同一個額度。而額度的結算單位是滾動五小時:「The estimates below show local messages per five-hour period.」

這句話對日常工作的意思,比它讀起來嚴重。你早上在 ChatGPT 網頁上跟它來回幾十輪討論架構,下午打開終端機要它跑一個比較重的重構,這兩件事在計費上是同一件事。額度是一個油箱,五個出口。

Claude Code 那邊的模型不一樣,它的訂閱綁的是 Claude 帳號,額度規則跟你用不用 Codex 完全無關。你可以同時是 ChatGPT Plus 跟 Claude 的訂戶,兩個油箱各燒各的,互不相干——這件事聽起來像廢話,但它正是「兩邊都裝」在成本上說得通的原因。

還有一個岔路口在這裡:Codex 也可以改用 API key 登入。官方列的差別很具體,遠不只是換個計費方式。用 API key 之後,Codex 只剩 CLI、SDK 跟 IDE extension,雲端那一整塊(GitHub code review、Slack 那些)直接沒了,模型能用哪些看你那把 key 的權限,錢照 API 定價算。

換句話說,你付的訂閱決定的不只是額度,是你買到幾個表面。

你在 Windows 上開發嗎?這條判準會直接把答案定死

Claude Code 的 Bash sandbox 白紙黑字寫著:「The sandbox is built into Claude Code and runs on macOS, Linux, and WSL2. Native Windows is not supported. On Windows, run Claude Code inside a WSL2 distribution.」CLI 本身在原生 Windows 跑得起來(PowerShell、CMD、WinGet 的安裝指令官方都有給),但那層檔案系統與網路的隔離,在原生 Windows 上是不存在的。

Codex 那邊的沙箱文件則說,Windows 上用的是原生的 Windows sandbox(在 PowerShell 裡),WSL2 底下才走 Linux 那套實作。

如果你的團隊是 Windows 為主、又不打算全員搬進 WSL2,這條判準的分量會壓過前面所有討論。倒過來說,如果你跟大部分台灣的後端團隊一樣人手一台 MacBook,這條可以直接跳過,因為兩邊在 macOS 上都是用系統內建的 Seatbelt。

沒人看著的時候,兩邊的預設值往不同方向倒

Codex 的非互動模式文件寫得很硬:「By default, codex exec runs in a read-only sandbox.」你什麼都不設定,它就是唯讀。要它能改檔,你得自己把 --sandbox workspace-write 打上去。預設值是關的,鑰匙在你手上。

Claude Code 的 Bash sandbox 是另一種思路。它是內建的,但要你自己啟用(/sandbox 面板,或在 ~/.claude/settings.jsonsandbox.enabled)。而真正該注意的是這句:

By default, if the sandbox cannot start because dependencies are missing or the platform is unsupported, Claude Code shows a warning and runs commands without sandboxing. To make this a hard failure instead, set sandbox.failIfUnavailable to true.

沙箱起不來的時候,預設行為是印個警告然後照跑。要讓它變成硬失敗,得自己把 sandbox.failIfUnavailable 設成 true

這個設計在你人坐在螢幕前的時候完全合理,警告你看得到,你可以當場決定要不要停。問題在無人值守的場景:cron、CI、排定的任務。Linux 少裝了 bubblewrapsocat,或是換了一台環境不同的 runner,那行警告會被沖進 log 裡,然後你的 agent 在沒有隔離的狀態下把整個任務跑完。它不會失敗,這才是麻煩的地方。

沙箱起不來的時候 什麼都不設定的時候
codex exec 有明確的 --sandbox 值可指定 唯讀
Claude Code 預設警告後照跑(可設 failIfUnavailable 沙箱未啟用,走一般權限流程

這張表不是在說誰做錯了。兩邊的預設值都對應到各自假設的主要使用場景,Claude Code 假設你在場,Codex 的非互動模式假設你不在。你要做的判斷只有一句:你打算讓它在你睡覺的時候跑嗎? 會的話,第二欄那格值多少錢,你自己算。

那個 repo 自帶的設定檔,會不會被載進來

Codex 的設定參考頁裡有一句,跟前面幾條判準都不在同一個維度上:「Untrusted projects skip project-scoped .codex/ layers, including project-local config, hooks, and rules.」你把一個不信任的專案 clone 下來,它自帶的設定、hooks 跟 rules 會被整包跳過,而不是「載入之後再看看」。

前面談的都是你自己那台機器要怎麼設。這一條談的是相反的方向:別人的 repo 有沒有辦法反過來設定你。你在陌生的 repo 裡開 agent 之前,該先知道的是那份跟著程式碼一起被 clone 下來的設定檔到底會不會生效。benchmark 分數這時候排不上號。

自動化的形狀,兩邊想的根本是兩件事

兩邊給自動化準備的旗標,指向的方向完全不一樣。

codex exec 那組旗標,你把它們排在一起看就懂了。--ignore-user-config 讓這次執行不去讀 $CODEX_HOME/config.toml--ignore-rules 跳過使用者與專案的 execpolicy .rules--ephemeral 不把 session rollout 檔寫到磁碟;--json 把 stdout 換成 JSONL 事件流讓你拿 jq 去解。而且它還加了一道你可能會覺得多管閒事的檢查:「Codex requires commands to run inside a Git repository to prevent destructive changes.」不在 git repo 裡就不讓你跑,要跑得自己加 --skip-git-repo-check

1
2
3
# Codex 的自動化長這個形狀:把本機狀態全部關在門外
codex exec --json --ephemeral --ignore-user-config \
--sandbox workspace-write "把 CHANGELOG 補到最新的 tag"

這一整組加起來是同一件事:讓這次執行盡量不沾到這台機器的狀態。官方在認證那段也是同一個口徑,說 automation 應該用 API key,理由是「API keys are the right default for automation because they are simpler to provision and rotate」。

Claude Code 官方文件示範自動化的方式,語氣完全不同。它在講 Unix 哲學,示範的是把東西餵給它然後接走結果:

1
2
tail -200 app.log | claude -p "Slack me if you see any anomalies"
git diff main --name-only | claude -p "review these changed files for security issues"

一個在做密封執行,一個在做管線裡的過濾器。哪個對?看你要的是可重現的 CI 步驟,還是把 agent 接進你已經有的那套 shell 工作流。前者選 Codex,後者選 Claude Code。只是要講清楚,這是我從兩邊的旗標清單與官方示範反推出來的設計取向,不是我把兩套都接進同一條 CI 跑過之後的結論——真的要押在上面之前,自己先用一個最小的任務試一次。

模型從哪裡來,以及誰有權決定這件事

Claude Code 這邊在企業部署那頁列了幾條路:Amazon Bedrock、Claude Platform on AWS、Google Cloud’s Agent Platform(就是以前的 Vertex AI)、Microsoft Foundry,還有 Anthropic Console 跟 Claude for Teams/Enterprise。想跑在自家雲的帳單與 IAM 底下,這幾條就是官方認可的入口,還可以拿 ANTHROPIC_DEFAULT_OPUS_MODEL 那組環境變數把模型版本釘死,不讓別名自己漂。

Codex 這邊的設定參考頁把這件事鎖得更死。專案層的 .codex/config.toml 有一批鍵直接不准設,官方列的是 openai_base_urlchatgpt_base_urlapps_mcp_product_skumodel_providermodel_providersnotifyprofileprofilesexperimental_realtime_ws_base_urlotel。翻成白話:模型從哪裡來、認證打去哪裡、遙測送去哪裡,這些只能在使用者層決定,一個 repo 沒辦法靠自帶一份設定檔把你的流量導去別的地方。

但「Codex 有沒有等價於 Bedrock/Vertex 那種官方雲端市集部署路徑」這件事,我在官方文件裡沒有查到對應的清單頁,這部分我標未查證,不要拿我這句去跟採購交代。

如果你的公司有資料落地或雲端採購的硬性限制,這條判準的優先序會直接跳到第一位,前面五條全部靠邊站。

反過來問:什麼情況下它反而是壞選擇

Codex CLI 什麼時候是壞選擇? 當你的團隊已經很重度在用 ChatGPT 網頁的時候。「Local messages and cloud chats share your plan’s usage allowance」這句話,在一個十人團隊身上會長成很難溝通的樣子:有人下午跑不動重構,原因是同事早上在網頁上聊了三小時。這種資源競爭沒有錯誤訊息,只有「今天好像比較慢」。

還有一個更隱蔽的:如果你想用 API key 登入來繞開訂閱,官方明列的代價是雲端那一整塊都沒了,只剩 CLI、SDK 跟 IDE extension,模型能用哪些看你那把 key。你以為在省錢,實際上是買到了半個產品。

Claude Code 什麼時候是壞選擇? 原生 Windows,以及任何沒有人在場的執行環境。前者是文件白紙黑字寫的不支援,後者是那個 fail-open 的預設。這兩件事都不是「不好用」,是「你要為它多做一步設定,而那步設定沒做的時候不會有人提醒你」。

兩個都裝的話,磁碟空間不是問題。 真正的稅金是你腦子裡得同時維護兩套權限模型,而權限設錯的失敗形態是安靜的。Codex 那邊你要記得 sandbox_modeapproval_policy 是兩個可以自由組合的維度;Claude Code 那邊你要記得沙箱跟權限模式是兩層獨立的東西,而且沙箱要先開。哪天你在錯的那台機器上跑了 danger-full-access,或是以為沙箱開著其實它啟動失敗,這兩種錯誤都不會當場炸給你看。

我的答案

不騎牆的話,我會這樣切:

會在沒有人盯著的時候執行的那個 agent,用 Codex CLI。 理由只有一個,codex exec 的預設值站在保守那一邊,而且它給你一整組把本機狀態關在門外的旗標。無人值守的場景裡,「什麼都不設定會發生什麼」比「設定齊全時能力上限多高」重要一百倍。

你坐在前面一起工作的那個,用你已經在付錢的那一個。 交互式使用的差距,遠遠小於你為了換工具要重寫的那些流程檔。這種時候換工具是在付遷移成本買一個你感覺不太出來的差異。

兩邊都還沒付錢的,從 ChatGPT 那一邊開始。 開篇我說這種人要先決定的是訂閱,那就把話講完:這跟哪一邊比較強沒有關係,看的是試錯成本能壓到多低。官方把 Codex 放進包含 Free 在內的每個 ChatGPT 方案,你不必先掏錢就摸得到;Claude Code 那邊官方寫的是多數表面需要訂閱或 Console 帳號,等於你得先付了才知道合不合用。這只是進場順序,不是終點:真的用起來之後記得回頭看第二節那件事,網頁跟終端機吃的是同一個油箱。

然後把省下來的那個下午拿去做一件事:把你主力工具的沙箱真的打開,並且驗證它有起來,不要只看設定檔裡有那一行。設定檔裡有一行跟那行生效中,是兩件事。

這篇的邊界講清楚:我沒有實際跑過 Codex CLI。上面所有關於 Codex 的行為、旗標與預設值,全部來自官方文件與 gh api repos/openai/codex 的 repo 元資料,查詢日 2026-09-04。Claude Code 那側的引文來自 code.claude.com 的官方文件。兩邊的版本號我沒有對齊,文件更新的速度也不一樣,所以真的要照著設之前,請自己開一次官方頁面確認。

來源