跳转到内容

unexpected status 502 Bad Gateway Codex

Quick fix

在代理软件中将 127.0.0.1 设为直连,或在 Codex 环境变量中配置 NO_PROXY 以绕过本地代理拦截。

报错原文
unexpected status 502 Bad Gateway: Unknown error, url: http://127.0.0.1:15721/v1/responses

cc-switch 本身不会主动返回 502。该错误是因为本地代理软件(如 Clash、Clash Verge)拦截了发往 127.0.0.1 的请求,或 Codex 的 reqwest 库读取了系统代理环境变量,导致请求被劫持到代理软件。代理软件无法识别 /v1/responses 路径,从而返回 502 Bad Gateway。部分情况下也可能表现为 WebSocket 升级失败并提示 stream disconnected before completion。

  1. 在代理软件(如 Clash)的配置文件中,将本地地址强制设置为直连模式,并确保规则放在最前面。

    Clash 配置文件
    rules:
    - DOMAIN-SUFFIX,localhost,DIRECT
    - IP-CIDR,127.0.0.0/8,DIRECT,no-resolve
  2. 或者在 Codex 的环境变量文件中添加 NO_PROXY,使 Codex 访问本地 cc-switch 时绕过代理直连。

    ~/.codex/.env
    HTTP_PROXY=http://127.0.0.1:7890/
    HTTPS_PROXY=http://127.0.0.1:7890/
    NO_PROXY=127.0.0.1,localhost,::1
  3. 如果使用 Clash Verge 等软件,可尝试关闭“系统代理”模式,改用 TUN 模式接管流量。

ToolCodex
Version未知
PlatformsWindowsmacOS
为什么 Claude Code 正常,只有 Codex 报 502 错误?
Codex 的 Rust CLI 使用的 reqwest 库会读取系统代理环境变量,导致请求被劫持到代理软件;而 Claude Code 不受此系统代理环境变量影响,因此能正常直连 cc-switch。
修改了 Clash 规则后还是不行怎么办?
请确保 localhost 和 127.0.0.0/8 的 DIRECT 规则放在规则列表的最前面(最高优先级),或者尝试直接关闭系统代理、切换到 TUN 模式。

这是一个非官方社区 wiki,与 cc-switch 作者及项目本身无隶属关系。内容整理自项目公开的 GitHub issues。本站不分发任何软件。