IA / Automatisation 29 avril 2026

2026-04-29 OpenClaw, TCC macOS, accès disque complet et échecs d’outils fichiers sur un Mac cloud loué sans tête (HK / JP / KR / SG / US)

MacXCode Engineering Team 29 avril 2026 ~21 min de lecture

Les agents OpenClaw combinent souvent le raisonnement LLM et des outils fichiers locaux : lire des invites sur disque, écrire des transcriptions, joindre des captures, parcourir des dossiers projet. Sur un portable, macOS affiche les dialogues Transparency, Consent, and Control (TCC) la première fois qu’un binaire touche des emplacements protégés. Sur un Mac mini M4 loué sans tête accessible uniquement par SSH — le schéma MacXCode par défaut à Singapour, Tokyo et Virginie — ces dialogues n’apparaissent pas dans votre session terminal, donc des outils naïfs échouent avec un Operation not permitted obscur pendant que les journaux n’incriminent pas OpenClaw ni le modèle. Ce guide du 2026-04-29 sépare les vrais bogues POSIX des refus TCC, montre comment concevoir des workspaces évitant les bacs à sable Bureau/Documents, quand VNC est justifié pour accorder une fois les autorisations de confidentialité, et comment aligner les pistes d’audit avec la journalisation structurée et les secrets launchd pour offrir aux réviseurs sécurité une histoire cohérente.

Pourquoi l’automatisation SSH ne peut pas « cliquer Autoriser » à votre place

La base de confidentialité d’Apple associe les approbations aux chemins exécutables, aux identifiants de bundle et parfois aux signatures parentales. Les feuilles de consentement interactives supposent une session GUI connectée pour le même utilisateur qui approuve visuellement. L’automatisation à distance exige des profils pré-provisionnés (MDM / gestion déclarative), un onboarding GUI unique par opérateur via VNC, ou des contraintes d’architecture qui évitent simplement les répertoires protégés. Trois mythes que nous réfutons chaque semaine :

  • « sudo répare la TCC » — l’élévation contourne certains contrôles POSIX, pas l’accès fichiers approuvé par l’utilisateur pour les chemins GUI sandbox ; de plus, les hôtes loués partagés accordent rarement un sudo illimité.
  • « Désactiver Gatekeeper aide » — sans lien avec la TCC par appli ; inacceptable sur serveurs multi-locataires.
  • « OpenClaw doit polyfiller les permissions manquantes » — le runtime ne peut pas outrepasser la politique macOS en sécurité ; seule la topologie de déploiement change.
Règle pratique : si un outil marche avec votre login GUI personnel mais échoue sous le compte de service utilisé par launchd, supposez un décalage TCC avant de réécrire les invites.

Lexique des symptômes : errno, refus confidentialité, bac à sable

Formez vos journaux à capturer à la fois errno UNIX et les messages outils de haut niveau. EPERM POSIX apparaît dans plusieurs catégories ; corrélez avec les préfixes de chemins :

  • ~/Desktop / ~/Documents — emplacements classiques exigeant des droits explicites pour les binaires hors bac à sable.
  • Dossiers personnels d’autres utilisateurs — POSIX seul sauf ACL parentales ; vérifiez aussi la TCC si les API passent par des ponts Finder.
  • Volumes amovibles — permissions APFS plus accès disque complet si vous scannez tout le disque.
Instrumentation : émettez tcc_hint=possible lorsque les chemins matchent /Users/*/Library/Mail, des volumes Time Machine ou des répertoires sandbox Mail — avant même confirmation errno.

Les équipes venues d’agents Linux mappent parfois des habitudes Linux — umask large, écriture sous /tmp sans politique de cycle — sur macOS. /tmp évite nombre de pièges TCC, mais les jobs de nettoyage périodiques peuvent supprimer des scratch OpenClaw en pleine exécution si les répertoires ne sont pas nommés par ID de job. Inversement, les ingénieurs habitués aux portables macOS répliquent par symlink des dossiers iCloud vers le serveur ; ces chemins héritent des protections CloudDocs que les démons sans tête ne doivent pas toucher.

Coordonnez-vous avec les responsables EDR sur sous-réseaux d’entreprise : des agents qui scannent chaque fichier peuvent entrer en compétition avec les lectures OpenClaw, amplifiant une latence prise pour de la lenteur modèle — une raison de plus pour étiqueter distinctement les nouvelles tentatives disque et la latence LLM, comme dans l’article sur la résilience de sortie réseau.

Matrice des permissions : surface, atténuation, coût opérationnel

Scénario Atténuation Coût ops
Lire dépôt sous /Volumes/Data/workspace Garder les workspaces sur volumes non protégés TCC avec ACL POSIX pour l’utilisateur service Faible — disposition MacXCode recommandée
Parcourir Téléchargements utilisateur Déplacer les artefacts entrants vers un répertoire de transit partagé via job SFTP Moyen — changement d’habitudes
Automatisation pilotant le Finder Accorder Automatisation Terminal→Finder ou éviter totalement AppleEvents Élevé — fragile sans tête
Scans style antivirus disque entier Entrée FDA explicite + justification documentée Élevé — revue sécurité

Révisez les lignes trimestriellement : Apple subdivise parfois les catégories — ce qui relevait « accès disque complet » peut se fragmenter sur des périmètres bibliothèques médias dans une future macOS. Gardez des IDs de ligne wiki stables même si Apple renomme les libellés pour que les tickets incidents historiques restent trouvables.

Dispositions de données recommandées sur nœuds loués

Structurez les workspaces agents sous des points de montage /Volumes/... ou /srv/... dédiés à l’automatisation — ne les mélangez pas aux Téléchargements humains. Séparez les clones Git par client dans des compartiments de chemin pour que les limites chmod suivent les packs conformité. Stockez les gros artefacts sur les SSD 1–2 To exposés par les nœuds MacXCode afin que les embeddings gourmands en E/S ne rivalisent pas avec les instantanés système.

Lorsqu’OpenClaw a besoin de captures, préférez des API de rendu programmatique vers des dossiers approuvés plutôt que les défauts screencapture qui déposent sur le Bureau — le Bureau déclenche un examen de confidentialité supplémentaire même si l’exécution réussit par intermittence.

Échelle de remédiation (arrêt au palier sûr le plus bas)

  1. Déplacer les chemins — ramener entrées/sorties de job vers des répertoires POSIX partagés avec les caches CI décrits dans l’isolement DerivedData.
  2. Correctif ACL — accorder lecture/exécution au compte service sans secrets lisibles par le monde entier.
  3. Stabilité des binaires — garder chemins Node/OpenClaw constants pour que d’anciennes autorisations TCC restent valides (mettez à jour les liens symboliques avec prudence).
  4. Fenêtre de confirmation GUI — planifiez une session VNC avec la partie sécurité pour approuver les invites une fois.
  5. Profil MDM — flottes entreprise uniquement ; coordonnez les IDs de charges confidentialité.
  6. Exception de politique — documentez pourquoi des périmètres plus étroits échouent (audit/régulation).

Entre les paliers 3 et 4, capturez si la politique le permet des enregistrements d’écran des opérateurs VNC qui cliquent les approbations — les auditeurs apprécient la preuve que les identifiants n’ont pas été injectés dans des scripts shell. Entre 4 et 5, validez les charges MDM sur un Mac mini de préproduction avant de toucher les pools loués de prod pour ne pas casser les builds de minuit.

Certaines piles exécutent OpenClaw sous le même compte que les tests UI Xcode humains — mélanger sessions interactives et daemons complique la TCC car les approbations se rattachent au premier binaire initiateur. Préférez des comptes de service dédiés par environnement (dev/staging/prod) pour que les octrois restent expliquables lors des revues SOC.

Lien journalisation structurée et identifiants de corrélation

Enrichissez les journaux JSON avec tcc_suspected, path_root, tool_name pour que Grafana sépare nouvelles tentatives LLM et échecs disque — réutilisez les motifs des budgets HTTP LLM mais traitez les refus disque comme erreurs client sans backoff. Couplez avec les sondes de passerelle de l’article sondes de disponibilité afin que les orchestrateurs style Kubernetes ne redémarrent pas des pods qui manquent seulement d’octrois fichiers.

Pour les post-mortems, photographiez si possible les sorties tccutil — ne collez jamais de secrets — et joignez des empreintes hachées des binaires pour montrer quel Node disposait des privilèges quand les échecs ont commencé.

FAQ pour opérateurs plateforme

Question Réponse (2026-04-29)
Rosetta affecte-t-il la TCC ? L’architecture influence le mappage de chemins — conservez Node arm64 sauf pont x86 volontaire ; des binaires incohérents réinitialisent l’attente d’approbation.
Peut-on chmod 0777 le workspace ? Évitez — utilisez des ACL de groupe ; répertoires modifiables par tout le monde violent des bases type SOC2 même si c’est commode.

Troisième FAQ interne optionnelle : les fournisseurs cloud autorisent-ils des extensions noyau pour agents EDR — sans rapport avec OpenClaw mais souvent demandée par des partenaires sécurité évaluant des piles combinées.

Pourquoi les nœuds Mac mini M4 bare metal simplifient la gouvernance des permissions

Les couches macOS virtualisées obscurcissent parfois les identifiants matériels utilisés dans les invites de confidentialité ; les hôtes physiques Mac mini M4 à Hong Kong, Tokyo, Séoul, Singapour et aux États-Unis alignent chemins exécutables et contextes UUID matériels stables — rendant profils MDM et approbations manuelles reproductibles après reconstruction. Les grands pools mémoire unifiée permettent de co-localiser passerelles OpenClaw et embeddings lourds en CPU sans faire circuler les binaires à travers des espaces de montage obscurs qui embrouillent le cache TCC. Quand la disposition disque reste simple — volumes dédiés, comptes de service explicites, chmod documenté — la pile IA consacre des cycles aux invites clients plutôt qu’à des refus macOS silencieux. Explorez les tarifs régionaux et les guides d’accès pour reproduire cette architecture sans reniventer la colle d’hébergement.

Isolez les workspaces avant de chasser les invites

1–2 To · Apple Silicon · SSH / VNC optionnel