Codex CLI 還是 Claude Code:這題先看你已經在付誰的錢
大部分「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.0,archived 是 false,最後一次 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.json 設 sandbox.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.failIfUnavailabletotrue.
沙箱起不來的時候,預設行為是印個警告然後照跑。要讓它變成硬失敗,得自己把 sandbox.failIfUnavailable 設成 true。
這個設計在你人坐在螢幕前的時候完全合理,警告你看得到,你可以當場決定要不要停。問題在無人值守的場景:cron、CI、排定的任務。Linux 少裝了 bubblewrap 或 socat,或是換了一台環境不同的 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 | # Codex 的自動化長這個形狀:把本機狀態全部關在門外 |
這一整組加起來是同一件事:讓這次執行盡量不沾到這台機器的狀態。官方在認證那段也是同一個口徑,說 automation 應該用 API key,理由是「API keys are the right default for automation because they are simpler to provision and rotate」。
Claude Code 官方文件示範自動化的方式,語氣完全不同。它在講 Unix 哲學,示範的是把東西餵給它然後接走結果:
1 | tail -200 app.log | claude -p "Slack me if you see any anomalies" |
一個在做密封執行,一個在做管線裡的過濾器。哪個對?看你要的是可重現的 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_url、chatgpt_base_url、apps_mcp_product_sku、model_provider、model_providers、notify、profile、profiles、experimental_realtime_ws_base_url 跟 otel。翻成白話:模型從哪裡來、認證打去哪裡、遙測送去哪裡,這些只能在使用者層決定,一個 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_mode 跟 approval_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 的官方文件。兩邊的版本號我沒有對齊,文件更新的速度也不一樣,所以真的要照著設之前,請自己開一次官方頁面確認。
來源
- Codex CLI 總覽與指令:learn.chatgpt.com/docs/codex/cli
- Codex 沙箱與審批模型:learn.chatgpt.com/docs/sandboxing
- Codex 非互動模式(
codex exec):learn.chatgpt.com/docs/non-interactive-mode - Codex 方案與用量:learn.chatgpt.com/docs/pricing
- Codex 設定參考(專案層禁設的鍵、untrusted 專案):learn.chatgpt.com/docs/config-file/config-reference
openai/codexrepo 元資料(Apache-2.0、未封存):gh api repos/openai/codex- Claude Code 總覽與各表面:code.claude.com/docs/en/overview
- Claude Code 沙箱化 Bash 工具:code.claude.com/docs/en/sandboxing
- Claude Code 企業部署與第三方平台:code.claude.com/docs/en/third-party-integrations










