- Comment utiliser en toute sécurité le flag
--dangerously-skip-permissions de Claude Code
- Après avoir évalué plusieurs environnements d’exécution isolés comme Docker, les VM et Firejail, l’auteur conclut qu’une machine virtuelle (VM) basée sur Vagrant est la solution la plus adaptée
- Avec Vagrant, il est possible de conserver une isolation complète par VM, une configuration reproductible et le partage de dossiers locaux, tout en évitant les problèmes de Docker-in-Docker
- Claude Code est configuré pour manipuler librement le système avec les privilèges
sudo dans la VM, et sert concrètement à lancer des web apps, configurer des bases de données et automatiser des tests
- Cette méthode est efficace pour éviter les dommages accidentels au système de fichiers et permet, si nécessaire, de réinitialiser proprement l’environnement en supprimant puis recréant la VM
Contexte
- Lors de l’utilisation de Claude Code, l’auteur a voulu éliminer l’inconvénient de devoir confirmer chaque demande d’autorisation en essayant le flag
--dangerously-skip-permissions
- Ce flag exécute automatiquement sans approbation préalable toutes les opérations, y compris l’installation de paquets, les changements de configuration ou la suppression de fichiers
- C’est efficace car cela évite d’interrompre le flux de travail, mais cela comporte un risque de corruption du système de fichiers
- Pour l’éviter, il devient nécessaire d’exécuter Claude dans un environnement séparé du compte utilisateur de l’OS hôte
Méthodes envisagées
- L’isolation via Docker a d’abord été étudiée, mais comme Claude doit construire des images Docker et lancer des conteneurs, une configuration Docker-in-Docker est nécessaire
- Dans ce cas, le mode
--privileged est requis, ce qui annule l’intérêt du sandboxing
- L’empilement réseau et les problèmes de permissions sur les montages de volumes augmentent aussi la complexité et l’instabilité
- Les autres alternatives examinées sont les suivantes
- Exécution sur bare metal : des cas rapportés sur Reddit montrent des dommages graves, comme la suppression d’une base de données ou du répertoire personnel
sandbox-runtime : contrôle d’accès basé sur les ACL, empêchant Claude d’accéder à autre chose qu’au code, mais avec un manque de liberté totale
- Firejail : présente des limitations similaires à Docker
- Configuration manuelle d’une VM : manque de reproductibilité
- VM dans le cloud : problèmes de coût, latence et nécessité d’uploader le code
Approche basée sur Vagrant
- Vagrant permet d’obtenir à la fois une isolation complète par VM et une configuration reproductible
- Les dossiers partagés permettent un accès proche d’un usage local
- Il n’y a pas de problème de Docker-in-Docker, et la VM peut être supprimée puis recréée facilement si besoin
- En utilisant VirtualBox 7.2.4, l’auteur a constaté un bug faisant monter le CPU à 100 %, puis en a confirmé la cause via une issue GitHub
- La configuration finale du Vagrantfile présente les caractéristiques suivantes
- image de base
bento/ubuntu-24.04
- 4 Go de mémoire et 2 CPU alloués
- installation de Docker, Node.js, npm, git et unzip
- installation globale de
@anthropic-ai/claude-code
- ajout de l’utilisateur
vagrant au groupe Docker
Utilisation concrète
- Depuis le répertoire du projet, exécuter
vagrant up → vagrant ssh → claude --dangerously-skip-permissions
- Au premier démarrage, le provisioning prend quelques minutes et il faut se connecter à Claude une seule fois par projet
- En fin de travail, la VM peut être mise en veille avec
vagrant suspend
- Dans la VM, Claude reçoit les privilèges
sudo et peut effectuer les tâches suivantes
- lancer l’API d’une web app et la vérifier avec
curl
- installer un navigateur, inspecter manuellement l’application et générer des tests E2E
- configurer une base PostgreSQL et tester les migrations
- construire et exécuter des images Docker
- Grâce à cet environnement, Claude peut exécuter des commandes, vérifier les sorties et gérer lui-même les itérations
Performances et sécurité
- Sur Linux + VirtualBox, les ressources sont largement suffisantes et il n’y a pas de latence de synchronisation des fichiers
- Ce qui peut être protégé
- les dommages accidentels au système de fichiers
- les installations de paquets incontrôlées et les modifications de configuration
- Ce qui ne peut pas être protégé
- la suppression du dossier du projet (synchronisation bidirectionnelle)
- les attaques exploitant une faille d’évasion de VM
- les problèmes au niveau réseau
- l’exfiltration de données (la VM a accès à Internet)
- Cette configuration sert à prévenir les accidents, et non à se défendre contre des attaques avancées
- Comme le projet repose sur Git, la récupération reste facile en cas de dommages ; si nécessaire, une synchronisation unidirectionnelle via
rsync permet une isolation plus stricte
Conclusion
- Après résolution du bug CPU de VirtualBox, l’auteur obtient un environnement d’exécution sans friction
- Claude Code peut être exécuté librement dans un sandbox VM complet
- En cas de problème, il suffit de supprimer puis recréer la VM, avec une reproductibilité garantie par un simple Vagrantfile
- Si vous utilisez le flag
--dangerously-skip-permissions, la mise en place d’un environnement isolé de ce type est fortement recommandée
Aucun commentaire pour le moment.