macOS 權限(TCC)

macOS 的權限授予相當脆弱。TCC 將權限授予與應用程式的程式碼簽章、bundle identifier 及磁碟路徑綁定。若其中任何一項改變,macOS 會將該應用程式視為全新的,可能會移除或隱藏權限提示。

穩定權限的要求

  • 相同路徑:從固定位置執行應用程式(OpenClaw 使用 dist/OpenClaw.app)。
  • 相同 bundle identifier:更改 bundle ID 會建立新的權限身分。
  • 已簽章應用程式:未簽章或 ad-hoc 簽章的版本無法持久保留權限。
  • 一致的簽章:使用真正的 Apple Development 或 Developer ID 憑證,確保簽章在每次重新建構時保持穩定。

Ad-hoc 簽章每次建構都會產生新的身分。macOS 會忘記先前的授權,且提示可能完全消失,直到清除過時的項目為止。

權限提示消失時的復原清單

  1. 結束應用程式。
  2. 在系統設定 -> 隱私與安全性中移除該應用程式的項目。
  3. 從相同路徑重新啟動應用程式並重新授予權限。
  4. 若提示仍未出現,使用 tccutil 重設 TCC 項目後重試。
  5. 某些權限只有在完整重新啟動 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 版本僅適用於不需要權限的快速本機執行。