适用于 Codex Desktop、Codex CLI,以及由编辑器启动的 Codex 后端。
最后验证日期:2026-07-21
部分网络环境下,Codex 在新建会话并首次提问时会连续显示类似以下状态:
Reconnecting... 1/5
Reconnecting... 2/5
...
Reconnecting... 5/5
等待一段时间后,请求有时仍能成功。这通常是因为 Codex 优先尝试的 WebSocket 连接失败,完成多次重试后才回退到 HTTP/HTTPS 通道。
如果代理软件已经运行、浏览器访问也正常,但 Codex 后端进程没有获得明确的代理环境变量,就可能出现这种现象。
Codex 的模型通信可能使用 HTTPS 和 WebSocket(wss://)。某些系统代理、透明代理或代理链路可能存在以下情况:
- 浏览器能够使用系统代理,但 Codex 后端没有继承该代理配置。
- 普通 HTTPS 请求可以通过,但 WebSocket Upgrade 或长连接不稳定。
- Codex 首次尝试 WebSocket,连续超时后才回退到 HTTP,因此表现为反复重连。
- 本地代理端口填写错误,或者该端口只支持 SOCKS、不支持 HTTP CONNECT。
将代理变量写入 Codex Home 下的 .env,可以让 Codex 后端在启动时读取这些变量,并通过指定的本地代理建立 HTTPS 和 WebSocket 连接。
该方案不需要修改 model_provider,也不会主动迁移、删除或重建本地会话记录。
下面示例统一使用:
http://127.0.0.1:<PORT>
其中 <PORT> 必须替换为自己电脑上代理软件实际开放的 HTTP 代理端口或 Mixed 混合端口。
常见代理软件包括 v2rayN、Clash、Clash Verge、Surge、V2Ray、Xray 等。请在代理软件的设置、连接信息或端口设置中确认端口,不要直接照抄他人的端口号。
例如,本地 HTTP/Mixed 代理端口是 10808,则地址为:
http://127.0.0.1:10808
如果代理软件分别提供 HTTP 和 SOCKS 端口,本方案优先使用 HTTP 或 Mixed 端口。不要把一个仅支持 SOCKS 的端口直接写成 http://...。
Windows PowerShell:
Test-NetConnection 127.0.0.1 -Port <PORT>看到 TcpTestSucceeded : True 表示该端口可以建立 TCP 连接,但仍需确认它确实是 HTTP/Mixed 代理端口。
Linux/macOS:
nc -vz 127.0.0.1 <PORT>如果没有 nc,也可以直接在代理软件界面中确认监听状态。
.env 必须放在 Codex Home 中,而不是随意放在项目目录里。
Codex Home 的规则是:
- 如果设置了
CODEX_HOME,使用$CODEX_HOME。 - 如果没有设置,通常使用当前用户主目录下的
.codex。 - 包含当前
config.toml、sessions等内容的目录通常就是正在使用的 Codex Home。
最终文件路径应为:
<CODEX_HOME>/.env
例如 CODEX_HOME=D:\codex 时,文件是 D:\codex\.env,不是 D:\codex\.codex\.env。
将 <PORT> 替换为本机代理端口:
HTTP_PROXY=http://127.0.0.1:<PORT>
HTTPS_PROXY=http://127.0.0.1:<PORT>
ALL_PROXY=http://127.0.0.1:<PORT>
NO_PROXY=localhost,127.0.0.1,::1变量作用:
| 变量 | 用途 |
|---|---|
HTTP_PROXY |
为 HTTP 请求指定代理 |
HTTPS_PROXY |
为 HTTPS 和相关安全连接指定代理 |
ALL_PROXY |
为支持该变量的其他网络请求提供统一代理 |
NO_PROXY |
避免本机服务和回环地址被转发到代理 |
关闭 Codex 窗口,并确认托盘或任务管理器中没有仍在运行的 Codex/ChatGPT 后端进程。
在 PowerShell 中运行:
$CodexHome = if ($env:CODEX_HOME) { $env:CODEX_HOME } else { Join-Path $HOME '.codex' }
$CodexHome如果输出位置与实际 config.toml 所在位置不一致,应以当前 Codex 实际使用的目录为准。
New-Item -ItemType Directory -Force -Path $CodexHome | Out-Null
notepad.exe (Join-Path $CodexHome '.env')在文件中新增或更新以下内容:
HTTP_PROXY=http://127.0.0.1:<PORT>
HTTPS_PROXY=http://127.0.0.1:<PORT>
ALL_PROXY=http://127.0.0.1:<PORT>
NO_PROXY=localhost,127.0.0.1,::1注意事项:
- 必须替换
<PORT>。 - 如果
.env已有其他配置,不要清空或覆盖其他行。 - 每个变量只保留一个有效定义,避免同名配置冲突。
- 文件名必须是
.env,不要保存成.env.txt。
Codex 只在后端进程启动时加载该文件,因此修改后必须完全退出并重新启动。
关闭 Codex Desktop、Codex CLI 或使用 Codex 的编辑器实例,确保相关后端进程已经结束。
在终端中运行:
CODEX_HOME_DIR="${CODEX_HOME:-$HOME/.codex}"
printf '%s\n' "$CODEX_HOME_DIR"mkdir -p "$CODEX_HOME_DIR"
${EDITOR:-vi} "$CODEX_HOME_DIR/.env"新增或更新:
HTTP_PROXY=http://127.0.0.1:<PORT>
HTTPS_PROXY=http://127.0.0.1:<PORT>
ALL_PROXY=http://127.0.0.1:<PORT>
NO_PROXY=localhost,127.0.0.1,::1保存后可以检查:
grep -E '^(HTTP_PROXY|HTTPS_PROXY|ALL_PROXY|NO_PROXY)=' "$CODEX_HOME_DIR/.env"重新打开 Codex Desktop、编辑器或终端中的 Codex CLI,让新的后端进程加载 .env。
如果 Codex 最终仍能在重试后进入对话,可以直接把以下提示词发给 Codex。执行过程中如果出现文件写入授权,应核对目标路径确实是 Codex Home 下的 .env 后再批准。
请帮我解决 Codex 首次提问时反复显示 Reconnecting 1/5 到 5/5 的问题。
我的本地代理监听在 http://127.0.0.1:<PORT>。请执行以下操作:
1. 在 Windows 上确定当前实际使用的 CODEX_HOME;如果未显式设置,则检查用户目录下的 .codex。以包含当前 config.toml 和 sessions 的目录为准。
2. 检查 CODEX_HOME 下是否已有 .env,并保留其中所有无关配置。
3. 仅新增或更新 HTTP_PROXY、HTTPS_PROXY、ALL_PROXY、NO_PROXY 四个键,值分别为:
HTTP_PROXY=http://127.0.0.1:<PORT>
HTTPS_PROXY=http://127.0.0.1:<PORT>
ALL_PROXY=http://127.0.0.1:<PORT>
NO_PROXY=localhost,127.0.0.1,::1
4. 不要修改 config.toml 中的 model_provider,不要切换自定义 Provider,不要设置 Windows 全局代理变量。
5. 使用 UTF-8 文本格式写入,完成后显示文件路径和这四项配置供我核对,但不要输出其他可能包含密钥的环境变量。
6. 不要替我强制结束当前 Codex;完成后告诉我需要完全退出并重新启动 Codex。
请先确认 <PORT> 已经被替换为真实端口;如果我没有替换或端口无法确定,请停止写入并询问我。
请帮我解决 Codex 首次提问时反复显示 Reconnecting 1/5 到 5/5 的问题。
我的本地代理监听在 http://127.0.0.1:<PORT>。请执行以下操作:
1. 在 Linux/macOS 上确定当前实际使用的 CODEX_HOME;如果未显式设置,则使用 $HOME/.codex,并核对该目录是否包含当前 config.toml 或 sessions。
2. 检查 $CODEX_HOME/.env 是否存在,保留已有的无关配置和文件权限。
3. 仅新增或更新 HTTP_PROXY、HTTPS_PROXY、ALL_PROXY、NO_PROXY 四个键,值分别为:
HTTP_PROXY=http://127.0.0.1:<PORT>
HTTPS_PROXY=http://127.0.0.1:<PORT>
ALL_PROXY=http://127.0.0.1:<PORT>
NO_PROXY=localhost,127.0.0.1,::1
4. 不要修改 config.toml 中的 model_provider,不要切换自定义 Provider,也不要修改 shell profile 或系统全局环境变量。
5. 原子写入并核对最终文件,只显示文件路径和这四项代理配置,不要输出其他可能包含密钥的变量。
6. 不要替我强制结束当前 Codex;完成后告诉我需要完全退出并重新启动 Codex。
请先确认 <PORT> 已经被替换为真实端口;如果我没有替换或端口无法确定,请停止写入并询问我。
- 确认代理软件正在运行,且指定端口仍在监听。
- 完全退出并重新启动 Codex。
- 新建一个会话并发送一条简单消息。
- 观察是否还会出现连续的
Reconnecting... 1/5到5/5。
如果首次响应能够快速开始,并且不再经历完整的五次重连,通常说明配置已经生效。
不同代理软件、不同设备的端口可能完全不同。必须使用本机当前代理软件显示的端口。
如果一个端口只提供 SOCKS 服务,将其写成 http://127.0.0.1:<PORT> 可能无法工作。优先选择代理软件的 HTTP 或 Mixed 端口。
项目目录中的 .env、config.toml 同级以外的位置,或者重复嵌套的 .codex/.codex/.env 都可能不会被当前后端读取。应使用 <CODEX_HOME>/.env。
只关闭会话或最小化窗口通常不够。必须让 Codex 后端进程重新启动。
配置代理变量后,如果本地代理停止运行,Codex 可能无法连接网络。使用 Codex 前应先启动代理软件。
账号认证失败、OpenAI 服务异常、证书拦截、企业防火墙策略、错误系统时间等问题也可能导致连接失败。本方案主要针对“WebSocket 不稳定或 Codex 未继承代理”造成的首次重连。
- 该
.env方案不会把代理写入操作系统的全局环境变量。 - 这些变量会进入 Codex 后端进程;Codex 启动的部分子进程或工具也可能继承它们。
NO_PROXY用于尽量避免本机回环服务经过代理。- 不要在公开分享的文档、截图或日志中包含带用户名、密码或令牌的代理 URL。
- 不需要为了这个问题强制切换
model_provider。切换 Provider 会改变通信配置,并可能在部分版本中影响已有会话的显示或筛选。 .env加载行为属于当前 Codex 实现。升级到较新版本后如果行为变化,应重新查看发布说明或官方源码。
如果需要撤销,只需从 <CODEX_HOME>/.env 中删除以下四个键,然后完全重启 Codex:
HTTP_PROXY=...
HTTPS_PROXY=...
ALL_PROXY=...
NO_PROXY=...如果 .env 中还有其他配置,不要删除整个文件。
当前 OpenAI Codex 源码会在创建运行时线程前读取 Codex Home 下的 .env,并将允许的变量加入 Codex 进程环境;Codex app-server 也使用这一启动入口:
简要结论: 找到本机真实的 HTTP/Mixed 代理端口,将四个代理变量写入 <CODEX_HOME>/.env,然后完全重启 Codex。不要直接照抄他人的端口,也不必为此切换模型 Provider。