Yolobox – exécuter des agents de codage IA avec des privilèges complets tout en protégeant le répertoire personnel
(github.com/finbarr)- Outil permettant d’exécuter des agents de codage IA avec les privilèges complets du système tout en bloquant le risque d’endommager le répertoire personnel
- Les principaux CLI IA comme Claude Code, Codex, Gemini CLI, OpenCode sont préconfigurés et peuvent être lancés en mode « YOLO »
- Monte uniquement le répertoire du projet dans un conteneur Docker ou Podman, en excluant par défaut le répertoire personnel
- Fournit des privilèges sudo et des volumes persistants dans le conteneur afin de conserver les outils et les réglages entre les sessions
- Offre un environnement sandbox isolé pour permettre aux développeurs d’expérimenter en toute sécurité les fonctions d’automatisation par IA
Vue d’ensemble
- Yolobox est un outil qui exécute des agents de codage IA à l’intérieur d’un conteneur afin de protéger le système tout en leur accordant des privilèges d’exécution complets
- Même si l’IA exécute par erreur une commande destructive comme
rm -rf ~, le répertoire personnel n’est pas affecté - Le répertoire du projet est monté sur
/workspace, tandis que le répertoire personnel n’est pas monté par défaut - Les outils et réglages sont conservés entre les sessions grâce à des volumes persistants
- Même si l’IA exécute par erreur une commande destructive comme
Configuration et fonctionnalités principales
- À l’intérieur du conteneur, l’agent IA dispose des privilèges sudo et peut exécuter librement des commandes
- L’image de base inclut les éléments suivants
- CLI IA : Claude Code, Gemini CLI, OpenAI Codex, OpenCode (tous configurés en mode d’exécution automatique)
- Environnement de développement : Node.js 22, Python 3, make, cmake, gcc, Git, GitHub CLI
- Utilitaires : ripgrep, fd, fzf, jq, vim
- Si nécessaire, l’utilisateur peut installer lui-même des paquets supplémentaires avec sudo
Exécution et commandes
- Entrée dans le shell sandbox avec la commande
yolobox - Exécution possible d’une commande unique avec
yolobox run - Commandes de gestion disponibles :
yolobox upgrade,yolobox config,yolobox reset --force,yolobox version - Principaux drapeaux
--runtime: choisir docker ou podman--no-network: désactiver le réseau--readonly-project: monter le projet en lecture seule--claude-config: copier la configuration Claude de l’hôte dans le conteneur
Modèle de sécurité
- Utilise l’isolation du conteneur comme frontière de sécurité
- Le conteneur isole le système de fichiers, les processus et le réseau via les espaces de noms Linux
- L’IA dispose des privilèges root dans le conteneur, mais ne peut pas accéder au système extérieur
- Éléments protégés
- Répertoire personnel, clés SSH, identifiants, dotfiles, autres projets, fichiers système de l’hôte
- Éléments non protégés
- Répertoire du projet (accessible en lecture/écriture par défaut)
- Accès réseau (peut être bloqué en option)
- Vulnérabilités du noyau ou attaques d’évasion de conteneur
Étapes de renforcement de la sécurité
- Mode par défaut : isolation standard par conteneur
- Étape 2 : réduction de la surface d’attaque avec les options
--no-network --readonly-project - Étape 3 : utilisation de Rootless Podman pour supprimer les privilèges root sur l’hôte
- Le root du conteneur est mappé à un utilisateur normal de l’hôte, ce qui minimise les dégâts en cas d’évasion
- Étape 4 : exécution dans une VM pour supprimer le partage du noyau
- Sur macOS : UTM, Parallels, Lima ; sur Linux : Podman machine ou une VM dédiée
Isolation réseau
- Rootless Podman utilise par défaut le réseau slirp4netns, isolé du réseau de l’hôte
- Le paramètre
allow_host_loopback=falsepermet de bloquer l’accès au réseau local
Licence et autres informations
- Distribué sous licence MIT
- Répartition des langages du dépôt : Go 75.9 %, Dockerfile 13.6 %, Shell 8.7 %, Makefile 1.8 %
- Le nom « Yolobox » vient de l’esprit « YOLO (You Only Live Once) » et désigne un environnement où l’on peut exécuter l’IA librement tout en restant isolé en toute sécurité
1 commentaires
Commentaires Hacker News
J’ai récemment créé un projet similaire appelé Litterbox (site de démo)
C’est uniquement pour Linux, car il dépend de Podman. En contrepartie, il a des avantages adaptés à mon usage
J’expérimentais moi aussi quelque chose de similaire.
Ce serait bien que le README explique clairement le fonctionnement et les frontières de confiance (basées sur les conteneurs Docker). Le risque d’évasion du conteneur existe toujours, car des vulnérabilités du noyau peuvent être exploitées
J’utilise Rootless Podman et
slirp4netnspour réduire au minimum l’accès réseau.L’étape suivante serait d’utiliser Podman machine pour isoler complètement le noyau, mais les montages de volumes fonctionnent mal
Quelqu’un propose d’ajouter les trois lois de la robotique d’Asimov dans
agents.mdouclaude.mdclaude.mdrevient à injecter mentalement ce concept au modèle. Les anciens modèles, par exemple, si on leur disait de ne pas utiliser le mot « éléphant », produisaient au contraire des résultats étranges en essayant de l’éviterJe recommande de jeter un œil à Shai. Ça s’exécute en local et permet de contrôler les permissions d’accès aux répertoires ainsi que le trafic réseau
shai -rw .autorise la lecture/écriture dans le répertoire courant, etshai -u rootpermet de l’exécuter sous un autre utilisateurShai suit une philosophie de refus par défaut, autorisation explicite (opt-in). Je recommande de partager
.shai/config.yamldans le dépôt afin que toute l’équipe utilise la même configuration--no-networkJe développe yolo-cage. Là où Yolobox se concentre sur la protection de la machine locale, yolo-cage met l’accent sur la prévention des fuites de secrets et la collaboration multi-agents
Il s’exécute sur Kubernetes et analyse tout le trafic sortant pour empêcher la fuite de clés API ou de tokens.
Il impose l’isolation des branches Git afin qu’un agent ne puisse pas fusionner sa propre PR — « l’agent propose, l’humain approuve »
Il intègre aussi un framework de test d’évasion qui pousse Claude à tenter de s’échapper lui-même. Le prompt correspondant se trouve dans le dépôt, afin de vérifier que l’agent est authentique
Je me demandais pourquoi il fallait marquer les commits avec « claude ». On n’indique pas l’OS ni la version de vim comme ça. Un LLM n’est au fond qu’un outil qui compile de l’anglais en code
J’ai moi aussi tenté quelque chose de similaire. J’ai créé Toadbox, avec un peu plus de fonctions de confort
On parle beaucoup de sandbox pour l’IA, mais en réalité Claude Code, Codex et Gemini CLI ont déjà une sandbox intégrée
J’implémente quelque chose de similaire avec Apple Container Framework. Je me demandais si vous y aviez déjà jeté un œil
En revanche, il manque de compatibilité avec l’API Docker et de composabilité. J’ai résumé une discussion à ce sujet ici
À l’origine, je voulais faire tourner Shai au-dessus d’Apple Container, mais j’ai abandonné à cause de problèmes de packaging
Je construis moi aussi quelque chose de similaire → sandbox-codex
C’est encore en cours, et la lisibilité des logs tmux n’est pas très bonne. Comme Docker n’est pas une sandbox complète, je l’exécute dans VirtualBox