macOS-Berechtigungen (TCC)

macOS-Berechtigungszusagen sind fragil. TCC verknüpft eine Berechtigungszusage mit der Code-Signatur, der Bundle-ID und dem Pfad auf der Festplatte. Wenn sich eines davon ändert, behandelt macOS die App als neu und kann Prompts verwerfen oder ausblenden.

Voraussetzungen für stabile Berechtigungen

  • Gleicher Pfad: Starte die App von einem festen Ort aus (bei OpenClaw dist/OpenClaw.app).
  • Gleiche Bundle-ID: Eine Änderung der Bundle-ID erstellt eine neue Berechtigungsidentität.
  • Signierte App: Unsignierte oder ad-hoc signierte Builds speichern Berechtigungen nicht dauerhaft.
  • Konsistente Signatur: Verwende ein echtes Apple Development oder Developer ID-Zertifikat, damit die Signatur über Rebuilds hinweg stabil bleibt.

Ad-hoc-Signaturen erzeugen bei jedem Build eine neue Identität. macOS vergisst frühere Zusagen, und Prompts können komplett verschwinden, bis die veralteten Einträge gelöscht werden.

Wiederherstellungs-Checkliste wenn Prompts verschwinden

  1. App beenden.
  2. App-Eintrag in Systemeinstellungen → Datenschutz & Sicherheit entfernen.
  3. App vom selben Pfad neu starten und Berechtigungen erneut erteilen.
  4. Falls der Prompt immer noch nicht erscheint, TCC-Einträge mit tccutil zurücksetzen und erneut versuchen.
  5. Manche Berechtigungen erscheinen erst nach einem vollständigen macOS-Neustart wieder.

Beispiel-Resets (Bundle-ID nach Bedarf anpassen):

sudo tccutil reset Accessibility ai.openclaw.mac
sudo tccutil reset ScreenCapture ai.openclaw.mac
sudo tccutil reset AppleEvents

Dateien- und Ordner-Berechtigungen (Schreibtisch/Dokumente/Downloads)

macOS kann auch Schreibtisch, Dokumente und Downloads für Terminal/Hintergrundprozesse beschränken. Falls Datei-Reads oder Verzeichnislistings hängen, erteile dem Prozesskontext, der Dateioperationen durchführt, den Zugriff (zum Beispiel Terminal/iTerm, per LaunchAgent gestartete App oder SSH-Prozess).

Workaround: Verschiebe Dateien in den OpenClaw-Workspace (~/.openclaw/workspace), wenn du ordnerspezifische Zusagen vermeiden möchtest.

Wenn du Berechtigungen testest, signiere immer mit einem echten Zertifikat. Ad-hoc-Builds sind nur für schnelle lokale Testläufe akzeptabel, bei denen Berechtigungen keine Rolle spielen.