macOS 安装 Clash 客户端的权限设置:网络扩展授权与钥匙串弹窗处理

使用 Claude Code 时遇到终端请求超时或连接不稳?这篇指南从 Clash Verge 客户端选择和配置导入讲起,说明如何设置代理分流、检查终端代理变量,并排查常见连接问题。实际使用前也请确认服务支持地区和账号状态。

先看清链路:终端代理不等于系统代理

Claude Code 在终端中运行,连接服务时需要经过命令行进程、网络代理、Clash Verge 内核和远端服务。浏览器能够访问网页,只能说明浏览器当前使用的网络路径可用;它可能读取了系统代理,而终端里的 Claude Code 未必会自动继承该设置。反过来,终端工具即使配置了代理,也不代表 Clash Verge 已选中可用节点,或相关域名已经命中正确规则。

排查时把问题分成三层:第一层是本机代理端口有没有监听;第二层是终端进程有没有把请求交给这个端口;第三层是 Clash 当前规则和策略组是否把请求送到合适的出站。任意一层不通,都可能表现为请求超时、连接重试,或启动后很久没有响应。

现象优先检查不能据此断定
浏览器能打开,Claude Code 超时终端代理变量、代理端口、命令行流量是否进入 Clash不能据此认定订阅或节点一定正常
节点延迟有数值,API 请求失败域名规则命中、策略组选择、实际连接日志延迟测试不等于 API 服务访问测试
curl 能建立连接,Claude Code 仍报错Claude Code 运行环境、账号状态、服务端响应及相关设置HTTP 响应不等于账号已获授权
终端提示无法连接 127.0.0.1端口号、内核运行状态、监听地址这通常不是远端节点认证错误

准备 Clash Verge:导入配置并确认本地端口

先确认安装的是哪一款客户端。Clash Verge 与 Clash Verge Rev 的项目、发行版本和界面菜单可能不同;旧教程中的按钮名称不一定适用于当前版本。无论使用哪款,目标都是确认配置已经加载、内核正在运行、代理策略组有可用选择,并找到实际的本地监听端口。

  1. 从可信的软件下载入口选择与操作系统及设备架构对应的安装包。安装前核对应用名称和系统要求,不要把名称相似的不同项目当作同一发行版。
  2. 打开客户端的「配置」或「Profiles」页面,导入服务提供方给出的 Clash 兼容配置或订阅地址。订阅链接可能包含访问凭据,不要贴到公开截图、日志或聊天记录中。
  3. 确认配置已成功加载,再打开「代理」或策略组页面,选择当前可用的节点或策略组。自动选择组的测速结果仅供参考,最终还应观察实际连接。
  4. 在设置或配置详情中查看本地代理端口。若配置中是 mixed-port: 7890,本机 HTTP 与 SOCKS 通常共用该端口;但 7890 只是示例,必须以客户端显示的实际值为准。

终端代理通常只需连接本机回环地址,例如 127.0.0.1,不需要为了让同一台电脑上的终端访问代理而开启「允许局域网连接」。如果你只使用遵循 HTTP 代理变量的命令行工具,可以先不开 TUN;TUN 是另一种流量接管方式,不能代替终端进程的代理变量检查。

# 配置字段示例,不是完整订阅;端口请以客户端实际值为准
mixed-port: 7890
allow-lan: false
mode: rule

配置分流:让相关域名命中正确策略

Clash Verge 的规则模式会按配置顺序匹配请求,再把命中的连接交给对应策略。Claude Code 常见请求会涉及 Anthropic 服务域名,但实际目标可能随产品功能、服务端调整、账号配置或自定义 API 入口变化。不要只因为某一条规则存在,就假定所有请求都已覆盖;应结合客户端连接记录中的目标域名、命中规则与出站策略核对。

如果配置中已有明确的 AI 或代理策略组,可以在客户端支持的自定义规则、配置覆写或规则管理入口添加域名规则。下面仅展示规则写法,AI代理 必须替换成现有配置里真实存在的策略组名称;不同客户端的覆写功能和入口并不完全相同。

# 规则片段:合并到现有规则的适当位置,不要重复覆盖整份配置
rules:
  - DOMAIN-SUFFIX,anthropic.com,AI代理

DOMAIN-SUFFIX,anthropic.com,AI代理 会匹配该域名及其子域名,并交给名为 AI代理 的策略组。若实际策略组名不同,应逐字使用配置中的名称;组名不存在或拼写不一致,可能导致配置检查失败。订阅由服务提供方维护时,不建议直接反复改写远程订阅内容;优先使用客户端提供的覆写功能,并在更新订阅后再次确认自定义规则仍然生效。

  • 检查命中情况:在 Clash Verge 的「连接」页面发起一次新请求,查看目标域名、匹配规则和最终出站。菜单叫法可能因版本不同而变化。
  • 检查策略组选择:规则命中某个策略组后,还要确认组内当前选择的是可用出站,而不是 DIRECT、空组或失效节点。
  • 谨慎扩大规则范围:先处理日志中实际出现且确有需要的服务域名,不要为了方便把不相关流量全部强制送入同一策略。
  • 避免 TUN 干扰判断:若终端请求不符合预期,先确认是否启用了 TUN 及路由排除规则。测试时每次只改变一个条件,便于分辨是规则、代理变量还是 TUN 导致差异。

动手设置:在启动 Claude Code 的终端中声明代理

以下假设本地 HTTP 混合代理端口是 7890,请替换成 Clash Verge 实际显示的值。HTTP 代理通过 CONNECT 转发 HTTPS 请求,因此变量值使用本机 HTTP 代理地址是常见做法;这里的 http:// 指终端到本地代理的协议,不代表目标网站使用明文 HTTP。

Windows PowerShell

在同一个 PowerShell 窗口中设置环境变量,再从这个窗口启动 Claude Code。环境变量会传给该窗口启动的子进程,但不会自动写入已经打开的终端或已经运行的程序。

$env:HTTP_PROXY  = "http://127.0.0.1:7890"
$env:HTTPS_PROXY = "http://127.0.0.1:7890"
$env:ALL_PROXY   = "http://127.0.0.1:7890"

# 在此窗口中启动 Claude Code
claude

Windows 的环境变量名称大小写不敏感,不必为了大小写再创建一组重复变量。结束后如需在当前 PowerShell 窗口移除代理设置,可以执行:

Remove-Item Env:HTTP_PROXY -ErrorAction SilentlyContinue
Remove-Item Env:HTTPS_PROXY -ErrorAction SilentlyContinue
Remove-Item Env:ALL_PROXY -ErrorAction SilentlyContinue

macOS 与 Linux

在 bash、zsh 等常见 shell 中,设置变量后从同一个终端启动程序。为兼容会读取小写变量名的工具,可以同时设置大小写形式;若所在网络或终端管理策略不允许代理流量,按系统管理员要求操作。

export HTTP_PROXY="http://127.0.0.1:7890"
export HTTPS_PROXY="http://127.0.0.1:7890"
export ALL_PROXY="http://127.0.0.1:7890"

export http_proxy="$HTTP_PROXY"
export https_proxy="$HTTPS_PROXY"
export all_proxy="$ALL_PROXY"

# 在此终端中启动 Claude Code
claude

如果只想临时测试,不要急着把变量写进 ~/.zshrc、~/.bashrc 或系统级环境配置。持久设置会影响之后从同一 shell 启动的其他工具;同时,编辑器内置终端、远程开发环境和图形界面启动的程序,可能使用另一套环境变量。需要持久配置时,应先确认影响范围,并保留恢复原设置的方法。

可以用 NO_PROXY 指定不通过代理的本地域名或地址,但不要把服务域名误加入绕过列表。例如,NO_PROXY=localhost,127.0.0.1 只表示这些本机目标不经代理。不同命令行工具对变量的支持可能存在差别;如设置后仍不确定请求路径,以下一步的显式代理测试和 Clash 连接日志为准。

验证端口与 HTTPS 请求:先独立测试,再运行 CLI

先检查本地端口是否正在监听。Windows PowerShell 可以执行 Test-NetConnection;macOS 或安装了 netcat 的 Linux 可以使用 nc。若端口不是 7890,将命令中的数字替换为客户端显示的实际值。

# Windows PowerShell
Test-NetConnection 127.0.0.1 -Port 7890

# macOS 或已安装 netcat 的 Linux
nc -vz 127.0.0.1 7890

本机端口测试成功只说明能够连接到本地监听端口,还不能证明远端 API 可访问。接下来用 curl 明确指定代理,减少系统代理设置对测试结果的影响。Windows 使用 curl.exe,避免 PowerShell 中 curl 命令别名带来的差异。

# Windows PowerShell
curl.exe -I --proxy http://127.0.0.1:7890 --connect-timeout 10 --max-time 20 https://api.anthropic.com/

# macOS 或 Linux
curl -I --proxy http://127.0.0.1:7890 --connect-timeout 10 --max-time 20 https://api.anthropic.com/

如果返回 HTTP 状态码,通常说明请求至少到达了某个 HTTP 服务;401、403、404 或 405 仍需结合响应和账号情况判断,不能把它们统称为网络正常,也不能把“连得上”解释成认证成功。若立即报无法连接 127.0.0.1,优先核对本地端口与内核状态;若超时,查看 Clash 的连接记录,确认目标域名是否出现、命中什么规则以及出站连接是否失败。

测试结果建议动作
连接本机端口失败确认客户端内核已启动、端口号正确,且没有使用已退出客户端的旧端口。
本地端口可连,curl 经代理超时查看连接日志中的域名、规则、策略组和节点连接错误。
curl 得到 HTTP 响应,CLI 仍超时确认 CLI 从设置了变量的终端启动,并检查该进程实际使用的环境与服务端响应。
curl 返回认证或访问错误记录状态码和错误内容,检查账号、服务支持范围及相关服务端提示,不要只换端口。

超时、认证与启动失败:按错误类型缩小范围

排查时记录完整错误文本、出现时间、目标域名和当时选择的策略,不要只记“连不上”。如果要分享日志,应删除订阅链接、访问令牌、API 密钥、邮箱等敏感信息。不要把认证凭据写进代理变量,也不要把包含凭据的终端截图发到公开渠道。

  • Connection refused 或无法连接本机:常见原因是端口不匹配、Clash 内核没有运行,或代理变量仍指向已退出客户端的地址。先检查本地监听,再重新测试。
  • DNS 解析失败:查看日志中失败的域名,并确认对应请求是否进入 Clash。不要为了试错直接重置所有 DNS 或同时改动多个 DNS 选项。
  • 连接或 TLS 握手超时:检查规则命中与节点连接日志,再用相同代理命令测试目标域名。节点测速正常不代表到目标服务的整条路径可用。
  • 收到 401 或其他认证提示:这属于服务端响应线索,不应通过更换本地端口处理。核对当前账号、登录状态、凭据配置与服务方说明,不要把密钥贴入问题报告。
  • 收到 403 或地区相关提示:查看服务方的支持地区和账号政策。网络代理设置不能确保获得服务资格,也不应被描述为绕过服务限制的方案。
  • 只有编辑器终端失败:比较系统终端与编辑器内置终端中的环境变量。图形界面启动的编辑器可能没有继承后来在 shell 中设置的变量;修改变量后,完全退出并重新启动编辑器再测。

每轮测试只改变一项:先固定同一个节点和规则检查端口,再固定代理设置检查终端环境,最后才比较不同网络或策略组。测试结束后恢复临时变量,并确认系统代理、TUN 与 Clash Verge 的开关处于自己需要的状态。这样可以避免排查结束后,其他应用仍被意外代理或指向已关闭的本地端口。

下载Clash