问题诊断 · AI

Codex CLI 无法连接、OAuth 回调失败怎么办:终端代理、localhost 被代理拦截、浏览器与终端节点不一致

Codex CLI 登录时浏览器授权成功但终端一直等待、提示回调超时,或者直接连不上 API,原因在终端没走代理、OAuth 的 localhost 回调被代理规则截走、浏览器和终端走了不同节点、企业网络限制。本文讲每种情况怎么判断和处理。

两种失败,两种处理

Codex CLI 的连接问题分两类,先看自己是哪一类:

第二类和其他终端 AI 工具的处理相同;第一类是 Codex 特有的,涉及 OAuth 的本地回调。安装和基础配置见 Codex 与 Cursor 使用教程,本文只处理连接失败。

API 连接失败:终端没走代理

浏览器走系统代理,终端里的 Node.js 程序默认不走。浏览器能开 chatgpt.com、Codex 连不上,就是这个。

环境变量方式

在终端里设置:

export HTTPS_PROXY=http://127.0.0.1:7890
export HTTP_PROXY=http://127.0.0.1:7890

端口按你的客户端改,Clash 类默认 7890。设置后在同一个终端启动 Codex。要永久生效就写进 shell 配置文件。

验证:curl -I https://api.openai.com,能返回响应头就通了。

TUN 方式

客户端开 TUN 模式,系统全部流量经过代理,终端不需要设置。TUN 的常见问题见 TUN 模式问题排查。

两种方式选一种,不要同时用。

OAuth 回调失败:localhost 被代理拦截

这是 Codex 登录问题里最特殊也最常见的一种。

OAuth 登录的流程是:Codex 在本地监听一个端口(比如 localhost:1455),打开浏览器去 OpenAI 授权,授权完成后 OpenAI 让浏览器跳转回 http://localhost:1455/callback?code=...,Codex 从这个请求里拿到授权码。

问题出在最后一步。如果代理客户端的规则把 localhost 的请求也接管了,浏览器对 localhost 的访问会被送进代理,代理在远端找不到 localhost,请求失败,Codex 收不到回调。表现就是浏览器显示「授权成功」或者白屏报错,终端一直等到超时。

判断方法

登录时临时关掉系统代理(客户端里关「系统代理」开关,保留 TUN 也要关),再试一次。能登录,就是 localhost 被拦截。

处理

客户端的系统代理设置里有「绕过列表」(bypass),确保里面有:

localhost
127.0.0.1
::1

Clash Verge 在「系统代理」设置的「绕过域名」里;Clash Party 和 FlClash 有类似选项;macOS 系统代理的绕过列表在网络设置里。

浏览器扩展代理(SwitchyOmega 之类)也要加 localhost 绕过。

TUN 模式下,localhost 一般不会被接管,但部分客户端的 TUN 会接管 127.0.0.1 以外的本地地址,报错的话把回调地址改成 127.0.0.1 试试。

端口被占用

Codex 监听的回调端口被其他程序占了,它根本起不来,浏览器跳转回来是「拒绝连接」。用 lsof -i :端口号 看是谁占的,关掉再登。

浏览器与终端节点不一致

OAuth 流程中,浏览器访问 OpenAI 的授权页,终端拿授权码换 token。这两步分别经过浏览器的代理和终端的代理。如果浏览器走的是节点 A、终端走的是节点 B,OpenAI 看到两个不同的 IP 完成同一次登录,可能拒绝。

常见情形:浏览器用了扩展代理指向某个节点,终端环境变量指向 Clash 的另一个策略组;或者 ChatGPT 域名走了 url-test 自动选择,两次请求之间恰好切了节点。

处理:把 openai.com、chatgpt.com、auth0.com 固定到一个手动选择的节点,浏览器和终端都通过同一个客户端出去。节点怎么挑见 AI 节点选择。

企业网络

公司网络下的三个常见障碍和处理:

排查顺序

  1. 分清是登录失败还是 API 失败。
  2. API 失败:curl -I https://api.openai.com 测终端代理。不通就设环境变量或开 TUN。
  3. 登录失败:关系统代理登一次。能登就是 localhost 拦截,加绕过。
  4. 还不行:固定节点,让浏览器和终端走同一个出口。
  5. 公司网络:处理证书和白名单。
  6. 换一个客户端模式再试(环境变量换 TUN,或反过来)。

登录成功后

OAuth 的凭证会存在本地,之后的使用只有 API 连接,不再需要回调。所以回调问题只在登录这一次,解决一次就好。之后如果凭证过期需要重新登录,再走一遍绕过的检查。

Codex 的使用场景和适合的机场见 Codex 工具页 和 AI 工具机场推荐。

常见报错对照

报错原因处理
ECONNREFUSED 或 connect timeout终端没走代理,或代理端口写错确认客户端混合端口,重新 export;用 curl -I https://api.openai.com 验证
浏览器打开授权页后一直转圈浏览器和终端走的节点不一致,或 OpenAI 判定地区不支持两边都固定同一个美国节点,香港、台湾节点换掉
授权成功但终端提示 callback failedlocalhost:1455 的回调请求被系统代理劫持把 localhost、127.0.0.1 加入客户端的绕过列表,或登录那一分钟临时关闭系统代理
401 / invalid_api_key用的是 API Key 登录但 Key 失效,或账号没有 Codex 权限到 OpenAI 后台重建 Key,确认订阅档位包含 Codex
429短时间请求太多,或共享 IP 被限流等几分钟;长期频繁出现换节点,见 ChatGPT 429 怎么办
回答中途 stream closed长连接被中断换专线节点,错开晚高峰

选机场时为 Codex 考虑什么

Codex 一次任务可能持续几十分钟并持续占用一条到 OpenAI 的连接,对节点的要求是「稳」而不是「快」。看三点:是否有美国专线节点;节点 IP 是否被标记为数据中心(会更容易触发验证),参考 原生 IP;晚高峰延迟是否稳定。满足这些的机场见 AI 工具机场推荐。

相关

Codex 与 Cursor 使用教程

常见问题

Codex 登录时浏览器显示授权成功,终端却一直等,怎么回事?

OAuth 的回调地址是 localhost 的一个端口,浏览器要把授权结果发回终端。代理客户端把 localhost 的请求也截走了就收不到。把 localhost 和 127.0.0.1 加进绕过列表,或者登录时临时关系统代理。

Codex CLI 报 fetch failed 或 ECONNREFUSED,是什么原因?

终端没有走代理。Codex 是 Node.js 程序,不读系统代理设置。在终端里设 HTTPS_PROXY 指向客户端的本地端口,或者开 TUN 模式。

浏览器能登录 ChatGPT,为什么 Codex 登录失败?

浏览器和终端走的可能不是同一个节点或同一个出口 IP。OAuth 登录过程中 IP 不一致会被拒。把 openai.com 相关域名固定到一个节点,让浏览器和终端走同一条路。

Codex 的 OAuth 回调端口被占用怎么办?

Codex 会监听一个本地端口等回调,被别的程序占了就起不来。关掉占用端口的程序,或者查看 Codex 的文档改回调端口。

公司网络下 Codex 完全连不上怎么办?

通常是防火墙没放行 openai.com,或者 TLS 拦截的证书 Node.js 不认。加公司根证书到 NODE_EXTRA_CA_CERTS,或者用自己的网络绕过公司代理。


本文为信息整理与个人经验,不构成购买建议。机场政策与软件界面可能变化,以官方为准。发现过期内容请 联系纠错。

继续阅读

回到 问题诊断 · 机场推荐 2026 · 排行榜