先判断你的情况:终端、桌面版、VS Code 还是已装 Clash
| 你的情况 | 推荐做法 | 要注意 |
|---|---|---|
| 终端里运行 claude(CLI) | 在启动前 export HTTPS_PROXY,或写进 ~/.claude/settings.json 的 env 块 | 代理地址必须带 http:// 前缀;官方文档写明不支持 SOCKS |
| Claude 桌面版的 Code 标签(本地会话) | 写进 ~/.claude/settings.json 的 env 块,或加到桌面版的本地环境 | 桌面版启动环境里已有同名变量时,settings.json 里的值会被忽略 |
| VS Code 扩展 | 写进 ~/.claude/settings.json 的 env 块(扩展与 CLI 共用这个文件) | 扩展设置里也有 claudeCode.environmentVariables,可给扩展起的 Claude 进程设变量 |
| 已经装了 Clash、Surge 之类的代理客户端 | 把它的 HTTP 端口或混合端口填进上面的变量;或让它开启 TUN | 客户端只开系统代理时,Claude Code 不一定走代理,官方文档没有说它会读取系统代理 |
| 不想逐个设置 | 用 TUN 接管整机流量,见下文「TUN」一节 | TUN 会接管整机,哪些流量走代理由规则决定 |
终端里怎么设置 Claude Code 代理(CLI 与 env 代理)
小写变量也有效。官方写明 Claude Code 按 https_proxy、HTTPS_PROXY、http_proxy、HTTP_PROXY 的顺序,用第一个已设置的。
代理需要账号密码时,写成 http://用户名:密码@地址:端口,不要把密码硬写进会被提交的脚本。
# 当前终端有效
export HTTPS_PROXY=http://127.0.0.1:7890
export HTTP_PROXY=http://127.0.0.1:7890
export NO_PROXY="localhost,127.0.0.1"
# 要长期生效,把上面几行写进 ~/.zshrc,然后新开一个终端
claude确认代理客户端的 HTTP 端口
在你的代理客户端里找 HTTP 端口或混合端口,下面以 127.0.0.1:7890 为例,以你自己的为准。官方文档不支持 SOCKS,所以不要填 SOCKS 端口。
在终端里导出变量
变量要在启动 claude 之前设置。官方说明 shell 里的变量只在启动时读取一次,运行中的会话不会感知后面的修改。
启动 claude 并确认
运行 claude,进入会话后输入 /status,看 Proxy 一行是不是你设置的地址。官方写明地址解析失败时(例如缺少 http://),Claude Code 会在启动时报错并指出是哪个变量。
用 settings.json 的 env 块设置代理配置,所有项目通用
把变量写进 ~/.claude/settings.json 的 env 块,Claude Code 直接从文件读取,不管你从哪里启动它。这个文件对你机器上的每个项目都有效,官方文档说明 VS Code 扩展、桌面版和终端读的是同一组设置文件。
同一个变量在 shell 和 env 块里都设置时,官方写明大多数会话里以 settings.json 的值为准,但桌面版本地会话会保留启动环境里已有的值。文件必须是严格 JSON,不能有注释和多余的逗号。
后续改动在你保存后会同步到运行中的会话。代理变量保险起见建议改完重新启动 claude,再用 /status 核对。
{
"env": {
"HTTPS_PROXY": "http://127.0.0.1:7890",
"HTTP_PROXY": "http://127.0.0.1:7890",
"NO_PROXY": "localhost,127.0.0.1"
}
}Claude Code 全局代理:TUN 模式不需要任何配置
TUN 是在系统里创建一块虚拟网卡,把流量接进代理核心。sing-box 的 TUN 入站在 Linux、Windows 和 macOS 上可用,打开 auto_route 后会把默认路由指向这块虚拟网卡。
因为接管发生在网络层,Claude Code 进程不需要读取任何代理变量,终端、VS Code、桌面版里启动的 claude 都会经过它。代价是它接管整台 Mac 的流量,哪些走代理、哪些直连要靠规则决定。
如果你说的全局代理是让整个 Claude Code 在所有项目里都用同一个代理,上一节的 ~/.claude/settings.json 就够了,不必开 TUN。
用 Pax 怎么做:不设环境变量,让 Claude Code 走代理
Pax Connect 是基于 sing-box 的 Mac 代理客户端,让 Claude Code、Codex 无需环境变量即可走代理,配置中转 API,并在本机统计 Token 用量与费用。App 界面目前只有中文,Pax 不提供线路,需要自己的节点或订阅。
导入自己的线路
在「线路管理」里导入你已有的节点或订阅,选定要用的一条。支持的格式见导入节点与订阅文档。
选择 TUN 并开启代理
代理模式选 TUN(也可以切换为系统代理),开启时按提示完成管理员授权。TUN 开启后,不需要再设 HTTPS_PROXY。
运行 claude 并发一条消息
在终端、VS Code 或桌面版里正常使用 Claude Code,发一条消息,让它产生新连接。
到「流量监控 → 概览」核对
Pax 会识别 Claude Code 进程,按应用查看时能看到它的连接、目标域名(例如 api.anthropic.com)、实际线路和最近命中的规则。进程名按安装位置识别,目前覆盖原生安装和 npm 全局安装;识别不到时,用目标域名对照也能判断。
只让 Claude Code 的流量走代理:用域名规则
Pax 的应用分流只能选 .app 应用,不能选 claude 这样的命令行程序,所以界面里没有只让 claude 进程走代理这一项。要达到相同效果,用域名规则:把 Claude Code 要访问的域名指向代理线路,其他流量直连。
Claude Code 官方列出的必需域名包括 api.anthropic.com、claude.ai、platform.claude.com。域名规则按域名生效,浏览器里访问 claude.ai 也会命中同一条规则。规则的优先级和匹配范围见「流量监控 → 规则」,保存后新产生的连接才会按新规则走。
验证与排查:怎么确认 Claude Code 走了代理
最直接的是 Claude Code 里的 /status,Proxy 一行显示生效的代理地址,解析不了的地址会被标为无效并忽略。想看更详细的日志,用 claude --debug 启动,日志写在 ~/.claude/debug/<会话 ID>.txt。
如果用的是 Pax,再对照「流量监控 → 概览」:Claude Code 的连接应出现在你选的线路下。两边结果一致才算数;网络通了不等于账号能用,401、403 之类的错误要从账号和中转地址上排查。
| 症状 | 常见原因 | 怎么处理 |
|---|---|---|
| 启动就报代理地址错误 | 变量值缺少 http:// 前缀 | 写成 http://127.0.0.1:7890,官方说明启动时会指出是哪个变量 |
| /status 里没有 Proxy 一行 | 变量没有传到 claude 进程 | 从 Dock 启动的编辑器看不到终端里 export 的变量,改写进 ~/.claude/settings.json 的 env |
| 填了 socks5:// 没有效果 | 官方文档写明不支持 SOCKS 代理 | 改填客户端的 HTTP 或混合端口,或改用 TUN |
| 改了变量,当前会话没变化 | shell 变量只在启动时读取一次 | 退出后重新运行 claude |
| 出现证书错误 | 代理做了 TLS 检查(公司网络常见) | 把代理的根证书路径设给 NODE_EXTRA_CA_CERTS |
| 网络通了,但提示登录或权限问题 | 代理成功不等于账号可用 | 检查登录状态;用的是中转地址时看下面链接的中转配置 |
常见问题
claude code 代理配置在哪里改?
有两处:终端里 export 的环境变量,和 ~/.claude/settings.json 的 env 块。前者只对当前终端有效,后者对你的所有项目长期有效,VS Code 扩展和桌面版本地会话也读后者。
claude code cli 代理怎么设置?
在运行 claude 之前执行 export HTTPS_PROXY=http://127.0.0.1:7890,再启动 claude,进入后用 /status 核对 Proxy 一行。想永久生效,把这行写进 ~/.zshrc。
claude code env 代理怎么写?
写成 settings.json 里的一个 env 对象,键是 HTTPS_PROXY、HTTP_PROXY、NO_PROXY,值是字符串。值要带 http:// 前缀,不要写成 socks5://。保存后重新启动 claude。
claude code 支持 socks5 代理吗?
不支持。官方文档写明 Claude Code does not support SOCKS proxies。请改用代理客户端提供的 HTTP 端口或混合端口,或者改用 TUN 接管。
claude code 全局代理怎么设置?
一种是在 ~/.claude/settings.json 的 env 里写代理变量,让每个项目都用;另一种是让代理客户端开 TUN,接管整台 Mac 的流量,Claude Code 本身不用配置。Pax 选 TUN 模式就是后一种。
claude code 会读取 macOS 系统代理吗?
官方文档只列出环境变量和 settings.json 这两种配置方式,没有说明会读取 macOS 系统代理,所以不要把系统代理当成可靠方案。要稳定,用环境变量或 TUN。
claude code 需要代理吗?
取决于你的网络能不能直接访问它需要的域名,包括 api.anthropic.com、claude.ai 和 platform.claude.com。能直接访问就不需要;公司网络强制走代理,或这些域名不通时才需要。

