在 Mac 上卸载 Tailscale
Tailscale 把这台 Mac 接入一个私有网状网络(tailnet),所以卸载应用不等于退出这个网络:在你登出或者去管理后台移除设备之前,这台 Mac 可能一直留在 tailnet 的设备列表里。这份指南以 Homebrew cask tailscale-app 为准,它安装的是 Tailscale 官方的独立 pkg 版;Tailscale 还有一个 Mac App Store 版本,底层安装方式不同,下面单独说明。
卸载前先断开连接
打开菜单栏里的 Tailscale 图标关掉联网,或者在终端运行 tailscale down,然后再退出应用。先断开连接,能避免在 macOS 还在移除应用和系统扩展时留下一份仍然生效的 VPN 配置。
登出,或者在管理后台移除这台设备
在这台 Mac 上卸载 Tailscale,本身并不会撤销这台设备的授权。从菜单栏登出,或者登录你的 tailnet 管理后台 login.tailscale.com/admin/machines 把这台设备移除。跳过这一步,即使应用已经删了,tailnet 里的其他人仍然能看到这台设备。
App Store 版和独立版不要混装
Mac App Store 版和独立 pkg/Homebrew 版是两套不同的安装,bundle 标识符也不一样(App Store 版是 io.tailscale.ipn.macos,带独立系统扩展的独立版是 io.tailscale.ipn.macsys)。Tailscale 官方的问题追踪里就记录过真实案例:没有先完整卸载就从一个版本切到另一个,结果菜单栏图标坏掉、包注册冲突(tailscale/tailscale#13222)。如果打算换版本,先把现有那个(包括它的系统扩展)彻底移除,再装另一个。
退出应用并移除系统扩展
从菜单栏退出 Tailscale,再把 Tailscale.app 拖进废纸篓。Tailscale 的网络系统扩展是和应用主体分开安装的;删除应用时 macOS 可能会提示一并移除,也可以自己去「系统设置 › 通用 › 登录项与扩展 › 网络扩展」里移除。Mole 本身不移除系统扩展,只会标记出它仍然注册着,提醒你去那里处理。
Tailscale 的数据放在哪里
| 位置 | 里面是什么 | 如何处理 |
|---|---|---|
/Library/Tailscale |
节点密钥和守护进程状态,属主是 root | 在实测记录里,无论是 Mole 自己的残留检查还是 Homebrew 的卸载步骤都没有清掉它;任何路径名里带「tailscale」的都被当作受保护的 VPN 状态,从不会出现在删除计划里。除非你确定不再需要这台设备的身份,否则不建议手动删除。 |
/usr/local/bin/tailscale |
root 拥有的 tailscale 命令行软链接 |
实测记录里,官方渠道和 Homebrew 渠道卸载后都留下了它。手动删除前先确认用途,需要管理员权限。 |
~/Library/Containers/io.tailscale.ipn.macsys.login-item-helper 与 ~/Library/Containers/io.tailscale.ipn.macsys.share-extension |
登录项助手和「共享」菜单扩展各自的小容器 | 和 /Library/Tailscale 是同一个原因,Mole 从不列出这两个;实测记录里卸载后它们仍在,都是空的。 |
钥匙串里的 tailscale-machinekey、tailscale-logdata、tailscale-preferences |
保存在登录钥匙串里的本机节点密钥和应用状态 | Mole 不管理钥匙串;如果想要彻底干净的本机状态,自己去「钥匙串访问」里删除。 |
检查结果
在终端运行下面这些只读命令:
pgrep -ilf tailscale
ls -d /Library/Tailscale
ls -d /usr/local/bin/tailscale
pkgutil --pkgs | grep -i tailscale
systemextensionsctl list | grep -i tailscale
pgrep 没有输出,说明没有 Tailscale 进程在运行。ls -d /Library/Tailscale 打印出路径,说明节点状态还在这台 Mac 上;大多数用户会保留它,除非确定这台设备不会再连接。/usr/local/bin/tailscale 那条同理,两条都提示「No such file or directory」说明对应的东西已经没有了。pkgutil 打出 com.tailscale 一行,说明独立 pkg 的安装收据还在注册。systemextensionsctl list 有输出,说明网络扩展还处于激活状态,需要去系统设置里移除。
用 Homebrew 安装时
下一次 Mole 更新会先检查 zap 清单,涉及未勾选的数据、其他应用共用的文件或无法确认的内容时不执行 --zap,已勾选的残留仍由 Mole 清理。Preview 290 尚未包含这项保护。
Preview 290 中,Mole 卸载 Homebrew 装的 Tailscale,相当于执行 brew uninstall --cask --zap tailscale-app。这个 cask 的 zap 清单包含 /Library/Tailscale,以及 io.tailscale.ipn.macsys 名下每个账号的 Application Scripts、Containers、Group Containers、HTTPStorages 和偏好设置路径;它自己的 uninstall 步骤还会另外删除 /usr/local/bin/tailscale。实测记录里,Tailscale.app 和它的 helper 被移进了废纸篓,但事后 Homebrew 的 Caskroom 收据、一个空的偏好设置文件、空的共享扩展容器,以及属主为 root 的 /usr/local/bin/tailscale 软链接都还留着;/Library/Tailscale 由于上表说的原因,Mole 自己的检查从不会提议删除它。Homebrew Tailscale cask
brew uninstall --cask tailscale-app
不带 --zap 运行,仍然会执行同样的 quit 和 pkgutil/delete 步骤,删掉应用和命令行软链接,但不会去动上面那些 zap 路径,反正 Mole 自己的检查也不会碰它们。
Mole 会列出什么
以下是 Mole 1.15(目前为 Preview)针对 Homebrew cask tailscale-app 的处理:
/Library/Tailscale、/usr/local/bin/tailscale,以及任何名字里带「tailscale」的 Container 或 Application Scripts 路径,在任何安装渠道下都不会出现在 Mole 自己的残留检查里,因为 Mole 的安全防护把这个词当作受保护的 VPN 状态。- 只要 Tailscale 的系统扩展仍在注册,应用那一行会带一个提示徽章;Mole 不会移除它,只会标出来。
- 如果 zap 步骤没能清掉上面那些属主为 root 的路径,
tailscale-app的 Homebrew Caskroom 收据会留下;留下的收据不影响 Tailscale 本身的网络状态。
这次检查覆盖了什么
Tailscale 通过 Homebrew cask tailscale-app 安装,于 2026 年 9 月 17 日经 Mole 卸载。测试用的 Mac 当时没有登录 tailnet,安装时的 VPN 配置提示也被点了不允许,所以这次测试没有覆盖已登录设备的移除和 App Store 版。2026 年 9 月 23 日一位用户反馈,在另一台 Mac 上从 App Store 版迁移到独立版后,同样的三个项目(两个空容器和 /Library/Tailscale)依然留着,与这份记录一致。
