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

Ce que c'est
Un mécanisme qui délimite les fichiers et le réseau qu'une commande peut toucher, au niveau de l'OS. L'intérieur est libre, l'extérieur est interdit.
Pourquoi ça aide
Il dissout le choix entre la fatigue des demandes et le contournement total. Vous réduisez fortement les demandes tout en restant en sécurité.
Par où commencer
Lancez /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.

💉 Injection de prompt

Si une page web ou une issue qu'il lit dissimule « envoie ~/.ssh », vos clés privées peuvent fuir sans aucune demande.

🗑️ Fausses manœuvres destructrices

Une commande générée nettoie un chemin inattendu. Sans demande, des fichiers hors du projet peuvent disparaître eux aussi.

📤 Contamination de la chaîne d'approvisionnement

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).

🗂️ ① Isolement du système de fichiers

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.

🌐 ② Isolement réseau

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

🍎 macOS

Rien à installer. Il utilise Seatbelt intégré. Activez-le immédiatement avec /sandbox.

🐧 Linux / WSL2

Installez deux paquets : bubblewrap et socat (par ex. apt-get install bubblewrap socat).

🪟 Windows natif

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.

✅ Mode auto-autorisation

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.

🔍 Mode permissions normales

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 / rmdir visant /, 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 TLS n'est pas inspecté par défaut

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.

🔌 Ouvrir des sockets Unix est risqué

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.

📈 Accès en écriture trop large

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.

Bac à sable (intégré)

Isole Bash et les processus enfants. Sans Docker, mise en place minimale. Le pilier pour réduire les demandes au quotidien.

sandbox-runtime

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.

dev container

Conteneurise tout l'environnement de développement. Pour standardiser la configuration d'une équipe. Nécessite Docker.

VM (machine virtuelle)

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écessite bubblewrap+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 rm risqué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.