Pourquoi les Agents macOS ont besoin d'une sandbox, pas seulement d'un prompt
Cursor, Windsurf et les outils de codage IA ont rendu banal de « laisser le modèle modifier le code ».
Le profil de risque change radicalement lorsqu'un Agent passe des suggestions IDE à l'exécution shell autonome, l'accès aux secrets et les appels d'API système —
il ne propose plus un diff : il écrit sur le disque sous votre identité utilisateur.
Lors de tests internes, un Agent sans contrainte, pendant un refactoring multi-fichiers, a tenté d'écrire à côté de
~/.ssh/id_ed25519 et a exécuté security find-identity pour énumérer le trousseau —
tolérable sur un portable de développeur, inacceptable sur un Mac cloud détenant des clés de signature CI.
La réponse habituelle est Docker ou une VM, mais les options conteneur sous macOS manquent souvent de la toolchain Xcode complète ou entrent en conflit avec la pile de signature Apple. Une autre voie : donner à l'Agent une machine physique dédiée, puis verrouiller l'accès fichiers, réseau et processus derrière un moteur de politiques — c'est là qu'intervient OpenClaw. Il tourne sur les nœuds Mac mini M4 dédiés PixVPS, partage le calcul Apple Silicon avec l'hôte et ajoute un audit au niveau opération et des frontières de permissions pour que les Agents travaillent sans toucher aux ressources interdites.
Matériel : Mac mini M4 · CPU 10 cœurs · 16 Go de mémoire unifiée · 256 Go NVMe · bande passante dédiée 1 Gbps (nœud PixVPS Singapour).
OS : macOS 15 Sequoia. OpenClaw CLI 0.9.4, format de politique v2.
Runtime Agent : script d'orchestration interne + LangGraph 0.2 ; tâche de référence : scanner le dépôt → générer un patch → exécuter les tests unitaires.
Accès : jeton SSH zero trust + VNC console pour observation latérale.
Architecture OpenClaw : isolation en trois couches
Voyez OpenClaw comme une couche middleware de politiques et d'audit entre macOS et votre Agent, composée de trois éléments coopératifs :
- Policy Engine : lit des règles YAML déclaratives et évalue allow/deny avant chaque appel système ; en cas de refus, renvoie des codes d'erreur structurés pour retry ou repli de l'orchestration.
- Sandbox Runtime : monte un espace de travail inscriptible isolé par session Agent, n'exposant par défaut que
/workspaceet les chemins explicitement listés ; bloque les zones sensibles comme~/Library/Keychainset/etc. - Audit Bus : journalise chaque lecture/écriture fichier, chaque processus enfant et chaque connexion réseau sortante en JSON Lines — interrogeable par ID de session, version de politique et fenêtre temporelle ; rétention par défaut 90 jours.
Comparé à « réimager toute la machine » ou « changer de compte utilisateur », OpenClaw excelle avec des politiques versionnées et réversibles :
un nœud M4 peut exécuter un Agent d'analyse de code en lecture seule à côté d'un Agent de build avec accès en écriture à /workspace,
chacun lié à un YAML différent, sans interférence. Le Neural Engine 38 TOPS du M4 reste dédié à l'hôte ; la couche sandbox ajoute une latence d'inférence quasi nulle —
sur 200 exécutions stress de tool calls consécutifs, l'évaluation de politique a moyenné 1,8 ms, effectivement négligeable.
Activation console et préparation de l'environnement
OpenClaw est inclus avec chaque instance Mac mini M4 standard PixVPS — aucun achat séparé. Si vous n'avez pas encore de nœud cloud, choisissez région et durée sur la page de commande — les identifiants SSH apparaissent dans la console sous 1 à 5 minutes après paiement. Les étapes ci-dessous supposent que vous pouvez déjà vous connecter en SSH.
-
01
Activer OpenClaw dans la console
Détails de l'instance → Security & Sandbox → activer OpenClaw. La première activation génère un
instance-tokenau niveau instance, affiché une seule fois — conservez-le immédiatement dans votre coffre de secrets d'équipe. -
02
Installer la CLI et lier l'instance
Connectez-vous en SSH et exécutez les commandes ci-dessous. La CLI est distribuée via les sources logicielles PixVPS et ne entre pas en conflit avec Python système ou Homebrew.
-
03
Vérifier les daemons et les health checks
Exécutez
openclaw statuset confirmez que Policy Engine, Sandbox Runtime et Audit Bus affichent toushealthy.
Dans votre session SSH :
curl -fsSL https://api.pixvps.com/openclaw/install.sh | bash
openclaw auth login --token <instance-token>
openclaw status
Stockez instance-token dans 1Password, Bitwarden ou équivalent — pas en clair dans un dépôt.
En cas de fuite, utilisez Rotate Instance Token dans la console pour l'invalider immédiatement ; les sessions sandbox en cours ne sont pas affectées, mais les nouvelles sessions exigent le nouveau jeton.
Commandes CLI et première tâche sandbox
La CLI OpenClaw est conçue pour que les opérateurs gèrent ~90 % du travail en SSH ; l'interface graphique sert uniquement à la recherche d'audit et au bypass d'urgence. Parcours minimal : créer une sandbox → attacher une politique → exécuter le script d'entrée Agent dans la sandbox.
openclaw sandbox create --name dev-agent --policy ./policies/readonly.yaml
openclaw sandbox exec dev-agent -- /bin/zsh -lc 'ls -la /workspace'
openclaw sandbox list
openclaw sandbox stop dev-agent
sandbox create alloue un espace de travail isolé sous /var/openclaw/sandboxes/<id>/
et écrit le hash du fichier de politique dans le journal d'audit pour répondre plus tard à « quels chemins étaient autorisés à ce moment ».
sandbox exec est le meilleur outil de debug : validez la rigueur de la politique avant de brancher l'orchestration Agent complète.
Notre première tâche faisait cloner un dépôt Git privé et exécuter les tests. Piège : la politique par défaut bloque ~/.gitconfig,
la lecture des identifiants HTTPS a échoué. Correctif : ajouter une entrée en liste blanche en lecture seule pour ~/.gitconfig, ou passer à une clé de déploiement SSH et autoriser explicitement ~/.ssh/deploy_key.
YAML de permissions : de la lecture seule aux builds inscriptibles
Les fichiers de politique utilisent du YAML déclaratif avec apiVersion: openclaw.pixvps.com/v2.
Les blocs principaux sont filesystem, process et network ;
chacun prend des listes allow et deny — deny prime sur allow.
apiVersion: openclaw.pixvps.com/v2
kind: SandboxPolicy
metadata:
name: readonly-analyzer
spec:
filesystem:
allow:
- path: /workspace
access: [read]
deny:
- path: "**/Keychains/**"
- path: "**/.ssh/**"
process:
allow: [git, rg, python3]
network:
egress: deny-all
Les Agents de build ont besoin d'écriture sur /workspace, d'appels à xcodebuild et d'accès au registre npm.
Définissez l'accès à /workspace sur [read, write] sous filesystem.allow,
ajoutez xcodebuild, swift et npm à process.allow,
et passez network.egress en allow-list avec des entrées comme registry.npmjs.org:443 et github.com:443.
| Scénario Agent | Système de fichiers | Liste blanche processus | Réseau |
|---|---|---|---|
| Revue de code statique | /workspace lecture seule |
git, rg, python3 | Sortie refusée |
| Agent de build iOS | /workspace lecture/écriture ; chemins trousseau refusés |
xcodebuild, codesign, fastlane | Liste blanche domaines Apple / GitHub |
| Agent de scraping documentation | /workspace lecture/écriture |
curl, python3 | Sites de doc spécifiques en HTTPS |
| Agent d'inspection ops | Chemins de logs système en lecture seule | log, df, top | Sortie refusée |
Appliquez les changements avec openclaw policy apply -f ./policies/build.yaml --sandbox dev-agent pour un rechargement à chaud ;
le moteur valide la syntaxe YAML et les conflits de chemins et rejette les configs qui autorisent et refusent le même chemin.
Versionnez les fichiers de politique dans Git et revoyez-les en PR — l'extension des permissions mérite la même rigueur que le code applicatif.
Accès zero trust multi-utilisateurs
En production, une seule personne ne surveille rarement les Agents — et partager une clé SSH privée est une mauvaise idée. OpenClaw s'intègre à la passerelle zero trust PixVPS : chaque utilisateur obtient un certificat d'appareil personnel depuis la page Team Members de la console, passe la MFA et reçoit un certificat SSH à courte durée (8 heures par défaut) au lieu d'un mot de passe long terme.
Trois rôles : viewer (journaux d'audit uniquement) ; operator (créer/arrêter des sandboxes, exécuter sandbox exec) ;
admin (éditer les politiques, faire tourner les jetons). Les rôles sont assignés dans la console ; utilisez openclaw auth whoami sur la CLI pour voir votre identité actuelle.
Ne mettez pas instance-token en secret GitHub Actions en clair avec des workflows auto sur les PR de fork —
même règle que pour les jetons Runner CI : restreignez les déclencheurs dans les paramètres du dépôt, ou utilisez les jetons de fédération OIDC PixVPS à courte durée.
Révoquez immédiatement dans la console les certificats d'appareil des membres partants ; les journaux d'audit conservent leurs actions historiques.
Intégration CI/CD et pipelines d'automatisation
Quand les tâches Agent passent du déclenchement manuel à « à chaque push », les sessions OpenClaw doivent entrer dans l'orchestration de pipeline.
Configuration typique : un Runner auto-hébergé GitHub Actions sur le même nœud M4 PixVPS,
des étapes de workflow qui openclaw sandbox create, exécutent le script d'entrée Agent dans la sandbox, puis sandbox stop et téléversent un résumé d'audit.
- name: Run Agent in OpenClaw sandbox
run: |
openclaw sandbox create --name ci-${{ github.run_id }} \
--policy ./ops/openclaw/ci-build.yaml
openclaw sandbox exec ci-${{ github.run_id }} -- \
./scripts/agent-entry.sh
openclaw audit export --sandbox ci-${{ github.run_id }} \
--format jsonl -o ./audit-${{ github.run_id }}.jsonl
openclaw sandbox stop ci-${{ github.run_id }}
Sur Jenkins, encapsulez les étapes dans une Shared Pipeline Library et forcez l'export d'audit dans post { always { ... } }
pour que les Agents en échec ne laissent pas de sandboxes zombies consommant le disque. Nous avons mesuré des pics d'espace par sandbox autour de 2,4 Go (DerivedData inclus) ;
un nœud M4 avec 16 Go de mémoire unifiée peut exécuter deux sandboxes de build en parallèle sans swap — au-delà, envisagez le clustering multi-machines TB5 ou des Runners séparés.
Recherche dans les journaux d'audit et dépannage courant
L'audit est la valeur centrale d'OpenClaw en production. Chaque blocage et autorisation écrit dans l'Audit Bus avec des champs incluant
timestamp, sandbox_id, policy_hash, action, target, decision et actor.
Exemples CLI :
openclaw audit tail --sandbox dev-agent --follow pour le suivi en direct ;
openclaw audit query --since 24h --decision deny pour les refus des dernières 24 heures ;
openclaw audit export --format jsonl -o audit.jsonl pour les chaînes de preuve juridique ou SOC2.
| Symptôme | Cause probable | Action |
|---|---|---|
openclaw status affiche Audit Bus unhealthy |
Utilisation disque > 85 %, rotation des logs échouée | Exécuter openclaw audit vacuum --before 30d ou ajouter du stockage SSD |
L'Agent signale E_POLICY_DENY: filesystem |
Chemin cible non listé | audit query --decision deny pour trouver le chemin, puis mettre à jour le YAML |
sandbox create expire |
Limite de sandboxes concurrentes atteinte (défaut 5) | sandbox list pour nettoyer les sessions zombies, ou augmenter le quota en console |
| Réseau bloqué malgré le domaine en liste blanche | Port manquant ou CNAME CDN non couvert | Utiliser le motif *:443 ou capturer le trafic vers la cible réelle |
| Échec de connexion par certificat SSH | Certificat d'appareil expiré ou MFA obsolète | Réémettre en console ; vérifier l'horloge système locale |
Si le moteur de politiques lui-même tombe en panne, la console propose un interrupteur Security Bypass — admin uniquement, 15 minutes max par activation —
toutes les actions de bypass sont journalisées au niveau de sévérité maximal. À éviter en production sauf incidents P0.
Passer en production : déployer les sandboxes Agent sur Mac cloud à votre rythme
Revenons à la question initiale : les Agents ont besoin de macOS, mais ne doivent pas tourner sans contrainte sur du bare metal — les Mac de bureau impliquent charge électrique et ops ; les instances macOS cloud public sont souvent virtualisées et sans audit au niveau opération comme OpenClaw. PixVPS propose Mac mini M4 physique dédié + intégration OpenClaw native : déploiement en 1 à 5 minutes après paiement, accès SSH / VNC, cinq nœuds (Singapour, Japon Tokyo, Corée du Sud Séoul, Hong Kong, côte Est des États-Unis) selon la latence, expérimentations dès $21.1/jour — passez à $105.7/mois une fois stable, libérez quand c'est fini.
Déploiement recommandé : valider la logique Agent avec une politique lecture seule sur un nœud → ouvrir progressivement l'écriture sur /workspace et les listes réseau →
committer le YAML de politique dans Git et brancher la CI → attribuer des certificats zero trust avec accès par rôle à l'équipe.
Pour l'inférence de modèle sur appareil, le Neural Engine 38 TOPS du M4 peut accélérer hors sandbox, indépendamment de la politique sandbox.
Pour un parcours plus court en 5 minutes, voir l'article compagnon Sandbox OpenClaw en 5 minutes.
-
01
Choisir un nœud et provisionner une instance
Sur la page de commande, choisissez région et durée ; après paiement, activez OpenClaw en console et sauvegardez l'instance-token.
-
02
Installer la CLI et committer votre première politique lecture seule
Utilisez
sandbox execpour confirmer que le script d'entrée Agent tourne sous contraintes, puis élargissez les permissions d'écriture étape par étape. -
03
Brancher la CI et le zero trust d'équipe
Forcez l'export d'audit dans les workflows ; assignez les rôles viewer / operator / admin ; faites tourner les jetons régulièrement.
La barre pour les Agents en production n'est pas la taille du modèle — c'est de savoir si chaque appel système est prévisible, traçable et réversible. OpenClaw transforme cela en YAML versionné et journaux d'audit interrogeables ; PixVPS fournit le calcul Apple Silicon sans pénalité de virtualisation et un provisionnement en minutes. Ensemble, ils forment un chemin pragmatique vers des Agents automatisés sur macOS, équilibrant vitesse et conformité.
Offrez à votre Agent IA un Mac cloud avec sandbox OpenClaw
Les nœuds Mac mini M4 dédiés PixVPS incluent OpenClaw : isolation au niveau opération, accès zero trust, rétention d'audit 90 jours, 16 Go de mémoire unifiée et inférence sur appareil 38 TOPS — dès $21.1/jour sur cinq nœuds mondiaux.