Skip to content

Instantly share code, notes, and snippets.

@ChenLili0501
Last active September 5, 2026 05:43
Show Gist options
  • Select an option

  • Save ChenLili0501/77036afca2ace2f452ff3893471ae12c to your computer and use it in GitHub Desktop.

Select an option

Save ChenLili0501/77036afca2ace2f452ff3893471ae12c to your computer and use it in GitHub Desktop.
Codex Reconnecting 1/5–5/5 解决方案:配置 v2rayN、Clash HTTP/Mixed 代理,适用于 Codex Desktop 和 Codex CLI

Codex Reconnecting 1/5–5/5:v2rayN / Clash 代理配置解决方案

适用于 Codex Desktop、Codex CLI,以及由编辑器启动的 Codex 后端。

最后验证日期:2026-07-21

1. 问题概述

部分网络环境下,Codex 在新建会话并首次提问时会连续显示类似以下状态:

Reconnecting... 1/5
Reconnecting... 2/5
...
Reconnecting... 5/5

等待一段时间后,请求有时仍能成功。这通常是因为 Codex 优先尝试的 WebSocket 连接失败,完成多次重试后才回退到 HTTP/HTTPS 通道。

如果代理软件已经运行、浏览器访问也正常,但 Codex 后端进程没有获得明确的代理环境变量,就可能出现这种现象。

2. 原因分析

Codex 的模型通信可能使用 HTTPS 和 WebSocket(wss://)。某些系统代理、透明代理或代理链路可能存在以下情况:

  1. 浏览器能够使用系统代理,但 Codex 后端没有继承该代理配置。
  2. 普通 HTTPS 请求可以通过,但 WebSocket Upgrade 或长连接不稳定。
  3. Codex 首次尝试 WebSocket,连续超时后才回退到 HTTP,因此表现为反复重连。
  4. 本地代理端口填写错误,或者该端口只支持 SOCKS、不支持 HTTP CONNECT。

将代理变量写入 Codex Home 下的 .env,可以让 Codex 后端在启动时读取这些变量,并通过指定的本地代理建立 HTTPS 和 WebSocket 连接。

该方案不需要修改 model_provider,也不会主动迁移、删除或重建本地会话记录。

3. 配置前必须确认

3.1 找到本地代理地址和端口

下面示例统一使用:

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://...

3.2 检查端口是否正在监听

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,也可以直接在代理软件界面中确认监听状态。

3.3 确定 Codex Home

.env 必须放在 Codex Home 中,而不是随意放在项目目录里。

Codex Home 的规则是:

  • 如果设置了 CODEX_HOME,使用 $CODEX_HOME
  • 如果没有设置,通常使用当前用户主目录下的 .codex
  • 包含当前 config.tomlsessions 等内容的目录通常就是正在使用的 Codex Home。

最终文件路径应为:

<CODEX_HOME>/.env

例如 CODEX_HOME=D:\codex 时,文件是 D:\codex\.env,不是 D:\codex\.codex\.env

4. 需要写入的配置

<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 避免本机服务和回环地址被转发到代理

5. Windows 手动配置

步骤 1:完全退出 Codex

关闭 Codex 窗口,并确认托盘或任务管理器中没有仍在运行的 Codex/ChatGPT 后端进程。

步骤 2:确定 Codex Home

在 PowerShell 中运行:

$CodexHome = if ($env:CODEX_HOME) { $env:CODEX_HOME } else { Join-Path $HOME '.codex' }
$CodexHome

如果输出位置与实际 config.toml 所在位置不一致,应以当前 Codex 实际使用的目录为准。

步骤 3:创建或编辑 .env

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

步骤 4:重新启动 Codex

Codex 只在后端进程启动时加载该文件,因此修改后必须完全退出并重新启动。

6. Linux/macOS 手动配置

步骤 1:完全退出 Codex

关闭 Codex Desktop、Codex CLI 或使用 Codex 的编辑器实例,确保相关后端进程已经结束。

步骤 2:确定 Codex Home

在终端中运行:

CODEX_HOME_DIR="${CODEX_HOME:-$HOME/.codex}"
printf '%s\n' "$CODEX_HOME_DIR"

步骤 3:创建或编辑 .env

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"

步骤 4:重新启动 Codex

重新打开 Codex Desktop、编辑器或终端中的 Codex CLI,让新的后端进程加载 .env

7. 让 Codex 自动处理

如果 Codex 最终仍能在重试后进入对话,可以直接把以下提示词发给 Codex。执行过程中如果出现文件写入授权,应核对目标路径确实是 Codex Home 下的 .env 后再批准。

7.1 Windows 提示词

请帮我解决 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> 已经被替换为真实端口;如果我没有替换或端口无法确定,请停止写入并询问我。

7.2 Linux/macOS 提示词

请帮我解决 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> 已经被替换为真实端口;如果我没有替换或端口无法确定,请停止写入并询问我。

8. 验证是否生效

  1. 确认代理软件正在运行,且指定端口仍在监听。
  2. 完全退出并重新启动 Codex。
  3. 新建一个会话并发送一条简单消息。
  4. 观察是否还会出现连续的 Reconnecting... 1/55/5

如果首次响应能够快速开始,并且不再经历完整的五次重连,通常说明配置已经生效。

9. 常见失败原因

9.1 端口照抄了别人的配置

不同代理软件、不同设备的端口可能完全不同。必须使用本机当前代理软件显示的端口。

9.2 把 SOCKS 端口当成 HTTP 端口

如果一个端口只提供 SOCKS 服务,将其写成 http://127.0.0.1:<PORT> 可能无法工作。优先选择代理软件的 HTTP 或 Mixed 端口。

9.3 .env 放错目录

项目目录中的 .envconfig.toml 同级以外的位置,或者重复嵌套的 .codex/.codex/.env 都可能不会被当前后端读取。应使用 <CODEX_HOME>/.env

9.4 修改后没有完全重启

只关闭会话或最小化窗口通常不够。必须让 Codex 后端进程重新启动。

9.5 代理软件没有运行

配置代理变量后,如果本地代理停止运行,Codex 可能无法连接网络。使用 Codex 前应先启动代理软件。

9.6 问题并非代理链路造成

账号认证失败、OpenAI 服务异常、证书拦截、企业防火墙策略、错误系统时间等问题也可能导致连接失败。本方案主要针对“WebSocket 不稳定或 Codex 未继承代理”造成的首次重连。

10. 作用范围与注意事项

  • .env 方案不会把代理写入操作系统的全局环境变量。
  • 这些变量会进入 Codex 后端进程;Codex 启动的部分子进程或工具也可能继承它们。
  • NO_PROXY 用于尽量避免本机回环服务经过代理。
  • 不要在公开分享的文档、截图或日志中包含带用户名、密码或令牌的代理 URL。
  • 不需要为了这个问题强制切换 model_provider。切换 Provider 会改变通信配置,并可能在部分版本中影响已有会话的显示或筛选。
  • .env 加载行为属于当前 Codex 实现。升级到较新版本后如果行为变化,应重新查看发布说明或官方源码。

11. 回滚方法

如果需要撤销,只需从 <CODEX_HOME>/.env 中删除以下四个键,然后完全重启 Codex:

HTTP_PROXY=...
HTTPS_PROXY=...
ALL_PROXY=...
NO_PROXY=...

如果 .env 中还有其他配置,不要删除整个文件。

12. 实现依据

当前 OpenAI Codex 源码会在创建运行时线程前读取 Codex Home 下的 .env,并将允许的变量加入 Codex 进程环境;Codex app-server 也使用这一启动入口:


简要结论: 找到本机真实的 HTTP/Mixed 代理端口,将四个代理变量写入 <CODEX_HOME>/.env,然后完全重启 Codex。不要直接照抄他人的端口,也不必为此切换模型 Provider。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment