[Bug] macOS 下 TUN 已成功启用,但每次仍重复执行 osascript 提权并报 Operation not permitted

Author: andrew-zyfCreated Apr 5, 2026Updated Sep 16, 2026
Labelsbugmore info needed

Description

Verify steps

  • 我已在标题简短的描述了我所遇到的问题
  • 我已在 Issue Tracker 中寻找过我要提出的问题,但未找到相同的问题
  • 我已在 常见问题 中寻找过我要提出的问题,并没有找到答案
  • 这是 GUI 程序的问题,而不是内核程序的问题
  • 我已经关闭所有杀毒软件/代理软件后测试过,问题依旧存在
  • 我已经使用最新的测试版本测试过,问题依旧存在

操作系统

MacOS

系统版本

macOS 26.0 (Darwin 25.4.0, Apple Silicon)

发生问题 clash-party 版本

1.9.4

描述

在 macOS 上启用 TUN 后,Clash Party 实际上已经成功启动 TUN,并且 mihomo 进程已经以 root 身份运行,sidecar/mihomo 也已经是 root:admin 且带 +sx

但是应用后续仍会重复执行下面这条提权命令,并弹出报错:

bash
osascript -e 'do shell script "chown root:admin '\''/Applications/Clash Party.app/Contents/Resources/sidecar/mihomo'\'' && chmod +sx '\''/Applications/Clash Party.app/Contents/Resources/sidecar/mihomo'\''" with administrator privileges'

报错内容:

Command failed: osascript -e do shell script "chown root:admin '/Applications/Clash Party.app/Contents/Resources/sidecar/mihomo' && chmod +sx '/Applications/Clash Party.app/Contents/Resources/sidecar/mihomo'" with administrator privileges
0:209: execution error: chown: /Applications/Clash Party.app/Contents/Resources/sidecar/mihomo: Operation not permitted (1)

我的判断是:

  • TUN 实际已经成功开启
  • 但 macOS 分支里的权限检查逻辑仍返回“未授权”,导致重复执行 grantTunPermissions()
  • 因此出现“功能正常,但仍不断重复提权并报错”的现象

重现方式

  1. 在 macOS 上安装 Clash Party 1.9.4
  2. 开启 TUN 模式
  3. 按提示授予管理员权限
  4. TUN 实际已可用
  5. 之后再次启动应用或重新触发相关流程时,仍会再次执行 osascript + chown/chmod
  6. 系统报 Operation not permitted

实际结果

  • TUN 已经生效
  • mihomo 以 root 身份运行
  • 流量已经通过 TUN 接管
  • 但应用仍重复提权,并弹出报错

期望结果

如果 macOS 下:

  • sidecar/mihomo 已经是正确权限
  • 或者 mihomo 已经以 root 启动
  • 或者 TUN 已验证成功

则不应再次执行 osascript -> chown/chmod

额外信息

我本地确认到的状态:

  1. sidecar 文件权限已经正确:
-rwsr-sr-x  1 root  admin  ... mihomo
-rwsr-sr-x  1 root  admin  ... mihomo-alpha
-rwsr-sr-x  1 root  admin  ... mihomo-smart
  1. 当前运行中的 mihomo 已经是 root:
root ... /Applications/Clash Party.app/Contents/Resources/sidecar/mihomo -d ...
  1. app 日志里多次出现:
TUN permissions validated successfully
  1. core 日志里已经有大量 TUN 接管流量的记录,例如 198.18.0.1fdfe:dcba:9876::1

怀疑的问题位置

我从 app.asar 中看到相关逻辑大致是:

  • macOS/Linux 分支的高权限检查直接跳过并返回 false
  • 随后又调用 grantTunPermissions()
  • grantTunPermissions() 在 macOS 上会执行:
javascript
do shell script "chown root:admin ... && chmod +sx ..." with administrator privileges

看起来像是 macOS 的权限判断条件有 bug,导致明明已经成功,仍然继续重复修复。

如果需要,我可以继续补充更多日志片段。

Source: mihomo-party-org/clash-party