问题中心
Claude Code 报 fetch failed / ECONNRESET:终端代理三步修好
Claude Code 报 Connection error、fetch failed、ECONNRESET、ETIMEDOUT、403 或 407?多数是终端没有走代理。本文给出 macOS、Linux、Windows 的代理设置命令、报错对照表和排查步骤。
简短回答
最常见的原因是终端没有走代理:浏览器开了代理,但 Claude Code 在终端运行,默认不继承浏览器设置。设置 HTTPS_PROXY 环境变量指向本地代理端口,或开启客户端的 TUN 模式,并确认节点在支持地区即可。
快速步骤 · 5 步
- 01确认本地代理端口
在代理客户端设置中找到 HTTP 或混合代理端口,Clash 系客户端常见为 7890,以实际显示为准。
- 02为终端设置代理环境变量
macOS 与 Linux 执行 export HTTPS_PROXY=http://127.0.0.1:7890,Windows PowerShell 使用 $env:HTTPS_PROXY 设置同样的地址。
- 03测试能否连通 Anthropic API
在同一个终端执行 curl -I https://api.anthropic.com,只要返回 HTTP 状态行就说明网络已打通。
- 04检查节点地区
通过代理查询出口 IP,确认不在中国大陆或香港等不支持地区,遇到 403 时尤其要检查这一步。
- 05重新启动 Claude Code
在设置好代理的同一个终端里重新运行 claude,必要时执行 claude doctor 检查安装与配置。
原因
Claude Code 运行在终端里,而终端程序默认不会使用浏览器或系统的代理设置。很多人在浏览器里能正常打开 claude.ai,到了终端却一直报连接错误,根源就在这里。Claude Code 支持读取 HTTPS_PROXY、HTTP_PROXY 等标准环境变量,只要把它们指向本地代理客户端的端口,请求就会经过代理。剩下的问题多与节点地区、代理认证和证书有关,可以根据报错信息快速定位。
| 报错表现 | 常见原因 | 解决方法 |
|---|---|---|
Connection error、fetch failed | 终端没有走代理,直连被阻断 | 设置 HTTPS_PROXY 或开启 TUN 模式 |
ETIMEDOUT、请求超时 | 代理端口填错,或节点不可用 | 核对端口,换节点后用 curl 测试 |
ECONNRESET、对话中途断开 | 节点不稳定、晚高峰丢包 | 换更稳定的节点,避免负载均衡 |
403 Forbidden | 出口地区不受支持,或 IP 被拒绝 | 换美国、日本、新加坡等支持地区节点 |
407 Proxy Authentication Required | 代理需要用户名密码 | 在代理地址中加入认证信息,或改用本地无认证端口 |
证书错误,如 unable to get local issuer certificate | 网络中存在 HTTPS 检查设备 | 配置 NODE_EXTRA_CA_CERTS 信任对应根证书 |
解决步骤
-
确认本地代理端口。打开代理客户端的设置页,找到 HTTP 或混合(mixed)端口。7890 是 Clash 系客户端的常见默认端口,Clash Verge Rev 新版本常为 7897,v2rayN 等客户端端口不同,请以实际显示为准。
-
为终端设置代理环境变量。macOS、Linux 在终端执行:
export HTTPS_PROXY=http://127.0.0.1:7890 export HTTP_PROXY=http://127.0.0.1:7890Windows PowerShell 执行:
$env:HTTPS_PROXY="http://127.0.0.1:7890" $env:HTTP_PROXY="http://127.0.0.1:7890"代理地址建议使用
http://形式的 HTTP 代理,SOCKS 代理的支持情况以官方文档为准。 -
测试能否连通 Anthropic API。在同一个终端窗口执行:
curl -I https://api.anthropic.com只要返回了 HTTP 状态行(状态码是 404 之类也没关系),就说明网络已经打通;如果一直卡住或报超时,问题仍在代理或节点。
-
检查节点地区。执行
curl https://ipinfo.io/json查看出口地区,确认不是中国大陆或香港。遇到 403 时优先检查这一步,参考 Claude 地区不可用怎么办。 -
重新启动 Claude Code。在设置好代理的终端里重新运行
claude。如果仍有问题,执行claude doctor检查安装和配置状态。
让代理设置长期生效
export 只对当前终端窗口有效,关掉窗口就失效了。常用的长期配置方式有两种:
-
写入 shell 配置文件:把上面的
export两行追加到~/.zshrc(macOS 默认)或~/.bashrc,执行source ~/.zshrc后生效。这样所有终端程序都会走代理。 -
只对 Claude Code 生效:在 Claude Code 的用户配置文件
~/.claude/settings.json中加入env字段:{ "env": { "HTTPS_PROXY": "http://127.0.0.1:7890" } }这种方式不影响 git、npm 等其他命令,适合只想让 Claude Code 走代理的情况。
提示
代理端口改了之后,记得同步修改这些配置文件。更多工具(git、npm、pip 等)的写法见 终端代理设置。
注意
不要把代理地址设置成机场的远程服务器地址。HTTPS_PROXY 应指向本机代理客户端监听的端口(通常是 127.0.0.1),由客户端再转发到节点。
还是不行?
- curl 测试正常,但 Claude Code 仍报错:确认是在同一个终端窗口里运行的
- 设置了
NO_PROXY变量时,检查它是否意外包含了 anthropic.com - 登录时浏览器授权成功但终端没反应:浏览器与终端使用的网络环境应一致
- 公司网络或校园网:可能存在额外的代理与证书策略,参考 TLS 握手错误怎么办
- 查看 status.anthropic.com,排除官方服务故障
Claude Code 的完整网络配置(包括 IDE 插件、远程服务器场景)见 Claude Code 网络环境与连接配置。长时间编程任务对线路稳定性要求更高,选线路时可以参考 Claude 稳定机场推荐。
常见问题
Q每次打开终端都要重新设置代理吗?
用 export 设置的变量只在当前终端会话有效。可以写进 ~/.zshrc 或 ~/.bashrc 长期生效,也可以写进 Claude Code 配置文件 settings.json 的 env 字段,只对 Claude Code 生效,不影响其他命令。
Q开了 TUN 模式还需要设置 HTTPS_PROXY 吗?
一般不需要。TUN 模式在系统网络层接管流量,终端程序会自动经过代理。两者同时开启通常也不冲突,但排查问题时建议只保留一种,便于判断。
QClaude Code 用一段时间就断开,重新运行又好了,是什么原因?
多半是节点不稳定或晚高峰丢包,长时间的流式连接被中途重置。换延迟和丢包更稳定的节点、避开负载均衡策略组,通常能明显改善。
Q公司电脑上的 Claude Code 报证书错误怎么办?
公司网络可能对 HTTPS 做了中间人检查,需要让 Node.js 信任公司根证书,例如通过 NODE_EXTRA_CA_CERTS 指定证书文件。具体做法请咨询公司 IT 部门,并遵守公司网络使用规定。