搞定煩人的 macOS 權限 (TCC) 問題
你有沒有遇過這種情況:明明昨天測試還好好的,今天重新編譯一下程式,macOS 的權限提示就不見了?或者你明明已經點了「允許」,但程式還是報錯說沒權限。這類 macOS 權限(TCC)問題真的很搞開發者的心態,尤其是當你趕著要測試功能的時候。
macOS 的權限管理非常敏感,它會把授權跟 App 的代碼簽名、Bundle Identifier 以及磁碟路徑綁在一起。只要其中一個變了,系統就會把它當成全新的 App,導致之前的授權失效。
需要準備的東西
Section titled “需要準備的東西”- 固定的 App 執行路徑(例如
dist/OpenClaw.app) - 固定的 Bundle Identifier
- 有效的 Apple Development 或 Developer ID 憑證
- 避免使用 Ad-hoc 簽名(因為每次編譯都會產生新的身分)
要在開發過程中保持權限穩定,請遵循這 4 個步驟:
- 固定執行路徑:務必從同一個位置啟動 App,不要隨意移動它。
- 鎖定 Bundle ID:更改 Bundle ID 會讓系統認為這是另一個 App,權限會直接歸零。
- 實機簽名:使用真實的 Apple 開發者證書進行簽名。Ad-hoc 簽名在每次 Rebuild 後都會讓 macOS 「忘記」之前的授權。
- 使用專屬工作區:如果你想避開 Desktop 或 Documents 等資料夾的逐一授權,可以把檔案移到
~/.openclaw/workspace下執行。
當權限提示死活不出現時,你可以嘗試以下解決方案:
-
基礎重置法: 先關閉 App,到「系統設定」->「隱私權與安全性」中找到該 App 並將其移除。接著從相同的路徑重啟 App,通常就能重新觸發權限提示。
-
使用 tccutil 命令重置: 如果手動移除沒用,可以直接用 Terminal 強制重置特定權限(請根據你的 Bundle ID 修改):
Terminal window sudo tccutil reset Accessibility bot.molt.macsudo tccutil reset ScreenCapture bot.molt.macsudo tccutil reset AppleEvents -
處理檔案存取卡死: 如果程式在讀取檔案時掛起,請檢查執行該程序的 Context(例如 Terminal/iTerm 或 LaunchAgent)是否擁有權限。
-
最終手段: 有些權限設定在重置後,必須完全重啟 macOS 才會生效。
遇到搞不定的配置問題?試試 AI Setup Assistant。
OpenClaw Expert
還是卡住了?
如果這篇文件沒有解決你的情境,直接問 OpenClaw Expert,拿到可執行步驟。