跳到內容

搞定煩人的 macOS 權限 (TCC) 問題

你有沒有遇過這種情況:明明昨天測試還好好的,今天重新編譯一下程式,macOS 的權限提示就不見了?或者你明明已經點了「允許」,但程式還是報錯說沒權限。這類 macOS 權限(TCC)問題真的很搞開發者的心態,尤其是當你趕著要測試功能的時候。

macOS 的權限管理非常敏感,它會把授權跟 App 的代碼簽名、Bundle Identifier 以及磁碟路徑綁在一起。只要其中一個變了,系統就會把它當成全新的 App,導致之前的授權失效。

  • 固定的 App 執行路徑(例如 dist/OpenClaw.app)
  • 固定的 Bundle Identifier
  • 有效的 Apple Development 或 Developer ID 憑證
  • 避免使用 Ad-hoc 簽名(因為每次編譯都會產生新的身分)

要在開發過程中保持權限穩定,請遵循這 4 個步驟:

  1. 固定執行路徑:務必從同一個位置啟動 App,不要隨意移動它。
  2. 鎖定 Bundle ID:更改 Bundle ID 會讓系統認為這是另一個 App,權限會直接歸零。
  3. 實機簽名:使用真實的 Apple 開發者證書進行簽名。Ad-hoc 簽名在每次 Rebuild 後都會讓 macOS 「忘記」之前的授權。
  4. 使用專屬工作區:如果你想避開 Desktop 或 Documents 等資料夾的逐一授權,可以把檔案移到 ~/.openclaw/workspace 下執行。

當權限提示死活不出現時,你可以嘗試以下解決方案:

  • 基礎重置法: 先關閉 App,到「系統設定」->「隱私權與安全性」中找到該 App 並將其移除。接著從相同的路徑重啟 App,通常就能重新觸發權限提示。

  • 使用 tccutil 命令重置: 如果手動移除沒用,可以直接用 Terminal 強制重置特定權限(請根據你的 Bundle ID 修改):

    Terminal window
    sudo tccutil reset Accessibility bot.molt.mac
    sudo tccutil reset ScreenCapture bot.molt.mac
    sudo tccutil reset AppleEvents
  • 處理檔案存取卡死: 如果程式在讀取檔案時掛起,請檢查執行該程序的 Context(例如 Terminal/iTerm 或 LaunchAgent)是否擁有權限。

  • 最終手段: 有些權限設定在重置後,必須完全重啟 macOS 才會生效。

遇到搞不定的配置問題?試試 AI Setup Assistant。

OpenClaw

OpenClaw Expert

還是卡住了?

如果這篇文件沒有解決你的情境,直接問 OpenClaw Expert,拿到可執行步驟。