macOS companion app
Autorisations macOS
Les autorisations macOS sont fragiles. TCC associe une autorisation à la signature de code de l’application, à l’identifiant de bundle et au chemin sur le disque. Si l’un de ces éléments change, macOS considère l’application comme nouvelle et peut supprimer ou masquer les invites.
Exigences pour des autorisations stables
- Même chemin : exécutez l’application depuis un emplacement fixe (pour OpenClaw,
dist/OpenClaw.app). - Même identifiant de bundle : modifier l’ID de bundle crée une nouvelle identité d’autorisation.
- Application signée : les builds non signés ou signés ad hoc ne conservent pas les autorisations.
- Signature cohérente : utilisez un vrai certificat Apple Development ou Developer ID afin que la signature reste stable entre les rebuilds.
Les signatures ad hoc génèrent une nouvelle identité à chaque build. macOS oubliera les autorisations précédentes, et les invites peuvent disparaître entièrement jusqu’à ce que les entrées obsolètes soient supprimées.
Autorisations d’accessibilité pour les runtimes Node et CLI
Préférez accorder l’Accessibilité à OpenClaw.app, Peekaboo.app ou à un autre
assistant signé avec son propre identifiant de bundle plutôt qu’à un binaire node générique.
macOS TCC accorde l’Accessibilité à l’identité de code du processus qu’il voit. Si un
workflow Homebrew, nvm, pnpm ou npm conduit un exécutable node partagé à
recevoir l’Accessibilité, tout package JavaScript lancé via ce même
exécutable peut hériter de privilèges d’automatisation de l’interface graphique.
Considérez une entrée node dans Réglages Système comme une autorisation étendue pour ce runtime Node,
et non comme une autorisation pour un seul package npm. Évitez d’accorder l’Accessibilité à
node sauf si vous faites confiance à chaque script et package lancé via cette installation
Node exacte.
Si vous avez accidentellement accordé l’Accessibilité à node, supprimez cette entrée dans
Réglages Système -> Confidentialité et sécurité -> Accessibilité. Accordez ensuite l’autorisation à l’application
ou à l’assistant signé qui doit gérer l’automatisation de l’interface utilisateur.
Liste de récupération lorsque les invites disparaissent
- Quittez l’application.
- Supprimez l’entrée de l’application dans Réglages Système -> Confidentialité et sécurité.
- Relancez l’application depuis le même chemin et accordez à nouveau les autorisations.
- Si l’invite n’apparaît toujours pas, réinitialisez les entrées TCC avec
tccutilet réessayez. - Certaines autorisations ne réapparaissent qu’après un redémarrage complet de macOS.
Exemples de réinitialisations (remplacez l’ID de bundle si nécessaire) :
sudo tccutil reset Accessibility ai.openclaw.macsudo tccutil reset ScreenCapture ai.openclaw.macsudo tccutil reset AppleEventsAutorisations des fichiers et dossiers (Bureau/Documents/Téléchargements)
macOS peut aussi restreindre l’accès au Bureau, aux Documents et aux Téléchargements pour les processus de terminal ou d’arrière-plan. Si les lectures de fichiers ou les listages de répertoires se bloquent, accordez l’accès au même contexte de processus que celui qui effectue les opérations sur les fichiers (par exemple Terminal/iTerm, une application lancée par LaunchAgent ou un processus SSH).
Solution de contournement : déplacez les fichiers dans l’espace de travail OpenClaw (~/.openclaw/workspace) si vous voulez éviter les autorisations dossier par dossier.
Si vous testez les autorisations, signez toujours avec un vrai certificat. Les builds ad hoc ne sont acceptables que pour des exécutions locales rapides où les autorisations n’ont pas d’importance.