常见问答

Codex 浏览器登录成功,客户端却提示 token_exchange_failed?

Codex 浏览器登录成功,客户端却提示 token_exchange_failed?

打开 Telescope加速器 或当前代理客户端,查看本地 HTTP/混合代理的真实监听端口。Windows PowerShell 执行 Get-ChildItem Env: | Where-Object Name -Match 'PROXY',核对旧端口;发现不一致就修正,完全退出 Codex 后重新登录。不要断开代理改用直连测试。

核对代理客户端的真实端口

打开代理客户端的设置,找到「本地 HTTP 代理」或「混合端口」,记下实际数值。示例 7890 只是示意,不要直接照抄。Windows 可在 PowerShell 执行 Get-NetTCPConnection -State Listen | Where-Object LocalPort -eq 7890,将 7890 换成刚查到的端口。

如果没有监听,检查代理服务是否真正运行;保持 TUN 或其他原有接管保护,不关闭代理以求登录成功。端口正常但 Codex 仍失败,继续核对它读取的代理配置。

Windows 检查残留代理变量

PowerShell 执行:

Get-ChildItem Env: | Where-Object Name -Match 'PROXY'
[Environment]::GetEnvironmentVariable("HTTPS_PROXY","User")
[Environment]::GetEnvironmentVariable("HTTP_PROXY","User")

如果变量仍指向已关闭的旧端口,确认当前客户端提供的是 HTTP/混合代理后,在当前 PowerShell 会话设置(把 7890 改成实际端口):

$env:HTTP_PROXY="<http://127.0.0.1:7890>"
$env:HTTPS_PROXY="<http://127.0.0.1:7890>"
$env:NO_PROXY="localhost,127.0.0.1,::1"
codex login

只影响当前终端及其启动的子进程,不会修改系统全局配置。若使用 Codex 桌面版,关闭全部 Codex 进程并重新启动,确保它读取到正确设置;不要将终端环境变量误当成桌面应用必然继承的配置。

macOS 或桌面版检查 Codex 自身配置

终端执行 env | grep -i proxy 查看当前变量,再检查 ~/.codex/.env 是否存在指向旧端口的 HTTP_PROXY、HTTPS_PROXY 或 ALL_PROXY。修改前备份文件;有设置时让它们与当前可用代理的协议、端口一致,并保留 NO_PROXY=localhost,127.0.0.1,::1。

Codex 桌面版与命令行可能读取不同环境。更正后完整退出应用再打开。浏览器授权已成功而客户端失败,重点检查客户端到 auth.openai.com 的后续请求,不要反复退出 ChatGPT 账号或删除授权缓存。

端口一致仍失败

在保持代理接管的前提下,检查代理日志中 Codex 是否访问旧端口、是否出现连接拒绝或请求超时。若已正确走代理仍报错,记录 Codex 版本、系统版本、错误全文及脱敏网络日志,提交官方 GitHub Issue。不要公开令牌、回调 URL 中的授权参数或个人账号信息。此错误也可能来自客户端版本缺陷,并非每次都是代理配置。