Passer au contenu principal
Un mode de permission définit les actions que Claude peut effectuer dans une session sans vous demander au préalable. En mode Manual, Claude Code s’arrête et vous sollicite avant la plupart des actions qui modifient des fichiers, exécutent des commandes shell ou accèdent au réseau. En mode auto, un second modèle, le classifieur, examine les actions à votre place ; la section comment le classifieur évalue les actions indique quelles actions il examine et lesquelles lui échappent. Avec Claude Code v2.1.283 ou version ultérieure, le mode auto est le mode de permission de départ intégré pour les sessions interactives dans le terminal et dans VS Code. Sur les versions antérieures, il n’est le mode de permission de départ intégré que sur les forfaits Pro, Max, Ultra et Team. La section Dans quel mode une session démarre présente les surfaces et les paramètres qui modifient le mode de permission de départ. Vous pouvez également changer le mode de permission d’une session en cours à tout moment.

Modes disponibles

Chaque mode propose un compromis différent entre commodité et supervision. Le tableau ci-dessous indique ce que Claude peut faire sans demande de permission dans chaque mode. Le mode Manual apparaît sous sa valeur de configuration, default. Le mode qui examine chaque action s’appelle Manual dans la CLI, dans claude --help, dans les extensions VS Code et JetBrains, ainsi que dans l’application de bureau. Sa valeur de configuration est default, et c’est celle qu’utilisent les hooks et les intégrations SDK. La CLI accepte manual comme alias partout où vous saisissez la valeur, par exemple claude --permission-mode manual ou "defaultMode": "manual". Chaque mode applique sa propre règle aux écritures dans des chemins protégés. Les modes définissent la base. Ajoutez des règles de permission par-dessus pour pré-approuver ou bloquer des outils spécifiques. Les règles de refus bloquent dans tous les modes, y compris bypassPermissions. Les règles de refus et de demande ne s’appliquent pas à EndConversation tant que Claude dispose encore d’au moins un autre outil qu’il peut appeler. Les règles d’autorisation n’ont aucun effet en mode bypassPermissions.

Actions qu’aucun mode n’approuve automatiquement

Claude Code n’approuve automatiquement les éléments suivants dans aucun mode, y compris bypassPermissions, bien que vous puissiez désactiver la demande de permission pour les commandes rm dangereuses en mode bypassPermissions. Chaque point renvoie à la section qui décrit ce qui se passe à la place dans chaque mode :
  • Les outils correspondant à une règle de demande explicite
  • Les outils de connecteur que votre organisation a définis sur ask, dans les sessions où ce paramètre s’applique à Claude Code
  • Les outils qui nécessitent une interaction de l’utilisateur : l’outil intégré AskUserQuestion et les outils MCP marqués requiresUserInteraction
  • Les suppressions rm et rmdir reconnues ciblant un chemin critique, qu’aucune règle d’autorisation ni aucun "allow" d’un hook PreToolUse n’approuve, ainsi que les commandes Bash signalées par Dangerous rm operation not ruled out
  • Les protections de messagerie inter-sessions
  • Les lectures en dehors des répertoires de travail lorsque permissions.blockReadsOutsideWorkingDirectories est activé : les commandes Bash reconnues de lecture de fichiers déclenchent une demande de permission même en mode auto et en mode bypassPermissions, tout comme toute nouvelle tentative hors sandbox qui nécessite une approbation pour s’exécuter en dehors du sandbox. Nécessite Claude Code v2.1.257 ou une version ultérieure. Une commande que l’analyseur du shell ne peut pas suivre, par exemple une commande qui change de répertoire plus d’une fois ou qui exécute un sous-shell, déclenche une demande de la même manière, même lorsqu’elle ne mentionne aucun chemin extérieur. Cette demande ne s’applique pas lorsque la commande s’exécute dans le sandbox et que le sandbox applique le blocage.
  • Les écritures en dehors des répertoires de travail lorsque permissions.blockWritesOutsideWorkingDirectories est activé : Claude Code refuse les appels Write, Edit et NotebookEdit à ces emplacements, à l’exception de certains de ses propres fichiers. Cette clé ne limite pas les commandes shell, les outils MCP ni les programmes exécutés par les hooks ; utilisez donc le sandboxing pour limiter les emplacements où les commandes shell écrivent. Nécessite Claude Code v2.1.314 ou une version ultérieure.

Configurations courantes

Les modes de permission décident si Claude demande une confirmation avant une action, et le sandbox Bash et les limites d’isolation externes décident ce qu’une action peut atteindre une fois qu’elle s’exécute. Chaque ligne ci-dessous associe un objectif aux drapeaux ou paramètres qui vous y mènent et à l’isolation nécessaire, comme point de départ. Les modes disponibles énumère ce qui s’exécute sans invite dans chaque mode. Le sandbox Bash et le mode auto fonctionnent indépendamment et se combinent, avec les exceptions énumérées sous Sandbox modes. Pour l’interaction complète, consultez How sandboxing relates to permissions and permission modes et How isolation relates to permission modes.

Quel mode une session démarre

Quand vous démarrez une nouvelle session dans un terminal, Claude Code prend le mode de permission du premier de ces éléments qui s’applique :
  1. Le flag --permission-mode, ou --dangerously-skip-permissions
  2. permissions.defaultMode dans un fichier de paramètres Si vous définissez "auto" dans .claude/settings.json ou .claude/settings.local.json, la valeur ne prend pas effet, et Claude Code utilise alors la valeur par défaut intégrée plutôt qu’un defaultMode de ~/.claude/settings.json. Si vous définissez "bypassPermissions" dans ces deux fichiers, cela ne prend pas effet non plus, et la session démarre en mode Manuel. Les autres valeurs s’appliquent à partir de n’importe quel fichier de paramètres.
  3. La valeur par défaut intégrée
Les conversations que l’extension VS Code démarre suivent la propre liste de l’extension dans Basculer les modes de permission. Pour le mode de permission dans lequel Claude Code démarre une session reprise, voir mode de permission à la reprise. La valeur par défaut auto intégrée nécessite Claude Code v2.1.228 ou version ultérieure sur macOS, Linux et WSL, et v2.1.233 ou version ultérieure sur Windows natif. Sur les versions antérieures, la valeur par défaut intégrée est Manuel. La valeur par défaut intégrée dépend de la façon dont vous exécutez Claude Code. La première ligne qui correspond à votre session s’applique. Le tableau couvre les sessions que vous démarrez dans un terminal ou via l’extension VS Code ; pour l’application de bureau et claude.ai, voir les onglets Desktop et Web dans Basculer les modes de permission. Quand le flag, un fichier de paramètres ou la valeur par défaut intégrée sélectionne auto mais que le mode auto n’est pas disponible pour la session, Claude Code démarre la session en mode Manuel à la place. Le mode auto est indisponible quand la session ne répond pas aux exigences de disponibilité, comme un fichier de paramètres le désactivant ou un modèle qui ne le supporte pas, ou quand Anthropic l’a temporairement désactivé côté serveur. La première fois que la valeur par défaut intégrée démarre l’une de vos sessions en mode auto, Claude Code affiche un avis qui renvoie à cette page :
  • Dans un terminal, une fois, en haut de la session
  • Dans l’extension VS Code, sous forme de carte sur l’écran de nouvelle conversation qui reste jusqu’à ce que vous la fermiez
Si votre ~/.claude/settings.json définit un defaultMode autre que auto et qu’aucun autre fichier de paramètres n’en définit un, vos sessions continuent à démarrer dans ce mode. Sur les plans Pro, Max, Ultra et Team, et dans les sessions qui ne récupèrent pas les flags de fonctionnalité, Claude Code demande une fois si vous souhaitez modifier le paramètre en mode auto. La question apparaît dans le terminal ou dans l’extension VS Code, et si vous refusez, votre paramètre reste tel quel.

Appels d’outils refusés dans les exécutions claude -p et Agent SDK

Dans Claude Code v2.1.302 ou version ultérieure, les exécutions claude -p et du SDK Agent sans mode de permission défini démarrent en mode Manuel. Ce mode apparaît comme default dans les options du SDK et dans les paramètres. Les appels nécessitant une approbation sont refusés, sauf si vous les approuvez avec une règle d’autorisation, un hook, un callback canUseTool ou --permission-prompt-tool. Pour faire approuver ces appels, ajoutez des règles d’autorisation ou démarrez en mode auto : Ces exemples montrent la forme en mode auto pour la CLI et pour chaque SDK :
Avant la v2.1.302, ces exécutions pouvaient démarrer en mode auto si elles ne récupéraient pas les flags de fonctionnalité, par exemple sur un fournisseur tiers ou avec DISABLE_TELEMETRY.

Démarrer dans un mode de permission différent

Vous pouvez définir le mode de permission de démarrage pour une session, ou comme valeur par défaut pour chaque session sur une machine, dans un projet ou dans une organisation. Quand plus d’un fichier de paramètres définit permissions.defaultMode, la priorité des paramètres décide, donc une valeur de projet ou gérée l’emporte sur ~/.claude/settings.json. Pour modifier le mode de permission d’une session déjà en cours, voir Basculer les modes de permission. Cet exemple fait que chaque session de terminal sur votre machine démarre en mode Manuel, dont la valeur de configuration est default. Enregistrez-le dans ~/.claude/settings.json :
La session suivante que vous démarrez affiche ⏸ manual mode on dans la barre d’état.

Modes de permission avec la configuration HIPAA

Dans une organisation à laquelle la configuration HIPAA est appliquée, la valeur par défaut auto intégrée ne s’applique pas. Une session de terminal ou VS Code démarre en mode Manuel quand rien d’autre ne choisit son mode de permission de démarrage. Une session de terminal affiche également Auto mode isn't the default for your organization · Shift+Tab to switch, et l’extension VS Code n’affiche aucun avis. Vérifier comment les développeurs se connectent répertorie les sessions concernées. Le mode auto et bypassPermissions restent disponibles :

Basculer les modes de permission

Chaque interface a son propre contrôle pour basculer les modes de permission pendant une session et sa propre façon de choisir le mode de permission que les nouvelles sessions démarrent. Sélectionnez votre interface pour voir ses contrôles.
En cours de session : appuyez sur Shift+Tab pour parcourir les modes de permission. À partir de auto, le premier appui bascule vers default, et le cycle s’exécute ensuite default → acceptEdits → plan. Les modes optionnels s’insèrent après plan. La barre d’état affiche le mode actif sous la forme d’un ⏸ manual mode on gris pour default, ou sous la forme ⏵⏵ accept edits on, ⏸ plan mode on, ⏵⏵ auto mode on, ⏵⏵ don't ask on, ou ⏵⏵ bypass permissions on.Observez la barre d’état dans cet extrait d’une session démarrée en mode auto. Chaque fois que vous appuyez sur Shift+Tab, elle passe de auto mode on à manual mode on, accept edits on, plan mode on, puis revient à auto mode on.
Tous les modes ne sont pas dans le cycle par défaut :
  • auto : apparaît quand le mode auto est disponible ; basculer vers celui-ci change les modes de permission sans invite de confirmation
  • bypassPermissions : apparaît après que vous ayez démarré avec --permission-mode bypassPermissions, --dangerously-skip-permissions, --allow-dangerously-skip-permissions, ou permissions.defaultMode: "bypassPermissions" dans les paramètres utilisateur, --settings, ou gérés. La variante --allow- ajoute le mode de permission au cycle sans l’activer
  • dontAsk : n’apparaît jamais dans le cycle ; définissez-le avec --permission-mode dontAsk
Les modes optionnels activés s’insèrent après plan, avec bypassPermissions en premier et auto en dernier. Si vous avez les deux activés, vous parcourrez bypassPermissions en allant vers auto.À partir d’une invite de permission Bash : en modes de permission Manuel et acceptEdits, quand le mode auto est disponible, Claude Code ajoute Oui, et basculer vers le mode auto à l’invite de permission d’une commande Bash. Sélectionnez-le pour approuver la commande et basculer la session vers le mode auto. Les invites de l’outil PowerShell n’offrent pas l’option. Nécessite Claude Code v2.1.247 ou version ultérieure.Claude Code n’ajoute pas l’option aux invites forcées par l’une de vos règles ask ou par un hook, car le mode auto vous montre toujours ces invites, donc basculer ne les supprimerait pas.Au démarrage : passez le mode de permission en tant que drapeau.
Comme valeur par défaut : définissez permissions.defaultMode à la portée que vous souhaitez, comme décrit dans Démarrer dans un mode de permission différent.Le même drapeau --permission-mode fonctionne avec -p pour les exécutions non-interactives.

Auto-approuver les modifications de fichiers avec le mode acceptEdits

Le mode acceptEdits permet à Claude de créer et modifier des fichiers dans votre répertoire de travail sans inviter. La barre d’état affiche ⏵⏵ accept edits on tandis que ce mode est actif. En plus des modifications de fichiers, le mode acceptEdits auto-approuve les commandes Bash courantes du système de fichiers : mkdir, touch, rm, rmdir, mv, cp, et sed. À l’exception de touch, ces commandes sont également auto-approuvées quand elles sont préfixées par des variables d’environnement sûres telles que LANG=C ou NO_COLOR=1, ou des wrappers de processus tels que timeout, nice, ou nohup. Comme pour les modifications de fichiers, l’auto-approbation s’applique uniquement aux chemins à l’intérieur de votre répertoire de travail ou additionalDirectories. Les éléments suivants invitent toujours : Chaque chemin passe également par la vérification des liens symboliques, donc une écriture qui se résout en dehors de cette portée n’est pas auto-approuvée non plus. Quand l’outil PowerShell est activé, le mode acceptEdits auto-approuve également Set-Content, Add-Content, Clear-Content, et Remove-Item sur les chemins dans la portée, ainsi que leurs alias courants. Les mêmes règles de portée et de chemin protégé s’appliquent, et Remove-Item obtient sa propre vérification. Un argument positionnel qui contient un caractère de guillemet, comme l’apostrophe dans Set-Content .\notes.txt "It's done", invite toujours même sur les chemins dans la portée, car Claude Code ne peut pas valider statiquement un argument dont les lectures entre guillemets et sans guillemets diffèrent. Passez le contenu via un paramètre nommé tel que -Value pour éviter l’invite. Utilisez acceptEdits quand vous souhaitez examiner les modifications dans votre éditeur ou via git diff après coup plutôt que d’approuver chaque modification en ligne. Appuyez sur Shift+Tab une fois à partir du mode Manuel pour y accéder, ou démarrez directement avec celui-ci :

Analyser avant de modifier avec le mode plan

Le mode plan demande à Claude de faire des recherches et de proposer des modifications sans les appliquer. Claude lit des fichiers, exécute des commandes shell pour explorer et rédige un plan, mais ne modifie pas votre code source. Sauf dans les sessions de terminal interactives où le contournement des permissions est disponible, les modifications restent bloquées jusqu’à ce que vous approuviez le plan. Ce qui arrive à une commande shell pendant la planification dépend de la session, et le premier des cas suivants qui correspond s’applique : Passez en mode plan en appuyant sur Shift+Tab ou en préfixant un prompt unique avec /plan. Vous pouvez également démarrer en mode plan depuis la CLI :
Appuyez de nouveau sur Shift+Tab pour quitter le mode plan sans approuver de plan.

Examiner et approuver un plan

Lorsque le plan est prêt, Claude le présente et vous demande comment procéder. À partir de cette demande, vous pouvez choisir :
  • Yes, and use auto mode : approuver et démarrer en mode auto. Si le mode auto n’est pas disponible pour votre session, par exemple parce que votre organisation l’a désactivé, cette option s’affiche sous la forme Yes, auto-accept edits. Si vous avez démarré la session avec le contournement des permissions activé, l’option s’affiche plutôt sous la forme Yes, and switch to BYPASS PERMISSIONS (no further prompts) for this session.
  • Yes, manually approve edits : approuver et examiner chaque modification individuellement.
  • No, keep planning : rester en mode plan et indiquer à Claude ce qu’il faut changer.
Approuver un plan fait quitter le mode plan et bascule la session vers le mode de permission décrit par chaque option d’approbation, de sorte que Claude commence à modifier. Pour planifier à nouveau, revenez au mode plan avec Shift+Tab, ou préfixez votre prochain prompt avec /plan. Appuyez sur Ctrl+G pour ouvrir le plan proposé dans votre éditeur de texte par défaut et le modifier directement avant que Claude ne poursuive. Lorsque showClearContextOnPlanAccept est activé, la liste comporte une première option supplémentaire qui approuve le plan et efface le contexte de planification. Accepter un plan donne également à la session un titre généré à partir du plan, sauf si vous avez déjà nommé la session.

Définir le mode plan par défaut

Pour faire du mode plan le mode par défaut des sessions de terminal d’un projet, définissez defaultMode sur plan dans .claude/settings.json, en le plaçant comme le montre l’exemple sous Démarrer dans un autre mode de permission. Les conversations démarrées par l’extension VS Code ne lisent pas les paramètres du projet pour le mode de permission de départ. Dans ce cas, définissez plutôt claudeCode.initialPermissionMode sur plan dans vos paramètres utilisateur VS Code.

Éliminer les demandes de permission avec le mode auto

Le mode auto permet à Claude d’exécuter sans demandes de permission répétitives. Un modèle classificateur distinct examine les actions avant leur exécution, bloquant tout ce qui dépasse votre demande, cible une infrastructure non reconnue, ou semble provenir de contenu hostile que Claude a lu. Les règles ask explicites forcent toujours une demande de permission. Avec Claude Code v2.1.283 ou ultérieur, le mode auto est le mode de permission intégré de démarrage pour les sessions de terminal interactif et VS Code sur tous les plans et fournisseurs. Sur les versions antérieures, c’est le mode de permission intégré de démarrage uniquement sur les plans Pro, Max, Ultra et Team. Le classificateur examine également chaque message que Claude envoie à un autre agent avec SendMessage, qu’il s’agisse de texte brut ou d’un message d’équipe d’agents structuré, avant que Claude Code le livre, à la fois en mode auto et en mode plan tandis que le classificateur examine les commandes ; l’examen d’envoi nécessite Claude Code v2.1.222 ou ultérieur. Par défaut, le classificateur n’examine pas les suppressions rm et rmdir reconnues ciblant un chemin critique, comme rm -rf / ou rm -rf ~. Chemins critiques couvre ce qui leur arrive dans chaque mode de permission. Le mode auto encourage également Claude à continuer à travailler sans s’arrêter pour des questions de clarification, bien que Claude demande toujours quand votre prompt ou un skill s’y fient explicitement. Pour un comportement plus autonome dans un mode qui vous demande toujours la permission, définissez plutôt le style de sortie proactif.
Le mode auto réduit les demandes de permission mais ne garantit pas la sécurité. Utilisez-le pour les tâches où vous faites confiance à la direction générale, pas comme remplacement pour l’examen des opérations sensibles.
Le mode auto n’est disponible que lorsque votre compte répond à tous ces critères :
  • Plan : Tous les plans.
  • Organisation : sur Team et Enterprise, le mode auto est disponible par défaut. Les administrateurs peuvent le désactiver pour l’organisation en définissant permissions.disableAutoMode sur "disable" dans les paramètres gérés.
  • Modèle : sur l’API Anthropic et Claude Platform sur AWS, Claude Opus 4.6 ou ultérieur, Sonnet 4.6 ou ultérieur, Haiku 5.5, ou un modèle Fable. Sur Amazon Bedrock, Google Cloud’s Agent Platform, Microsoft Foundry et les sessions de passerelle d’applications Claude connectées, uniquement Claude Sonnet 5 ou ultérieur, Opus 4.7 ou ultérieur, Haiku 5.5, et les modèles Fable. Les modèles plus anciens, y compris Sonnet 4.5, Opus 4.5, Haiku 4.5 et les modèles claude-3, ne sont pris en charge sur aucun fournisseur.
  • Fournisseur : disponible par défaut sur l’API Anthropic, Claude Platform sur AWS, Amazon Bedrock, Google Cloud’s Agent Platform, Microsoft Foundry et les sessions de passerelle d’applications Claude connectées.
Si Claude Code signale que le mode auto n’est pas disponible, vérifiez d’abord ces exigences et si un fichier de paramètres définit disableAutoMode. Anthropic peut également avoir désactivé le mode auto côté serveur, ou le serveur peut avoir rejeté le mode auto pour votre compte. Une session qui a reçu l’une ou l’autre réponse garde le mode auto désactivé jusqu’à la fin de la session, alors démarrez une nouvelle session plus tard. Un message distinct qui nomme un modèle et dit que le mode auto « ne peut pas déterminer la sécurité » d’une action signifie qu’une requête de classificateur a échoué. Cet échec est généralement transitoire, mais sur Amazon Bedrock, il peut se répéter jusqu’à ce que votre compte puisse invoquer le modèle nommé. Consultez la référence d’erreur pour les causes et ce qu’il faut faire. Si vous définissez defaultMode: "auto" dans les paramètres et qu’une session de terminal démarre en mode Manual sans erreur, le paramètre est probablement dans .claude/settings.json ou .claude/settings.local.json. auto ne prend pas effet à partir de ces fichiers. Déplacez-le vers ~/.claude/settings.json. Pour une conversation que l’extension VS Code a démarrée, vérifiez plutôt la liste propre de l’extension dans Basculer les modes de permission.

Mode auto sur Bedrock, Agent Platform ou Foundry

Sur Amazon Bedrock, Google Cloud’s Agent Platform, Microsoft Foundry et les sessions de passerelle d’applications Claude connectées, le mode auto est disponible par défaut. Si vous n’y définissez pas de mode de permission, les sessions interactives démarrent en mode auto, et les exécutions claude -p ou Agent SDK démarrent en mode Manual, dont la valeur de configuration est default : Seuls Claude Sonnet 5 ou ultérieur, Opus 4.7 ou ultérieur, Haiku 5.5 et les modèles Fable sont pris en charge sur ces fournisseurs. Sur tout autre modèle, la session démarre en Manual à la place. Le mode auto avec Haiku 5.5 sur ces fournisseurs nécessite Claude Code v2.1.293 ou ultérieur. Pour empêcher les développeurs d’utiliser le mode auto, définissez disableAutoMode sur "disable" dans les paramètres gérés. Cela supprime auto du cycle Shift+Tab, et une session démarrée avec --permission-mode auto démarre en Manual à la place. Une session déjà en cours d’exécution en mode auto le quitte quand le paramètre l’atteint à partir d’une source déployée par l’administrateur, et affiche auto mode disabled by settings. Avant v2.1.251, une session en cours d’exécution gardait le mode auto jusqu’à la fin.

Examen du classificateur côté serveur

En mode auto, Claude Code peut demander au serveur de vérifier les actions que l’ordre de décision envoie pour examen, dans le cadre des requêtes de modèle de la session, à la place d’envoyer ses propres requêtes de classificateur. Ces sessions le demandent :
  • Une connexion directe à l’API Anthropic : dans les sessions de terminal interactif et dans les sessions -p, Agent SDK, extension VS Code et application de bureau, quel que soit votre plan ou type de compte, au fur et à mesure qu’Anthropic le déploie. Vérifiez votre type de session par rapport à ces versions minimales de Claude Code :
    • Dans les sessions de terminal interactif, interroger le serveur nécessite Claude Code v2.1.271 ou ultérieur sur les plans Pro, Max, Ultra et Team. Sur les plans Enterprise et les comptes Claude API, ces sessions nécessitent v2.1.278 ou ultérieur.
    • Dans les sessions -p et extension VS Code, interroger le serveur nécessite Claude Code v2.1.278 ou ultérieur
    • Dans les sessions Agent SDK et application de bureau, interroger le serveur nécessite Claude Code v2.1.281 ou ultérieur
    • À partir de v2.1.282, une session qui ne récupère pas les feature flags, par exemple parce que vous avez désactivé la télémétrie, interroge le serveur par défaut dans n’importe quel type de session
  • Un fournisseur cloud, une passerelle LLM ou un proxy : sur Claude Platform sur AWS, Amazon Bedrock, Google Cloud’s Agent Platform et Microsoft Foundry, et chaque fois que vous pointez ANTHROPIC_BASE_URL vers une passerelle LLM ou un proxy, quel que soit votre plan. Demander par défaut nécessite Claude Code v2.1.278 ou ultérieur.
  • Une session de passerelle d’applications Claude connectée : nécessite Claude Code v2.1.280 ou ultérieur
  • Une session cloud dans un environnement hébergé par Anthropic : quel que soit votre plan, lorsque vous la démarrez depuis le web, l’application mobile ou l’application de bureau avec Cloud sélectionné. Les sessions démarrées par une tâche planifiée cloud interrogent le serveur au fur et à mesure qu’Anthropic le déploie.
Là où le serveur examine les actions, ses verdicts en décident. Deux autres résultats sont possibles :
  • Le serveur n’examine pas la session : une réponse se termine sans résultats d’examen, ou le serveur répond qu’il n’examine pas cette session. Les causes les plus courantes sont une passerelle LLM ou un proxy qui abandonne la requête d’examen ou les résultats, et une plateforme, une région ou des identifiants qui n’ont pas encore de vérifications côté serveur. Claude Code se rabat sur ses propres requêtes de classificateur. Une fois que cette solution de repli est maintenue pour le reste de la session, il affiche un avis sur les frais de requêtes de classificateur sur les comptes où ces requêtes sont facturées.
  • Le serveur ne donne pas de verdict pour une action : Claude Code refuse l’action plutôt que de l’exécuter sans examen. Sur n’importe quelle connexion, cela se produit quand la réponse se termine avant l’arrivée des résultats d’examen ou que les résultats arrivent sous une forme que Claude Code ne peut pas lire. Une passerelle LLM ou un proxy qui raccourcit les réponses ou réécrit les résultats peut causer l’un ou l’autre. Sur une connexion directe à l’API Anthropic, cela se produit également quand la vérification du serveur échoue pour l’action, par exemple en dépassant le délai d’attente. Le serveur n’a pas retourné de verdict de sécurité couvre le message de refus, ce qui se passe quand les refus se répètent, et ce qu’il faut faire. Si un hook ou un mod modifie l’entrée d’une action après l’examen du serveur, Claude Code peut refuser l’action sans verdict. Dans les sessions de terminal interactif et VS Code sur une connexion directe à l’API Anthropic, le texte du refus inclut a hook changed this call's input after auto mode reviewed it. Son entrée d’erreur couvre ce qu’il faut faire.
Pour ne pas interroger le serveur et toujours utiliser les propres requêtes de classificateur de Claude Code, définissez CLAUDE_CODE_AUTO_MODE_SERVER=0. Sur une connexion directe à l’API Anthropic, la variable nécessite Claude Code v2.1.281 ou ultérieur. La définir sur 1 active l’examen du serveur dans une session qui ne l’a pas encore, à moins que vous n’ayez également défini CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1. Si vous définissez CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1 et laissez CLAUDE_CODE_AUTO_MODE_SERVER non défini, Claude Code cesse également d’interroger le serveur, sauf comme le décrit Désactiver les capacités de pré-version.

Modèle de classificateur par défaut

Par défaut, les requêtes de classificateur sont envoyées à Claude Sonnet 5. Si /status affiche Auto mode server comme Enabled, elles ne sont envoyées que pour les appels en dehors de l’examen du serveur. Trouvez la première ligne de ce tableau qui correspond à votre session. Vous obtenez le modèle de cette ligne à la place de Sonnet 5. Si Sonnet 5 ou le modèle dans ANTHROPIC_DEFAULT_SONNET_MODEL n’est pas disponible auprès de votre fournisseur ou est exclu par la politique de modèles de votre organisation, Claude Code utilise un modèle de secours. Il s’agit du modèle de votre session, ou d’un modèle Opus dans une session Fable.

Choisir le modèle de classificateur

Avec Claude Code v2.1.302 ou ultérieur, définissez CLAUDE_CODE_AUTO_MODE_MODEL sur un ID de modèle complet pour exécuter le classificateur sur un modèle autre que le modèle par défaut. Les ID de modèle complets propres à votre fournisseur cloud fonctionnent également. Cet exemple de ~/.claude/settings.json définit Claude Sonnet 4.6 :

Quand votre modèle n’est pas celui qui examine

Si plusieurs situations s’appliquent, retenez la première de la liste.

Vérifier quel modèle le classificateur a utilisé

Depuis votre shell, démarrez une session en mode auto avec --debug-file :
Pour donner au classificateur une commande à examiner, demandez à Claude d’exécuter curl https://example.com, puis recherchez classifier_request_started dans le log :
  • Votre modèle après model= : la variable a pris effet
  • Un modèle différent après model= : recherchez ignoring CLAUDE_CODE_AUTO_MODE_MODEL dans le log, qui donne la raison et toute étape à suivre
  • Aucune ligne de ce type : lisez Auto mode server dans /status à l’invite de Claude Code :
    • Enabled : le serveur est configuré pour examiner les appels de cette session.
    • Disabled : cette vérification n’a pas encore testé votre modèle. Assurez-vous que le mode de permission est auto et qu’aucune règle de permission ne correspond à curl, puis relancez la vérification avec le sandbox désactivé.

Ce que le classificateur bloque par défaut

Le classificateur fait confiance à votre répertoire de travail et aux remotes qui étaient configurés pour celui-ci quand la session a démarré. Un remote ajouté ou réorienté pendant la session avec git remote add ou git remote set-url n’est pas considéré comme fiable, et tout le reste est traité comme externe jusqu’à ce que vous configuriez l’infrastructure approuvée. Bloqué par défaut :
  • Téléchargement et exécution de code, comme curl | bash
  • Envoi de données sensibles à des endpoints externes
  • Déploiements et migrations de production
  • Suppression en masse sur le stockage cloud
  • Octroi de permissions IAM ou de dépôt
  • Modification de l’infrastructure partagée
  • Destruction irréversible de fichiers qui existaient avant la session
  • Push forcé
  • Créer un commit ou pousser une modification qui enverrait des secrets ou des données sensibles en dehors du dépôt lors de son exécution, ou élargirait ce qu’un déploiement expose. Cela couvre un workflow CI ou une configuration de déploiement qui transmet un secret à une destination qui ne le reçoit pas déjà, un script ou une étape de configuration qui lit un magasin de secrets et envoie les données à l’extérieur, et une modification de configuration qui élargit ce qu’un déploiement publie, comme un paramètre de registre, de visibilité, d’artefact ou de sourcemap. La vérification s’applique sur n’importe quelle branche, s’applique même quand le dépôt est public, et se déclenche quand la modification est commitée ou poussée, que ce commit ou ce push déclenche le pipeline ou non ; la lever nécessite de nommer l’effet d’exécution, pas seulement le commit ou le push
  • git reset --hard, git checkout -- ., git restore ., git clean -fd, git stash drop ou git stash clear, dont le classificateur présume qu’ils abandonneraient les modifications non commitées
  • git commit --amend quand le commit à HEAD n’a pas été créé dans cette session
  • À partir de v2.1.198, git commit --amend quand le commit à HEAD a déjà été poussé. Une reformulation du message seul n’est pas bloquée : --amend -m sans rien de nouvellement indexé, sur un commit que Claude a créé pendant cette session
  • terraform destroy, pulumi destroy, cdk destroy ou terragrunt destroy, et l’application d’un plan qui détruit des ressources
  • Écriture dans un gestionnaire de secrets, ou modification des enregistrements DNS ou des certificats TLS
  • Fusion d’une pull request qu’aucun humain n’a approuvée, approbation de la propre pull request de Claude, ou désactivation des vérifications CI
  • Publication d’un commentaire qui est lui-même une commande destinée à l’automatisation, comme atlantis apply ou le /deploy ou /merge d’un bot
  • Basculement, augmentation progressive ou suppression d’un feature flag de production
  • Application de modifications d’infrastructure à une portée IaC protégée, ou vidage et suppression de nœuds de cluster
  • Écritures dans un cluster de calcul partagé qui vont au-delà de la ressource que vous avez nommée, comme un sélecteur d’étiquette ou --all qui capture les tâches d’autres utilisateurs
  • Création de ressources Kubernetes qui s’exécutent sur chaque nœud ou interceptent le trafic du cluster, comme les DaemonSets et les webhooks d’admission
  • Shells interactifs ou redirections de port vers une cible distante sensible
  • Ouverture d’un tunnel ou d’un shell inverse qui rend un service local accessible depuis l’Internet public
  • Affichage d’identifiants ou d’un jeton actifs dans la transcription ou un fichier
  • Accès à un emplacement répertorié comme emplacement de données sensibles dans votre environnement, copie de données hors de celui-ci, ou envoi de données issues d’un tel emplacement à un public que l’entrée exclut
  • Contournement de votre registre de paquets interne en installant un paquet depuis un registre public. Cela s’applique quand un registre interne ou un miroir est répertorié dans votre environnement ou quand vous avez indiqué à Claude dans la conversation qu’un tel registre existe
  • Exécution d’une commande avec un flag qui désarme une protection de sécurité, comme --insecure
  • Lancement d’une boucle d’agent autonome qui s’exécute sans approbation humaine ni sandbox, comme une boucle lancée avec --dangerously-skip-permissions ou --no-sandbox. Cela inclut l’exécution d’un agent tiers ou d’un harnais d’évaluation avec l’isolation et l’approbation par action désactivées, comme un runner lancé avec --yes-always
  • Actions du navigateur Claude dans Chrome qui pourraient envoyer le contenu de la page, les cookies ou les identifiants hors origine
  • Suppression de fichiers dans /tmp, $TMPDIR ou un autre répertoire temporaire ou de cache partagé par caractère générique, glob ou filtre d’âge plutôt que par un chemin nommé spécifique
  • Inclusion de détails sensibles dans du contenu envoyé, téléversé, publié ou écrit à d’autres personnes ou dans des systèmes partagés, quand votre propre message n’a pas autorisé ces détails pour ce destinataire. Les corps de PR et d’issue, les messages de commit et les commentaires comptent comme ce type de contenu sortant quand le dépôt est en dehors de la limite de confiance ou public, y compris les dépôts publics de votre propre organisation ; les chemins de fichiers internes, les noms de code, les données de réponse API en direct comme les e-mails ou les identifiants de compte, et les identifiants d’infrastructure comptent comme des détails sensibles. Les données personnelles en direct issues d’une réponse API dans un corps de PR ou d’issue, comme une adresse e-mail, un identifiant de compte ou d’organisation, ou une métrique d’utilisation, vous obligent à nommer ces détails et le destinataire indépendamment de la visibilité ou de la limite de confiance du dépôt
  • Envoi de frappes au clavier au propre volet tmux de Claude Code pour piloter sa propre interface, ce que le classificateur traite comme Claude modifiant ses propres permissions ou sa propre supervision
  • Mise en commentaire, suppression ou forçage de la réussite d’un test ou d’une assertion qui protège un comportement de sécurité, comme l’authentification, le contrôle d’accès, la validation des entrées ou le sandboxing
  • Suppression ou démantèlement d’une ressource avec état que Claude n’a pas créée dans la session, quand aucune règle de suppression plus spécifique ne s’applique et que vous n’avez pas nommé cette ressource
  • Réorientation d’une URL de base d’API, d’un endpoint de proxy, d’un récepteur de webhook ou d’un miroir de registre vers un hôte tiers qui ne correspond pas à la tâche, y compris dans les fichiers d’exemple comme .env.example
  • Modification de la destination des push avec git remote set-url ou git remote add, à moins que vous n’ayez nommé le nouveau remote
  • Push de secrets ou de données personnelles ou confiées vers un dépôt connu pour être public, ou push de contenu confidentiel qui ne fait pas partie du travail propre de ce dépôt. Le sujet propre d’un dépôt de dotfiles est la seule exception pour les données personnelles ou confiées, et le contenu d’un dépôt privé atteignant n’importe quelle surface publique est bloqué de la même manière. Quand la visibilité d’un dépôt n’est pas établie, le classificateur ne bloque pas sur ce seul critère ; il juge plutôt le contenu par rapport aux autres règles
  • Ouverture d’une pull request vers un dépôt ou une organisation différents, fork avec gh repo fork ou push vers un dépôt tiers, à moins que vous n’ayez nommé cette cible externe
  • Contenu issu d’un magasin local sensible, ou d’un fichier dont le nom, le chemin ou le type le marque comme sensible, entrant dans un commit, un push, un texte de PR ou d’issue, un gist ou un paste, ou une publication de paquet, à moins que vous n’ayez nommé à la fois la source et la destination. Les transcriptions de session et les journaux de conversation, les dossiers cachés d’identifiants et de configuration comme les clés SSH, les identifiants cloud, les profils de navigateur et l’historique du shell, ainsi que les exportations de données utilisateur comptent tous, et le fait que le dépôt soit privé ne lève pas le blocage
  • Écriture dans les transcriptions de session Claude Code, les fichiers d’historique .jsonl sous ~/.claude/projects/ ou votre répertoire de configuration configuré, directement ou via une commande shell. La règle couvre également les lignes de métadonnées que Claude Code ajoute à chaque entrée de transcription pour ses propres vérifications. La lecture d’une transcription n’est pas bloquée
  • Une suppression forcée récursive comme rm -rf "$VAR" ou Remove-Item -Recurse -Force $dir dont la cible est une variable shell qui n’est assignée nulle part dans la conversation que le classificateur voit, ou un glob enraciné dans une telle variable. La valeur provenait uniquement d’une sortie de commande antérieure, que le classificateur ne reçoit jamais, donc le classificateur ne peut pas vérifier la cible de suppression par rapport aux autres règles de suppression. Le blocage est levé quand vous nommez le chemin exact en cours de suppression, ou quand Claude réexécute la suppression avec le chemin littéral résolu écrit dans la commande. Les suppressions dont le classificateur peut résoudre la cible ne sont pas affectées. Un glob directement sous la variable, comme dans rm -rf "$VAR"/*, est plutôt un chemin critique. Les cibles Remove-Item qui sont un * seul ou se terminent par /* ou \* n’atteignent jamais le classificateur : Claude Code les refuse directement.
Plusieurs de ces catégories dépendent d’entrées d’environnement, comme les cibles distantes sensibles et les portées IaC protégées, que vous pouvez restreindre à des noms concrets. Claude Code v2.1.257 et ultérieur bloquent également par défaut :
  • Demande d’identifiants à l’endpoint de métadonnées d’instance cloud, comme 169.254.169.254, ou authentification explicite d’un appel cloud, cluster ou registre avec l’identité de compte de service ou de nœud de la machine
  • Accès à un hôte public par une route autre qu’une requête directe, comme un tunnel, un shell inverse, ou une configuration de résolveur ou de proxy réécrite pour pointer vers l’extérieur
  • Lecture d’identifiants qui appartiennent à l’hôte plutôt qu’à votre tâche, comme les certificats de nœud ou l’authentification au registre de conteneurs du nœud
  • Connexion à ou analyse des conteneurs, pods ou VMs voisins que Claude n’a pas démarrés, ou du nœud sous le conteneur
Si Claude Code s’exécute dans un endroit censé autoriser l’une de ces actions, décrivez cette configuration dans une entrée Host containment dans autoMode.environment. Claude Code v2.1.261 et ultérieur bloquent également par défaut :
  • Publication ou écriture d’un lien vers un service public de paste, de diagramme ou de partage de données dans un message, un texte de PR ou d’issue, un document, ou n’importe où ailleurs où le lien sera ouvert ou récupéré, quand l’URL elle-même contient le contenu partagé, à moins que vous n’ayez nommé ce service
Autorisé par défaut :
  • Opérations sur les fichiers locaux dans votre répertoire de travail
  • Installation de dépendances déclarées dans vos fichiers de verrouillage ou manifestes
  • Lecture de .env et envoi d’identifiants à leur API correspondante
  • Requêtes HTTP en lecture seule
  • Push vers n’importe quelle branche du dépôt sur lequel vous travaillez, y compris la branche par défaut. Une branche autre que celle par défaut dont le nom la désigne comme cible de déploiement ou de publication, comme production ou gh-pages, n’est pas couverte : le classificateur juge un push vers celle-ci selon ses propres critères. Le contenu d’un push est toujours vérifié par rapport aux autres règles du classificateur, et les règles permissions.deny peuvent toujours bloquer les commandes de push telles qu’écrites dans chaque mode. La protection de branche propre au remote s’applique toujours.
  • Suppression des tâches exactes que Claude a créées plus tôt dans la même session
  • Lecture, examen ou écriture de code, de configurations et de modèles de menace liés à la sécurité dans le cadre de votre tâche
  • Messages entre agents travaillant ensemble dans la même session multi-agents
  • Envoi de données aux domaines, buckets et services approuvés que vous énumérez dans environment. Cela couvre uniquement le flux de données, pas les opérations destructrices ou portant sur des identifiants sur la même infrastructure
  • Navigation Claude dans Chrome vers un domaine interne approuvé, localhost ou une URL que vous avez nommée
Les commandes en sandbox n’obtiennent pas d’accès réseau par défaut. Claude nomme les hôtes dont une commande a besoin sur la commande elle-même, le classificateur les examine avec la commande, et une liste approuvée ouvre ces hôtes pour cette seule commande. Domaines autorisés par commande couvre ce qu’une liste peut et ne peut pas ouvrir et ce qui se passe quand une commande tente d’atteindre un hôte non répertorié. Exécutez claude auto-mode defaults pour afficher les listes de règles complètes en JSON. Si des actions courantes sont bloquées, un administrateur peut ajouter des dépôts, des buckets et des services approuvés via le paramètre autoMode.environment : voir Configurer le mode auto. Pousser vers n’importe quelle branche du dépôt sur lequel vous travaillez et créer une pull request qui correspond à votre demande s’exécutent sans demande de permission, à moins que le push ou la pull request ne relève de la liste de blocage, comme des secrets ou des données sensibles quittant le dépôt, ou une pull request qui cible un dépôt ou une organisation différents. Pour exiger un checkpoint humain avant ces commandes tout en restant en mode auto, ajoutez des règles permissions.ask, qui correspondent à la commande telle qu’écrite : voir Limites communes.

La première lecture en dehors des répertoires de travail

Tant que permissions.blockReadsOutsideWorkingDirectories est désactivé, les lectures de fichiers autres que les lectures depuis des chemins réseau s’exécutent sans demande de permission en mode auto, y compris les lectures en dehors des répertoires de travail. La première fois que Claude utilise l’outil Read, Grep ou Glob sur un chemin en dehors de ceux-ci, Claude Code demande s’il faut autoriser cette lecture. La demande n’apparaît pas dans les exécutions -p non interactives ni dans les sessions d’arrière-plan ; les lectures y s’exécutent comme avant. Quelle que soit votre réponse, Claude continue à travailler :
  • Oui, et continuez à autoriser toute lecture en dehors des répertoires de travail : la lecture s’exécute, les lectures ultérieures en dehors des répertoires de travail s’exécutent comme avant, et Claude Code enregistre votre réponse pour que la demande n’apparaisse plus
  • Non, et bloquez les lectures en dehors des répertoires de travail à partir de maintenant : la lecture est refusée, et Claude Code définit permissions.blockReadsOutsideWorkingDirectories sur true dans vos paramètres utilisateur, ce qui fait que les outils de fichier refusent de telles lectures dans cette session, dans chaque session ultérieure et dans chaque mode de permission. Pour lever le blocage, supprimez le paramètre de chaque fichier de paramètres qui le définit, puis redémarrez chaque session en cours d’exécution. Pour un seul répertoire dans cette session, utilisez /add-dir.
  • Non, et demandez à nouveau la prochaine fois : la lecture est refusée, et la prochaine lecture en dehors des répertoires de travail redemande la permission
  • Oui, mais demandez à nouveau la prochaine fois : la lecture s’exécute, rien n’est enregistré, et la prochaine lecture en dehors des répertoires de travail redemande la permission

Limites que vous énoncez dans la conversation

Le classificateur traite les limites que vous énoncez dans la conversation comme un signal de blocage. Si vous dites à Claude « ne pousse pas » ou « attends que j’examine avant de déployer », le classificateur bloque les actions correspondantes même quand les règles par défaut les autoriseraient. Une limite reste en vigueur jusqu’à ce que vous la leviez dans un message ultérieur. Le propre jugement de Claude qu’une condition a été remplie ne la lève pas. Les limites ne sont pas stockées en tant que règles. Le classificateur les relit à partir de la transcription à chaque vérification, donc une limite peut être perdue si la compaction de contexte supprime le message qui l’a énoncée. Pour une garantie ferme, ajoutez plutôt une règle deny.

Approbations que vous énoncez dans la conversation

Si vous dites à Claude qu’une action bloquée est autorisée, le classificateur lit cela comme votre approbation et peut lever le blocage. La façon dont vous l’avez formulé détermine si l’action s’exécute et jusqu’où l’approbation s’étend :
  • Nommez l’action et ses spécificités : votre message doit nommer l’action et l’élément spécifique qui la rend dangereuse, comme la branche d’un push forcé. Nommer le verbe seul ne lève rien, donc « vous pouvez faire un push forcé » laisse le blocage en place.
  • Attendez-vous à ce qu’elle couvre une seule action : une approbation couvre l’action destructrice que vous avez nommée, donc une action ultérieure est de nouveau bloquée à moins que vous n’ayez accordé l’approbation de manière permanente. Pour cesser d’approuver un schéma courant action par action, ajoutez-le à autoMode.allow.
  • Certains blocages restent en place : l’ordre de priorité du classificateur indique les blocages que votre approbation peut lever. Pour exécuter une étape qu’elle ne débloquera pas, quittez le mode auto et répondez à la demande de permission.

Quand le mode auto se rabat sur une solution de repli

Quand le mode auto ne peut pas approuver les actions de votre session, ce qui se passe dépend du cas :
  • Une action bloquée : Claude Code affiche une notification et répertorie l’action dans /permissions sous l’onglet Recently blocked, où vous pouvez approuver l’action pour que Claude puisse réessayer.
  • Blocages répétés : si le classificateur bloque une action 3 fois de suite ou 20 fois au total, le mode auto se met en pause et Claude Code recommence à vous demander la permission. Approuver l’action demandée relance le mode auto. Voir Seuils de blocages répétés pour savoir comment les blocages sont comptés.
  • Aucun verdict du classificateur : quand une vérification de sécurité distincte du mode auto refuse la propre requête du classificateur, ou que la réponse du classificateur ne peut pas être analysée, Claude Code bloque l’action sans la notification ni l’entrée Recently blocked. Voir Le mode auto ne peut pas déterminer la sécurité d’une action pour le message que chaque cas affiche et ce qu’il faut faire.
  • Aucun verdict du serveur : avec l’examen du classificateur côté serveur, Claude Code refuse une action pour laquelle le serveur ne donne pas de verdict, et peut arrêter le tour après dix réponses de suite sans verdict. Voir Le serveur n’a pas retourné de verdict de sécurité.
  • Un changement de mode pendant une vérification : si vous changez de mode de permission alors qu’une vérification du classificateur est en attente, Claude Code abandonne un verdict que le nouveau mode n’aurait pas demandé. Une approbation vous est demandée à la place, ou l’action est automatiquement refusée en mode dontAsk.

Seuils de blocages répétés

Les seuils de 3 blocages de suite et de 20 blocages au total ne sont pas configurables. Le compteur total persiste pour la session et ne se réinitialise que lorsque sa propre limite déclenche le repli. Claude Code ne compte pas un refus dans l’un ou l’autre seuil quand une vérification de sécurité distincte du mode auto refuse la propre requête du classificateur. Une exécution -p non interactive sans --permission-prompt-tool n’a pas de demande de permission sur laquelle se rabattre. Quand les blocages répétés atteignent un seuil, l’action ne s’exécute pas et Claude continue à travailler. Claude Code n’arrête pas l’exécution. Les blocages répétés signifient généralement que le classificateur manque de contexte sur votre infrastructure. Utilisez /feedback pour signaler les faux positifs, ou demandez à un administrateur de configurer l’infrastructure approuvée.

Comment le mode auto évalue les actions

Les sections suivantes couvrent l’ordre dans lequel Claude Code évalue une action, comment le classificateur examine le travail des sous-agents, et ce que les appels au classificateur ajoutent en coût et en latence.
Chaque action passe par un ordre de décision fixe. La première étape correspondante l’emporte :
  1. Les actions correspondant à vos règles allow, ask ou deny sont résolues immédiatement, avec ces exceptions :
    • Les écritures vers les chemins protégés sont acheminées vers le classificateur même quand une règle allow correspond. Quand le chemin protégé est le fichier vers lequel pointe un fichier de paramètres en lien symbolique, l’écriture peut plutôt vous demander la permission, comme le décrit la liste des chemins protégés
    • Aucune règle allow n’approuve les suppressions rm et rmdir reconnues ciblant un chemin critique
    • Les outils MCP marqués requiresUserInteraction vous demandent directement la permission même quand une règle allow correspond, et il en va de même pour les outils de connecteur que votre organisation a définis sur ask dans les sessions où ce paramètre atteint Claude Code
    • Une commande shell qui porte des domaines autorisés par commande est également acheminée vers le classificateur même quand une règle allow correspond, car une règle approuve la commande, pas ses hôtes
    • Les règles ask qui portent sur le contenu d’une commande, comme Bash(git push *), se rabattent sur une demande de permission
    • Une écriture que la vérification des liens symboliques résout vers un chemin protégé vous demande la permission quand le chemin que Claude a demandé n’est pas lui-même protégé
    • Une lecture depuis un chemin réseau vous demande la permission même quand une règle allow correspond
  2. Les actions en lecture seule et les modifications de fichiers dans votre répertoire de travail sont approuvées automatiquement, sauf les écritures vers les chemins protégés et la première lecture en dehors des répertoires de travail, qui vous demande la permission
  3. Tout le reste est envoyé au classificateur, à l’exception des suppressions de chemins critiques sous leur gestion par défaut. Les outils de connecteur et les outils MCP requiresUserInteraction qui vous demandent directement la permission à l’étape 1 n’atteignent jamais le classificateur non plus, donc ni une approbation exigée par l’organisation ni une étape de consentement n’est approuvée automatiquement
  4. Si le classificateur bloque, Claude reçoit la raison. Dans la plupart des sessions, la raison nomme la règle à laquelle le classificateur a fait correspondre l’action, comme [Data Exfiltration], plutôt que de donner une explication rédigée ; voir Examiner les refus
Un mod que vous installez et qui gère tool.check peut également approuver une action. Pour les cas où son approbation ne passe pas outre vos règles et vos hooks, voir Étendre les permissions avec des hooks.Pour savoir comment les actions du navigateur Claude dans Chrome sont approuvées dans l’extension VS Code, voir Demandes de permission dans les sessions VS Code.En entrant en mode auto, les règles allow larges qui accordent l’exécution de code arbitraire sont supprimées :
  • Bash(*) ou PowerShell(*) globaux
  • Interpréteurs avec caractères génériques comme Bash(python*)
  • Commandes d’exécution des gestionnaires de paquets
  • Règles Agent allow
  • Règles Monitor allow, car Claude Code exécute les commandes Monitor via le shell
Les règles étroites comme Bash(npm test) restent en vigueur. Claude Code restaure les règles supprimées quand vous quittez le mode auto. Avant v2.1.236, Claude Code laissait les règles Monitor allow en vigueur en mode auto, donc une règle qui correspondait à l’outil entier approuvait les commandes Monitor sans examen du classificateur.Claude Code exécute également git status lui-même avant une commande qui abandonnerait du travail non commité, comme git reset --hard ou rm -rf, et indique au classificateur si du travail indexé, modifié ou non suivi est présent. Claude Code signale les fichiers non suivis dans cette vérification même quand la configuration git du dépôt définit status.showUntrackedFiles=no.Dans les requêtes de classificateur envoyées par Claude Code lui-même, le classificateur voit les messages utilisateur, les appels d’outils autres que les consultations en lecture seule comme les lectures de fichiers et les recherches, et le contenu de votre CLAUDE.md. Les résultats d’outils sont retirés de ces requêtes, donc le contenu hostile dans un fichier ou une page web ne peut pas manipuler directement le classificateur.Vous pouvez annoter le résultat d’un appel avec le champ classifierContext d’un hook PostToolUse, que le classificateur lit comme contexte fourni par l’application. Le champ nécessite Claude Code v2.1.236 ou ultérieur.Une sonde côté serveur distincte analyse les résultats d’outils entrants et signale le contenu suspect avant que Claude ne le lise. Pour plus d’informations sur la façon dont ces couches fonctionnent ensemble, consultez l’annonce du mode auto et l’analyse technique approfondie.
Le classificateur vérifie le travail des sous-agents à trois moments :
  1. Avant qu’un sous-agent ne démarre, la description de la tâche déléguée est évaluée, donc une tâche qui semble dangereuse est bloquée au moment du lancement.
  2. Pendant que le sous-agent s’exécute, chacune de ses actions passe par le même ordre de décision que dans la session parente, avec les mêmes règles de blocage et d’autorisation. Tout permissionMode dans le frontmatter du sous-agent est ignoré.
  3. Quand le sous-agent se termine, le classificateur examine son travail et son rapport final avant que le parent ne lise le rapport. Quand le classificateur signale le travail ou le rapport du sous-agent, ou qu’une vérification de sécurité API distincte refuse l’examen, le rapport est tout de même livré, précédé d’un avertissement de sécurité. Quand le classificateur n’est pas disponible pour l’examen, le rapport arrive avec une note invitant à vérifier le travail du sous-agent avant d’agir en conséquence.
Les requêtes de classificateur de Claude Code peuvent s’exécuter sur un modèle autre que votre sélection /model. Voir sur quel modèle elles s’exécutent.Sur les plans Enterprise et sur les comptes qui utilisent l’API Claude, Claude Platform sur AWS, Amazon Bedrock, Google Cloud’s Agent Platform ou Microsoft Foundry, les appels au classificateur comptent dans votre utilisation de tokens. Chaque vérification envoie une partie de la transcription ainsi que l’action en attente, ajoutant un aller-retour avant l’exécution. Les lectures et les modifications dans le répertoire de travail en dehors des chemins protégés ne passent pas par le classificateur, donc la surcharge provient principalement des commandes shell et des opérations réseau. Là où le serveur examine les actions dans le cadre des requêtes de modèle de la session, il n’y a pas d’appels distincts au classificateur à compter ; voir Examen du classificateur côté serveur.L’accès réseau en sandbox n’ajoute pas de requêtes de classificateur par connexion. Le classificateur juge les hôtes qu’une commande nomme avec la commande en un seul examen, et Claude Code vérifie chaque connexion par rapport à la liste approuvée sans appeler à nouveau le classificateur.

Autoriser uniquement les outils pré-approuvés avec le mode dontAsk

Si vous définissez le mode dontAsk, Claude Code refuse automatiquement chaque appel d’outil qui déclencherait autrement une demande de permission, bien qu’un mod que vous avez installé puisse encore approuver certains de ces appels. Pour vérifier quels appels un mod peut approuver, consultez Étendre les permissions avec des hooks. Claude exécute toujours les actions qui ne nécessitent aucune approbation en mode Manual, telles que les lectures de fichiers dans vos répertoires de travail et les commandes Bash en lecture seule. Les actions correspondant à vos règles permissions.allow et les appels approuvés par un hook PreToolUse s’exécutent également. Utilisez ce mode pour les pipelines CI ou les environnements restreints où vous prédéfinissez ce que Claude peut faire ; la session n’attend jamais d’entrée. La barre d’état affiche ⏵⏵ don't ask on tandis que ce mode est actif. Claude Code refuse les appels correspondant à vos règles ask explicites plutôt que de déclencher une invite. Il refuse également l’outil intégré AskUserQuestion même si vos règles allow les correspondent, et il en va de même pour les outils de connecteur que votre organisation a définis sur ask dans les sessions où ce paramètre atteint Claude Code. Il refuse les outils MCP marqués _meta["anthropic/requiresUserInteraction"] de la même manière, car leur carte d’approbation nécessite une réponse que ce mode ne collecte jamais. Une règle allow ou un hook PreToolUse ne peut pas approuver les éléments suivants : Les sessions cloud sur Claude Code sur le web ignorent defaultMode: "dontAsk" ; voir bypassPermissions pour les détails. Définissez-le au démarrage avec le drapeau :

Ignorer tous les contrôles avec le mode bypassPermissions

Le mode bypassPermissions désactive les invites de permission et les contrôles de sécurité afin que les appels d’outils s’exécutent immédiatement, y compris les écritures vers les chemins protégés. Même en mode bypassPermissions, chacune des actions qu’aucun mode n’auto-approuve fait l’objet d’une demande ou d’un refus, bien que vous puissiez désactiver la demande pour les commandes rm dangereuses. La lecture de l’artefact public d’une autre organisation nécessite votre approbation, et ce mode ne la demande pas, donc Claude ne peut pas en lire. Les refus Remove-Item dans PowerShell s’appliquent également dans ce mode. Deux protections de messagerie inter-sessions s’appliquent toujours dans ce mode, et dans les sessions en mode plan interactif où les permissions de contournement sont disponibles :
  • L’invite d’approbation isolatePeerMachines pour les messages vers vos sessions au-delà de cette machine apparaît toujours.
  • Quand aucune valeur crossSessionInbound ne s’applique, Claude Code retient un message entrant d’une autre de vos sessions pour votre approbation, et le livre sans demander uniquement quand la session d’envoi s’identifie comme contournant également les invites de permission. Si vous quittez le mode de permission tandis que les messages sont retenus, Claude Code réapplique les règles entrantes et livre tout message retenu qu’elles acceptent maintenant.
Dans les sessions de terminal interactif avec les permissions de contournement disponibles, Claude Code n’applique pas non plus les blocs du mode plan. Claude est toujours instruit de planifier sans modifier, mais une modification de fichier ou une commande shell qu’il tente pendant la planification s’exécute sans demander. Les règles ask explicites et les suppressions rm et rmdir ciblant un chemin critique demandent toujours. Le mode plan conserve ses blocs partout où Claude Code s’exécute sans terminal interactif, y compris les exécutions non-interactives avec -p, les sessions du SDK Agent, et les conversations dans le panneau de chat de l’extension VS Code. Là, --allow-dangerously-skip-permissions rend bypassPermissions sélectionnable ultérieurement.
Utilisez ce mode uniquement dans des environnements isolés comme les conteneurs, les machines virtuelles ou les dev containers sans accès à Internet, où Claude Code ne peut pas endommager votre système hôte.
Vous ne pouvez pas entrer dans bypassPermissions à partir d’une session que vous avez démarrée sans l’activer. Activez-le au lancement avec permissions.defaultMode: "bypassPermissions" ou avec un drapeau d’activation :
Le drapeau --dangerously-skip-permissions est équivalent. Claude Code refuse bypassPermissions dans une session que vous démarrez avec --restricted. --restricted nécessite Claude Code v2.1.248 ou ultérieur. La première fois que vous démarrez une session interactive avec ce mode activé, Claude Code affiche un dialogue d’avertissement vous demandant d’accepter la responsabilité des actions prises sans vérifications de permission :
  • Si vous acceptez : Claude Code définit skipDangerousModePermissionPrompt sur true dans ~/.claude/settings.json, de sorte que les sessions ultérieures ignorent le dialogue. Pour voir le dialogue à nouveau, supprimez la clé de ce fichier ou définissez-la sur false. La référence skipDangerousModePermissionPrompt énumère les autres fichiers de paramètres où vous ou votre organisation pouvez le définir.
  • Si vous refusez : Claude Code quitte.
Si vous passez --setting-sources sans user, le dialogue peut réapparaître bien que vous l’ayez accepté précédemment. Pour l’ignorer, ajoutez user, comme dans --setting-sources user,project. En mode non interactif, aucun dialogue n’est affiché. Une session en arrière-plan respecte votre acceptation lorsqu’elle est enregistrée dans les paramètres utilisateur ou les paramètres gérés :
  • Sans acceptation enregistrée, claude --bg --permission-mode bypassPermissions est refusé. Acceptez d’abord le dialogue dans une session interactive.
  • Avec skipDangerousModePermissionPrompt défini uniquement dans .claude/settings.local.json, la session en arrière-plan démarre en ignorant la demande de contournement :
    • Lorsque --allow-dangerously-skip-permissions est ignoré, bypassPermissions est exclu de son cycle Shift+Tab.
    • Lorsque --permission-mode bypassPermissions ou --dangerously-skip-permissions est ignoré, la session démarre plutôt en mode Manual.
    Ajoutez "skipDangerousModePermissionPrompt": true à ~/.claude/settings.json, puis démarrez une nouvelle session en arrière-plan.
Sur Linux et macOS, Claude Code refuse de démarrer en mode bypassPermissions lors de l’exécution en tant que root ou sous sudo :
La vérification est ignorée automatiquement à l’intérieur d’un sandbox reconnu. Pour s’exécuter de manière autonome dans un conteneur, utilisez la configuration du dev container, qui exécute Claude Code en tant qu’utilisateur non-root. Les sessions cloud n’honorent pas defaultMode: "bypassPermissions" ou "dontAsk" de vos fichiers de paramètres, donc les paramètres archivés d’un référentiel ne peuvent pas démarrer une session cloud en mode bypass-permissions. Le paramètre est ignoré silencieusement et la session démarre dans le mode affiché dans la liste déroulante des modes à la place. Voir Basculer les modes de permission pour connaître les modes que les sessions cloud proposent.
bypassPermissions n’offre aucune protection contre l’injection de prompt ou les actions involontaires. Pour les contrôles de sécurité en arrière-plan avec beaucoup moins d’invites de permission, utilisez le mode auto à la place. Les administrateurs peuvent bloquer ce mode en définissant permissions.disableBypassPermissionsMode sur "disable" dans les paramètres gérés.

Contournement des permissions ignoré dans une session en arrière-plan

Cet avis signifie que la session en arrière-plan n’a pas trouvé votre acceptation de l’avertissement de contournement des permissions dans les paramètres utilisateur ou les paramètres gérés, et qu’elle a donc ignoré la demande de contournement faite au lancement :
Ajoutez "skipDangerousModePermissionPrompt": true à ~/.claude/settings.json, puis démarrez une nouvelle session en arrière-plan.

claude agents affiche l’avertissement de contournement des permissions que les sessions interactives ignorent

Si claude agents affiche l’avertissement de contournement des permissions alors que vos sessions interactives l’ignorent, vérifiez si skipDangerousModePermissionPrompt est défini dans .claude/settings.local.json ou dans un fichier --settings. Les sessions interactives considèrent la clé à cet endroit comme votre acceptation de l’avertissement, mais pas claude agents. Que vous l’y trouviez ou non, acceptez l’avertissement pour ajouter la clé à ~/.claude/settings.json, où claude agents la recherche.

Chemins protégés

Un petit ensemble de chemins contient l’état du dépôt et la configuration propre de Claude ; chaque mode applique donc sa propre règle aux écritures vers ces chemins : Dans une session démarrée avec --restricted, qui nécessite Claude Code v2.1.248 ou version ultérieure, le classificateur ne peut pas approuver les écritures de chemins protégés. Lorsque permissions.blockWritesOutsideWorkingDirectories est activé, Claude Code refuse les écritures Write, Edit et NotebookEdit vers les fichiers de paramètres dans tous les modes de permission. Dans les modes qui acheminent les écritures de chemins protégés vers le classificateur, une écriture que la vérification des liens symboliques résout vers un chemin protégé vous demande une confirmation à la place quand le chemin que Claude a demandé n’est pas lui-même protégé. Les règles permissions.allow dans les fichiers de paramètres ne pré-approuvent pas les écritures de chemins protégés. La vérification de sécurité s’exécute avant que Claude Code n’évalue les règles d’autorisation des paramètres, donc une entrée telle que Edit(.claude/**) dans ~/.claude/settings.json ou .claude/settings.json ne change pas le résultat par mode dans le tableau ci-dessus. Dans les modes qui demandent, l’invite pour une écriture vers le dossier .claude/ du projet ou vers ~/.claude/ peut offrir l’une de ces options limitées à la session :
  • Pour le dossier .claude/ du projet : Oui, et autoriser Claude à modifier les fichiers du dossier .claude de ce projet pour cette session
  • Pour ~/.claude/ : Oui, et autoriser Claude à modifier les fichiers de son dossier ~/.claude pour cette session
Répertoires protégés :
  • .git
  • .config/git
  • .vscode
  • .idea
  • .husky
  • .cargo
  • .devcontainer
  • .yarn
  • .mvn
  • .claude, à quelques exceptions près, telles que :
    • Les propres git worktrees de Claude sous .claude/worktrees/
    • Les propres fichiers de plan de la session en cours dans ~/.claude/plans/, ou dans le plansDirectory que vous définissez
    • Le répertoire temporaire propre à une session en arrière-plan à ~/.claude/jobs/<id>/tmp/
    • Les fichiers markdown du répertoire de mémoire automatique du projet, tel que ~/.claude/projects/<project>/memory/, dans une session démarrée sans --restricted
    • Les fichiers markdown d’un répertoire de mémoire de sous-agent, tel que .claude/agent-memory/, dans une session démarrée sans --restricted
  • Un répertoire que vous avez chargé avec --plugin-dir, car Claude Code recharge et exécute le code d’un mod à partir de celui-ci quand un fichier change
  • ~/.claude/dev-mods/, ou dev-mods/ dans le répertoire vers lequel pointe CLAUDE_CONFIG_DIR, où Claude enregistre les mods qu’il écrit pour vous
Fichiers protégés :
  • .gitconfig, .gitmodules
  • .bashrc, .bash_profile, .bash_login, .bash_aliases, .bash_logout, .zshrc, .zprofile, .zshenv, .zlogin, .zlogout, .profile, .envrc
  • .npmrc, .yarnrc, .yarnrc.yml, .pnp.cjs, .pnp.loader.mjs, .pnpmfile.cjs, bunfig.toml, .bunfig.toml
  • .bazelrc, .bazelversion, .bazeliskrc
  • .pre-commit-config.yaml, lefthook.yml, lefthook.yaml, .lefthook.yml, .lefthook.yaml
  • gradle-wrapper.properties, maven-wrapper.properties
  • .devcontainer.json
  • .ripgreprc, pyrightconfig.json
  • .mcp.json, .claude.json
  • remote-settings.json, la copie stockée des paramètres gérés par le serveur de votre organisation, ainsi que les fichiers de signature, de synchronisation et de consentement que Claude Code conserve avec elle, dans ~/.claude ou dans le répertoire vers lequel pointe CLAUDE_CONFIG_DIR
  • Un fichier que vous avez passé à --settings, --mcp-config ou --agents au démarrage de la session
  • Le fichier vers lequel pointe votre fichier de paramètres utilisateur, de projet ou local lorsque ce fichier de paramètres est lui-même un lien symbolique, par exemple vers un dépôt de dotfiles. Dans les modes qui acheminent les écritures de chemins protégés vers le classificateur, une écriture vers ce fichier vous demande une confirmation à la place, même lorsqu’une règle d’autorisation correspond. Si le chemin propre du fichier est également celui d’un fichier de paramètres, tel que .claude/settings.json dans un autre dossier, l’écriture est acheminée vers le classificateur comme les autres écritures de chemins protégés

Chemins critiques

Les chemins critiques sont les répertoires que Claude Code protège des commandes rm et rmdir, comme la racine du système de fichiers, votre répertoire personnel et votre répertoire de travail. Claude Code vérifie ces commandes avant leur exécution, et aucune règle allow n’approuve une commande dont il reconnaît la cible comme un chemin critique. La vérification peut manquer certaines commandes ; elle ne remplace donc pas un contrôle du système d’exploitation comme le sandboxing. Une suppression de chemin critique est une commande rm ou rmdir dont Claude Code reconnaît la cible comme un chemin critique. Aucun hook PreToolUse qui retourne "allow" n’en approuve une non plus. Une règle allow ou un hook PreToolUse ne peut pas en approuver une, même dans les modes de permission qui sautent les autres invites.
Une commande que la vérification manque ne reçoit aucun traitement particulier : tout ce qui approuve les commandes Bash dans votre session peut donc l’approuver sans invite. Cela inclut une règle allow, le mode bypassPermissions et le mode auto-allow du sandbox. La vérification s’applique à rm et rmdir ; d’autres commandes approuvées peuvent donc aussi supprimer des chemins critiques.
Ces contrôles s’appliquent que la vérification reconnaisse ou non une commande :
  • Règles deny : une règle deny qui correspond à la commande la bloque, bien qu’un mod que vous avez installé puisse encore approuver certains de ces appels
  • Sandboxing : le sandboxing fait limiter par le système d’exploitation les chemins dans lesquels les commandes Bash peuvent écrire. Les commandes en sandbox peuvent toujours supprimer votre répertoire de travail
  • Mode sandbox strict : par défaut, une commande en sandbox peut être réessayée hors du sandbox, et une règle allow ou le mode bypassPermissions peut approuver cette nouvelle tentative sans invite. Le mode sandbox strict désactive la nouvelle tentative
Ce qui arrive à une suppression que Claude Code reconnaît dépend de votre mode de permission. Remove-Item et les commandes intégrées de suppression cmd ont leurs propres vérifications, couvertes dans Remove-Item dans PowerShell.

Quels chemins sont critiques

Claude Code traite une cible rm ou rmdir comme un chemin critique quand il s’agit de l’un des éléments suivants :
  • La racine du système de fichiers
  • Les répertoires de niveau supérieur, ce qui signifie tout enfant direct de la racine, comme /usr, /etc, ou /data
  • Votre répertoire personnel. Sous Windows, son nom court 8.3 compte aussi, comme C:\Users\LONGNA~1
  • Les racines des lecteurs Windows et leurs répertoires de niveau supérieur, comme C:\ et C:\Windows. Des graphies comme \\?\C:\ et \\localhost\C$ comptent comme C:\
  • Votre répertoire de travail et ses parents
  • Vos répertoires de travail supplémentaires et leurs parents, mais uniquement quand la suppression est un glob sous l’un d’eux, comme rm -rf <dir>/*. rm -rf <dir> sur le répertoire lui-même ne déclenche pas cette vérification
Pour les chemins de lecteurs montés comme /mnt/c ou /Volumes/USB, consultez L’invite de lecteur monté. Les vérifications sur le nom court 8.3 du répertoire personnel et sur les graphies \\?\C:\ et \\localhost\C$ nécessitent Claude Code v2.1.292 ou ultérieur.

Autres cibles qui comptent comme des chemins critiques

Claude Code traite également les cibles rm et rmdir suivantes comme des chemins critiques. La dernière colonne indique pourquoi chacune compte. Pour désactiver la vérification sur une cible qui est uniquement la sortie d’une substitution de commande, définissez CLAUDE_CODE_DISABLE_SUBSTITUTION_RM_PROMPT=1 dans l’environnement qui lance Claude Code.

Suppressions à l’intérieur de commandes imbriquées et de scripts en ligne

Claude Code regarde également à l’intérieur de ces constructions :
  • Commandes imbriquées : une sous-coquille avec (...), un groupe d’accolades avec { ...; }, une substitution de commande avec $(...) ou des backticks, ou une substitution de processus avec <(...). Claude Code trouve une suppression de chemin critique qu’elle se trouve à l’intérieur de la forme imbriquée, comme dans (rm -rf ~) ou echo "$(rm -rf ~)", ou ailleurs dans la même commande.
  • Scripts en ligne : un script passé à sh, bash, zsh ou un shell POSIX similaire avec -c, comme dans bash -c 'rm -rf ~'.
    • Quand le script est entre guillemets doubles, le shell d’invocation développe ses variables avant que le shell interne ne reçoive le script. Dans find . -name '*.tmp' -exec sh -c "rm -rf \"$1\"/*" _ {} \;, la commande se développe en une suppression de la racine du système de fichiers une fois par correspondance, et Claude Code la traite comme une suppression de chemin critique.
    • Un script entre guillemets simples qui lie $1 à une valeur réelle, comme sh -c 'rm -rf "$1"/*' _ {} le fait, n’est pas signalé.
Pour désactiver la vérification sur un chemin critique saisi directement dans un script -c, comme ~, définissez CLAUDE_CODE_DISABLE_INLINE_SHELL_RM_PROMPT=1 dans l’environnement qui lance Claude Code.

Réécrire une commande signalée

Comment réécrire une commande pour qu’elle passe la vérification dépend de laquelle des autres cibles elle utilise :
  • Un glob ou une barre oblique finale sous une variable comme $DIR : protégez chaque expansion pour que le shell s’arrête avec une erreur quand la variable n’est pas définie ou vide, comme dans rm -rf "${DIR:?}"/*, ou utilisez un chemin littéral. Une suppression dont les expansions sont toutes protégées de cette manière passe cette vérification, donc en mode bypassPermissions elle s’exécute sans invite à moins qu’une autre vérification de chemin critique ne la signale.
  • Un glob ou une barre oblique finale sous une variable qui est normalement définie, comme $HOME : utilisez un chemin littéral.
  • Une variable assignée à partir d’une substitution d’impression de répertoire : utilisez un chemin littéral. Une protection "${D:?}" ne clarifie pas cette vérification, car la variable n’est pas vide.
  • Une cible qui est uniquement la sortie d’une substitution de commande : exécutez la substitution seule d’abord, puis supprimez les chemins littéraux qu’elle affiche. L’invite dit à Claude de faire la même chose.
Pour un glob ou une barre oblique finale sous une variable, l’invite nomme la commande rm signalée et indique comment la réécrire pour que la vérification passe.

L’invite Dangerous rm operation not ruled out

La raison complète indique :
Cette raison signifie que le shell peut lire la commande différemment de Claude Code : une suppression pourrait donc se trouver dans une partie non vérifiée, même en l’absence de rm. En mode auto ou bypassPermissions, un refus contenant cette phrase provient de la même vérification :
Vous recevez l’invite ou le refus qu’une suppression de chemin critique reçoit dans votre mode de permission, bypassPermissions compris, bien que vous puissiez désactiver cette invite en mode bypassPermissions. Vous ne pouvez pas approuver la commande avec une règle allow Bash ou Bash(*), le mode auto-allow du sandbox ou un hook PreToolUse qui retourne "allow". Lisez la commande, puis approuvez l’invite ou, après un refus, exécutez-la dans votre shell.

L’invite de lecteur monté

L’invite de lecteur monté apparaît sous macOS, Linux et WSL quand un rm récursif cible un chemin de lecteur monté répertorié, comme /mnt/c ou /Volumes/USB/build. Sa raison indique Dangerous rm operation on mounted drive path: <path>. Une cible /* reçoit l’invite sans le flag récursif, car Claude Code lit rm /Volumes/USB/build/* comme une suppression de /Volumes/USB/build. Même avec une règle allow pour rm, Claude Code traite la commande comme une suppression de chemin critique : une invite ou un refus selon votre mode de permission. Approuvez l’invite pour laisser le rm s’exécuter, ou désactivez l’invite.

Chemins qui reçoivent l’invite de lecteur monté

Comparez la cible de votre rm récursif ou de votre suppression /* à ces formes de chemin, où chaque espace réservé comme <drive> ou <name> représente exactement un segment de chemin : Pour un rm récursif ou non récursif sur /Volumes, /media ou /mnt eux-mêmes, vous voyez à la place la raison de chemin critique Dangerous rm operation on critical path: <path>. Une cible relative est évaluée à partir de votre répertoire de travail, donc rm -rf build pendant que vous travaillez dans /Volumes/USB cible /Volumes/USB/build et reçoit l’invite.

Désactiver l’invite de lecteur monté

Pour ne plus recevoir l’invite de lecteur monté tout en conservant les invites ayant d’autres causes, démarrez Claude Code avec CLAUDE_CODE_DISABLE_MOUNTED_DRIVE_RM_PROMPT=1 dans son environnement. Par exemple, définissez la variable dans votre shell et démarrez claude depuis celui-ci :
Dans une session démarrée de cette manière, l’invite de lecteur monté n’apparaît plus pour un lecteur entier comme /Volumes/USB ni pour les autres chemins répertoriés. Si vous autorisez Bash(rm *), utilisez le mode Manual et travaillez dans /Volumes/USB, alors rm -rf build s’exécute sans invite. Une invite qui affiche toujours Dangerous rm operation on mounted drive path signifie que la variable n’atteint pas la session :
  • Variable dans un fichier de paramètres : Claude Code ignore la variable dans le bloc env d’un fichier de paramètres, quel que soit le type de fichier de paramètres, définissez donc plutôt la variable là où vous démarrez claude
  • Session démarrée sans la variable : redémarrez claude depuis un environnement où la variable est définie, car une session en cours ne la prend pas en compte

Suppressions qui demandent toujours une approbation avec l’invite de lecteur monté désactivée

En mode Manual avec une règle allow pour rm, un rm sur un chemin de lecteur monté peut encore afficher une invite, sans la raison Dangerous rm operation on mounted drive path :
  • Cible en dehors de vos répertoires de travail : rm -rf /Volumes/USB/other pendant que vous travaillez dans /Volumes/USB/project affiche une invite. Pour supprimer cette invite, ajoutez un répertoire qui contient la cible à la session
  • Cible avec un * : rm -rf build/* affiche une invite. Approuvez cette invite pour exécuter la commande, ou demandez à Claude de nommer chaque cible sans *
  • Cible qui est un chemin critique : /mnt lui-même et votre répertoire de travail lui-même restent des chemins critiques, donc rm -rf sur l’un ou l’autre affiche une invite. Approuvez cette invite pour laisser le rm s’exécuter

Suppressions de chemins critiques dans chaque mode de permission

Ce que Claude Code fait avec une suppression de chemin critique dépend de votre mode de permission : Si une règle ask explicite correspond à la commande, Claude Code vous demande à la place, même en mode auto et sans limite de temps. Dans les modes qui demandent, un hook PermissionRequest peut répondre à l’invite. Pour exécuter ces suppressions sans invite en mode bypassPermissions, consultez Désactiver l’invite de suppression de chemin critique.

Limites de temps et refus en modes auto et bypassPermissions

En modes auto et bypassPermissions, l’invite du terminal pour une suppression de chemin critique affiche un compte à rebours de deux minutes :
  • Si le compte à rebours s’épuise avant que vous répondiez, Claude Code refuse la commande et dit à Claude quoi faire à la place, pour qu’une session sans surveillance continue de fonctionner.
  • Appuyez sur n’importe quelle touche pendant que l’invite est ouverte pour arrêter le compte à rebours et garder l’invite en attente de votre réponse.
  • Après trois de ces invites qui s’épuisent sans réponse dans une session, Claude Code arrête de les afficher et refuse immédiatement les suppressions de chemins critiques supplémentaires. L’envoi d’un nouveau message recommence le compte.
La limite de temps s’applique dans Claude Code v2.1.281 et ultérieur, tout comme le refus en mode auto hors du terminal. Hors du terminal, vous ne recevez pas cette invite : Partout où la suppression est refusée, vous pouvez lire la commande entière et l’exécuter dans votre shell. Pour changer ce que vous obtenez dans chaque mode, définissez CLAUDE_CODE_DISABLE_DANGEROUS_RM_TIMEOUT sur 1 :
  • bypassPermissions : l’invite du terminal n’a pas de limite de temps, et le panneau de chat VS Code vous demande
  • auto : le classificateur décide, dans le terminal, le panneau de chat VS Code, les exécutions -p et les sessions Agent SDK
Définissez-la dans l’environnement qui démarre Claude Code, comme votre shell ou l’option env du SDK, et non dans un fichier de paramètres Claude Code. Pour le panneau de chat, ajoutez-la à claudeCode.environmentVariables dans le fichier utilisateur settings.json de VS Code lui-même, puis démarrez une nouvelle conversation :

Désactiver l’invite de suppression de chemin critique en mode bypassPermissions

Pour exécuter sans invite, en mode bypassPermissions, les commandes Bash rm et rmdir qui ciblent des chemins critiques, démarrez Claude Code avec CLAUDE_CODE_EVEN_MORE_DANGEROUSLY_SKIP_PERMISSIONS=1 dans son environnement. Cela nécessite Claude Code v2.1.311 ou ultérieur. Claude Code lit la variable uniquement depuis l’environnement de lancement et l’ignore dans le bloc env d’un fichier de paramètres. Par exemple, définissez-la dans votre shell et démarrez claude depuis celui-ci :
Avec cette variable définie, vous perdez une invite de sécurité pour les suppressions destructrices : une commande comme rm -rf ~ peut s’exécuter sans vous demander. Ne la définissez que dans un environnement isolé dont vous pouvez vous permettre de perdre le contenu.
Les suppressions s’exécutent sans invite uniquement dans le mode bypassPermissions lui-même, pas en mode plan, et uniquement pour ce que la vérification de chemin critique signale dans les outils Bash et Monitor. Cela inclut les commandes que Claude Code ne peut pas analyser entièrement, qui s’exécutent elles aussi sans invite.

Avis au démarrage concernant l’invite de suppression de chemin critique

Pour vérifier si CLAUDE_CODE_EVEN_MORE_DANGEROUSLY_SKIP_PERMISSIONS fonctionne, lisez la ligne que Claude Code affiche au démarrage. Dans une exécution -p, elle apparaît sur stderr. Dans une application Agent SDK, passez l’option stderr pour la lire. La ligne indique l’une des choses suivantes : L’absence de ligne ne signifie pas que l’invite est active : une application Agent SDK sans option stderr ne voit aucune ligne, et les suppressions peuvent tout de même s’exécuter sans invite. Sinon, vérifiez que vous avez défini la variable dans l’environnement de lancement, que la session peut passer en mode bypassPermissions, et que claude ne se trouve pas à l’intérieur d’une autre session. Certaines sessions démarrent sans la variable. Si vous voyez l’une de ces lignes sans avoir défini la variable, trouvez où elle est définie, par exemple dans votre profil shell, et supprimez-la.

Pourquoi l’invite de suppression de chemin critique reste active

Si CLAUDE_CODE_EVEN_MORE_DANGEROUSLY_SKIP_PERMISSIONS n’a aucun effet et que les suppressions conservent leur invite ou refus habituel, recherchez des causes comme celles-ci :
  • Autre chose gère les invites de permission : un --permission-prompt-tool ou un callback canUseTool de l’Agent SDK sans --permission-prompts none, un hook PermissionRequest avec n’importe quel matcher, ou un mod qui gère cet événement. Supprimez le hook, le mod, l’outil ou le callback et redémarrez claude
  • Le panneau de chat de l’extension VS Code ou l’application Desktop exécute la session : démarrez plutôt claude dans un terminal, comme le terminal intégré d’un IDE
  • Une règle couvre Bash, Edit ou Read : une règle deny ou ask qui cible l’un de ces outils, au lancement ou dès que Claude Code la lit pendant la session, même si vous la supprimez ensuite. Supprimez la règle et redémarrez claude. Pour exclure un outil, utilisez --tools au lieu d’une règle deny
  • permissions.blockReadsOutsideWorkingDirectories est activé : supprimez le paramètre de chaque fichier de paramètres qui le définit sur true, puis redémarrez claude
  • claude s’exécute à l’intérieur d’une autre session : un claude démarré depuis l’outil Bash d’une session ou depuis un hook, même avec la variable sur sa ligne de commande. Démarrez claude depuis votre propre shell. Ne comptez pas sur cette limite des sessions imbriquées comme frontière de sécurité
  • Un hook PreToolUse répond ask pour une suppression : modifiez ce que le hook retourne
  • Claude Code démarre la session pour vous : les sessions en arrière-plan, les coéquipiers d’une équipe d’agents dans des volets divisés et les sessions créées par un serveur Remote Control démarrent sans la variable. Démarrez claude depuis votre propre shell
  • Les paramètres gérés ne peuvent pas être lus : Claude Code n’a pas réussi à lire vos sources de paramètres gérés. Si les paramètres gérés par le serveur continuent d’échouer au chargement, consultez Remote managed settings failed to load. Pour tout autre échec qui n’est pas une requête au registre, demandez à la personne qui gère cette source de le corriger
  • Le registre Windows ne peut pas être interrogé : sous Windows et dans WSL, la variable nécessite une réponse du registre, même quand WSL ne l’utilise pas pour les paramètres. La requête peut échouer pendant toute la session sur un Windows non anglophone, dans WSL avec l’interop désactivée, ou dans un conteneur sur un noyau WSL2. Si l’interop est désactivée, activez-la. Sinon, exécutez ces suppressions vous-même

Remove-Item dans PowerShell

Quand vous activez l’outil PowerShell, Claude Code donne à Remove-Item et aux commandes intégrées cmd rd, rmdir, del, et erase leurs propres vérifications, distinctes de la liste des chemins critiques rm. Pour Remove-Item, le résultat dépend de la cible, et le premier cas correspondant s’applique :
  • Chemins système : la racine du système de fichiers et ses répertoires de niveau supérieur, les racines des lecteurs et leurs répertoires de niveau supérieur, et votre répertoire personnel. Claude Code refuse la commande dans tous les modes, sans vous demander.
  • Wildcards : un * nu, ou n’importe quelle cible se terminant par /* ou \*, y compris un glob sous une variable shell comme $dir/*. Claude Code refuse la commande dans tous les modes, sans vous demander, avant que le classificateur ne la voie.
  • Votre répertoire de travail ou l’un de ses parents, avec -Recurse : Claude Code traite la commande comme n’importe quelle autre qui nécessite une approbation dans votre mode de permission, donc elle vous demande dans les modes qui demandent, l’envoie au classificateur en mode auto, et la refuse en mode dontAsk. Le mode bypassPermissions saute cette vérification.
Le cas des chemins système s’applique également à rd, rmdir, del, et erase quand Claude les exécute via cmd, comme dans cmd /c rd /s /q C:\Users. Par défaut, Claude Code refuse une telle commande dans tous les modes, sans vous demander. Cette vérification cmd nécessite Claude Code v2.1.283 ou ultérieur. Lors de l’évaluation d’une cible cmd, Claude Code traite une variable PowerShell qui suit du texte littéral comme vide. Cela rend cmd /c rd /s /q "C:\$name" une suppression de C:\, donc elle est également refusée. Un wildcard final compte comme le dossier qu’il vide, donc cmd /c del /q C:\* est refusé et cmd /c del /q dist\* dans votre projet ne l’est pas. Pour désactiver la vérification cmd, définissez CLAUDE_CODE_DISABLE_POWERSHELL_CMD_RM_DENY=1 dans l’environnement qui lance Claude Code. Claude Code ignore cette variable dans le bloc env d’un fichier de paramètres. Remove-Item sur un chemin système reste refusé de toute façon.

Voir aussi

  • Permissions : règles allow, ask et deny ; politiques gérées
  • Configurer le mode auto : indiquez au classificateur l’infrastructure de confiance de votre organisation
  • Hooks : logique de permission personnalisée via les hooks PreToolUse et PermissionRequest
  • Sécurité : protections et bonnes pratiques
  • Sandboxing : isolation du système de fichiers et du réseau pour les commandes Bash
  • Mode non-interactif : exécutez Claude Code avec le flag -p