macOS 权限(TCC)
macOS 的权限授予比较脆弱。TCC 将权限关联到应用的代码签名、bundle identifier 和磁盘路径。三者中任何一个变了,macOS 都会把应用当作全新应用,可能丢失授权或隐藏提示。
稳定权限的要求
- 相同路径:从固定位置运行应用(OpenClaw 用
dist/OpenClaw.app)。 - 相同 bundle identifier:更改 bundle ID 会创建新的权限身份。
- 已签名应用:未签名或 ad-hoc 签名的构建无法持久化权限。
- 一致的签名:使用正式的 Apple Development 或 Developer ID 证书,确保签名在重新构建间保持稳定。
ad-hoc 签名每次构建都会生成新身份。macOS 会忘记之前的授权,且在清除旧条目之前提示可能完全消失。
提示消失时的恢复步骤
- 退出应用。
- 在 System Settings → Privacy & Security 中移除应用条目。
- 从相同路径重新启动应用并重新授权。
- 如果提示仍然不出现,使用
tccutil重置 TCC 条目再试。 - 有些权限只有在完全重启 macOS 后才会重新出现。
示例重置(按需替换 bundle ID):
sudo tccutil reset Accessibility ai.openclaw.mac
sudo tccutil reset ScreenCapture ai.openclaw.mac
sudo tccutil reset AppleEvents
文件和文件夹权限(桌面/文稿/下载)
macOS 还可能对终端/后台进程访问桌面、文稿和下载目录进行管控。如果文件读取或目录列表挂起,为执行文件操作的进程上下文授予访问权限(例如 Terminal/iTerm、LaunchAgent 启动的应用或 SSH 进程)。
变通方案:把文件移到 OpenClaw 工作区(~/.openclaw/workspace)中,可以避免逐文件夹授权。
测试权限时务必用正式证书签名。ad-hoc 构建仅适用于不需要权限的快速本地运行。