AI 工具进阶
Claude Code 代理配置:环境变量、TUN 模式与常见报错
Claude Code 跑在终端里,浏览器的系统代理管不到它。给终端设置 HTTPS_PROXY 或开启 TUN 模式,再固定一个低丢包节点,就能解决大多数连接问题。
文章目录
简要回答
Claude Code 不读取浏览器使用的系统代理,需要在启动前设置 HTTPS_PROXY 环境变量,指向代理客户端的本地 HTTP 端口,或者直接开启客户端的 TUN 模式。官方文档说明它支持标准代理变量但不支持 SOCKS 代理,所以地址要写成 http://127.0.0.1:端口。节点选美国、日本或新加坡的固定专线,避开香港和自动测速组。
为什么浏览器能用,Claude Code 却连不上
Claude Code 是一个运行在终端里的程序。代理客户端开启的「系统代理」主要服务浏览器这类会主动读取系统设置的软件,终端进程默认不会去读它。于是经常出现这样的局面:claude.ai 网页一切正常,claude 命令却报 fetch failed 或者一直卡在连接中。
解决思路只有两条:让终端进程知道代理地址(环境变量),或者在系统网络层把所有流量接管(TUN 模式)。地区、IP 类型这些通用原则在AI 工具网络环境指南里已经讲过,本文只讲 Claude Code 特有的配置。
官方支持哪些代理变量
根据 Anthropic 的 Claude Code 官方文档(Enterprise network configuration 一页),Claude Code 遵循标准代理环境变量:
HTTPS_PROXY:官方推荐优先设置;HTTP_PROXY:没有 HTTPS 代理时使用;NO_PROXY:不走代理的地址,空格或逗号分隔均可;- 小写形式同样有效,读取顺序为
https_proxy、HTTPS_PROXY、http_proxy、HTTP_PROXY,用第一个有值的。
文档还提到,这些变量只在启动时读取一次。改完变量一定要退出并重新运行 claude。
设置环境变量
下面的示例都使用 127.0.0.1:7897。端口号是代理客户端的本地端口,例如 Clash Verge Rev 默认 7897、v2rayN 默认 10808,以你的设置为准。
macOS / Linux(bash、zsh)
export HTTPS_PROXY=http://127.0.0.1:7897
export HTTP_PROXY=http://127.0.0.1:7897
export NO_PROXY=localhost,127.0.0.1
claude
只对当前窗口生效。想每次打开终端都自动设置,把前三行追加到 ~/.zshrc 或 ~/.bashrc,然后执行 source ~/.zshrc。
Windows PowerShell
$env:HTTPS_PROXY = "http://127.0.0.1:7897"
$env:HTTP_PROXY = "http://127.0.0.1:7897"
claude
Windows cmd
set HTTPS_PROXY=http://127.0.0.1:7897
set HTTP_PROXY=http://127.0.0.1:7897
claude
cmd 里 set 的等号两边不要加空格,也不要加引号。需要长期生效时可以用 setx HTTPS_PROXY http://127.0.0.1:7897,它只对之后新开的窗口有效。
写进 settings.json
官方文档说明,这一页的环境变量都可以放进 ~/.claude/settings.json 的 env 字段。如果你会用后台会话,官方更推荐这种方式:后台会话由一个独立的常驻进程托管,不一定继承你当前终端的变量。
{
"env": {
"HTTPS_PROXY": "http://127.0.0.1:7897"
}
}
确认配置已生效
先看终端出口
在同一个窗口执行
curl -s https://ipinfo.io(PowerShell 里写curl.exe),返回的 country 应该是你所选节点的地区,而不是 CN。在 Claude Code 里查看
进入交互会话后运行
/status,官方文档说明 Proxy 一行会显示当前使用的代理地址,无法解析的地址会被标为无效。需要细节时开调试日志
用
claude --debug启动,日志写入~/.claude/debug/目录,可以看到证书、代理相关的加载记录。
方案二:开启 TUN 模式
TUN 模式在系统网络层创建虚拟网卡,终端、IDE 插件、Git 都会被接管,不用再逐个配置变量。Clash Verge Rev、v2rayN 都支持,一般需要先安装服务模式或以管理员权限运行。开启后建议关掉系统代理开关,避免两层叠加。具体操作可参考 Clash 教程和 v2rayN 教程。
节点与线路怎么选
Claude Code 和网页版共用同一套地区政策,香港不在支持范围内,优先选美国,其次日本、新加坡。与网页聊天不同的是,它会维持长时间的流式连接,一次任务可能持续好几分钟,中途断一次就要重试,所以:
- 丢包比延迟更重要:晚高峰频繁断开时,优先换 IEPL / IPLC 专线节点;
- 固定出口:给 Claude 相关域名建一个手动选择的策略组,不要用自动测速或负载均衡;
- 网页版、终端用同一地区,减少账号风控触发。
常见报错与处理
现象fetch failed 或 Unable to connect
检查当前窗口有没有设置 HTTPS_PROXY、是否重启了 claude
终端没有走代理。按上文设置变量后重新启动,或改用 TUN 模式。
现象ECONNRESET、任务做到一半断开
检查节点是否在自动切换、晚高峰丢包是否明显
固定单个低丢包专线节点,关掉自动测速组。
现象407 Proxy Authentication Required
检查客户端是否开启了本地端口认证
关闭本地端口认证,或按官方文档把账号密码写进代理地址。
出现证书类错误(例如公司网络做了 TLS 解密)时,官方文档给出的做法是用 NODE_EXTRA_CA_CERTS 指定额外的 CA 证书文件;个人使用机场时一般用不到。
小结
Claude Code 的网络配置可以浓缩成三步:设置 HTTPS_PROXY(或开 TUN)→ 重启 claude 并用 /status 确认 → 固定一个低丢包的支持地区节点。和它同类的 Codex 配置思路相近,但登录方式有所不同,可以对照阅读。
常见问题
设置了 HTTPS_PROXY,为什么 Claude Code 还是连不上?
最常见的原因是变量设在了别的窗口,或者设置后没有重启 Claude Code。官方文档说明变量只在启动时读取一次,运行中的会话不会感知后来的改动。另外检查地址是否带 http:// 前缀、端口是否和客户端一致。
能用 socks5:// 代理地址吗?
不能。Anthropic 官方文档明确写明 Claude Code 不支持 SOCKS 代理。Clash Verge Rev、v2rayN 的混合端口同时接受 HTTP 请求,地址写成 http://127.0.0.1:端口 即可。
TUN 模式和环境变量可以同时用吗?
可以,但没必要。开启 TUN 后终端流量已经被系统层接管,环境变量可以清掉,避免排查时分不清是哪一层在起作用。