Troubleshooting · Codex Login · OAuth

Ubuntu 22.04 中 VSCode Codex 登录报错:Token exchange failedVSCode Codex Sign-in Error: Token Exchange Failed

这个问题发生在登录认证阶段,重点排查 OAuth token 交换、本地回调、代理链路和 Codex CLI 登录缓存。This issue happens during sign-in, so the focus is OAuth token exchange, local callback, proxy routing, and Codex CLI credential cache.

1. 报错现象

在 VSCode 中登录 Codex 时,浏览器可能已经完成 ChatGPT 登录,但 VSCode 仍然提示 token 交换失败。

Sign-in could not be completed

Token exchange failed: error sending request for url (https://auth.openai.com/oauth/token)

Error code:
token_exchange_failed

关键判断:这个错误指向 https://auth.openai.com/oauth/token,说明问题在登录认证链路,不是模型响应接口不可用。

2. 可能原因

插件登录流程异常浏览器登录成功,但 token 没有正确回传给 VSCode Codex。
localhost 回调失败OAuth 回调没有被本地 Codex 登录流程正常接收。
代理链路不一致浏览器、VSCode、终端可能走了不同网络路径。
认证域名不稳定auth.openai.com 访问超时、EOF、连接重置或代理节点被风控。

这里最容易误判的一点是:浏览器能打开 ChatGPT,不代表 VSCode Codex 的 OAuth token 交换一定能完成。

3. 确认 Ubuntu 终端代理

本次本地代理端口是 127.0.0.1:7897。如果你的 Clash / Mihomo 端口不同,需要替换成实际值。

export http_proxy=http://127.0.0.1:7897
export https_proxy=http://127.0.0.1:7897
export all_proxy=socks5h://127.0.0.1:7897

测试认证域名:

curl -I --proxy http://127.0.0.1:7897 --max-time 20 https://auth.openai.com

如果这里出现 timeoutEOFconnection reset 等错误,应先换代理节点或调整代理规则。

4. 使用 Codex CLI 完成登录

如果 VSCode 插件登录流程不稳定,可以先用 Codex CLI 完成登录,让 CLI 写入本地登录缓存。

node -v
npm -v
npm i -g @openai/codex
codex login

如果终端显示登录链接但没有自动打开浏览器,就手动复制链接到浏览器里完成登录。完成后重启 VSCode:

pkill -f code
code

解决思路:先让 Codex CLI 跑通 OAuth 登录和本地凭据写入,再让 VSCode Codex 插件复用这份登录状态。

5. 排查结论

  1. Token exchange failed 是登录阶段问题,优先看认证域名和 OAuth token 交换。
  2. VSCode 插件登录失败时,可以用 codex login 先完成凭据缓存。
  3. 代理端口要统一,避免浏览器能访问但终端或 VSCode 不走代理。
  4. 完成 CLI 登录后重启 VSCode,通常可以让插件读取已有登录状态。
Codex LoginOAuthauth.openai.comProxyCLI Login

Summary

Token exchange failed is a sign-in path issue. Check proxy routing to auth.openai.com, then complete login through Codex CLI if the VSCode extension sign-in flow is unstable.

export http_proxy=http://127.0.0.1:7897
export https_proxy=http://127.0.0.1:7897
export all_proxy=socks5h://127.0.0.1:7897

curl -I --proxy http://127.0.0.1:7897 --max-time 20 https://auth.openai.com
npm i -g @openai/codex
codex login