先判断卡在哪一种权限
macOS 上的 Clash 客户端通常同时涉及应用启动、系统代理、特权辅助程序、网络扩展和钥匙串。它们由不同的系统组件管理。看到“需要权限”时,先记录弹窗标题和出现时机,不要连续点击取消。一次安装可能只缺其中一项,也可能是旧版本残留与新版本同时存在。
四类提示对应四个处理入口
- 应用无法打开或开发者无法验证:属于 Gatekeeper 启动检查,应前往「系统设置」→「隐私与安全性」处理。
- 安装服务、Helper 或 Service Mode 需要密码:属于特权辅助程序安装。这里输入的是当前 Mac 管理员账户密码,不是订阅密码。
- 系统扩展或网络扩展被阻止:需要在「网络」或「登录项与扩展」中允许对应扩展,部分版本还要求重新启动。
- 每次启动都询问访问钥匙串:通常是保存的密码项目访问控制不匹配,或者旧客户端创建的项目仍由新客户端读取。
确认系统版本与处理器架构
打开屏幕左上角 Apple 菜单,选择「关于本机」。记录 macOS 版本和芯片名称。Apple M1、M2、M3、M4 及后续 Apple 芯片应使用 arm64 安装包;Intel Mac 使用 x64 或 x86_64 安装包。架构选错时,应用可能依靠 Rosetta 运行,也可能在安装辅助程序时失败。
本文以 macOS 13 Ventura、macOS 14 Sonoma、macOS 15 Sequoia 和 Clash Verge Rev 2.x 一类基于 mihomo 的客户端为参照。不同客户端的按钮名称可能写成「服务模式」「安装服务」「Helper」「TUN」或「网络扩展」,但系统授权位置基本一致。
处理应用安装与首次启动拦截
把应用放进“应用程序”再启动
- 打开下载得到的 DMG 文件。
- 把客户端图标拖到「应用程序」文件夹,不要长期从 DMG 窗口直接运行。
- 等待复制完成,推出 DMG。
- 从 Finder 的「应用程序」目录打开客户端。
辅助程序通常会记录主应用的路径和签名。从下载目录、DMG 挂载点或临时目录运行,可能导致应用升级后路径改变,继而反复请求授权。应用名称也不宜在安装后随意修改。
“无法验证开发者”或“已阻止使用”
先确认安装包来自项目正式发布渠道,并且下载的架构正确。随后尝试打开一次应用,让系统生成拦截记录。进入「系统设置」→「隐私与安全性」,向下找到被阻止的应用,点击「仍要打开」,再通过系统确认框完成启动。
如果页面没有出现「仍要打开」,通常是尚未实际触发启动,或拦截记录已经过期。返回 Finder 再打开一次,然后立即查看「隐私与安全性」。公司管理的 Mac 可能由设备管理策略禁止用户放行,此时需要管理员在管理策略中批准应用或系统扩展。
安装特权辅助程序与服务模式
系统代理只需要修改 macOS 的代理设置,而 TUN 模式需要创建虚拟网络接口并调整路由。很多客户端会安装一个具有系统权限的辅助程序,由它启动 mihomo 内核、写入路由或管理 DNS。安装该服务时出现管理员密码框属于正常的系统授权流程。
正确的安装顺序
- 退出其他正在运行的 Clash、mihomo 或同类代理客户端。
- 在当前客户端打开「设置」→「服务模式」,或「设置」→「系统服务」。
- 点击「安装服务」或「安装 Helper」。
- 在 macOS 系统授权框中输入管理员账户密码。
- 等待状态变为「已安装」或「运行中」,再启用系统代理或 TUN。
如果当前登录账户不是管理员,用户名和密码必须填写一组有效的管理员凭据。这里不接受 Apple ID 密码,也不接受客户端订阅使用的账号密码。
安装后仍显示“服务未运行”
先完全退出客户端,再重新打开。仍未恢复时,打开「活动监视器」,搜索客户端名称、mihomo 或 clash,确认是否同时存在旧版进程。也可以在「终端」执行以下只读命令:
ps aux | grep -E '[m]ihomo|[c]lash'
lsof -nP -iTCP:7890 -sTCP:LISTEN
lsof -nP -iTCP:7897 -sTCP:LISTEN
端口 7890 常见于传统 Clash 配置,部分 mihomo 客户端默认使用 7897。查到端口被另一个进程占用时,应退出对应旧客户端,或在「设置」→「端口设置」中更换 mixed-port。不要让两个客户端同时接管系统代理。
如果服务安装按钮一直转圈,先使用客户端内置的「卸载服务」,退出应用并重新启动 Mac,然后再次安装。直接在 Finder 中删除应用不会自动移除系统级辅助程序,所以“删掉再装”不一定能解决问题。
允许网络扩展与启用 TUN
网络扩展、网络过滤器和 TUN 虚拟接口不是同一个概念。客户端可能通过 Apple Network Extension 接口提供隧道,也可能由特权服务创建 utun 接口。是否出现“网络扩展”开关取决于客户端实现,不能只看菜单里有没有 TUN 按钮。
macOS 13 与 14 的检查路径
- 打开「系统设置」→「网络」→「VPN 与过滤器」,查看是否存在当前客户端的过滤器或 VPN 配置。
- 打开「系统设置」→「通用」→「登录项」,检查“允许在后台”区域中对应项目是否被关闭。
- 打开「系统设置」→「隐私与安全性」,查看底部是否有系统软件或扩展被阻止的提示。
macOS 15 及后续版本的检查路径
在 macOS 15 Sequoia 中,扩展管理集中到了「系统设置」→「通用」→「登录项与扩展」。点击“网络扩展”旁的详情按钮,允许当前客户端对应的扩展。如果客户端创建了 VPN 或内容过滤器,还要返回「系统设置」→「网络」→「VPN 与过滤器」确认项目处于允许状态。
允许扩展后,系统可能要求重新启动。先保存工作,再按提示重启。仅退出客户端通常不足以完成首次扩展注册。
确认 TUN 是否真正建立
启用 TUN 后,在终端执行:
ifconfig | grep -A 4 '^utun'
route -n get default
scutil --proxy
macOS 自身也会创建多个 utun 接口,因此看到 utun0、utun1 并不能直接证明 Clash 正常。更可靠的判断是:打开 TUN 前后接口数量发生变化,客户端日志出现监听和路由初始化信息,并且关闭系统代理后,原本不读取系统代理的应用仍能按规则连接。
解决钥匙串反复弹窗
客户端可能把订阅凭据、服务授权信息或系统代理相关密码保存在登录钥匙串。应用升级、签名变化、安装路径变化或从旧项目迁移后,钥匙串保存的访问控制列表可能不再匹配,于是每次启动、更新订阅或开启服务都会弹出访问请求。
先看弹窗请求访问什么
不要只看窗口上方的客户端名称。展开详情,确认请求者路径位于「应用程序」中的当前客户端,并记录它准备访问的钥匙串项目名称。如果路径指向下载目录、已删除的旧应用或不认识的程序,选择拒绝,然后关闭该程序进行清理。
路径与当前客户端一致时,可以先输入 Mac 登录密码并选择「始终允许」。如果下次启动仍然出现同一弹窗,继续点击“始终允许”通常没有意义,应修复具体钥匙串项目。
删除单个旧项目并让客户端重建
- 退出客户端,确认菜单栏图标已经消失。
- 打开「应用程序」→「实用工具」→「钥匙串访问」。新系统也可用 Spotlight 搜索“钥匙串访问”。
- 在左侧选择“登录”钥匙串,再选择“所有项目”或“密码”。
- 搜索弹窗显示的项目名称,也可分别搜索客户端名称、
Clash、mihomo或旧客户端名称。 - 打开项目,核对“账户”“位置”和“访问控制”。只删除已经确认属于旧客户端的单个项目。
- 重新打开客户端,按提示重新保存凭据或安装服务。
如果登录钥匙串处于锁定状态,在“钥匙串访问”中选中“登录”,通过菜单执行解锁。登录钥匙串密码通常与当前账户登录密码相同。曾经修改过账户密码但未同步钥匙串时,系统可能提示旧密码;这种情况应先修复登录钥匙串,而不是不断重装客户端。
弹窗只在更新订阅时出现
这通常意味着订阅相关凭据保存项有问题,而不是 TUN 权限问题。删除对应订阅后重新导入,可以让客户端重新创建存储项目。操作前保存订阅地址。重新导入后,先手动执行一次「配置」→「更新订阅」,再退出并重开客户端验证。
清理卸载残留后重新安装
旧版 Clash 客户端与新客户端可能共用端口、配置目录或后台服务。典型现象包括:客户端已删除但系统代理仍指向 127.0.0.1:7890、TUN 开关立即回落、服务安装成功后仍启动旧内核,以及钥匙串弹窗显示旧应用名称。
先关闭代理与卸载服务
- 打开旧客户端,关闭 TUN 和系统代理。
- 进入「设置」→「服务模式」,执行「卸载服务」或「移除 Helper」。
- 完全退出客户端。
- 打开「系统设置」→「网络」→当前网络→「详细信息」→「代理」,确认网页代理、安全网页代理和 SOCKS 代理没有遗留的本地端口。
- 在「VPN 与过滤器」或「登录项与扩展」中移除已经停用的旧项目。
如果旧客户端已经无法打开,可以先安装回同一版本并使用内置卸载功能。客户端知道自身辅助程序的准确标识,比手工猜测系统目录里的文件更稳妥。
检查用户级配置目录
Finder 中按下 Command + Shift + G,逐一查看以下位置:
~/Library/Application Support/
~/Library/Preferences/
~/Library/Caches/
~/Library/Logs/
~/Library/LaunchAgents/
只处理名称明确对应旧客户端的目录或文件。配置目录中可能包含订阅、规则覆写、脚本和日志。需要迁移时先复制到单独的备份目录,再删除原位置。不要用带通配符的终端命令批量删除所有包含 clash 或 mihomo 的项目,因为其他仍在使用的客户端也可能使用这些名称。
确认系统代理已经恢复
执行 scutil --proxy,查看 HTTPEnable、HTTPSEnable 和 SOCKSEnable。关闭系统代理后,这些值通常应为 0。如果仍为 1,进入当前网络服务的代理设置手动关闭。Wi-Fi 和有线网络是两套独立服务,需要分别检查。
按症状完成最后排查
系统代理能用,TUN 不能用
- 确认服务模式或 Helper 已安装并正在运行。
- 检查「VPN 与过滤器」和「登录项与扩展」中的网络扩展状态。
- 暂时退出其他 VPN、内容过滤器和同类代理客户端,再重新开启 TUN。
- 查看客户端日志中是否有
permission denied、路由写入失败或 DNS 监听端口占用。 - 重启 Mac 后先只启动一个客户端,避免多个程序同时创建默认路由。
TUN 能开,但部分网站打不开
此时权限大多已经正常,应转向 DNS 与规则排查。检查配置中的 dns.enable、enhanced-mode、规则顺序和最终匹配策略。局域网域名、公司内网和打印机地址可按实际情况加入直连规则。不要通过反复重装网络扩展解决规则配置问题。
每次升级后都要求重新授权
确认客户端始终安装在同一路径,并使用同一发布渠道的正式版本。升级前退出应用,升级后从「应用程序」启动。若跨越多个主要版本,例如从旧版 ClashX 系列迁移到 Clash Verge Rev 2.x,应先卸载旧服务,再由新客户端安装自己的服务,不要直接复用旧辅助程序。
一套可复现的验证顺序
- 重启 Mac,只打开当前客户端。
- 导入订阅并手动更新一次。
- 选择一个可用节点,先打开系统代理。
- 确认浏览器连接正常,并检查本地端口是否监听。
- 关闭系统代理,安装服务并开启 TUN。
- 检查
utun接口变化和客户端日志。 - 退出再重开客户端,确认钥匙串不再重复询问。
完成这七步后,应用启动、订阅读取、系统代理、辅助程序、网络扩展和钥匙串都经过了单独验证。后续如果再次出现问题,可以根据失败的具体步骤定位,而不必从头删除全部配置。