Pour comparer d’autres approches d’isolation telles que les dev containers, les conteneurs personnalisés et les machines virtuelles, consultez Environnements sandbox. Pour réduire les invites de permission pour les outils autres que Bash, consultez modes de permission.
Démarrage
Le sandbox est intégré à Claude Code et s’exécute sur macOS, Linux et WSL2. Windows natif n’est pas supporté. Sur Windows, exécutez Claude Code à l’intérieur d’une distribution WSL2. Sur macOS, il n’y a rien à installer : le sandboxing utilise le framework Seatbelt intégré. Sur Linux et WSL2, le sandbox dépend de deux packages, couverts dans Configurer Linux et WSL2. Même si vous ne les avez pas encore installés, vous pouvez commencer avec/sandbox, car son panneau montre si quelque chose manque.
Exécuter /sandbox
Démarrez une session Claude Code et exécutez la commande Cela ouvre le panneau sandbox avec trois onglets :
/sandbox :- Mode : choisissez comment les commandes sandboxées sont approuvées, couvert à l’étape suivante
- Overrides : choisissez si les commandes qui échouent sous le sandbox peuvent revenir à une exécution non sandboxée. C’est le paramètre
allowUnsandboxedCommands - Config : affichage les paramètres de sandbox résolus
/sandbox à nouveau.Choisir un mode
Sur l’onglet Mode, sélectionnez auto-allow ou permissions régulières. Auto-allow exécute les commandes sandboxées sans invite, et les permissions régulières conservent les invites de permission régulières même lorsque les commandes sont sandboxées. Consultez Modes sandbox pour voir quelles commandes invitent toujours en mode auto-allow.
Exécuter une commande Bash
Demandez à Claude d’exécuter une commande, comme une compilation ou une suite de tests. Par défaut, les commandes à l’intérieur du sandbox ne peuvent écrire que dans le répertoire de travail et le répertoire temporaire de la session. La première fois qu’une commande a besoin d’un nouveau domaine réseau, Claude Code demande une approbation.Les commandes qui ne peuvent pas s’exécuter sandboxées reviennent au flux de permission régulier. Pour élargir ou réduire ces limites, consultez Configurer le sandboxing.
.claude/settings.local.json, qui s’appliquent au projet actuel et ne sont pas vérifiés dans git. Pour activer le sandbox dans tous vos projets, définissez sandbox.enabled sur true dans vos paramètres utilisateur à ~/.claude/settings.json. Pour appliquer le sandboxing pour chaque développeur dans une organisation, utilisez paramètres gérés.
Configurer Linux et WSL2
Sur Linux et WSL2, le sandbox dépend de deux packages :bubblewrap: l’outil de sandboxing sans privilèges qui applique l’isolation du système de fichierssocat: le relais utilisé pour acheminer le trafic réseau via le proxy sandbox
- Ubuntu/Debian
- Fedora
/sandbox montre si ripgrep, bubblewrap, socat et le filtre seccomp sont disponibles sur votre plateforme. Ripgrep est fourni avec le binaire natif Claude Code. Le filtre seccomp est optionnel et ajoute le blocage des sockets de domaine Unix. Installez-le avec npm install -g @anthropic-ai/sandbox-runtime s’il manque.
Lorsqu’une dépendance requise manque, l’onglet Dependencies est le seul onglet affiché jusqu’à ce que vous l’installiez. La vérification des dépendances s’exécute au démarrage, donc redémarrez Claude Code après l’installation des packages pour que /sandbox les détecte.
Ubuntu 24.04 et versions ultérieures : autoriser bubblewrap à créer des espaces de noms utilisateur
Ubuntu 24.04 et versions ultérieures : autoriser bubblewrap à créer des espaces de noms utilisateur
Sur Ubuntu 24.04 et versions ultérieures, la politique AppArmor par défaut empêche bubblewrap de créer les espaces de noms utilisateur dont il a besoin pour l’isolation.Pour vérifier si votre environnement applique cette restriction, y compris à l’intérieur de WSL2, exécutez Le profil s’applique uniquement à
sysctl kernel.apparmor_restrict_unprivileged_userns. Si la clé n’existe pas ou retourne 0, ignorez cette étape. Si elle retourne 1, ajoutez un profil AppArmor qui accorde à bwrap cette capacité :bwrap lui-même, pas aux commandes qu’il exécute à l’intérieur du sandbox. Rechargez AppArmor pour l’appliquer :Notes WSL2
Notes WSL2
Vérifiez votre version WSL avec
wsl -l -v à partir de PowerShell. Si vous voyez Sandboxing requires WSL2, votre distribution exécute WSL1. Mettez-la à niveau vers WSL2 ou exécutez Claude Code sans sandboxing.Sur WSL2, les commandes sandboxées ne peuvent pas lancer les binaires Windows tels que cmd.exe, powershell.exe, ou quoi que ce soit sous /mnt/c/. WSL les transmet à l’hôte Windows via un socket Unix, que le sandbox bloque. Si une commande doit invoquer un binaire Windows, ajoutez-la à excludedCommands pour qu’elle s’exécute en dehors du sandbox.Modes sandbox
Claude Code offre deux modes sandbox : Mode auto-allow : Les commandes Bash tenteront de s’exécuter à l’intérieur du sandbox et sont automatiquement autorisées sans nécessiter de permission. Les commandes qui ne peuvent pas être sandboxées, comme celles nécessitant un accès réseau à des hôtes non autorisés, reviennent au flux de permission régulier, où Claude Code vérifie vos règles de permission et vous demande pour toute commande que ces règles n’autorisent pas déjà. Même en mode auto-allow, les éléments suivants s’appliquent toujours :- Les règles de refus explicites sont toujours respectées
- Les commandes
rmourmdirqui ciblent/, votre répertoire personnel ou d’autres chemins système critiques déclenchent toujours une invite de permission - Les règles ask s’appliquant au contenu comme
Bash(git push *)forcent toujours une invite même pour les commandes sandboxées - Une règle ask
Bashsimple, ou la forme équivalenteBash(*), est ignorée pour les commandes qui s’exécutent sandboxées ; elle s’applique toujours aux commandes qui reviennent au flux de permission régulier
$TMPDIR sur ce répertoire pour les commandes sandboxées, de sorte que les outils qui écrivent des fichiers temporaires fonctionnent sans configuration supplémentaire. Les commandes non sandboxées héritent de votre $TMPDIR shell inchangé, ce qui signifie que les commandes sandboxées et non sandboxées résolvent $TMPDIR à des répertoires différents. Pour transmettre des fichiers temporaires entre les deux, écrivez-les plutôt sous le répertoire de travail.
Certaines commandes ne peuvent pas s’exécuter à l’intérieur du sandbox du tout, comme les outils qui sont incompatibles avec lui ou qui ont besoin d’un hôte que vous n’avez pas autorisé. Plutôt que d’échouer la tâche ou de vous demander d’éteindre le sandboxing, Claude Code inclut une trappe d’échappement : lorsqu’une commande échoue en raison des restrictions du sandbox, Claude analyse l’échec et peut réessayer la commande avec le paramètre dangerouslyDisableSandbox. La commande réessayée s’exécute en dehors du sandbox, elle passe donc par le flux de permission régulier et nécessite votre approbation.
Vous pouvez désactiver cette trappe d’échappement en définissant "allowUnsandboxedCommands": false dans vos paramètres de sandbox. Lorsqu’elle est désactivée, ce que l’onglet Overrides de /sandbox affiche comme Mode sandbox strict, le paramètre dangerouslyDisableSandbox est complètement ignoré et toutes les commandes doivent s’exécuter sandboxées ou être explicitement listées dans excludedCommands.
Le mode auto-allow fonctionne indépendamment de votre paramètre de mode de permission. Même si vous n’êtes pas en mode « accepter les modifications », les commandes Bash sandboxées s’exécuteront automatiquement lorsque l’auto-allow est activé. Cela signifie que les commandes Bash qui modifient les fichiers dans les limites du sandbox s’exécuteront sans invite, même lorsque les outils de modification de fichiers nécessiteraient normalement une approbation.
Configurer le sandboxing
Personnalisez le comportement du sandbox via votre fichiersettings.json. Consultez Paramètres pour la référence de configuration complète.
Par défaut, les commandes sandboxées ne peuvent écrire que dans le répertoire de travail actuel et le répertoire temporaire de la session. Si les commandes de sous-processus comme kubectl, terraform ou npm doivent écrire en dehors de ces répertoires, utilisez sandbox.filesystem.allowWrite pour accorder l’accès à des chemins spécifiques :
excludedCommands.
Lorsque le même tableau de système de fichiers est défini dans plusieurs portées de paramètres, les tableaux sont fusionnés : les chemins de chaque portée sont combinés, non remplacés.
Les préfixes de chemin contrôlent la façon dont les chemins sont résolus :
| Préfixe | Signification | Exemple |
|---|---|---|
/ | Chemin absolu à partir de la racine du système de fichiers | /tmp/build reste /tmp/build |
~/ | Relatif au répertoire personnel | ~/.kube devient $HOME/.kube |
./ ou pas de préfixe | Relatif à la racine du projet pour les paramètres du projet, ou à ~/.claude pour les paramètres utilisateur | ./output dans .claude/settings.json se résout en <project-root>/output |
//path pour absolu et /path pour relatif au projet. Les chemins du système de fichiers du sandbox utilisent les conventions standard : /tmp/build est absolu.
Vous pouvez également refuser l’accès en écriture ou en lecture en utilisant sandbox.filesystem.denyWrite et sandbox.filesystem.denyRead, et réautoriser des chemins spécifiques dans une région refusée en utilisant sandbox.filesystem.allowRead.
L’exemple ci-dessous bloque la lecture de l’ensemble du répertoire personnel tout en autorisant toujours les lectures du projet actuel. Placez-le dans le .claude/settings.json de votre projet, car le chemin relatif . se résout à la racine du projet uniquement lorsque la configuration se trouve dans les paramètres du projet :
. dans allowRead se résout à la racine du projet car cette configuration se trouve dans les paramètres du projet. Si vous aviez placé la même configuration dans ~/.claude/settings.json, . se résoudrait à ~/.claude à la place, et les fichiers du projet resteraient bloqués par la règle denyRead.
Protéger les identifiants
Le paramètresandbox.credentials déclare les fichiers d’identifiants et les variables d’environnement auxquels les commandes sandboxées ne doivent pas accéder. Les chemins de fichiers listés sont refusés pour les lectures à l’intérieur du sandbox, le même bloc que celui appliqué par filesystem.denyRead, et les variables d’environnement listées sont supprimées avant chaque exécution de commande sandboxée. Le bloc credentials dédié maintient les règles d’identifiants groupées avec la suppression de variable d’environnement et séparées des règles générales du système de fichiers. Nécessite Claude Code v2.1.187 ou ultérieur.
L’exemple ci-dessous bloque les lectures du fichier d’identifiants AWS et du répertoire SSH et supprime GITHUB_TOKEN et NPM_TOKEN de l’environnement des commandes sandboxées :
"mode": "deny", qui est la seule valeur prise en charge. Le champ mode explicite maintient le schéma compatible avec les modes futurs. Les chemins de fichiers suivent les mêmes règles de préfixe que les paramètres sandbox.filesystem.*, et les entrées de chaque portée de paramètres sont fusionnées. Comme le seul mode est deny, n’importe quelle portée peut ajouter des restrictions mais aucune ne peut les supprimer.
Il n’y a pas de liste de refus d’identifiants intégrée, donc seuls les fichiers et les variables que vous listez sont restreints. Le paramètre affecte uniquement les commandes Bash sandboxées. Pour supprimer les identifiants Anthropic et des fournisseurs de cloud de tous les sous-processus indépendamment du sandboxing, définissez CLAUDE_CODE_SUBPROCESS_ENV_SCRUB.
Comment fonctionne le sandboxing
Isolation du système de fichiers
L’outil Bash en sandbox restreint l’accès au système de fichiers à des répertoires spécifiques :- Comportement d’écriture par défaut : accès en lecture et écriture au répertoire de travail actuel et à ses sous-répertoires, plus le répertoire temporaire de session vers lequel
$TMPDIRpointe - Comportement de lecture par défaut : accès en lecture à l’ensemble de l’ordinateur, sauf certains répertoires refusés. Notez que ce comportement par défaut permet toujours de lire les fichiers d’identifiants tels que
~/.aws/credentialset~/.ssh/. Utilisezsandbox.credentialspour bloquer les lectures de ces fichiers et désactiver les variables d’environnement secrètes, ou ajoutez les chemins àdenyRead. - Accès bloqué : impossible de modifier les fichiers en dehors du répertoire de travail actuel et du répertoire temporaire de session sans permission explicite, y compris les fichiers de configuration shell tels que
~/.bashrcet les binaires système dans/bin/ - Git worktrees : lorsque le répertoire de travail est un linked git worktree, le sandbox permet également les écritures dans le répertoire
.gitpartagé du référentiel principal afin que les commandes telles quegit commitpuissent mettre à jour les références et l’index. Les écritures danshooks/etconfigà l’intérieur de ce répertoire restent refusées. - Configurable : définissez des chemins autorisés et refusés personnalisés via les paramètres
sandbox.filesystem.allowWrite dans vos paramètres. Ces restrictions sont appliquées au niveau du système d’exploitation, elles s’appliquent donc à toutes les commandes de sous-processus, y compris les outils comme kubectl, terraform et npm, pas seulement aux outils de fichiers de Claude.
Isolation réseau
L’accès réseau est contrôlé via un serveur proxy s’exécutant en dehors du sandbox :- Restrictions de domaine : aucun domaine n’est pré-autorisé. La première fois qu’une commande a besoin d’un nouveau domaine, Claude Code demande une approbation. À partir de la v2.1.191, choisir Oui autorise l’hôte pour le reste de la session actuelle, de sorte que les connexions ultérieures au même hôte ne demandent plus. Pré-autorisez les domaines avec
allowedDomainspour éviter l’invite entièrement. - Verrouillage géré : si
allowManagedDomainsOnlyest défini dans les paramètres gérés, les domaines non autorisés sont bloqués automatiquement au lieu de demander, et seuls lesallowedDomainsdes paramètres gérés sont honorés. - Support de proxy personnalisé : les utilisateurs avancés peuvent implémenter des règles personnalisées sur le trafic sortant
- Couverture complète : les restrictions s’appliquent à tous les scripts, programmes et sous-processus générés par les commandes
Le proxy intégré applique la liste d’autorisation en fonction du nom d’hôte demandé et ne termine pas ou n’inspecte pas le trafic TLS. Consultez Limitations de sécurité pour les implications de cette conception, et Configuration de proxy personnalisée si votre modèle de menace nécessite l’inspection TLS.
Application au niveau du système d’exploitation
L’outil Bash en sandbox exploite les primitives de sécurité du système d’exploitation :- macOS : utilise Seatbelt pour l’application du sandbox
- Linux : utilise bubblewrap pour l’isolation
- WSL2 : utilise bubblewrap, comme Linux
@anthropic-ai/sandbox-runtime, que la page Environnements sandbox couvre comme une approche distincte pour envelopper l’ensemble du processus Claude Code.
Comment le sandboxing se rapporte aux permissions et aux modes de permission
Le sandboxing, les règles de permission et les modes de permission sont des couches complémentaires. Les sections ci-dessous couvrent comment le sandbox interagit avec chacun.Règles de permission
Les règles de permission et le sandboxing contrôlent des choses différentes :- Les règles de permission contrôlent quels outils Claude Code peut utiliser et sont évaluées avant l’exécution de tout outil. Elles s’appliquent à tous les outils : Bash, Read, Edit, WebFetch, MCP et autres.
- Le sandboxing fournit une application au niveau du système d’exploitation qui restreint ce que les commandes Bash peuvent accéder au niveau du système de fichiers et du réseau. Il s’applique uniquement aux commandes Bash et à leurs processus enfants.
| Paramètre ou règle | Ce qu’il fait |
|---|---|
sandbox.filesystem.allowWrite | Accorde l’accès en écriture des sous-processus à des chemins en dehors du répertoire de travail |
sandbox.filesystem.denyWrite et sandbox.filesystem.denyRead | Bloque l’accès des sous-processus à des chemins spécifiques |
sandbox.filesystem.allowRead | Réautorise la lecture de chemins spécifiques dans une région denyRead |
Règles d’autorisation Edit | Accordent l’accès en écriture à des chemins spécifiques, de la même manière que sandbox.filesystem.allowWrite |
Règles de refus Read et Edit | Bloquent l’accès à des fichiers ou répertoires spécifiques |
Règles d’autorisation et de refus WebFetch | Contrôlent l’accès au domaine |
allowedDomains du sandbox | Contrôle quels domaines les commandes Bash peuvent atteindre |
deniedDomains du sandbox | Bloque des domaines spécifiques même lorsqu’un wildcard allowedDomains plus large les autoriserait autrement |
sandbox.filesystem et des règles de permission sont fusionnés dans la configuration finale du sandbox.
Le répertoire d’exemples du référentiel claude-code inclut des configurations de paramètres de démarrage pour les scénarios de déploiement courants, y compris des exemples spécifiques au sandbox. Utilisez-les comme points de départ et ajustez-les selon vos besoins.
Modes de permission
/sandbox n’est pas un mode de permission. Les modes de permission décident si un appel d’outil s’exécute et si vous êtes invité en premier, tandis que le sandbox restreint ce qu’une commande Bash peut accéder une fois qu’elle s’exécute. Ils diffèrent dans ce qu’ils contrôlent et ce qui remplace l’invite par action :
| Ce qu’il contrôle | Ce qui remplace l’invite | |
|---|---|---|
/sandbox | Ce qu’une commande Bash peut accéder une fois qu’elle s’exécute | La limite du sandbox elle-même, en mode auto-allow |
| Mode auto | Si chaque appel d’outil s’exécute | Un classificateur qui examine les actions |
--dangerously-skip-permissions | Si chaque appel d’outil s’exécute | Rien. Les vérifications de chemin protégé sont également ignorées ; seul le retrait de / ou de votre répertoire personnel invite toujours |
Configurer le sandbox pour votre organisation
Les administrateurs peuvent exiger le sandboxing pour chaque utilisateur, empêcher les développeurs d’élargir la politique et acheminer le trafic sandbox via un proxy d’entreprise.Appliquer le sandboxing avec les paramètres gérés
Pour exiger le sandbox pour chaque développeur, livrez les cléssandbox via paramètres gérés, soit en tant que fichier géré par votre MDM, soit via paramètres gérés par serveur sur Claude.ai.
La configuration de paramètres gérés suivante active le sandbox, refuse de démarrer Claude Code si le sandbox ne peut pas s’initialiser et empêche le modèle de réessayer les commandes en dehors du sandbox :
enabled contrôlent ce qui se passe lorsque le sandbox ne peut pas exécuter une commande :
failIfUnavailable: une dépendance manquante telle que bubblewrap sur Linux empêche Claude Code de démarrer plutôt que d’afficher un avertissement et de revenir à une exécution non sandboxéeallowUnsandboxedCommands: false: la trappe d’échappementdangerouslyDisableSandboxest ignorée, les commandes qui échouent sous le sandbox ne peuvent donc pas être réessayées en dehors de celui-ci
excludedCommands pour tous les outils approuvés par l’organisation qui doivent s’exécuter sans isolation. Ajoutez des entrées sandbox.credentials pour les répertoires d’identifiants tels que ~/.aws et ~/.ssh et pour les variables d’environnement secrètes, car la politique de lecture par défaut les autorise toujours.
Le sandbox ne s’exécute pas sur Windows natif, donc si votre flotte inclut des hôtes Windows, limitez cette configuration à macOS et Linux ou demandez à ces utilisateurs d’exécuter Claude Code à l’intérieur de WSL2 ou d’un conteneur.
Empêcher les développeurs d’élargir la politique
Pour les clés booléennes telles queenabled et failIfUnavailable, Claude Code utilise la valeur gérée et ignore tout ce qu’un développeur définit localement. Pour les clés de tableau telles que excludedCommands et allowRead, Claude Code fusionne les entrées de chaque portée, un développeur peut donc ajouter des entrées qui élargissent la politique.
Définissez allowManagedReadPathsOnly sur true dans les paramètres gérés pour que seules les entrées allowRead des paramètres gérés soient honorées. Les entrées allowRead utilisateur, projet et local sont ignorées. Cela empêche les développeurs d’élargir l’accès en lecture au-delà des chemins approuvés par l’organisation. Pour verrouiller les domaines réseau aux valeurs gérées de la même manière, définissez allowManagedDomainsOnly.
excludedCommands n’a pas d’équivalent de verrouillage géré uniquement, un développeur peut donc toujours ajouter des entrées qui exécutent des commandes supplémentaires en dehors du sandbox. Gardez la liste gérée étroite.
Configuration de proxy personnalisée
Pour les organisations nécessitant une sécurité réseau avancée, vous pouvez implémenter un proxy personnalisé pour :- Déchiffrer et inspecter le trafic HTTPS
- Appliquer des règles de filtrage personnalisées
- Enregistrer toutes les demandes réseau
- Intégrer avec l’infrastructure de sécurité existante
Dépannage
Certaines commandes échouent à l’intérieur du sandbox même si elles fonctionnent en dehors. Les correctifs ci-dessous couvrent les cas les plus courants.- Les commandes échouent avec une erreur host-not-allowed : de nombreux outils CLI doivent atteindre des hôtes spécifiques. Accorder la permission lorsque vous y êtes invité ajoute l’hôte à votre liste autorisée pour que l’outil s’exécute à l’intérieur du sandbox à l’avenir.
jestse bloque ou échoue :watchmanest incompatible avec le sandbox. Exécutezjest --no-watchmanà la place.- Les CLI basés sur Go échouent la vérification TLS sur macOS : les outils tels que
gh,gcloudetterraformpeuvent échouer la vérification TLS sous Seatbelt. Listez ces outils dansexcludedCommandspour les exécuter en dehors du sandbox. Si vous utilisezhttpProxyPortavec un proxy MITM et une CA personnalisée, définissezenableWeakerNetworkIsolationsurtrueà la place. - Les commandes
open,osascriptou les flux d’authentification basés sur un navigateur échouent avec l’erreur-600sur macOS : le sandbox bloque les Apple Events par défaut. DéfinissezallowAppleEventssurtruedans vos paramètres utilisateur, gérés ou CLI pour les autoriser. Les paramètres du projet sont ignorés pour cette clé. L’activation supprime l’isolation de l’exécution du code, car les commandes sandboxées peuvent alors lancer d’autres applications non sandboxées sans invite utilisateur et envoyer des commandes AppleScript aux applications en cours d’exécution, sous réserve de l’invite de consentement à l’automatisation macOS (TCC). Vous pouvez également ajouter la commande àexcludedCommandspour l’exécuter en dehors du sandbox. - Les commandes
dockeréchouent :dockerest incompatible avec le sandbox. Ajoutezdocker *àexcludedCommandspour l’exécuter en dehors du sandbox. - Bubblewrap échoue à démarrer à l’intérieur d’un conteneur : dans un conteneur sans privilèges, bubblewrap ne peut pas monter un système de fichiers
/procfrais. DéfinissezenableWeakerNestedSandboxsurtruepour que le sandbox interne bind-monte le/procexistant du conteneur à la place. Utilisez ce paramètre uniquement lorsque le conteneur externe fournit déjà la limite d’isolation dont vous avez besoin, car il expose les informations de processus aux commandes sandboxées qu’un montage/procfrais cacherait. - Filtre seccomp sur Linux : le filtre seccomp est requis pour bloquer les sockets de domaine Unix. L’onglet Dependencies dans
/sandboxmontre s’il est disponible. S’il manque, exécuteznpm install -g @anthropic-ai/sandbox-runtimepour installer l’assistant. --dangerously-skip-permissionséchoue en tant que root : cet indicateur est bloqué lors de l’exécution en tant que root ou via sudo sur Linux et macOS, car l’accès root combiné à aucune invite de permission peut modifier n’importe quel fichier ou service sur le système. La vérification est ignorée automatiquement à l’intérieur d’un sandbox reconnu. Pour exécuter de manière autonome dans un conteneur, utilisez la configuration dev container, qui exécute Claude Code en tant qu’utilisateur non-root.
Limitations
Le sandboxing réduit le risque mais n’est pas une limite d’isolation complète. Examinez les limitations ci-dessous avant de vous y fier comme contrôle de sécurité dur.Limitations de sécurité
- Filtrage réseau : le système de filtrage réseau fonctionne en restreignant les domaines auxquels les processus sont autorisés à se connecter. Le proxy intégré ne termine pas ou n’effectue pas l’inspection TLS sur le trafic sortant, le contenu des connexions chiffrées n’est donc pas examiné. Vous êtes responsable de vous assurer que seuls les domaines de confiance sont autorisés dans votre politique.
- Escalade de privilèges via les sockets de domaine Unix : la configuration
allowUnixSocketspeut accorder involontairement l’accès à des services système puissants qui pourraient entraîner des contournements du sandbox. Par exemple, autoriser l’accès à/var/run/docker.sockaccorde effectivement l’accès au système hôte via le socket Docker. Considérez attentivement tous les sockets Unix que vous autorisez via le sandbox. - Escalade de permissions du système de fichiers : les permissions d’écriture du système de fichiers trop larges peuvent permettre des attaques d’escalade de privilèges. Autoriser les écritures dans les répertoires contenant des exécutables dans
$PATH, les répertoires de configuration système ou les fichiers de configuration shell utilisateur tels que.bashrcou.zshrcpeut entraîner l’exécution de code dans différents contextes de sécurité lorsque d’autres utilisateurs ou processus système accèdent à ces fichiers. - Force du sandbox Linux : l’implémentation Linux fournit une isolation forte du système de fichiers et du réseau mais inclut un mode
enableWeakerNestedSandboxqui lui permet de fonctionner à l’intérieur des environnements Docker sans espaces de noms privilégiés, ou sur les hôtes Linux où les espaces de noms utilisateur sans privilèges sont désactivés par sysctl. Cette option affaiblit considérablement la sécurité et ne doit être utilisée que lorsqu’une isolation supplémentaire est autrement appliquée. - Apple Events sur macOS : le sandbox macOS bloque les Apple Events par défaut. Le paramètre
allowAppleEventslève cette restriction afin que les outils tels queopenetosascriptfonctionnent, mais il supprime l’isolation de l’exécution du code : les commandes sandboxées peuvent lancer d’autres applications sans sandbox sans invite utilisateur, et peuvent envoyer des commandes AppleScript aux applications en cours d’exécution, sous réserve de l’invite de consentement à l’automatisation macOS par application (TCC). Il n’est honoré que par les paramètres utilisateur, gérés ou CLI. Les paramètres de projet ne peuvent pas l’activer. - Fichiers de paramètres protégés : le sandbox refuse automatiquement l’accès en écriture aux fichiers
settings.jsonde Claude Code à chaque portée et au répertoire des paramètres gérés, une commande sandboxée ne peut donc pas modifier sa propre politique.
Compatibilité de plateforme et d’outil
- Support de plateforme : supporte macOS, Linux et WSL2. WSL1 et Windows natif ne sont pas supportés.
- Surcharge de performance : minimale, mais certaines opérations du système de fichiers peuvent être légèrement plus lentes.
- Compatibilité d’outil : certains outils qui nécessitent des modèles d’accès système spécifiques peuvent nécessiter des ajustements de configuration, ou peuvent avoir besoin d’être exécutés en dehors du sandbox.
Portée
Le sandbox isole les sous-processus Bash. Les autres outils fonctionnent sous des limites différentes :- Outils de fichiers intégrés : Read, Edit et Write utilisent le système de permissions directement plutôt que de s’exécuter via le sandbox. Consultez permissions.
- Utilisation de l’ordinateur : lorsque Claude ouvre des applications et contrôle votre écran, il s’exécute sur votre bureau réel plutôt que dans un environnement isolé. Les invites de permission par application contrôlent chaque application. Consultez utilisation de l’ordinateur dans la CLI ou utilisation de l’ordinateur dans Desktop.
- Variables d’environnement : les commandes Bash sandboxées héritent de l’environnement du processus parent par défaut, y compris les identifiants définis là-bas. Utilisez
sandbox.credentialspour supprimer les variables spécifiques pour les commandes sandboxées, ou définissezCLAUDE_CODE_SUBPROCESS_ENV_SCRUBpour supprimer les identifiants Anthropic et du fournisseur cloud de tous les sous-processus. - Sous-agents : les sous-agents s’exécutent dans le même processus que la session parent et utilisent la même configuration de sandbox. Les commandes Bash à l’intérieur d’un sous-agent sont sandboxées lorsque le sandboxing est activé dans la session parent.
Voir aussi
- Environnements sandbox : comparez le sandbox intégré avec les dev containers, les conteneurs et les machines virtuelles
- Sécurité : fonctionnalités de sécurité complètes et meilleures pratiques
- Permissions : configuration des permissions et contrôle d’accès
- Paramètres : référence de configuration complète
- Référence CLI : options de ligne de commande