macOS 权限(TCC)
macOS 的权限授予机制是脆弱的。TCC(Transparency, Consent, and Control)会将权限授予与应用程序的代码签名、捆绑标识符和磁盘路径相关联。如果其中任何一个发生变化,macOS 会将应用程序视为一个新的应用,并可能撤销或隐藏提示。
保持权限稳定的条件
- 相同路径:从固定的位置运行应用程序(对于 Clawdbot,使用
dist/Clawdbot.app)。 - 相同的捆绑标识符:更改捆绑 ID 会创建一个新的权限身份。
- 签名应用程序:未签名或使用临时签名的构建无法保留权限。
- 稳定的签名:使用真实的 Apple 开发者证书或开发者 ID 证书,以确保在重新构建时签名保持一致。
临时签名(Ad-hoc signature)会在每次构建时生成一个新的身份。macOS 会忘记之前的授权,并且提示可能会完全消失,直到旧的条目被清除。
当提示消失时的恢复清单
- 退出应用程序。
- 在系统设置 -> 隐私与安全性中移除应用程序条目。
- 从相同路径重新启动应用程序并重新授予权限。
- 如果提示仍然没有出现,请使用
tccutil重置 TCC 条目并重试。 - 某些权限只有在完全重启 macOS 后才会重新出现。
示例重置(根据需要替换捆绑 ID): bash sudo tccutil reset Accessibility com.clawdbot.mac sudo tccutil reset ScreenCapture com.clawdbot.mac sudo tccutil reset AppleEvents``` 如果您在测试权限,请始终使用真实证书进行签名。Ad-hoc 构建仅适用于快速的本地运行,此时权限并不重要。