本文根據 Codex 官方文檔《Authentication》、環境變量文檔和 OpenAI 幫助中心網絡建議文章整理,資料核對於 2026-10-27。官方沒有專門解釋 Token exchange failed 這條報錯,本文寫的是官方文檔裏「瀏覽器登入不順利時」的做法。配圖為本站整理的示意圖,不是軟件截圖。
適用於誰
- 在 Codex 桌面 App、命令行 CLI 或 IDE 插件裏點了登入,瀏覽器已經顯示登入成功,回到 Codex 卻提示登入失敗、
token_exchange_failed的人; - 在遠程伺服器、虛擬機、沒有瀏覽器的環境裏裝 Codex,登入不了的人;
- 公司網絡、有代理的網絡裏登入不了的人。
結論先說
- 先換登入方式試一次:在命令行裏運行
codex login --device-auth(裝置碼登入,官方標註 beta)。官方認證文檔說,瀏覽器登入介面可能不好使的兩種情況是——在遠程或無頭環境裏運行,以及你的網絡配置阻止了 Codex 用來接收登入令牌的 localhost 回調;這兩種情況官方都推薦裝置碼。 - 裝置碼選項沒有出現,要先在 ChatGPT 的安全設定(個人帳號)裏開啟裝置碼登入;工作區帳號由管理員在工作區權限裏開。
- 想繼續用瀏覽器登入、但機器在遠程:先在本機用
ssh -L 1455:localhost:1455 用戶@遠程主機把回調端口轉發過來,再在這個 SSH 會話裏運行codex login。 - 公司網絡有 TLS 代理:登入前把
CODEX_CA_CERTIFICATE設為公司根證書的 PEM 文件路徑。 - 還不行:看
codex-login.log,並檢查官方狀態頁 status.openai.com。

圖:本站根據 Codex 官方文檔:Authentication 整理的示意圖
報錯原文怎麼讀
在公開的問題反饋裏能看到這類寫法(不同版本、不同平台文字略有差異):
text
Login failed
token_exchange_failed
Token exchange failed: error sending request for url (https://auth.openai.com/oauth/token)
按字面意思:登入的第二步,拿瀏覽器返回的授權碼去換令牌(token)時失敗了。冒號後面的 error sending request for url 說明這次請求沒有成功發出或沒有收到回應。官方認證文檔介紹登入流程是:運行登入後會打開瀏覽器窗口,登入完成後瀏覽器把憑據返回給 Codex。這個「返回」靠的是本機的回調端口(文檔裏寫的預設是 localhost:1455),所以回調被網絡配置擋住時,官方明確推薦換裝置碼。至於你這一次具體是哪一環出錯,官方文檔沒有寫,本文也不替官方下結論。
一、裝置碼登入:最先試的辦法
官方認證文檔裏的步驟(本站轉述):
- 在 ChatGPT 安全設定(個人帳號)或 ChatGPT 工作區權限(工作區管理員)裏開啟裝置碼登入;
- 在運行 Codex 的終端裏,二選一:在交互式登入介面選 Sign in with Device Code,或直接運行
codex login --device-auth; - 在瀏覽器打開終端裏給出的連結,登入,然後輸入一次性代碼。

圖:本站根據 Codex 官方文檔:Authentication 整理的示意圖
官方還說明:如果裝置碼登入在你的環境裏也不能用,就用下面的兩個備用辦法。
二、兩個備用辦法
辦法 A:在有瀏覽器的機器上登入,再複製登入緩存
- 在能打開瀏覽器登入的機器上運行
codex login; - 確認登入緩存文件
~/.codex/auth.json已生成; - 把它複製到無頭機器的同一路徑
~/.codex/auth.json。
官方給的 SSH 複製寫法:
shell
ssh user@remote 'mkdir -p ~/.codex'
scp ~/.codex/auth.json user@remote:~/.codex/auth.json
auth.json 裏是訪問令牌,要當成密碼對待:不要提交到代碼倉庫,不要貼進工單或聊天。如果你的系統把登入資料存進了系統憑據庫而不是這個文件,這個辦法可能不適用,存儲位置由配置項 cli_auth_credentials_store 決定(file、keyring、auto、ephemeral)。
辦法 B:轉發 localhost 回調端口
如果本機和遠程主機之間能做端口轉發,可以繼續用標準的瀏覽器登入:
shell
ssh -L 1455:localhost:1455 user@remote
然後在這個 SSH 會話裏運行 codex login,按終端打印的地址在本機瀏覽器裏完成登入。
三、有 TLS 代理或私有根證書
公司網絡會解密再轉發 HTTPS 流量時,Codex 需要信任公司的根證書。官方認證文檔「Custom CA bundles」一節:登入之前把 CODEX_CA_CERTIFICATE 設為 PEM 證書包路徑;沒設定時 Codex 退而使用 SSL_CERT_FILE;同樣的設定對登入、普通 HTTPS 請求和安全 WebSocket 連接都生效。官方環境變量文檔也列了這兩個變量,並寫明 CODEX_CA_CERTIFICATE 優先於 SSL_CERT_FILE。
shell
export CODEX_CA_CERTIFICATE=/path/to/corporate-root-ca.pem
codex login
證書文件要向公司 IT 要。官方文檔沒有給 Windows PowerShell 的寫法,不要把 export 直接粘進 PowerShell。
四、網絡要放行哪些地址
OpenAI 幫助中心「Network recommendations」文章給 IT 部門列了需要放行的域名,其中包括 .auth.openai.com、.chatgpt.com、*.openai.com 等;還寫明如果有網頁過濾,要確認沒有返回意外內容。報錯裏的地址是 auth.openai.com 的話,把這篇官方文章發給 IT 最直接。同一篇文章裏的「怎麼知道是不是網絡的問題」也值得先做:只有你這一台出問題還是整個網絡都這樣;把電腦切到手機熱點後問題是否消失。詳細對照見 /guides/codex-stream-disconnected-before-completion。
五、其他會讓登入失敗的情況
這幾條在站內已有文章,不重複展開,見 /guides/codex-cannot-sign-in-send-message-connect:
- 電郵密碼登入的帳號,必須先開啟多重驗證(MFA)才能用 Codex 雲端;
- 之前在 CLI 或插件裏退出過登入,需要重新登入,因為 CLI 和插件共用同一份登入緩存;
- 被工作區管理員用
forced_login_method、forced_chatgpt_workspace_id限制了登入方式或工作區,憑據不匹配時 Codex 會登出並退出。
六、收集日誌再反饋
直接運行 codex login 時,Codex 會在日誌目錄下寫一個專門的 codex-login.log,官方說它用來排查瀏覽器登入或裝置碼登入失敗,也是官方支持要登入日誌時要的東西。分享日誌前先檢查,別帶上密鑰或令牌。可以到 GitHub 的 openai/codex 看有沒有相同問題。
常見問題
Q:用 API 密鑰登入會不會繞過這個問題?
官方認證文檔說 Codex 支持 ChatGPT 帳號和 API 密鑰兩種登入方式,命令行用 printenv OPENAI_API_KEY | codex login --with-api-key。API 密鑰按 API 標準價格計費,不使用 ChatGPT 套餐裏包含的額度,部分依賴 ChatGPT 工作區的功能會受限。是否適合你,要看自己的需求。
Q:怎麼確認現在登入的是什麼?
命令行運行 codex login status;桌面 App 和 IDE 插件打開個人資料選單可以看到當前帳號或 API 密鑰狀態。
Q:登入好了,但額度不夠用?
見 /guides/codex-usage-limits,想開通 ChatGPT Plus 可以看 /chongzhi/chatgpt-plus。
Q:是不是官方服務出問題了?
先看狀態頁,讀法見 /guides/chatgpt-down-check-status-page。
參考資料
- Codex 官方文檔:Authentication — https://learn.chatgpt.com/docs/auth
- Codex 官方文檔:Environment variables — https://learn.chatgpt.com/docs/config-file/environment-variables
- OpenAI 幫助中心:Network recommendations for ChatGPT errors on web and apps — https://help.openai.com/en/articles/9247338-network-recommendations-for-chatgpt-errors-on-web-and-apps
- OpenAI 狀態頁 — https://status.openai.com/
0 條評論
還沒有評論,來搶沙發~