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 comprisbypassPermissions, 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é
AskUserQuestionet les outils MCP marquésrequiresUserInteraction -
Les suppressions
rmetrmdirreconnues ciblant un chemin critique, qu’aucune règle d’autorisation ni aucun"allow"d’un hookPreToolUsen’approuve, ainsi que les commandes Bash signalées parDangerous rm operation not ruled out - Les protections de messagerie inter-sessions
-
Les lectures en dehors des répertoires de travail lorsque
permissions.blockReadsOutsideWorkingDirectoriesest activé : les commandes Bash reconnues de lecture de fichiers déclenchent une demande de permission même en mode auto et en modebypassPermissions, 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.blockWritesOutsideWorkingDirectoriesest activé : Claude Code refuse les appelsWrite,EditetNotebookEdità 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 :-
Le flag
--permission-mode, ou--dangerously-skip-permissions -
permissions.defaultModedans un fichier de paramètres Si vous définissez"auto"dans.claude/settings.jsonou.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’undefaultModede~/.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. - La valeur par défaut intégrée
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
~/.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 :
- Ajouter des règles d’autorisation : Claude exécute les appels que vous listez. Passez
--allowedTools "Bash(npm test)"àclaude -p, ou définissez l’option des outils autorisés de votre SDK. - Démarrer en mode auto : un modèle classifieur examine les appels, vous n’avez donc rien à lister au préalable. Passez
--permission-mode autoàclaude -p, ou définissez l’option de mode de permission de votre SDK.
- CLI
- TypeScript
- Python
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éfinitpermissions.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 :
⏸ 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éfautauto 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 vers le mode auto : appuyez sur
Shift+Tab, ou utilisez la commande de votre interface - Démarrer en mode auto : passez
--permission-mode auto, ou définissezpermissions.defaultModesurautodans vos paramètres utilisateur, ou dans les paramètres gérés pour toute votre organisation. Voir Démarrer dans un mode de permission différent - Supprimer le mode auto : définissez
permissions.disableAutoModesur"disable"dans les paramètres gérés - Bloquer
bypassPermissions: définissezpermissions.disableBypassPermissionsModesur"disable"dans les paramètres gérés
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.- CLI
- VS Code
- JetBrains
- Desktop
- Web and mobile
En cours de session : appuyez sur Tous les modes ne sont pas dans le cycle par défaut :Comme valeur par défaut : définissez
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.auto: apparaît quand le mode auto est disponible ; basculer vers celui-ci change les modes de permission sans invite de confirmationbypassPermissions: apparaît après que vous ayez démarré avec--permission-mode bypassPermissions,--dangerously-skip-permissions,--allow-dangerously-skip-permissions, oupermissions.defaultMode: "bypassPermissions"dans les paramètres utilisateur,--settings, ou gérés. La variante--allow-ajoute le mode de permission au cycle sans l’activerdontAsk: n’apparaît jamais dans le cycle ; définissez-le avec--permission-mode dontAsk
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.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 modeacceptEdits 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 :
- Les chemins en dehors de cette portée
- Les écritures vers les chemins protégés
- Les suppressions de chemins critiques reconnues par
rmetrmdir touchavec autre chose que de simples chemins de fichiers, par exemple une option, un glob ou un préfixe tel quetimeout 5ouLANG=C- Toutes les autres commandes Bash sauf l’ensemble intégré en lecture seule
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 :- Sessions de terminal interactives avec le contournement des permissions disponible : ni le classifieur ni une demande de permission ne s’appliquent aux commandes de planification. Ignorer toutes les vérifications avec le mode bypassPermissions décrit les quelques éléments qui déclenchent encore une demande dans ce cas.
- Mode auto disponible et paramètre
useAutoModeDuringPlanactivé, ce qui est le cas par défaut : le classifieur examine les commandes shell autres que les suppressions de chemins critiques au lieu de vous demander. Les commandes approuvées s’exécutent et celles qui sont rejetées sont bloquées. - Mode auto non disponible, ou
useAutoModeDuringPlandésactivé : les commandes en dehors de l’ensemble intégré de commandes en lecture seule demandent une approbation, y compris lorsque le mode d’autorisation automatique du sandbox est activé.
Shift+Tab ou en préfixant un prompt unique avec /plan. Vous pouvez également démarrer en mode plan depuis la CLI :
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.
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éfinissezdefaultMode 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 avecSendMessage, 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 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.disableAutoModesur"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.
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écutionsclaude -p ou Agent SDK démarrent en mode Manual, dont la valeur de configuration est default :
- Sessions de terminal interactif et VS Code : pour les démarrer dans un mode de permission autre qu’auto, définissez
permissions.defaultModecomme le décrit Démarrer dans un mode de permission différent, ou choisissez-en un dans l’indicateur de mode de l’extension VS Code. Dans quel mode une session démarre répertorie les versions de Claude Code qui les démarrent en mode auto. - Exécutions
claude -pet Agent SDK : pour en démarrer une en mode auto, passez--permission-mode autoàclaude -p, ou passezpermissionMode: "auto"en TypeScript oupermission_mode="auto"en Python. Si vous ne passez aucun mode de permission, consultez Appels d’outils refusés dans les exécutionsclaude -pet Agent SDK, qui couvre également les versions antérieures de Claude Code.
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
-pet 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_URLvers 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.
- 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.
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éfinissezCLAUDE_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 :
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=: recherchezignoring CLAUDE_CODE_AUTO_MODE_MODELdans le log, qui donne la raison et toute étape à suivre - Aucune ligne de ce type : lisez
Auto mode serverdans/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 avecgit 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 dropougit stash clear, dont le classificateur présume qu’ils abandonneraient les modifications non commitées -
git commit --amendquand le commit à HEAD n’a pas été créé dans cette session -
À partir de v2.1.198,
git commit --amendquand le commit à HEAD a déjà été poussé. Une reformulation du message seul n’est pas bloquée :--amend -msans rien de nouvellement indexé, sur un commit que Claude a créé pendant cette session -
terraform destroy,pulumi destroy,cdk destroyouterragrunt 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 applyou le/deployou/merged’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
--allqui 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-permissionsou--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,$TMPDIRou 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-urlougit 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 forkou 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
.jsonlsous~/.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"ouRemove-Item -Recurse -Force $dirdont 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 dansrm -rf "$VAR"/*, est plutôt un chemin critique. Les ciblesRemove-Itemqui sont un*seul ou se terminent par/*ou\*n’atteignent jamais le classificateur : Claude Code les refuse directement.
- 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
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
- 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
.envet 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
productionough-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èglespermissions.denypeuvent 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
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 quepermissions.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.blockReadsOutsideWorkingDirectoriessurtruedans 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
/permissionssous 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.Comment le classificateur évalue les actions
Comment le classificateur évalue les actions
Comment le mode auto gère les sous-agents
Comment le mode auto gère les sous-agents
Le classificateur vérifie le travail des sous-agents à trois moments :
- 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.
- 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
permissionModedans le frontmatter du sous-agent est ignoré. - 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.
Coût et latence
Coût et latence
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 modedontAsk, 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 suppressions
rmetrmdirreconnues ciblant un chemin critique, commerm -rf /etrm -rf ~ - Les lectures depuis un chemin réseau
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 modebypassPermissions 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
isolatePeerMachinespour les messages vers vos sessions au-delà de cette machine apparaît toujours. - Quand aucune valeur
crossSessionInboundne 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.
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.
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 :
--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
skipDangerousModePermissionPromptsurtruedans~/.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 surfalse. La référenceskipDangerousModePermissionPrompténumère les autres fichiers de paramètres où vous ou votre organisation pouvez le définir. - Si vous refusez : Claude Code quitte.
--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 bypassPermissionsest refusé. Acceptez d’abord le dialogue dans une session interactive. -
Avec
skipDangerousModePermissionPromptdé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-permissionsest ignoré,bypassPermissionsest exclu de son cycleShift+Tab. - Lorsque
--permission-mode bypassPermissionsou--dangerously-skip-permissionsest ignoré, la session démarre plutôt en mode Manual.
"skipDangerousModePermissionPrompt": trueà~/.claude/settings.json, puis démarrez une nouvelle session en arrière-plan. - Lorsque
bypassPermissions lors de l’exécution en tant que root ou sous sudo :
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.
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 :"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
.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 leplansDirectoryque 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
- Les propres git worktrees de Claude sous
- 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/, oudev-mods/dans le répertoire vers lequel pointeCLAUDE_CONFIG_DIR, où Claude enregistre les mods qu’il écrit pour vous
.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.yamlgradle-wrapper.properties,maven-wrapper.properties.devcontainer.json.ripgreprc,pyrightconfig.json.mcp.json,.claude.jsonremote-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~/.claudeou dans le répertoire vers lequel pointeCLAUDE_CONFIG_DIR- Un fichier que vous avez passé à
--settings,--mcp-configou--agentsau 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.jsondans 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 commandesrm 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.
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
bypassPermissionspeut approuver cette nouvelle tentative sans invite. Le mode sandbox strict désactive la nouvelle tentative
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 ciblerm 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:\etC:\Windows. Des graphies comme\\?\C:\et\\localhost\C$comptent commeC:\ - 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
/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 ciblesrm 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 ~)ouecho "$(rm -rf ~)", ou ailleurs dans la même commande. - Scripts en ligne : un script passé à
sh,bash,zshou un shell POSIX similaire avec-c, comme dansbash -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, commesh -c 'rm -rf "$1"/*' _ {}le fait, n’est pas signalé.
- 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
-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 dansrm -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 modebypassPermissionselle 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.
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 :
rm. En mode auto ou bypassPermissions, un refus contenant cette phrase provient de la même vérification :
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 unrm 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 votrerm 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 avecCLAUDE_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 :
/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
envd’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émarrezclaude - Session démarrée sans la variable : redémarrez
claudedepuis 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 pourrm, 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/otherpendant que vous travaillez dans/Volumes/USB/projectaffiche 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 :
/mntlui-même et votre répertoire de travail lui-même restent des chemins critiques, doncrm -rfsur l’un ou l’autre affiche une invite. Approuvez cette invite pour laisser lerms’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 modesauto 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.
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 demandeauto: le classificateur décide, dans le terminal, le panneau de chat VS Code, les exécutions-pet les sessions Agent SDK
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 modebypassPermissions, 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 :
- macOS, Linux, WSL
- Windows PowerShell
- Windows CMD
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 siCLAUDE_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 :
is set, so dangerous rm commands can run without a prompt: les suppressions peuvent s’exécuter sans invite une fois les paramètres gérés et les hooks des plugins chargés. Si les suppressions continuent de recevoir une invite ou un refus, consultez Pourquoi l’invite de suppression de chemin critique reste activehas no effect in this session: les suppressions conservent leur invite ou leur refus habituel pendant toute la session. Pour changer cela, trouvez votre cas dans Pourquoi l’invite de suppression de chemin critique reste activehas no effect while the Windows registry cannot be read for managed settings: les suppressions conservent leur invite ou leur refus habituel, et la variable prend effet sans redémarrage si une lecture ultérieure du registre réussit. Si les suppressions continuent de recevoir une invite ou un refus, consultez Pourquoi l’invite de suppression de chemin critique reste active
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
SiCLAUDE_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-toolou un callbackcanUseToolde l’Agent SDK sans--permission-prompts none, un hookPermissionRequestavec 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émarrezclaude - Le panneau de chat de l’extension VS Code ou l’application Desktop exécute la session : démarrez plutôt
claudedans 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--toolsau lieu d’une règle deny permissions.blockReadsOutsideWorkingDirectoriesest activé : supprimez le paramètre de chaque fichier de paramètres qui le définit surtrue, puis redémarrezclaudeclaudes’exécute à l’intérieur d’une autre session : unclaudedémarré depuis l’outil Bash d’une session ou depuis un hook, même avec la variable sur sa ligne de commande. Démarrezclaudedepuis votre propre shell. Ne comptez pas sur cette limite des sessions imbriquées comme frontière de sécurité- Un hook
PreToolUserépondaskpour 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
claudedepuis 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 modeauto, et la refuse en modedontAsk. Le modebypassPermissionssaute cette vérification.
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
PreToolUseetPermissionRequest - 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
- 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
- Les outils MCP marqués
- 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
- 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
- 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
- Dans une session avec examen du classificateur côté serveur, les commandes shell en lecture seule et en sandbox attendent cet examen et sont bloquées s’il les signale
- Une écriture à l’intérieur de votre répertoire de travail que la vérification des liens symboliques résout vers un emplacement extérieur vous demande la permission
- Quand Claude lit un artefact créé par quelqu’un d’autre, les cas d’approbation répertoriés dans cette section s’appliquent
- Une lecture depuis un chemin réseau vous demande la permission
- 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
- 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
Un mod que vous installez et qui gèrermetrmdirreconnues ciblant un chemin critiquerequiresUserInteractionvous 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 suraskdans les sessions où ce paramètre atteint Claude CodeBash(git push *), se rabattent sur une demande de permissionrequiresUserInteractionqui 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[Data Exfiltration], plutôt que de donner une explication rédigée ; voir Examiner les refustool.checkpeut é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 :
- Interpréteurs avec caractères génériques comme
- Commandes d’exécution des gestionnaires de paquets
- Règles
- Règles
Les règles étroites commeBash(*)ouPowerShell(*)globauxBash(python*)AgentallowMonitorallow, car Claude Code exécute les commandes Monitor via le shellBash(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èglesMonitorallow 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 égalementgit statuslui-même avant une commande qui abandonnerait du travail non commité, commegit reset --hardourm -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éfinitstatus.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 champclassifierContextd’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.