先理清请求路径:系统代理、终端变量与 TUN

Claude Code 在终端中发起请求,能否连通取决于几段链路是否都正常:Claude Code 进程能否访问网络、请求是否进入 Clash、Clash 是否按规则选到可用出站,以及所用账号和服务是否具备访问资格。浏览器能打开网页,只能说明浏览器的网络路径可用,不能证明终端进程也在使用代理。

Clash Verge 或 Clash Verge Rev 的系统代理开关,通常是为遵循操作系统代理设置的应用提供本机 HTTP 代理入口。终端工具是否读取系统设置,取决于工具自身和启动环境;直接在终端设置代理环境变量,通常更容易确认 Claude Code 进程使用的入口。TUN 则通过虚拟网卡和路由接管符合条件的流量,不需要每个命令行程序单独配置代理,但会增加路由、权限及 DNS 等排查因素。

方式 作用范围 适合场景 主要检查点
系统代理 遵循系统代理设置的应用 浏览器及支持系统代理的桌面程序 系统代理开关、地址和端口
终端代理变量 从该终端会话启动的进程 单独验证 Claude Code 或其他 CLI HTTP_PROXY、HTTPS_PROXY 和本机监听端口
TUN 路由接管范围内的 IP 流量 不读取代理设置的程序或需要更广接管范围时 虚拟网卡、路由、权限、DNS 与规则命中

代理只改变请求经过的网络出口,不会替代账号登录,也不代表所有地区都能使用相关服务。请确认服务在所在地区可用,并遵守账号、组织和服务条款;不要把代理配置当作绕过服务访问限制的保证。

检查 Clash Verge:配置、端口与实际出站

先打开 Clash Verge 或 Clash Verge Rev,确认当前配置已成功载入,内核处于运行状态,当前配置中存在可用代理节点或代理组。订阅卡片显示更新成功,并不等于该配置已经成为当前运行配置;代理组也可能仍选中 DIRECT、失效节点或不可用的自动测速结果。

  1. 在配置页面确认预期配置处于启用状态,并留意内核日志中的 YAML 解析错误、未知代理类型或启动失败提示。
  2. 在代理组页面选择一个已确认可用的节点,查看组名和实际选择结果。若使用规则模式,确认最终兜底规则指向预期代理组,而不是直连策略。
  3. 在设置或配置详情中查找 HTTP、SOCKS 或 mixed 代理端口。常见示例是 7890,但端口可能被改动,不能默认所有安装都使用这个值。
  4. 确认本机代理入口正在监听。若多个代理客户端同时运行,可能出现端口占用或系统代理指向旧客户端的情况。

mixed 端口通常可以同时接收 HTTP 代理与 SOCKS 请求,因此适合在命令行环境中先采用 HTTP 地址测试。若客户端分别展示 HTTP 与 SOCKS 端口,应按终端变量使用的协议填写;不能把控制面板端口或 API 管理端口当作代理端口。管理接口用于控制内核,不是供 Claude Code 转发网络请求的入口。

规则模式下,请求进入内核后仍要匹配规则并选定出站。可以在 Clash 的连接记录中观察 Claude Code 启动后出现的目标域名及策略结果。需要新增规则时,应使用当前内核支持的配置覆写或合并方式,先备份原配置,并确认规则引用的策略组名称真实存在。不要因为某个接口连接失败,就把未核实的域名清单直接复制进订阅。

动手设置:在单个终端会话中启动 Claude Code

以下示例假设 Clash 的 mixed 端口实际为 7890,代理监听地址为 127.0.0.1。请替换成客户端显示的真实地址与端口。把变量设置在当前终端后再运行 claude,能避免误改整台设备的网络设置,也方便关闭终端后恢复。

macOS 与 Linux

export HTTP_PROXY="http://127.0.0.1:7890"
export HTTPS_PROXY="http://127.0.0.1:7890"
export http_proxy="$HTTP_PROXY"
export https_proxy="$HTTPS_PROXY"
export NO_PROXY="localhost,127.0.0.1,::1"
export no_proxy="$NO_PROXY"

claude

许多命令行工具会检查大写或小写的代理变量;同时设置两种形式可以减少工具差异带来的误判。NO_PROXY 用于让本机回环地址保持直连,避免登录流程或本地回调被送到外部代理。若系统或开发环境已有 NO_PROXY 列表,先保留原有项目,再补充回环地址,不要无意中删除内部服务的排除项。

Windows PowerShell

$env:HTTP_PROXY = "http://127.0.0.1:7890"
$env:HTTPS_PROXY = "http://127.0.0.1:7890"
$env:http_proxy = $env:HTTP_PROXY
$env:https_proxy = $env:HTTPS_PROXY
$env:NO_PROXY = "localhost,127.0.0.1,::1"
$env:no_proxy = $env:NO_PROXY

claude

PowerShell 的 $env: 设置作用于当前进程及其启动的子进程,不会自动永久写入用户环境变量。若命令提示找不到 claude,那是安装或 PATH 问题,与代理连通性不是同一类故障;先按所用安装方式确认 CLI 可运行,再进行网络测试。

先验证本机入口,再验证目标网络

在 Windows PowerShell 中使用 curl.exe,避免命令别名造成参数行为差异;macOS 与 Linux 可使用系统自带的 curl。下面的请求用于检查代理连接和 TLS 是否能够建立,返回的 HTTP 状态码本身不等同于 Claude Code 登录成功。

curl.exe -I --proxy http://127.0.0.1:7890 https://api.anthropic.com

macOS 或 Linux 可将命令中的 curl.exe 换为 curl。若结果显示无法连接到 127.0.0.1:7890,先回到端口与客户端状态检查;若已收到 HTTP 响应,再查看 Clash 连接记录中的目标、规则命中和出站节点。服务端对根路径返回错误码,不一定代表代理链路失败;连接超时、TLS 握手失败与 HTTP 层拒绝应分开判断。

按错误表现排查:登录失败、超时与规则未命中

排查时一次只改变一个变量。先保持同一份配置和同一个代理端口,再分别测试本地端口、目标网络和 Claude Code 登录流程。这样可以判断问题出在本地入口、Clash 出站、终端进程环境,还是认证步骤。

表现 优先检查 建议操作
连接本机代理时立即拒绝 端口是否写错、内核是否启动、端口是否被其他程序占用 回到客户端确认监听设置,并用相同端口重试
浏览器可用,终端超时 终端变量是否已设置、Claude Code 是否从该终端启动 在同一会话运行连通性测试,避免从未继承变量的图形入口启动
终端请求进入 Clash 后仍超时 连接记录中的规则、代理组选择、节点状态及 DNS 结果 临时选择已知可用节点,比较同一请求的连接记录和日志
浏览器登录完成,CLI 仍未授权 登录流程是否回到原终端、回环地址是否被代理、账号状态 保留 localhost 与 127.0.0.1 直连,重新发起登录并观察终端提示
收到明确的认证或权限错误 登录账号、授权状态、组织权限及服务端响应 按服务提示重新认证或检查账号权限,不要把认证错误当作节点故障

浏览器登录和 CLI 请求不一定运行在相同网络环境中。授权时浏览器可能使用系统代理,而终端仍未设置代理变量;反过来,终端请求可以通过代理,浏览器却无法访问登录页面或无法返回本机回调地址。此时先确认启动 Claude Code 的终端继承了代理变量,再检查本机回环地址是否排除在代理之外。

Clash 连接记录没有出现相关请求,通常说明 Claude Code 没有使用预期代理入口,或者请求路径尚未到达内核;出现记录但一直超时,则进一步查看命中的策略和选中节点。若只有某类 API 域名失败,先记录连接记录里实际出现的主机名,再判断现有规则是否覆盖。服务端域名和依赖可能变化,不应仅凭旧教程中的固定域名列表推断当前请求范围。

稳定使用与安全边界:不要泄露凭据或扩大改动

代理变量可能被子进程继承,因此在公共终端、共享屏幕或录制终端日志时,应避免展示包含账号令牌的命令、配置和认证输出。订阅地址、代理节点密码、API 密钥与登录凭据都应按敏感信息处理;不要把它们贴进公开问题、截图或未经确认的诊断网站。仅设置代理地址本身通常不需要把认证信息嵌入 URL。

  • 关闭临时变量:macOS 或 Linux 可在当前 shell 执行 unset HTTP_PROXY HTTPS_PROXY http_proxy https_proxy NO_PROXY no_proxy;PowerShell 可执行 Remove-Item Env:HTTP_PROXY,Env:HTTPS_PROXY,Env:http_proxy,Env:https_proxy,Env:NO_PROXY,Env:no_proxy。也可以直接关闭该终端窗口。
  • 区分环境范围:临时命令只影响当前会话;写入 shell 启动文件或系统环境变量会扩大影响范围。确认需要长期使用后再保存,并记录如何恢复。
  • 避免代理循环:本机代理客户端本身要能连接其远端节点。不要让代理程序的出站连接再次无条件指向自己的本机代理入口,否则可能形成循环或无法建立连接。
  • 控制接管范围:先通过终端变量验证单个 CLI。只有确认有其他应用不读取代理设置时,再考虑 TUN,并检查与其他 VPN、虚拟网卡及系统路由的冲突。
  • 保留可复现信息:记录操作系统、客户端与内核版本、实际代理端口、终端类型、错误时间和脱敏后的错误类别。不要记录完整订阅链接、令牌或私钥。

完成测试后,恢复之前的代理组、出站模式和系统代理状态。若问题只在 Claude Code 中出现,而浏览器与其他命令行工具正常,应优先核对 CLI 的启动环境、登录状态和服务端错误信息;若所有应用都无法通过 Clash 连接,则从配置载入、节点可用性和本地端口开始排查。把网络入口、规则出站和账号认证分开验证,通常比反复重装客户端更快定位原因。