问题本质:curl 正常不等于 Claude 走同一条路径

Claude Code 报 Connection refused(ConnectionRefused、ECONNREFUSED),指的是工具实际请求的目标地址在 TCP 层被拒绝——该地址没有进程监听,或被防火墙直接拦截。官方错误文档给出的方向是核对实际生效的 base URL、settings 里的 env、代理配置,并新开终端重试。

最容易误导人的地方在于:终端 curl 官方 API 地址能返回结果,Claude Code 却连不上。原因是两者目标地址可能完全不同,curl 的通只证明“某个地址可达”,并不证明 Claude 实际走的路径健康。

排查前先确定两件事:报错发生在哪个入口,以及 Claude 实际把请求发到了哪个地址。这两问决定后续顺序。

五类成因对照与可控性排序

按可控性从高到低排列,前两类覆盖大多数已验证个案,后三类需按条件对照且存在反例。

  • 残留 BASE_URL 指向已停用本地网关(如 127.0.0.1:8787):curl 官方地址正常、Claude 必失败;shell 变量为空也可能被 settings 覆盖。可控性高,清理后新开终端即恢复(个案已验证)。
  • settings.json 的 env 块残留旧配置行:多级 settings 都可能写入 env。可控性高,只修不需要的遗留键,不清空全部配置。
  • 代理协议或监听不匹配(如直接配 SOCKS):官方不支持直接 SOCKS;存在监听正常但 CLI 仍失败的未解个案。可控性中,按官方优先级逐条核对。
  • IDE 或长进程继承过期环境:机器级变量、tmux 长驻进程、桌面版与 CLI 行为不一致。可控性中,隔离或重开进程,部分场景属个案恢复。
  • 版本相关问题:有个案更新扩展后恢复,也有最新版仍失败的反例,无统一修复版本。可控性低,不作为首选方向。

这正是官方把排查顺序定为“地址→settings.env→代理→新终端”的原因。

六步排查:每步操作与判定

纪律:一次只改一个变量,改完开新终端验证。

  1. 核对实际生效的 BASE_URL:终端执行 echo $ANTHROPIC_BASE_URL(PowerShell 用 Get-ChildItem Env:ANTHROPIC_BASE_URL),并在 Claude Code 内用 /status 查看生效地址。判定:变量为空但 Claude 仍指向本地地址,说明配置来自 settings 或启动器,转第二步;地址正确仍报错,转第四步查代理。
  2. 检查 settings.json 的 env 块:依次查看用户级、项目级与 managed settings 的 env 段,移除指向已停用网关的旧地址行。判定:清理后新开终端能完成简单请求即病因确认;仍失败则查组织配置与进程继承。注意有效企业网关不能删,也不要清空整个 .claude 目录。
  3. 隔离 IDE 继承的机器级环境变量:Windows 下若机器级 BASE_URL 指向死端口(如 localhost:8045),在 VSCode 的 terminal.integrated.env.windows 中对该变量置 null,新开集成终端验证。判定:集成终端恢复说明是机器级继承,只影响该入口;未恢复回第二步。
  4. 按官方代理规则核对监听与变量优先级:官方文档明确优先级为 https_proxy > HTTPS_PROXY > http_proxy > HTTP_PROXY,支持 NO_PROXY 绕行,不支持直接 SOCKS。确认代理端口有真实 HTTP 监听。判定:经预期代理完成即链路打通;监听正常但 CLI 仍被拒(有历史个案)则查代理认证与客户端环境。
  5. 旧进程场景:保存会话退出重开:有个案是 tmux 长驻进程失败、同机新会话正常,退出后用 claude --resume 恢复原会话即恢复;桌面版失败而同机 CLI 正常时可临时用 CLI 继续。判定:新进程正常说明旧进程继承了过期环境(个案恢复,不等于升级修复);重启暂时恢复也只是单人办法。
  6. 仍失败:收集脱敏信息走官方反馈:按官方 troubleshooting 文档运行 claude doctor 与 --debug,整理时间、系统、版本、报错后缀、curl 对照结果,删除凭证后提交官方支持。判定:拿到分类后的 HTTP 错误说明传输层已通,转入对应错误处理;持续被拒且路径无误则记录版本差异,等待官方修复。

链路机制:为什么 curl 通、Claude 仍被拒

模型调用不是简单网页请求,而是多轮 HTTPS 握手的持续连接:鉴权、流式输出、工具调用往返,任何一环抖动或中途重置都会报连接类错误。

  • 共享出口的威胁:同一出口被大量自动化流量共用后信誉下降,拒绝策略更敏感;高峰拥塞让长连接超时;IP 中途跳变让已建立连接被重置。
  • 受控对照的做法:六步全部核对正确后,固定账号与设备,用一条固定归属、底层为优质运营商资源的链路做一次对照,观察结果是否随路径变化。
  • 固定归属意味着登录记录连贯、画像符合真实用户;底层资源与可用性承诺决定链路下限。

需要核对参数的读者可查看 IPxSS 海外AI网络方案,或在官方网络配置说明基础上做自己的对照实验。需强调:网络对照只解决“路径质量”问题,修不了残留死端口配置、账号问题或客户端缺陷,排查顺序不能倒置。

常见问题 FAQ

curl 能通 api.anthropic.com,Claude Code 为什么还报 Connection refused?

目标地址可能不同:curl 打官方地址,Claude 可能受残留 BASE_URL 影响指向本地死端口。用 /status 核对实际生效地址。

清除残留 BASE_URL 后要注意什么?

只在确认不再需要该网关时删除,有效企业网关不能删。改完开新终端再试,旧进程不会拾取新环境。

Claude Code 支持 SOCKS 代理吗?

官方文档明确不支持直接 SOCKS,需用真实 HTTP 代理监听地址,并注意变量优先级与 NO_PROXY 绕行。

重装或升级到最新版能修好吗?

有个案更新 VSCode 扩展后恢复,也有升级到最新版仍失败的记录,没有确认的统一修复版本。优先排查实际生效地址与 settings.env。

桌面版失败但命令行正常怎么办?

可临时用命令行继续,保留版本与启动差异记录,走官方反馈渠道(脱敏)。

总结

排查主线为:核对生效地址、清 settings.env 残留、隔离 IDE 继承、按官方规则核对代理、处理旧进程与入口差异,每步带判定,一次只改一个变量。curl 正常不代表同路径,这是全文最关键的一条认知。路径核对正确仍失败时,受控网络对照才有意义——固定归属、优质底层资源、可用性承诺三项值得逐条验收。需要稳定链路的开发者可注册 IPxSS 海外AI网络方案 做对照。