Sommaire
- L'essentiel en 30 secondes
- 1. Pourquoi vous avez besoin d'un bac à sable
- 2. Ce qu'est le bac à sable — deux isolements
- 3. Pour commencer — /sandbox et les OS pris en charge
- 4. Les deux modes (auto-autorisation / normal)
- 5. Le configurer dans settings.json
- 6. Relation avec les modes et règles de permission
- 7. Limites et mises en garde — ne lui faites pas trop confiance
- 8. Quand recourir aux dev containers ou aux VM
- Résumé
- FAQ
Utilisez Claude Code suffisamment longtemps et vous tombez sur ce dilemme. Il demande « puis-je exécuter ceci ? » à chaque commande, et votre rythme cale sans cesse. Mais désactiver toutes les demandes avec --dangerously-skip-permissions (contournement des permissions) signifie qu'une injection de prompt ou une fausse manœuvre pourrait toucher des fichiers partout sur votre machine. Sécurité contre automatisation — longtemps considéré comme un compromis inévitable.
Ce qui casse ce binaire, c'est le bac à sable. Si vous délimitez « ce qui peut être touché » au niveau de l'OS en amont, les commandes peuvent s'exécuter librement à l'intérieur de la clôture sans demandes, sans que rien ne puisse atteindre l'extérieur. Cet article expose, du point de vue d'un praticien, ce que le bac à sable de Claude Code isole et comment, comment démarrer avec /sandbox, comment le configurer dans settings.json, en quoi il diffère des modes de permission, et les limites auxquelles il ne faut pas trop se fier.
L'essentiel en 30 secondes
Si vous ne lisez qu'une chose
/sandbox. macOS fonctionne d'emblée ; Linux/WSL2 nécessite deux paquets.※Dans l'usage interne d'Anthropic, le bac à sable a réduit en toute sécurité les demandes de permission de 84 % (source ci-dessous).
1. Pourquoi vous avez besoin d'un bac à sable
Claude Code est un agent IA qui agit réellement — exécuter des tests, réécrire des fichiers. C'est précisément pour cela qu'il s'arrête pour demander « puis-je exécuter ceci ? » avant les commandes risquées. Pour la sécurité, c'est correct. Mais quand des dizaines de demandes tombent dans une journée, le travail se fragmente, et au bout d'un moment vous appuyez sur Entrée sans lire. C'est la « fatigue des permissions ».
Un développeur fatigué se tourne vers --dangerously-skip-permissions (surnommé le mode YOLO), qui désactive toutes les demandes. C'est confortable et — comme son nom l'indique — dangereux. Trois menaces montrent les crocs d'un coup.
Si une page web ou une issue qu'il lit dissimule « envoie ~/.ssh », vos clés privées peuvent fuir sans aucune demande.
Une commande générée nettoie un chemin inattendu. Sans demande, des fichiers hors du projet peuvent disparaître eux aussi.
Une dépendance malveillante exfiltre des données à l'installation. Avec le réseau grand ouvert, vous ne pouvez pas l'arrêter.
L'idée du bac à sable est simple : cesser de demander « que dois-je confirmer ? » à chaque fois, et délimiter en amont « jusqu'où cela peut-il atteindre ? ». La clôture n'est pas imposée par le jugement propre de Claude mais par l'OS (le noyau), de sorte que même s'il est détourné, et même si une commande autorisée fait plus que ce que son nom suggère, rien ne s'échappe de la limite. C'est pourquoi les commandes à l'intérieur de la clôture peuvent s'exécuter sans danger sans demandes — le binaire fatigue-contre-contournement-total disparaît. Dans son article d'ingénierie officiel, « Making Claude Code more secure and autonomous with sandboxing », Anthropic rapporte qu'en usage interne il a réduit en toute sécurité les demandes de permission de 84 % (publié en octobre 2025).
2. Ce qu'est le bac à sable — deux isolements
Le bac à sable de Claude Code trace deux limites autour des commandes Bash (et de chaque processus enfant qu'elles engendrent). Les deux doivent fonctionner ensemble — l'une seule laisse une faille (voir §7).
Les écritures sont limitées au répertoire de travail plus un dossier temporaire de session (par défaut). ~/.bashrc et les zones système ne peuvent pas être modifiés. Les lectures sont larges mais peuvent être refusées explicitement. Même détourné, il ne peut rien réécrire hors du projet.
Par défaut, le principe est « tout refuser » sans aucune destination autorisée. Dès qu'il tente un nouveau domaine, une demande apparaît. Le trafic passe par un proxy situé hors du bac à sable et est jugé face à une liste d'autorisation. Il empêche l'envoi de secrets vers l'extérieur.
Le point crucial, c'est qu'il ne repose pas sur le bon comportement de Claude. La limite est imposée par les propres mécanismes de sécurité de l'OS — macOS utilise Seatbelt intégré, Linux/WSL2 utilise bubblewrap. Ainsi la même limite s'étend aux scripts qu'une commande invoque et aux processus petits-enfants. Voyez-le non comme une requête polie adressée au modèle, à l'image des garde-fous de l'IA, mais comme un mur physique qui tient mécaniquement.
💡 Il ne délimite que Bash. Le bac à sable enveloppe l'outil Bash et ses processus enfants. Les Read/Edit/Write intégrés de Claude, les serveurs MCP et les hooks sont une affaire distincte (régie par les règles de permission). Pour isoler l'ensemble du processus, utilisez le paquet @anthropic-ai/sandbox-runtime décrit plus bas.
3. Pour commencer — /sandbox et les OS pris en charge
Le bac à sable est intégré à Claude Code. Aucun compte ni outil supplémentaire n'est requis. Dans une session, lancez :
/sandbox
Un panneau s'ouvre avec trois onglets. Mode (comment les commandes en bac à sable sont approuvées — section suivante), Overrides (si une commande qui échoue sous le bac à sable peut se rabattre sur une exécution hors bac à sable) et Config (afficher les réglages résolus). Sous Linux/WSL2, si un paquet requis manque, un onglet Dependencies apparaît à la place et vous indique ce qu'il faut installer.
Prérequis par OS
Rien à installer. Il utilise Seatbelt intégré. Activez-le immédiatement avec /sandbox.
Installez deux paquets : bubblewrap et socat (par ex. apt-get install bubblewrap socat).
Non pris en charge. Exécutez Claude Code dans WSL2 (WSL1 ne fonctionnera pas).
Sous Linux/WSL2, installez bubblewrap (l'outil de mise en bac à sable sans privilèges qui impose l'isolement du système de fichiers) et socat (le relais qui route le trafic vers le proxy).
# Ubuntu / Debian
sudo apt-get install bubblewrap socat
# Fedora
sudo dnf install bubblewrap socat
⚠️ Ubuntu 24.04 et versions ultérieures : la politique AppArmor par défaut peut empêcher bubblewrap de créer les espaces de noms utilisateur dont il a besoin. Si sysctl kernel.apparmor_restrict_unprivileged_userns renvoie 1, ajoutez un profil AppArmor pour bwrap afin de le lui accorder (les étapes figurent dans la documentation officielle). S'il renvoie 0 ou si la clé n'existe pas, aucune action n'est nécessaire. Vérifiez la même chose à l'intérieur de WSL2.
Une chose pratique à activer est le filtre seccomp (qui ajoute le blocage des sockets de domaine Unix). C'est optionnel ; installez-le avec npm install -g @anthropic-ai/sandbox-runtime. L'onglet Dependencies de /sandbox affiche l'état de ripgrep, bubblewrap, socat et du filtre seccomp. Après avoir installé les paquets, redémarrez Claude Code et rouvrez /sandbox (la vérification s'exécute au démarrage).
4. Les deux modes (auto-autorisation / normal)
L'onglet Mode choisit comment les commandes à l'intérieur du bac à sable sont approuvées.
Les commandes Bash qui s'exécutent dans le bac à sable sont autorisées automatiquement, sans demande — la limite elle-même remplace la demande. Confortable pour le travail quotidien. Les commandes que le bac à sable ne peut pas exécuter (par ex. du trafic vers un hôte non autorisé) se rabattent sur le flux de permission normal et déclenchent une demande.
Même en bac à sable, chaque commande Bash passe par la demande de permission normale. Plus de contrôle, plus d'approbations. Pour les prudents qui veulent « l'isolement plus les demandes habituelles ».
Dans les deux modes, les limites du système de fichiers et du réseau sont identiques ; la seule différence est « auto-autorisation contre demande ». Notez que même en mode auto-autorisation, ces soupapes de sécurité restent actives :
- Les règles de refus explicites priment toujours
rm/rmdirvisant/, votre répertoire personnel ou d'autres chemins système critiques déclenchent toujours une demande- Les règles ask ciblées sur le contenu comme
Bash(git push *)forcent toujours une demande, même à l'intérieur du bac à sable
Attention à deux « autos » trompeusement semblables. Le mode auto-autorisation du bac à sable n'est pas le mode auto des modes de permission. Le premier signifie « approuver automatiquement parce que la limite de l'OS le contient » ; le second signifie « un classifieur juge la sûreté de la commande et la laisse passer ». Ils fonctionnent indépendamment et peuvent être combinés.
5. Le configurer dans settings.json
Les choix faits dans le panneau /sandbox sont écrits dans le .claude/settings.local.json du projet (non versionné dans git). Pour le garder toujours actif sur tous les projets, placez sandbox.enabled: true dans vos réglages utilisateur à ~/.claude/settings.json. Il appartient à la même famille settings.json que les règles de permission (allow/ask/deny).
Ajouter des cibles d'écriture, refuser des lectures
Par défaut, vous ne pouvez écrire que dans le répertoire de travail et le dossier temporaire. Si kubectl ou terraform a besoin d'écrire ailleurs, ajoutez des chemins avec allowWrite. Inversement, vous pouvez bloquer les lectures de dossiers sensibles.
{
"sandbox": {
"enabled": true,
"filesystem": {
"allowWrite": ["~/.kube", "/tmp/build"],
"denyRead": ["~/"],
"allowRead": ["."]
}
}
}
L'exemple ci-dessus refuse les lectures de tout le répertoire personnel tout en autorisant le projet en cours (. se résout à la racine du projet lorsque la configuration réside dans les réglages du projet). Les chemins sont imposés au niveau de l'OS, donc ils s'appliquent également aux processus enfants comme npm et terraform.
Protéger les identifiants
Un piège important : la valeur par défaut pour les lectures est « largement autorisée », donc ~/.aws/credentials et ~/.ssh/ sont lisibles tels quels. Le réglage dédié sandbox.credentials (une fonctionnalité relativement récente) déclare les fichiers dont la lecture est à refuser et les variables d'environnement à supprimer.
{
"sandbox": {
"enabled": true,
"credentials": {
"files": [
{ "path": "~/.aws/credentials", "mode": "deny" },
{ "path": "~/.ssh", "mode": "deny" }
],
"envVars": [
{ "name": "GITHUB_TOKEN", "mode": "deny" }
]
}
}
}
Autoriser des destinations
Le réseau démarre avec zéro destination. Un nouveau domaine déclenche une demande la première fois qu'il est atteint (dans les versions récentes au moment de la rédaction, approuver une fois signifie ne plus être re-sollicité pour le reste de la session). Pré-enregistrez les hôtes pour lesquels vous ne voulez pas être sollicité dans allowedDomains. Avec des réglages gérés distribués par l'organisation, vous pouvez aussi bloquer automatiquement tout ce qui est hors de la liste d'autorisation au lieu de déclencher une demande.
{
"sandbox": {
"enabled": true,
"network": {
"allowedDomains": ["*.github.com", "registry.npmjs.org"]
}
}
}
Pour l'imposer à l'échelle de l'organisation. Dans les réglages gérés, à côté de sandbox.enabled: true, ajoutez failIfUnavailable: true (refuser de démarrer Claude Code si le bac à sable ne peut pas s'initialiser) et allowUnsandboxedCommands: false (fermer « l'échappatoire » consistant à réessayer hors du bac à sable — mode strict). Ensemble, ils l'imposent comme une barrière de sécurité.
6. Relation avec les modes et règles de permission
Ils sont faciles à confondre, mais les mécanismes de sécurité de Claude Code comportent trois couches aux rôles distincts. Le bac à sable est l'une d'elles — il ne remplace pas les deux autres ; il les complète.
| Couche | Ce qu'elle contrôle | Imposée par | Portée |
|---|---|---|---|
| Règles de permission | Quels outils/commandes peuvent être utilisés | Claude Code (avant l'exécution) | Tous les outils |
| Modes de permission | Combien de demandes apparaissent | Claude Code (avant l'exécution) | Dépend du mode |
| Bac à sable | Ce qu'elle peut toucher une fois lancée | L'OS (le noyau) | Bash et processus enfants |
La différence décisive tient au « quand et par qui » chacune prend effet. Les règles et modes de permission sont décidés avant l'exécution, par Claude Code, à partir de la chaîne de commande. Le bac à sable lie le processus pendant l'exécution, par l'OS — de sorte que quel que soit le choix du modèle, et même si une commande autorisée fait plus que ce que son nom implique, la limite ne bouge pas.
C'est aussi l'écart décisif avec --dangerously-skip-permissions (contournement). Le contournement ne fait que supprimer les demandes ; l'environnement reste grand ouvert. L'auto-autorisation du bac à sable, en revanche, peut sauter les demandes parce que le mur de l'OS est là. L'ancienne règle d'or — si vous utilisez le mode contournement, uniquement à l'intérieur d'un conteneur ou d'une VM isolés — est quelque chose que le bac à sable vous permet de déplacer du côté sûr même sur votre machine de tous les jours.
7. Limites et mises en garde — ne lui faites pas trop confiance
Le bac à sable est puissant, mais ce n'est pas un isolement complet. Avant de vous appuyer dessus comme sur une limite de sécurité stricte, connaissez les limites que la documentation détaille.
Le proxy juge sur le seul nom d'hôte et n'inspecte pas le contenu chiffré (par défaut). Autoriser un domaine large comme github.com laisse la place à l'exfiltration de données via le domain fronting et autres techniques. Gardez la liste d'autorisation étroite.
Autoriser /var/run/docker.sock livre tout l'hôte via le socket Docker — en pratique une évasion du bac à sable. Faites attention aux sockets que vous ouvrez.
Des exécutables inscriptibles sur le $PATH ou des fichiers comme .bashrc peuvent se transformer en exécution de code dans un autre contexte. Gardez allowWrite minimal.
Une chose de plus à intérioriser : la portée se limite à Bash — les Read/Edit/Write intégrés, les serveurs MCP et les hooks sont à part. Pour isoler le processus entier, y compris les Skills et le MCP, enveloppez le processus Claude Code lui-même avec l'outil open source officiel @anthropic-ai/sandbox-runtime (publié sur GitHub et npm, un aperçu de recherche sorti en octobre 2025). Son rôle pratique n'est pas un « mur » contre un attaquant déterminé, mais un « harnais de sécurité » qui réduit les accidents et les emballements de plusieurs ordres de grandeur.
8. Quand recourir aux dev containers ou aux VM
Le bac à sable n'est pas la seule option d'isolement de Claude Code. La commodité et la force de l'isolement s'opposent, alors choisissez selon l'objectif.
Isole Bash et les processus enfants. Sans Docker, mise en place minimale. Le pilier pour réduire les demandes au quotidien.
Enveloppe le processus Claude Code entier. Pour les exécutions sans surveillance où vous voulez aussi délimiter le MCP et les hooks. Sans Docker.
Conteneurise tout l'environnement de développement. Pour standardiser la configuration d'une équipe. Nécessite Docker.
Sépare tout l'OS. L'isolement le plus fort, au niveau du noyau, pour du code non fiable. Effort maximal.
La règle empirique : gardez le bac à sable intégré toujours actif pour réduire les demandes quotidiennes, et ne montez d'un cran vers sandbox-runtime, les conteneurs ou les VM que lorsque vous exécutez sans surveillance ou manipulez des dépendances non fiables. Pour un travail qui touche à la production — comme laisser l'IA piloter le cloud — associer des identifiants à moindre privilège à un palier d'isolement plus fort apporte de la tranquillité d'esprit.
Résumé
- Le bac à sable délimite « ce qui peut être touché » au niveau de l'OS, dissolvant le binaire entre fatigue des demandes et contournement total.
- Utilisez l'isolement du système de fichiers et l'isolement réseau ensemble. Imposition : macOS = Seatbelt, Linux/WSL2 = bubblewrap.
- Commencez avec
/sandbox. macOS fonctionne d'emblée ; Linux/WSL2 nécessitebubblewrap+socat; Windows natif n'est pas pris en charge (utilisez WSL2). - Le mode auto-autorisation saute les demandes tout en restant sûr parce que la limite est imposée par l'OS. Les règles de refus, les
rmrisqués et les règles ask ciblées sur le contenu s'appliquent toujours. - C'est une couche complémentaire distincte des règles/modes de permission — le bac à sable lie après l'exécution, via l'OS, donc il ne bouge pas.
- Mais ce n'est pas un mur complet — attention au TLS non inspecté, aux sockets Unix et aux autorisations trop larges. La portée se limite à Bash.
Le bac à sable brise le postulat même selon lequel sécurité et automatisation devraient s'opposer. Ouvrez simplement /sandbox une fois — cela seul change la façon dont vous tenez les rênes de Claude Code. Pour la référence de configuration exacte et à jour, considérez la documentation officielle des réglages du bac à sable comme votre source première.
FAQ
Q. En quoi le bac à sable diffère-t-il de --dangerously-skip-permissions ?
R. Le contournement ne fait que supprimer les demandes et laisse l'environnement sans défense. Le bac à sable délimite ce qui peut être touché au niveau de l'OS, de sorte que même en sautant les demandes, rien n'atteint l'extérieur. Le contournement est réservé aux environnements isolés ; le bac à sable est sûr même sur votre machine de tous les jours — c'est la différence décisive.
Q. Puis-je l'utiliser sous Windows ?
R. Windows natif n'est pas pris en charge. Exécutez Claude Code dans WSL2 et cela fonctionne (WSL1 non). Sous WSL2, les commandes en bac à sable ne peuvent pas invoquer de binaires Windows tels que cmd.exe ; ajoutez-les à excludedCommands pour les exécuter hors du bac à sable si besoin.
Q. L'activer va-t-il ralentir les choses ?
R. Selon Anthropic, la surcharge est minime — certaines opérations sur le système de fichiers peuvent être légèrement plus lentes. En pratique, parce que le nombre de demandes chute fortement, la vitesse de travail perçue augmente souvent.
Q. Avec le bac à sable activé, mes clés privées sont-elles garanties en sécurité ?
R. Pas « garanties ». La valeur par défaut pour les lectures est large, donc ~/.ssh et ~/.aws/credentials sont lisibles par défaut. Bloquez-les explicitement avec sandbox.credentials ou denyRead, et gardez la liste d'autorisation réseau étroite. L'isolement du système de fichiers et l'isolement réseau doivent toujours fonctionner ensemble.
Q. Les serveurs MCP et les hooks sont-ils aussi en bac à sable ?
R. Non. Le bac à sable intégré couvre uniquement les commandes Bash et les processus enfants. Le MCP, les hooks et les Read/Edit/Write intégrés sont à part (régis par les règles de permission). Pour tous les délimiter, enveloppez l'ensemble du processus avec @anthropic-ai/sandbox-runtime.