Sur cette page : Menace synthétique · Fragment sandbox · CI · Douleurs · Matrice · Acceptation · Stratégies · FAQ
Ce guide s’adresse aux ingénieurs qui orchestrent des graphes d’outils. Il prolonge nos volets OpenClaw, sandbox minimal et sondes, PydanticAI, schémas et timeouts et sessions_spawn et sous-agents. Pour parcourir l’offre sans compte : accueil, tarifs, blog.
Menace en une ligne : qui veut quoi sur votre Mac loué
Avant de choisir E2B ou local, alignez chaque acteur sur une ligne : capacité offensive plausible et levier de contrôle habituel. Ce tableau résume la surface utile pour l’audit produit.
| Acteur | Objectif typique | Levier défensif prioritaire |
|---|---|---|
| Modèle + prompt tiers | élargir la surface fichiers et réseau via outils mal cadrés | préfixe de session en lecture seule hors workspace, timeouts stricts, refus des chemins relatifs ambigus |
| Outil « de confiance » | hériter d’environnement riche et lancer des enfants non listés | enveloppe shell minimale, liste fermée de binaires, variables d’environnement blanchies |
| Automatisation distante | persistance sur le nœud via cron ou LaunchAgents | utilisateur système dédié, pas de sudo agentique, journaux corrélés par run |
Fragment de configuration sandbox locale
Sur macOS, l’esprit sandbox-exec reste une référence culturelle : on cherche un profil qui nie par défaut, puis autorise explicitement. En pratique 2026, beaucoup d’équipes combinent utilisateur dédié, répertoire racine par session et lanceur qui impose TMPDIR et HOME sous ce préfixe. L’exemple suivant illustre l’intention ; adaptez les chemins à votre orchestrateur.
#!/usr/bin/env bash
set -euo pipefail
ROOT="${AGENT_SESSION_ROOT:?}"
export HOME="$ROOT/home" TMPDIR="$ROOT/tmp"
export PATH="/usr/bin:/bin:/usr/sbin"
cd "$ROOT/workspace"
# Wall-clock : asyncio, launchd ou perl alarm sur macOS — pas dans ce snippet.
exec /usr/bin/env -i HOME="$HOME" TMPDIR="$TMPDIR" PATH="$PATH" "$@"L’idée est simple : aucun outil ne doit découvrir un HOME utilisateur réel ni un cache npm global tant que la session agent n’a pas été provisionnée dans ROOT. Les quotas disque et la rotation des répertoires complètent le dispositif.
Raccord aux garde-fous CI
La CI doit rejeter toute régression de politique avant la mise en production sur le Mac distant. Ajoutez un job qui exécute le wrapper avec un binaire hors liste : la sortie attendue est un refus net. Ajoutez un second scénario qui tente une sortie du préfixe via lien symbolique : la build échoue si la traversée réussit. Versionnez le manifeste d’outils à côté du graphe d’agent pour que la revue humaine et le robot voient la même vérité.
Trois douleurs qui coûtent une nuit de garde
1) Chemins implicites : le modèle invoque git depuis un répertoire où se trouvent des jetons dans un fichier non ignoré. 2) Timeouts absents ou synchrones : un shell bloque tout le graphe. 3) Logs copieux contenant des secrets parce que stderr a capturé la réponse brute d’API. Chaque point se traite par géométrie de répertoires, horloges découplées et politique de redaction.
Matrice décision : cloud jetable type E2B contre socle local Mac
| Critère | Sandbox cloud « E2B » | Stratégie locale Mac distant |
|---|---|---|
| Isolation | VM ou conteneur jetable, surface noyau familière aux équipes SRE | comptes séparés, préfixes de session, profils Seatbelt ou wrappers minimalistes |
| Cas d’usage Apple | souvent inadapté sans reconfiguration lourde | Xcode, signatures, MLX, accès Metal natif |
| Timeouts | faciles à uniformiser côté orchestrateur cloud | nécessitent discipline locale : timeout, budgets HTTP, plafonds asyncio |
| Coût opérationnel | facturation à la minute, moins de dette sur le nœud | discipline de nettoyage et monitoring sur le Mac loué |
Checklist d’acceptation : permissions, chemins, timeouts
- Chaque session possède un préfixe unique et est détruite après succès ou échec.
- Les outils n’héritent pas du
PATHinteractif de l’administrateur. - Un timeout par outil et un budget global par tour sont configurés et testés.
- Les erreurs distinguent « retry » et « violation de politique » pour le modèle.
- La CI rejette manifeste et wrapper désalignés.
- Les journaux portent un identifiant de corrélation sans corps de requête sensible.
Stratégies exécutables avant la prochaine release
- Publiez un manifeste versionné listant binaires, arguments autorisés et dossiers touchables.
- Installez le wrapper commun sur le Mac distant et refusez tout appel qui le contourne.
- Mappez chaque outil à une classe de timeout et à un code d’erreur stable pour l’orchestrateur.
- Ajoutez deux tests CI négatifs par sprint : binaire inconnu, traversée hors préfixe.
- Documentez la procédure de rotation des secrets si un agent a lu un fichier par erreur.
Repères citables : un préfixe par session réduit l’exfiltration opportuniste ; trois couches de timeout évitent les emballements ; une CI qui échoue sur la politique coûte moins cher qu’un incident client.
FAQ — modes d’échec fréquents
Pourquoi les listes blanches d’outils ne suffisent pas ? Elles oublient les effets de bord des processus enfants et des variables d’environnement héritées.
Le cloud remplace-t-il le Mac pour les agents ? Non dès que la chaîne exige des artefacts Apple : gardez le Mac et importez la discipline contractuelle du cloud.
Que mesurer la première semaine ? Taux d’appels d’outils annulés par timeout, latence p95 par outil, volume de logs redactés.
En résumé : tracez la menace en une ligne, verrouillez HOME et TMPDIR, empilez les timeouts, alignez la CI sur des échecs attendus, puis exploitez un Mac distant quand la valeur est côté Apple Silicon plutôt que dans une VM générique.