Skill existant plutôt que d’ajouter une nouvelle entrée d’outil.
En mode auto, un classifieur décide la plupart des demandes de permission à votre place. La colonne
Permission required indique si l’outil demande en mode Manuel pour les chemins à l’intérieur du répertoire de travail. Les outils d’accès aux fichiers marqués Non, y compris Read, Grep et Glob, demandent toujours pour les chemins en dehors du répertoire de travail et des répertoires supplémentaires. Bash est marqué Oui mais exécute un ensemble intégré de commandes en lecture seule sans demander.Configurer les outils avec des règles de permission et des hooks
Pour la plupart, Claude décide quand utiliser ces outils et vous n’avez pas besoin de les nommer vous-même lors de l’interaction avec Claude. Vous référencez les noms d’outils directement lors de la définition des permissions et d’autres configurations :- dans
permissions.allowetpermissions.denydans les paramètres, et l’interface/permissions - dans les drapeaux CLI
--allowedToolset--disallowedTools - dans les options
allowedToolsetdisallowedToolsdu SDK Agent - dans le frontmatter
allowed-toolsd’une skill - dans la condition
ifd’un hook
ToolName(specifier). Le spécificateur dépend de l’outil, et plusieurs outils partagent un format :
Les outils non listés ici, tels que
ExitPlanMode ou ShareOnboardingGuide, acceptent uniquement le nom d’outil nu sans spécificateur.
Une règle d’autorisation Edit(...) accorde également l’accès en lecture au même chemin, vous n’avez donc pas besoin d’une règle Read(...) correspondante. Une règle de refus Read(...) bloque également les outils Edit et Write sur le même chemin, y compris la création d’un nouveau fichier à cet endroit, car les deux outils modifient le contenu que Claude doit pouvoir relire. Pour l’outil Write, la vérification de refus Read nécessite Claude Code v2.1.228 ou ultérieur.
Les champs matcher des hooks utilisent des noms d’outils nus, pas le format entre parenthèses. Voir motifs de correspondance pour les règles de correspondance. Pour les noms de champs que chaque outil transmet à tool_input dans les hooks, voir la référence d’entrée PreToolUse.
Comportement de l’outil Agent
L’outil Agent lance un sous-agent dans une fenêtre de contexte distincte. Le sous-agent accomplit sa tâche de manière autonome, puis renvoie son résultat à la conversation parente. La conversation parente ne voit pas les appels d’outils ni les sorties intermédiaires du sous-agent, seulement ce résultat final. Le même outil peut aussi lancer un coéquipier ou un fork :- Coéquipier : lorsque les équipes d’agents sont activées, un appel qui comporte un
namepeut lancer à la place un coéquipier, qui rend compte via les messages de l’équipe plutôt qu’en renvoyant un résultat - Fork : partout où le mode fork est activé, l’outil peut lancer un sous-agent forké, qui hérite de l’intégralité de la conversation parente au lieu de repartir de zéro
maxTurns dans la définition du sous-agent. Lorsque le sous-agent atteint la limite, Claude Code marque le résultat renvoyé comme une sortie partielle, et Claude peut reprendre le sous-agent pour continuer.
Les outils qu’un sous-agent non forké peut utiliser dépendent des champs tools et disallowedTools de la définition du sous-agent :
- Aucun des deux champs défini : le sous-agent hérite de chaque outil disponible pour les sous-agents.
toolsuniquement : le sous-agent n’obtient que les outils listés.disallowedToolsuniquement : le sous-agent obtient tous les outils du parent, à l’exception de ceux listés.- Les deux définis :
disallowedToolsa priorité. Un outil listé dans les deux est retiré.
tools. Lorsque les conditions de l’entrée SubagentHandback du tableau des outils sont remplies, Claude Code fournit également cet outil au sous-agent, même si vous l’omettez de tools ou le listez dans disallowedTools.
Si aucune entrée de la liste tools d’un sous-agent ne correspond à un outil utilisable, l’outil Agent renvoie généralement une erreur nommant ces entrées au lieu de lancer le sous-agent ; consultez Agent would be spawned with zero tools pour le message et la manière de corriger chaque entrée.
Le lancement du sous-agent ne déclenche pas en lui-même de demande de permission. Claude Code vérifie les appels d’outils du sous-agent par rapport à vos règles de permission au fur et à mesure de son exécution.
L’endroit où vous voyez les demandes de permission d’un sous-agent dépend de son exécution au premier plan ou en arrière-plan. Claude Code exécute les sous-agents en arrière-plan par défaut, hormis les cas qui s’exécutent au premier plan.
- Les sous-agents au premier plan affichent les mêmes demandes de permission que celles que vous verriez dans la conversation principale, au moment où chaque appel d’outil a lieu.
- Les sous-agents en arrière-plan font apparaître leurs demandes de permission dans votre session principale. La demande indique quel sous-agent la formule, et appuyer sur Esc refuse cet appel d’outil sans arrêter le sous-agent.
tools, par exemple en retirant Bash de la liste, ou définissez des règles de refus dans vos paramètres.
Comportement de l’outil AskUserQuestion
Claude utiliseAskUserQuestion pour vous poser des questions à choix multiples lorsqu’il a besoin d’une décision ou d’une clarification. Répondez en choisissant une option, ou tapez votre propre texte via la ligne Other ou le champ des notes.
Délai d’expiration de la continuation automatique des questions
Les questions restent ouvertes jusqu’à ce que vous y répondiez. Si vous souhaitez qu’une question que vous laissez sans réponse se ferme finalement et permette à Claude de continuer sans vous, définissez le paramètreaskUserQuestionTimeout sur 60s, 5m, ou 10m, soit dans votre fichier settings.json utilisateur, soit à partir de la ligne Question auto-continue timeout dans /config.
Après qu’une question soit restée aussi longtemps sans entrée, la boîte de dialogue se ferme d’elle-même : elle soumet toutes les options que vous aviez déjà sélectionnées et indique à Claude que vous êtes peut-être absent de votre clavier, afin que Claude procède selon son propre jugement et puisse poser à nouveau la question plus tard. Vous voyez un compte à rebours pour les 20 dernières secondes. Appuyez sur n’importe quelle touche pour redémarrer le minuteur. Tant que votre terminal signale que sa fenêtre a le focus, le minuteur ne décompte pas.
Le minuteur ne démarre jamais pour une question que Claude pose dans une session en arrière-plan, en mode lecteur d’écran, ou lorsque la session est connectée à Remote Control. Ces questions attendent jusqu’à ce que vous y répondiez. Le délai d’expiration s’applique uniquement aux questions à choix multiples de AskUserQuestion ; les demandes de permission, y compris l’approbation du plan, ne se résolvent jamais automatiquement en cas d’inactivité.
Comportement de l’outil Bash
L’outil Bash exécute chaque commande dans un processus séparé.Ce qui persiste entre les commandes
- Quand Claude exécute
cddans la session principale, le nouveau répertoire de travail est conservé pour les commandes Bash ultérieures tant qu’il reste à l’intérieur du répertoire du projet ou d’un répertoire de travail supplémentaire que vous avez ajouté avec--add-dir,/add-dir, ouadditionalDirectoriesdans les paramètres. Cela inclut les commandes que Claude exécute en réponse à vos messages ultérieurs.- Les sessions de sous-agent ne conservent jamais les changements de répertoire de travail.
- Si
cdaboutit en dehors de ces répertoires, Claude Code réinitialise le répertoire du projet et ajouteShell cwd was reset to <dir>au résultat de l’outil. - Pour désactiver cette conservation afin que chaque commande Bash démarre dans le répertoire du projet, définissez
CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR=1.
- Les variables d’environnement ne persistent pas. Un
exportdans une commande ne sera pas disponible dans la suivante. - Les alias et les fonctions shell définis dans votre fichier de démarrage shell sont disponibles. Au démarrage de la session, Claude Code source
~/.zshrc,~/.bashrc, ou~/.profileselon votre shell, capture les alias, fonctions et options shell résultants, et les applique à chaque commande Bash.
CLAUDE_ENV_FILE sur un script shell avant de lancer Claude Code, ou utilisez un hook SessionStart pour le remplir dynamiquement.
Limites de délai d’expiration et de sortie
Chaque commande s’exécute sous un délai d’expiration, et Claude le gère : quand il a besoin de plus que le délai par défaut pour une commande, il transmet le paramètretimeout avec cet appel. Vous ne définissez jamais un délai d’expiration par commande.
Deux variables d’environnement contrôlent ce que Claude obtient pour une commande qui s’exécute au premier plan :
BASH_DEFAULT_TIMEOUT_MS— le délai par défaut quand Claude ne transmet pas de délai d’expiration ; deux minutes par défautBASH_MAX_TIMEOUT_MS— avec le délai par défaut, définit le plafond qui limite ce que Claude demande : le plafond effectif est le plus grand des deux, dix minutes par défaut
timeout sur une commande que Claude démarre en arrière-plan définit plutôt la durée pendant laquelle la commande peut s’exécuter là, avec le délai par défaut et le maximum séparés de cette limite. L’outil PowerShell suit les mêmes règles de délai d’expiration et lit les deux mêmes variables.
Limites de sortie
Claude Code diffuse la sortie d’une commande vers un fichier de travail au fur et à mesure que la commande s’exécute ; une commande dont la sortie dépasse 5 Go est arrêtée. Quand la commande se termine, Claude Code relit la sortie à partir de ce fichier, jusqu’à la fenêtre de relecture décrite ci-dessous. La quantité de sortie qui atteint Claude en ligne dépend de la façon dont Claude Code traite le résultat comme un échec :
Une commande qui se termine avec le code 1 compte comme un résultat valide pour l’outil Bash uniquement quand Claude Code reconnaît le code de sortie 1 comme un résultat bénin pour cette commande :
grep, rg, egrep, fgrep, find, diff, test, et [, plus git diff et git grep. Toute autre commande qui se termine avec le code 1 compte comme un échec, même quand le code de sortie 1 est un résultat informatif bénin : pas de correspondances pour pgrep et jq -e, fichiers qui diffèrent pour cmp.
BASH_MAX_OUTPUT_LENGTH définit le nombre de caractères de sortie que Claude Code relit à partir du fichier de travail dans le résultat d’une commande : 30 000 par défaut, jusqu’à un plafond dur de 150 000. Augmentez-le quand vos commandes débordent régulièrement cette fenêtre, comme une compilation détaillée ou un journal de suite de tests complet. L’augmenter élargit la fenêtre de relecture, qui est aussi la fenêtre à partir de laquelle l’extrait d’une commande défaillante est coupé. Il n’augmente pas les plafonds en ligne : un résultat valide au-delà du plafond en ligne arrive comme un chemin de fichier plus aperçu indépendamment de cette variable.
Pour modifier la quantité de résultat valide que Claude reçoit en ligne, définissez plutôt le paramètre bashOutputMaxChars, jusqu’à 128 000 caractères. Il dimensionne le plafond en ligne et la fenêtre de relecture ensemble, et Claude Code ignore alors BASH_MAX_OUTPUT_LENGTH. Nécessite Claude Code v2.1.261 ou ultérieur.
Commandes en arrière-plan
Pour les processus de longue durée tels que les serveurs de développement ou les compilations de surveillance, Claude peut définirrun_in_background: true pour démarrer la commande en tant que tâche en arrière-plan et continuer à travailler pendant qu’elle s’exécute. Listez et arrêtez les tâches en arrière-plan avec /tasks. Après en avoir arrêté une là, ou à partir d’un client connecté tel que l’application de bureau, Claude continue au lieu d’attendre. Si un sous-agent a démarré la commande, c’est ce sous-agent qui continue.
Quand une commande en arrière-plan s’arrête
Une commande qu’un sous-agent au premier plan a démarrée s’arrête quand l’exécution de ce sous-agent se termine, qu’elle ait réussi, échoué ou ait été interrompue. Une commande que la conversation principale ou un sous-agent en arrière-plan a démarrée continue à s’exécuter après une réponse finale, jusqu’à ce qu’elle se termine, soit arrêtée, ou atteigne sa limite de temps. Tant qu’une commande démarrée par la conversation principale est encore en cours d’exécution, une exécution en mode non interactif avec le flag-p reste ouverte après son résultat jusqu’à ce que cette commande se termine ou atteigne sa limite de temps. Une commande qu’un sous-agent en arrière-plan a démarrée est arrêtée quand l’exécution se termine.
Limite de temps pour les commandes en arrière-plan
Dans une session qui s’exécute sans surveillance, comme une exécution avec le flag-p, une application Agent SDK, un job CI ou une session cloud, les commandes Bash et PowerShell en arrière-plan ont une limite de temps. Une session locale dans laquelle vous travaillez depuis un terminal, l’application de bureau ou l’extension VS Code n’a pas de limite de temps sur les commandes en arrière-plan.
La limite de temps nécessite Claude Code v2.1.285 ou ultérieur. Avant v2.1.288, elle s’appliquait dans chaque session.
La limite de temps est comptée à partir du moment où la commande entre en arrière-plan :
- Une commande que Claude démarre en arrière-plan obtient 30 minutes, ou le
timeoutque Claude transmet avecrun_in_background, jusqu’à un maximum de 2 heures - Une commande qui démarre au premier plan puis passe en arrière-plan à son délai d’expiration obtient 30 minutes à partir du passage
-p dont vous transmettez le prompt sous forme de texte plutôt qu’avec --input-format stream-json, les deux valeurs par défaut sont de 10 minutes au lieu de 30, car l’exécution attend les commandes en arrière-plan après son résultat.
Quand une commande en arrière-plan atteint sa limite de temps, Claude Code l’arrête et dit à Claude pourquoi, et Claude peut redémarrer la commande avec un timeout plus long si le travail en a encore besoin. L’avis d’arrêt se lit Background command "<description>" was stopped after reaching its background time limit.
Augmenter la limite de temps pour les commandes en arrière-plan
Deux variables d’environnement augmentent ces limites, pour les commandes Bash et PowerShell de la même manière. Les deux prennent des millisecondes, et aucune ne peut raccourcir une limite : une valeur inférieure laisse les valeurs par défaut et le maximum de 2 heures en place.- Définissez
BASH_DEFAULT_TIMEOUT_MSau-dessus de1800000pour remplacer le délai par défaut de 30 minutes par cette valeur, à la fois pour les commandes que Claude démarre sanstimeoutet pour les commandes déplacées. Dans une exécution-pdont vous transmettez le prompt sous forme de texte, toute valeur supérieure à600000remplace son délai par défaut de 10 minutes - Définissez
BASH_MAX_TIMEOUT_MSau-dessus de7200000pour augmenter le maximum de 2 heures à cette valeur. DéfinirBASH_DEFAULT_TIMEOUT_MSau-dessus de7200000augmente le maximum de la même manière
Commandes au premier plan qui passent en arrière-plan
Quand une commande au premier plan atteint son délai d’expiration sans se terminer, Claude Code la déplace en arrière-plan au lieu de l’arrêter, sauf si la commande commence parsleep. La limite de temps d’une commande déplacée est comptée à partir du déplacement, et la commande déplacée d’un sous-agent au premier plan s’arrête toujours quand l’exécution de ce sous-agent se termine.
Définir CLAUDE_CODE_DISABLE_BACKGROUND_TASKS=1 ou exécuter en mode bare désactive la mise en arrière-plan automatique, de sorte qu’une commande qui atteint son délai d’expiration s’arrête à la place.
Le résultat d’une commande déplacée en arrière-plan indique ce qui s’est passé :
- Quand le délai d’expiration déclenche le déplacement, le résultat le signale explicitement :
Command did not complete within its 120s timeout and was moved to the background, avec les secondes correspondant au délai d’expiration qui s’appliquait, suivi de l’ID de tâche et du chemin du fichier dans lequel la sortie est écrite. - Un
cd,pushd,popd, ouchdirà l’intérieur d’une commande qui est déplacée en arrière-plan ne se transporte jamais : le résultat indiqueSession cwd remains <dir>; directory changes made by the backgrounded command do not apply to subsequent commands., donc Claude n’agit pas sur un changement de répertoire qui ne s’est pas produit.
Limite de mémoire sur Linux et WSL
Sur Linux et WSL, définissezCLAUDE_CODE_TOOL_MEMORY_LIMIT sur une taille telle que 4G pour limiter la mémoire que les commandes des outils Bash, PowerShell et Monitor peuvent utiliser, afin qu’une compilation incontrôlée ne prenne pas la mémoire dont le reste de la session a besoin. Nécessite Claude Code v2.1.233 ou ultérieur. Avant v2.1.246, les commandes de l’outil Monitor s’exécutaient en dehors du plafond.
- Écrivez la taille comme un nombre d’octets ou avec un suffixe
K,M,G, ouT. Définissez0,off,false,no, ounonepour désactiver le plafond. Claude Code ignore toute autre valeur qu’il ne peut pas lire comme une taille, telle que4e9. - Claude Code compte toutes les commandes Bash, PowerShell et Monitor d’une session par rapport au plafond unique, pas chaque commande par elle-même.
- Claude Code applique le plafond avec un cgroup de mémoire. Quand il ne peut pas configurer le cgroup, les commandes s’exécutent sans plafond, et le journal de débogage de
claude --debugexplique pourquoi. - Après que le premier processus que Claude Code a démarré a activé le plafond, ou l’a désactivé en raison d’une valeur off ou d’une configuration de cgroup échouée, Claude Code maintient ce résultat jusqu’à ce que vous relanciez. Pour appliquer une valeur modifiée ou supprimée, ou une configuration corrigée, lancez
claudeà nouveau. - Quand les commandes ne peuvent pas rester sous le plafond, le noyau arrête une commande, et rien dans son résultat ne nomme le plafond.
CLAUDE_CODE_TOOL_MEMORY_CGROUP_EXCLUDE sur une liste séparée par des virgules des types à exempter du plafond ; Claude Code applique le plafond à chaque type qui ne figure pas sur votre liste. Définissez-le sur none pour plafonner chaque type, ou sur all-new pour plafonner uniquement les commandes des outils Bash, PowerShell et Monitor. Nécessite Claude Code v2.1.246 ou ultérieur. Les types que vous pouvez nommer :
mcp: serveurs MCP locauxlsp: serveurs de langagehooks: commandes hookplugin: commandes que les plugins exécutenthelper: les propres commandes d’assistance de Claude Code, telles quegitagent: processus Claude Code enfants, tels que les coéquipiers agents
- Noms inconnus : Claude Code ignore les noms qu’il ne reconnaît pas
- Variable non définie : Claude Code prend l’ensemble des autres types plafonnés à partir de la configuration qu’Anthropic livre depuis le serveur, et cet ensemble peut changer au fil du temps, donc définissez la variable quand vous avez besoin d’un ensemble qui ne change pas
- Hooks de contrôle des permissions : même avec chaque type plafonné, Claude Code exempte du plafond un hook qui peut bloquer ou modifier le résultat d’une action, et tout serveur MCP que ce hook appelle, de sorte que le noyau ne peut pas, en arrêtant un hook de contrôle des permissions, autoriser l’action que ce hook bloquait
Comportement de l’outil Edit
L’outil Edit effectue un remplacement de chaîne exact. Il prend uneold_string et une new_string et remplace la première par la seconde. Il n’utilise pas d’expressions régulières ni de correspondance approximative.
Ces vérifications doivent réussir pour qu’une modification s’applique. Avant l’une d’elles, un chemin correspondant à une règle de refus Read est refusé, y compris la création d’un nouveau fichier à cet endroit.
- Read-before-edit : Claude lit le fichier dans la conversation actuelle avant de le modifier, et une lecture interrompue avec un avis
PARTIAL viewne compte pas. Claude Opus 4.6, Claude Haiku 4.5 et les modèles plus anciens nécessitent toujours la lecture. Les modèles plus récents peuvent modifier un fichier non lu lorsque la lecture ne nécessiterait pas de demande de permission et que l’outil Read est disponible. - Match :
old_stringdoit apparaître dans le fichier exactement tel qu’écrit. Une seule différence d’espace blanc ou d’indentation suffit à manquer la correspondance. - Unicité :
old_stringdoit apparaître exactement une fois. Lorsqu’il apparaît plus d’une fois, Claude fournit soit une chaîne plus longue avec suffisamment de contexte environnant pour identifier une occurrence, soit définitreplace_all: truepour les remplacer tous.
old_string correspond exactement au contenu actuel et sans ambiguïté et que Claude Code peut lire le fichier sans demande de permission. La correspondance avec le contenu actuel du fichier maintient la sécurité, et le résultat note que le fichier contient d’autres modifications afin que Claude le relise avant les modifications qui dépendent du contenu environnant. Dans tout autre cas, comme une old_string obsolète ou une qui correspond à plus d’une occurrence sans replace_all, Claude lit le fichier à nouveau avant la modification.
Claude peut également modifier un fichier sans Read distinct après l’avoir affiché avec une commande Bash telle que cat ou grep. Ces commandes sont cat, nl, bat, batcat, head, tail, sed -n 'X,Yp', grep, egrep, fgrep et rg, chacune exécutée sur un seul fichier sans pipes ni redirections. Si la commande n’a affiché aucune partie du texte du fichier, comme lorsqu’une recherche ne trouve aucune correspondance, la vérification read-before-edit s’applique toujours.
Lorsque Claude affiche un fichier de cette manière, Claude Code charge également tout CLAUDE.md de sous-répertoire et toutes les règles limitées à un chemin qui s’appliquent à ce fichier. Consultez Règles de permission Read et Edit pour savoir quelles commandes Bash vos règles de refus Read et Edit couvrent.
Fichiers non UTF-8
Claude ne peut pas utiliser NotebookEdit sur un fichier qui n’est pas en UTF-8 valide. Il en va de même pour Edit, sauf si le fichier commence par une marque d’ordre d’octets UTF-16 little-endian. Lorsque Claude essaie, l’outil refuse la modification et laisse le fichier intact. Les fichiers refusés comprennent le texte non ASCII enregistré dans un encodage hérité tel que Windows-1252 ou Shift-JIS, les fichiers binaires et l’UTF-8 contenant une séquence d’octets invalide. Les outils refusent parce qu’ils réenregistrent l’intégralité du fichier en UTF-8, ce qui remplacerait chaque octet qu’ils ne peuvent pas décoder par le caractère de remplacementU+FFFD. À la place, l’erreur que Claude reçoit lui indique d’effectuer la modification avec une commande shell qui conserve l’encodage du fichier, ou de vous demander s’il faut d’abord le convertir en UTF-8.
Claude peut toujours remplacer un tel fichier avec Write, sauf si le nouveau contenu contient U+FFFD, le caractère que Read montre à Claude à la place des octets qu’il ne peut pas décoder. Cette protection empêche Claude de réécrire le texte altéré qu’il a lu. Lorsque Write remplace effectivement le fichier, il enregistre le nouveau contenu en UTF-8, de sorte que l’encodage d’origine du fichier est perdu.
Comportement de l’outil EndConversation
L’outil EndConversation termine la session actuelle. Claude l’utilise uniquement dans deux situations :- lorsque vous continuez à envoyer des messages abusifs après que Claude a donné un avertissement clair et n’a pas réussi à rediriger la conversation
- lorsque vous demandez explicitement à Claude de terminer la session, puis confirmez lorsque Claude vous demande si vous souhaitez toujours continuer
Claude ended this conversation. Start a new session (or /clear) to continue., et seules /clear, /resume, /help, /exit et /feedback continuent de fonctionner. Claude Code enregistre la fin dans la transcription de la session, donc reprendre une session terminée restaure le verrouillage ; l’historique de la session n’est pas supprimé.
Reprendre une session terminée en mode non-interactif avec l’indicateur -p génère une erreur et se termine avec le code 1, donc un script ne lit pas l’exécution terminée comme un succès.
L’outil ne demande jamais la permission, et les hooks PreToolUse ne s’exécutent pas pour celui-ci. Tant que tout autre outil reste disponible, vous ne pouvez pas non plus le bloquer : les règles de refus et de demande nommant EndConversation n’ont aucun effet, et ni --disallowedTools ni une liste --tools ne peuvent le supprimer. L’exemption est délibérée : l’outil ne fait rien d’autre que de terminer la conversation, ne lisant ni ne modifiant jamais les fichiers ou les données, et une sauvegarde de ce type ne tient que si la session à laquelle elle s’applique ne peut pas la désactiver. Lorsque vos règles de refus suppriment tous les autres outils et correspondent également à EndConversation, comme le fait "*", Claude Code le supprime également plutôt que de le laisser comme seul outil, sauf si une règle d’autorisation nomme EndConversation explicitement. Une liste de refus qui supprime tous les autres outils sans correspondre à EndConversation le laisse en place.
Les sous-agents n’obtiennent jamais l’outil. Les tâches en arrière-plan qui partagent la liste d’outils de la conversation principale le voient, mais l’appeler là ne termine rien.
L’outil n’apparaît que lorsque tous les éléments suivants sont vrais :
- Modèle : le modèle de la session est Claude Opus 4.8, Claude Sonnet 5, Claude Fable 5, ou une version ultérieure de l’une de ces familles.
- Surface : une session de terminal interactive, y compris une session
claudedans le terminal intégré d’un IDE, ce qui est la façon dont le plugin JetBrains l’exécute. Les autres surfaces n’incluent pas l’outil, comme :- les exécutions non-interactives
-p - les sessions via les packages TypeScript et Python du SDK Agent
- le panneau de l’extension VS Code, qui regroupe sa propre CLI
- GitHub Actions
- sessions cloud
- les exécutions non-interactives
- Mode de démarrage : pas une session
--bare. Le mode bare charge uniquement les outils shell et fichier, donc l’outil n’est jamais enregistré là. - Fournisseur : non disponible sur Amazon Bedrock, Claude Platform on AWS, Google Cloud’s Agent Platform, ou Microsoft Foundry, ou sur les sessions connectées via une passerelle cloud.
Comportement de l’outil EnterWorktree
L’outil EnterWorktree crée un worktree git isolé et y bascule. Lorsqu’unpath lui est fourni, il bascule dans un worktree existant au lieu d’en créer un nouveau.
- Quels worktrees
pathpeut désigner : lors de la première entrée, la cible peut être un worktree du dépôt actuel. Dans un dépôt qui contient d’autres dépôts, elle peut également être un worktree d’un dépôt imbriqué à l’intérieur. - Quand une demande vous est présentée : un
pathsitué en dehors de.claude/worktrees/demande votre approbation avant d’y entrer, car il déplace le répertoire de travail de la session et l’accès en écriture vers cet emplacement. La création d’un nouveau worktree et les chemins situés sous.claude/worktrees/ne déclenchent aucune demande. Avant la v2.1.206, Claude entrait dans les chemins situés en dehors de.claude/worktrees/sans demande. - Depuis un worktree : au sein d’une session de worktree, seule la forme
pathest disponible et la cible doit se trouver sous.claude/worktrees/du dépôt de la session. Il en va de même pour un sous-agent disposant d’un répertoire de travail fixé, comme avecisolation: worktree. - Lorsque l’outil est absent : dès que
permissions.blockWritesOutsideWorkingDirectoriesest activé, Claude Code supprimeEnterWorktreeetExitWorktreeou refuse les appels à ces outils. Pour continuer à travailler dans des worktrees, consultez Claude n’a pas d’outilEnterWorktree.
Comportement de l’outil Glob
L’outil Glob trouve des fichiers par motif de nom. Sous Windows, il fait partie de l’ensemble d’outils par défaut. Sous macOS, Linux et WSL, Claude Code exclut Glob et Grep de l’ensemble d’outils par défaut, et Claude effectue ses recherches avecfind et grep via l’outil Bash à la place. Dans le shell de Claude, ces deux commandes exécutent des versions intégrées de bfs et ugrep, et les recherches parviennent à vos hooks et à vos règles de permission sous forme d’appels Bash.
Sous macOS, Linux et WSL, vous récupérez les outils Glob et Grep dans les cas suivants :
- Vous nommez
GlobouGrepdans--toolsou--allowedToolsau démarrage de la session, ou dans les options équivalentes de l’Agent SDK. Avec--tools, vous obtenez ceux que vous listez, et nommer l’un ou l’autre de ces outils dans--allowedToolsrétablit les deux. Une règle d’autorisation dans un fichier de paramètres n’a pas cet effet. - Une règle de refus de permissions, le flag
--disallowedToolsou--restrictedretireBashde la session. - Un sous-agent liste
GlobouGrepdans son champtoolset ometBash. Les outils listés reviennent uniquement pour ce sous-agent, ou pour toute la session lorsqu’il s’exécute en tant qu’agent de la session principale via--agentou le paramètreagent.
** pour la correspondance récursive des répertoires :
**/*.jscorrespond à tous les fichiers.jsà n’importe quelle profondeursrc/**/*.tscorrespond à tous les fichiers.tssoussrc/*.{json,yaml}correspond aux fichiers.jsonet.yamldu répertoire courant
.gitignore : il trouve donc les fichiers ignorés par Git en plus des fichiers suivis. Cela diffère de Grep, qui ignore les fichiers exclus par .gitignore. Pour que Glob respecte .gitignore, définissez CLAUDE_CODE_GLOB_NO_IGNORE=false avant de lancer Claude Code.
Claude Code statue sur la permission d’un appel Glob avant de vérifier si le répertoire de recherche existe. Il exécute quand même la vérification de la permission de lecture pour un path inexistant situé en dehors des répertoires de travail ; une demande de permission pour un chemin ne signifie donc pas que ce chemin existe.
Une valeur pattern ou path contenant un octet nul renvoie une erreur demandant à Claude de supprimer cet octet nul.
Comportement de l’outil Grep
L’outil Grep recherche des motifs dans le contenu des fichiers. Où Glob trouve des fichiers par nom, Grep trouve des lignes à l’intérieur d’eux. Sur macOS, Linux et WSL, Grep est absent par défaut dans les mêmes conditions que Glob. Voir Comportement de l’outil Glob pour savoir quand les deux outils sont disponibles. Grep est construit sur ripgrep et utilise la syntaxe regex de ripgrep, pas grep POSIX. Les motifs qui incluent des métacaractères regex ont besoin d’échappement. Par exemple, trouverinterface{} dans le code Go prend le motif interface\{\}.
Un motif, un glob, ou un type de fichier que ripgrep rejette retourne une erreur qui inclut le diagnostic de ripgrep, afin que Claude puisse corriger l’entrée et rechercher à nouveau. Avant la v2.1.208, Claude Code signalait une entrée rejetée comme No files found au lieu d’une erreur, même lorsque le texte recherché existait dans les fichiers cibles.
Trois modes de sortie contrôlent ce qui revient :
files_with_matches: chemins de fichiers uniquement, pas de contenu de ligne. C’est la valeur par défaut.content: lignes correspondantes avec numéro de fichier et de ligne. Lorsque le paramètreoffsetde l’outil pointe au-delà de la dernière correspondance pour un motif qui a des correspondances, Grep retourneNo entries at this offset, afin que Claude élargisse ou réinitialise l’offset au lieu de conclure que le motif ne correspond pas.count: nombre de correspondances par fichier, suivi d’un total sur tous les fichiers correspondants. Le total couvre chaque correspondance même lorsque les paramètreshead_limitouoffsetde l’outil tronquent les entrées par fichier listées.
glob, tel que **/*.tsx, ou par langage avec le paramètre type, tel que py ou rust. Par défaut, les motifs correspondent dans une seule ligne. Claude peut définir multiline: true pour correspondre à travers les limites de ligne.
Grep respecte .gitignore, donc les fichiers gitignorés sont ignorés. Pour rechercher un fichier gitignore, Claude transmet son chemin directement.
Claude Code décide de la permission pour un appel Grep avant de vérifier si le path de recherche existe. Il exécute toujours la vérification de permission de lecture pour un path manquant en dehors des répertoires de travail, donc une invite de permission pour un chemin ne signifie pas que le chemin existe.
Comportement de l’outil LSP
L’outil LSP donne à Claude l’intelligence du code à partir d’un serveur de langage en cours d’exécution. Après chaque modification de fichier, il signale automatiquement les erreurs de type et les avertissements afin que Claude puisse corriger les problèmes sans une étape de compilation séparée. Claude peut également l’appeler directement pour naviguer dans le code :- Accéder à la définition d’un symbole
- Trouver toutes les références à un symbole
- Obtenir les informations de type à une position
- Lister les symboles dans un fichier
- Rechercher un symbole par nom dans l’espace de travail
- Trouver les implémentations d’une interface
- Tracer les hiérarchies d’appels
Outil Monitor
L’outil Monitor permet à Claude de surveiller quelque chose en arrière-plan et de réagir quand cela change, sans mettre en pause la conversation. Demandez à Claude de :- Suivre un fichier journal et signaler les erreurs au fur et à mesure qu’elles apparaissent
- Interroger une PR ou un travail CI et signaler quand son statut change
- Surveiller un répertoire pour les modifications de fichiers
- Suivre la sortie de tout script de longue durée que vous lui pointez
- Se connecter à un flux WebSocket et signaler chaque message à son arrivée
-p.
À l’échéance, la surveillance se termine. Claude reçoit un avis, il peut donc redémarrer la surveillance si elle est toujours nécessaire.
Arrêtez une surveillance en demandant à Claude de l’annuler ou en terminant la session. Quand vous arrêtez un sous-agent qui a démarré des moniteurs, par exemple à partir de /tasks, ces moniteurs s’arrêtent avec lui.
Quand Monitor exécute une commande, il utilise les mêmes règles de permission que Bash, donc les motifs allow et deny que vous avez définis pour Bash s’appliquent ici aussi. Tandis que le mode auto est actif, Claude Code met de côté les règles d’autorisation qui nomment Monitor lui-même, ainsi que les autres règles d’autorisation larges qu’il abandonne, donc le classificateur examine les commandes Monitor de la même manière qu’il examine les commandes Bash.
Monitor nécessite une version minimale ou Git Bash dans les cas suivants :
- Version minimale : sur Amazon Bedrock, Claude Platform on AWS, Google Cloud’s Agent Platform ou Microsoft Foundry, ou lorsque
DISABLE_TELEMETRYouCLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFICest défini, Monitor nécessite Claude Code v2.1.310 ou une version ultérieure. Cette exigence s’applique lorsque la récupération des feature flags est désactivée - Windows : l’outil n’est disponible que lorsque Git Bash est installé
Source WebSocket
Quand un serveur pousse déjà des événements sur un WebSocket, Claude peut s’y connecter directement au lieu d’écrire un script d’interrogation. Chaque type d’activité de socket devient soit un événement, soit termine la surveillance :- Messages texte : chacun devient un événement, même quand le message s’étend sur plusieurs lignes.
- Messages binaires : non transmis. Claude reçoit une ligne d’espace réservé telle que
[binary frame, 512 bytes]à la place. - Messages plus grands que 1 MiB : la surveillance se termine, donc abonnez-vous à un flux filtré où il en existe un.
- Fermeture de socket : la surveillance se termine et Claude reçoit le code de fermeture.
ws à la place de command, et un seul appel Monitor ne peut pas combiner les deux. L’entrée ws a deux champs :
L’échéance
timeout_ms s’applique également à une surveillance WebSocket : la surveillance se termine à l’échéance, et TaskStop l’annule plus tôt.
Sans règle d’autorisation Monitor, une demande de permission vous est présentée avant que Claude ouvre un WebSocket ; en mode auto, le classificateur décide à la place, sauf si une règle de demande s’applique. La demande n’offre pas d’option pour ignorer les futures demandes pour le même hôte.
Adresses et hôtes refusés aux surveillances WebSocket
Claude Code refuse les URL qui pointent vers une adresse privée, link-local, ou de métadonnées cloud, y compris les noms d’hôte que votre machine résout en une telle adresse. Derrière un proxy, une surveillance peut atteindre une adresse privée, link-local ou de métadonnées cloud, sauf si le proxy la bloque, car Claude Code ne vérifie pas l’adresse trouvée par le proxy. Claude Code refuse également les hôtes danssandbox.network.deniedDomains, et quand allowManagedDomainsOnly est défini dans les paramètres gérés, tout hôte en dehors de la liste d’autorisation gérée.
Si une surveillance derrière un proxy échoue avec could not resolve <host>, redémarrez Claude Code v2.1.319 ou une version ultérieure avec CLAUDE_CODE_PROXY_RESOLVES_HOSTS défini sur 1 afin que le proxy résolve le nom d’hôte.
Règles Bash qui refusent ou demandent une confirmation pour les surveillances WebSocket
Si Claude Code refuse un appelMonitor qui ouvre un WebSocket, recherchez une règle de refus ou de demande écrite Bash ou Bash(*). Faites de même s’il vous demande une confirmation pour cet appel malgré votre règle d’autorisation Monitor. Une règle portant sur toutes les commandes Bash couvre également ces surveillances WebSocket :
- Règle de refus : si la règle est en place au démarrage de la session, Claude ne dispose pas de l’outil Monitor et ne peut donc pas démarrer la surveillance. Si vous ajoutez la règle en cours de session, le prochain appel
Monitorde Claude est refusé. Le message de refus estPermission to use Monitor has been denied: it runs code as Bash does, and a rule denies Bash. - Règle de demande : il vous est demandé d’approuver la surveillance. Ni une règle d’autorisation, ni un hook
PreToolUse, ni le modebypassPermissions, ni le classificateur du mode auto ne peuvent l’approuver à votre place. Vous pouvez l’approuver depuis un hookPermissionRequest. Lorsque personne ne peut répondre, comme en modedontAsk, Claude Code refuse la surveillance.
Bash(rm *).
La règle de demande, ainsi qu’une règle de refus ajoutée en cours de session, couvrent ces surveillances dans Claude Code v2.1.319 ou une version ultérieure.
Comportement de l’outil NotebookEdit
NotebookEdit modifie un notebook Jupyter une cellule à la fois, ciblant les cellules par leurcell_id. Il n’effectue pas de remplacement de chaîne à travers le notebook comme le fait Edit sur les fichiers simples.
Trois modes de modification contrôlent ce qui arrive à la cellule cible :
replace: remplace la source de la cellule. C’est la valeur par défaut.insert: ajoute une nouvelle cellule après la cible. Sanscell_id, la nouvelle cellule va au début du notebook. Nécessite quecell_typesoit défini àcodeoumarkdown.delete: supprime la cellule cible.
Edit(...). Une règle comme Edit(notebooks/**) couvre les appels NotebookEdit sur les fichiers dans ce répertoire.
Outil PowerShell
L’outil PowerShell permet à Claude d’exécuter des commandes PowerShell en mode natif. Sous Windows, cela signifie que les commandes s’exécutent dans PowerShell au lieu d’être acheminées via Git Bash. La disponibilité de l’outil dépend de votre plateforme :- Windows sans Git Bash : l’outil est activé automatiquement.
- Windows avec Git Bash installé : l’outil est activé par défaut pour les comptes claude.ai et Console ; définissez
CLAUDE_CODE_USE_POWERSHELL_TOOL=1pour l’activer dans les sessions Amazon Bedrock, Google Cloud’s Agent Platform et Microsoft Foundry, ou0pour le désactiver. - Linux, macOS et WSL : l’outil est optionnel.
tool_input.command, avec les mêmes champs que l’outil Bash.
Faites correspondre Bash|PowerShell dans les hooks qui inspectent les commandes shell ; la section d’entrée du hook PowerShell explique pourquoi la correspondance de Bash seul ne suffit pas.
Activer l’outil PowerShell
DéfinissezCLAUDE_CODE_USE_POWERSHELL_TOOL=1 dans votre environnement ou dans settings.json :
0 pour désactiver l’outil. Sous Linux, macOS et WSL, l’outil nécessite PowerShell 7 ou version ultérieure : installez pwsh et assurez-vous qu’il se trouve dans votre PATH.
Sous Windows, Claude Code détecte automatiquement pwsh.exe pour PowerShell 7+ avec un repli sur powershell.exe pour PowerShell 5.1. Lorsque l’outil est activé, Claude traite PowerShell comme le shell principal. L’outil Bash reste disponible pour les scripts POSIX lorsque Git Bash est installé.
Claude Code lance PowerShell avec -ExecutionPolicy Bypass au niveau du processus uniquement, de sorte que les scripts .ps1 et les importations de modules fonctionnent sur les installations Windows par défaut sans modifier la politique de la machine. Le contournement au niveau du processus ne remplace pas la stratégie de groupe MachinePolicy ou UserPolicy, de sorte que les politiques d’entreprise s’appliquent toujours. Pour respecter la politique d’exécution effective de la machine à la place, définissez CLAUDE_CODE_POWERSHELL_RESPECT_EXECUTION_POLICY=1.
Les règles de refus Bash désactivent également l’outil PowerShell
Sous Windows avec Git Bash installé, refuser Bash désactive également l’outil PowerShell pour la session. Cela s’applique aux règles restreintes telles queBash(git push *) comme à un Bash seul, ainsi qu’aux règles provenant de l’un de vos fichiers de paramètres ou de --disallowedTools. Claude Code agit ainsi car une règle Bash ne restreint pas l’outil PowerShell, qui possède ses propres règles de permission. Si PowerShell restait activé, Claude pourrait y exécuter ce que votre règle refuse dans Bash.
Pour conserver l’outil PowerShell activé en parallèle d’une règle de refus Bash, effectuez l’une des opérations suivantes :
- Définissez
CLAUDE_CODE_USE_POWERSHELL_TOOL=1dans votre environnement ou dans le blocenvd’un fichier de paramètres, comme indiqué dans Activer l’outil PowerShell. - Ajoutez une règle de permission
PowerShellrestreinte à un fichier de paramètres, telle qu’une règle de refusPowerShell(git push *).
Sélection du shell dans les paramètres, les hooks et les skills
Trois paramètres supplémentaires contrôlent l’endroit où PowerShell est utilisé :"defaultShell": "powershell"danssettings.json: achemine les commandes interactives!via PowerShell. Nécessite que l’outil PowerShell soit activé."shell": "powershell"sur les hooks de commande individuels : exécute ce hook dans PowerShell. Les hooks lancent PowerShell directement, de sorte que cela fonctionne indépendamment deCLAUDE_CODE_USE_POWERSHELL_TOOL.shell: powershelldans le frontmatter du skill : exécute les blocs!`command`dans PowerShell. Nécessite que l’outil PowerShell soit activé.
CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR.
Les commandes PowerShell reçoivent également les variables que les hooks conservent via CLAUDE_ENV_FILE, dans les conditions décrites dans Variables persistantes dans les commandes PowerShell. Nécessite Claude Code v2.1.296 ou version ultérieure.
Code de sortie 1 des recherches et de git diff dans PowerShell
Si une recherche grep ou rg qui ne trouve aucune correspondance affiche Error: Exit code 1 lorsque Claude l’exécute dans l’outil PowerShell, la recherche n’a pas échoué. Vous n’avez rien à faire. L’erreur peut apparaître lorsque la recherche fait partie d’une commande plus longue. Par exemple, lorsque rg se termine avec le code 1, rg foo | Out-Null affiche l’erreur, mais pas rg foo.
L’outil PowerShell peut considérer le code de sortie 1 comme un résultat normal de grep, rg, egrep, fgrep, findstr, git grep et git diff. Les recherches utilisent le code de sortie 1 pour signaler l’absence de correspondance. Pour git diff, le code de sortie 1 signifie que les fichiers diffèrent. Une commande qui affiche l’erreur lorsque Claude l’exécute compte comme un échec dans un skill avec shell: powershell.
Encodage Windows et codes de sortie
- La redirection avec
>et>>écrit des fichiers UTF-8 sur PowerShell 5.1 - Claude Code encode le texte acheminé vers l’entrée standard d’une commande native en UTF-8
- Claude Code capture la sortie d’erreur sans séquences d’échappement ANSI
- Une commande dont le processus enfant attend sur l’entrée standard reçoit une fin de fichier au lieu de se bloquer
- Si
where.exene trouve aucune correspondance, ou sifc.exeoudiff.exedétecte que les fichiers diffèrent, le résultat peut afficherError: Exit code 1bien que la commande n’ait pas échoué. Vous n’avez rien à faire. - Si un code de sortie
robocopycompris entre 1 et 7 s’affiche comme une erreur, la copie n’a pas échoué et vous n’avez rien à faire.robocopyse termine avec un code de 0 à 7 pour signaler un résultat, tel que des fichiers copiés, et avec un code de 8 ou plus en cas d’échec.
Limitations de l’aperçu
L’outil PowerShell présente les limitations connues suivantes pendant l’aperçu :- Les profils PowerShell ne sont pas chargés
- Sous Windows, le sandboxing n’est pas pris en charge
Comportement de l’outil Read
L’outil Read prend un chemin de fichier et retourne le contenu avec les numéros de ligne. Lire un fichier vide retourne un avis que le fichier existe mais que son contenu est vide, et unoffset au-delà de la dernière ligne retourne un avis donnant le nombre de lignes du fichier.
Read gère plusieurs types de fichiers au-delà du texte brut :
- Images : les fichiers PNG, JPEG, GIF et WebP sont retournés comme contenu visuel que Claude peut voir, pas comme des octets bruts. Claude Code redimensionne et récompresse les grandes images pour s’adapter aux limites de taille d’image du modèle avant de les envoyer, donc Claude peut voir une version réduite d’une grande capture d’écran. Si Claude manque des détails fins au niveau des pixels dans une grande image, demandez-lui de recadrer la région qui vous intéresse, par exemple avec ImageMagick via Bash, puis de lire l’image recadrée. Read refuse un fichier image de plus de 128 MB avec une erreur qui indique à Claude de redimensionner l’image ou d’en exporter une copie plus petite, puis de lire cette copie. Si Claude s’arrête à l’erreur au lieu de le faire, consultez File is too large to read as an image.
-
PDFs : Claude lit les fichiers
.pdfcourts en entier. Pour les PDFs plus longs que 10 pages, il lit par plages avec un paramètrepages, tel que"1-5", jusqu’à 20 pages à la fois. Les lectures par plage de pages restituent les pages avecpdftoppmde poppler-utils, donc installez-le avecbrew install popplersur macOS ouapt-get install poppler-utilssur Debian et Ubuntu. Sur Windows et autres plates-formes, installez une version poppler qui metpdftoppmsur votrePATH. Sans cela, une lecture par plage de pages échoue avecpdftoppm is not installed. -
Notebooks Jupyter : les fichiers
.ipynbretournent toutes les cellules avec leurs résultats, y compris le code, le markdown et les visualisations. Un notebook dont les cellules dépassent 256 KB, ou la limite de tokens, retourne une erreur à la place. Claude Code refuse de lire un fichier notebook de plus de 100 MB ; l’erreur indique à Claude comment lire une portion du notebook à la place, comme une tranche de cellules, avec une commande shell.
ls.
Read refuse un fichier dont il considère l’extension comme binaire, telle que .xlsx, .parquet, .heic ou .zip. Claude continue de travailler après un refus : l’erreur suggère un skill pour ce type de fichier s’il en existe un, ou sinon une commande shell ou un script capable de lire ce format. Si vous mentionnez avec @ un fichier que Read refuse, Claude reçoit le chemin du fichier mais pas son contenu.
Fichiers volumineux
Claude peut lire un fichier texte plus volumineux que ce que retourne un seul appel à Read. Par défaut, un appel retourne au maximum 25 000 tokens, ou la valeur que vous définissez dansCLAUDE_CODE_FILE_READ_MAX_OUTPUT_TOKENS, et refuse un fichier complet de plus de 256 KB, donc Claude lit un fichier plus volumineux par pages avec offset et limit. Sur Claude Code v2.1.296 ou ultérieur, il peut à la place lire le fichier complet, ou une longue plage de lignes, en un seul appel en définissant allow_large: true lorsqu’il en a besoin, par exemple parce que vous avez demandé le fichier entier. Cette lecture est dimensionnée en fonction de l’espace restant dans la fenêtre de contexte de la session plutôt que selon les limites par défaut. Les images, les PDFs et les notebooks conservent leurs limites.
Ce que Claude reçoit lorsqu’une lecture dépasse les limites par défaut :
- Fichier complet au-delà de la limite de tokens : la première page du fichier, avec un avis
PARTIAL viewindiquant quelle part du fichier il a reçue et comment en lire davantage avecoffsetetlimit - Fichier complet de plus de 256 KB, ou lecture avec
offsetoulimitau-delà de la limite de tokens : une erreur lui indiquant de lire une portion avecoffsetetlimit, ou de rechercher du contenu spécifique avec Grep à la place
Comportement de l’outil SendFeedback
Les commentaires rédigés par Claude constituent un rapport de commentaires sur Claude Code que Claude rédige pour vous. Cela nécessite Claude Code v2.1.238 ou une version ultérieure. Claude Code enregistre chaque brouillon sur votre machine sous~/.claude/feedback/drafts/, et rien ne parvient à Anthropic tant que vous ne l’envoyez pas. Claude rédige un brouillon avec l’outil SendFeedback quand :
- Un outil ou une commande continue d’échouer
- Il ne peut pas vous aider avec quelque chose que vous avez demandé
- Vous signalez une erreur qu’il a commise, ou il en remarque une
- Vous lui demandez de soumettre un commentaire
Ce que vous voyez quand Claude rédige
Après que Claude mette un brouillon en file d’attente, vous voyez une carte au-dessus de votre invite avec le titre du brouillon. Appuyez sur1 pour examiner le brouillon, appuyez sur 2 deux fois pour l’envoyer tel quel, ou appuyez sur 0 pour le rejeter. Un brouillon rejeté reste dans votre file d’attente. Après avoir rejeté une carte, Claude Code vous demande si vous souhaitez désactiver les commentaires rédigés par Claude. Il cesse de poser la question une fois que vous avez refusé deux fois.
Par défaut, vous voyez au maximum trois cartes dans une session ; Anthropic peut ajuster cette limite depuis le serveur sans publication. Après la limite, et chaque fois que vous définissez feedbackDrafts sur quiet, vous voyez uniquement un nombre de brouillons en file d’attente dans le pied de page de l’invite.
Examiner et modifier un brouillon
Exécutez/feedback sans argument pour ouvrir votre file d’attente. Elle répertorie tous les brouillons en file d’attente de toutes vos sessions, y compris les brouillons dont vous avez rejeté les cartes ou que vous n’avez jamais vus. Sélectionnez un brouillon pour l’ouvrir pour examen, où vous pouvez :
- Modifier le titre, la zone et les détails
- Définir Envoyer la transcription sur
yesouno. Quand la transcription de la session où Claude a mis le brouillon en file d’attente est toujours disponible, elle commence àyes, ce qui envoie cette conversation à Anthropic ;noenvoie uniquement le rapport - Envoyer le brouillon, le supprimer ou le laisser dans la file d’attente pour plus tard
w pour la boîte de dialogue de commentaires standard. /feedback avec du texte après, et /bug, ouvrent cette boîte de dialogue directement.
Envoyer un brouillon
Quand vous envoyez un brouillon, Claude Code le soumet de la même manière qu’un rapport/feedback, avec la même rétention, et supprime le brouillon de votre machine. Quand vous envoyez depuis la carte, elle affiche ✓ Sent ; quand vous envoyez depuis la file d’attente, elle se ferme avec un ID de reçu.
Le rapport contient :
- Votre titre, zone et détails
- Les informations d’environnement, telles que votre version de Claude Code, votre système d’exploitation et votre modèle
- Les ID des demandes API récentes
- La transcription de la conversation, quand vous avez laissé Envoyer la transcription sur
yesdans l’écran d’examen. L’envoi depuis la carte n’inclut jamais la transcription
Feedback collection is not available for organizations with custom data retention policies.
Supprimer ou conserver un brouillon
Quand vous supprimez un brouillon, Claude Code le supprime de votre machine. Un brouillon que vous laissez dans la file d’attente expire après 30 jours, ou aprèscleanupPeriodDays quand c’est plus court. La file d’attente contient 10 brouillons dans toutes vos sessions, et quand Claude met un onzième en file d’attente, Claude Code supprime le plus ancien. Quand vous exécutez /exit avec des brouillons de la session toujours dans la file d’attente, Claude Code vous demande si vous souhaitez les examiner ou les supprimer avant de quitter.
Désactiver les commentaires rédigés par Claude
Définissez Claude-drafted feedback suroff dans /config, ce qui écrit le paramètre feedbackDrafts, ou définissez CLAUDE_CODE_SEND_FEEDBACK=0 pour une session. Avec l’un ou l’autre, Claude ne peut pas mettre de brouillons en file d’attente. Pour continuer à rédiger sans cartes, définissez feedbackDrafts sur quiet à la place. Les administrateurs peuvent définir feedbackDrafts dans les paramètres gérés, ce qui prend précédence sur votre propre paramètre.
Sessions sans commentaires rédigés par Claude
Claude Code inclut l’outil dans les sessions de terminal interactives sur votre propre machine qui utilisent l’API Claude plutôt qu’un fournisseur cloud. Il laisse l’outil de côté dans :- Les exécutions non interactives
-pet les sessions Agent SDK, qui n’ont pas d’écran pour examiner la file d’attente - Les sessions cloud, qui ne peuvent pas écrire dans la file d’attente sur votre machine
- Les sessions sur Amazon Bedrock, Claude Platform on AWS, Google Cloud’s Agent Platform, ou Microsoft Foundry
- Les sessions qui accèdent à Claude via une passerelle LLM avec la clé ou le jeton propre à la passerelle
- Les sessions où vous avez défini
CLAUDE_CODE_SEND_FEEDBACK=0ouDISABLE_FEEDBACK_COMMAND=1, définiCLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFICsur une valeur non vide, ou désactivé feature-flag fetching - Les organisations qui ont désactivé les commentaires sur les produits, les organisations avec rétention zéro des données, et les organisations où la configuration HIPAA est appliquée
- Les sessions où Claude Code a cessé de proposer des commentaires après un rapport refusé
Disponibilité de l’outil Task
Les outils de suivi des tâches,TaskCreate, TaskGet, TaskUpdate, TaskList et TodoWrite, sont disponibles par défaut uniquement sur Opus 4.7, Sonnet 4.6, Haiku 4.5 et les modèles antérieurs. Partout où les outils sont disponibles, vous obtenez les quatre outils Task, ou TodoWrite à la place lorsque vous définissez CLAUDE_CODE_ENABLE_TASKS=0.
Sur tous les autres modèles, Claude Code exclut les outils sauf si vous les activez explicitement. Il en va de même pour un ID de modèle que Claude Code ne reconnaît pas, comme un nom de modèle personnalisé servi via une passerelle LLM. Sur les modèles plus récents, Claude garde une trace du travail multi-étapes sans liste de contrôle écrite, et les définitions et rappels des outils consomment du contexte. Sans les outils, Claude n’ajoute rien à la liste des tâches pendant qu’il travaille.
Si vous souhaitez utiliser ces outils sur un modèle qui ne les possède pas par défaut, faites l’une des choses suivantes :
- Exportez
CLAUDE_CODE_ENABLE_TODO_TOOLS=1avant de démarrer Claude Code, par exempleCLAUDE_CODE_ENABLE_TODO_TOOLS=1 claude. Claude Code fournit alors les mêmes outils sur chaque modèle et chaque fournisseur - Nommez l’un des outils dans
--allowedTools, par exempleclaude --allowedTools TaskCreate - Listez les outils dans
--tools, ce qui restreint les outils intégrés de la session à ceux qu’il nomme. Incluez les outils que vous souhaitez utiliser aux côtés des autres outils intégrés que vous utilisez - Dans l’Agent SDK, les options
allowedToolsettoolsfonctionnent de la même manière que les deux drapeaux
Outils de suivi des tâches dans les sous-agents et les équipes d’agents
Un sous-agent dispose des outils de suivi des tâches uniquement lorsque votre session les possède, quel que soit le modèle qu’exécute le sous-agent. Un coéquipier en processus d’une équipe d’agents dispose des outils de suivi des tâches lorsque votre session les possède. Un coéquipier en volet divisé est un processus Claude Code séparé qui hérite de votre liste--tools et de vos règles de refus, et non de --allowedTools, vérifiez donc ce que vous avez défini :
- Aucune liste
--toolsni règle de refus, etCLAUDE_CODE_ENABLE_TODO_TOOLSnon défini pour le coéquipier : le coéquipier dispose des outils de suivi des tâches que son propre modèle possède par défaut. CLAUDE_CODE_ENABLE_TODO_TOOLSexporté dans votre shell : Claude Code transmet au coéquipier un ensemble fixe de variables d’environnement qui n’inclut pas celle que vous avez exportée. Pour la définir également pour le coéquipier, démarrez votre session en exécutantclaude --settings '{"env":{"CLAUDE_CODE_ENABLE_TODO_TOOLS":"1"}}'dans votre shell. Le coéquipier reçoit également votre valeur--settings.--toolsnommant les outils de suivi des tâches : le coéquipier en dispose sur n’importe quel modèle.- Un outil de suivi des tâches absent de
--toolsou nommé dans une règle de refus : le coéquipier ne dispose pas de cet outil.
Comportement de l’outil WebFetch
WebFetch prend une URL et un prompt décrivant ce qu’il faut extraire. Il récupère la page et convertit la réponse en Markdown lorsque le serveur renvoie du HTML. Pour la plupart des récupérations, il exécute ensuite le prompt sur le contenu dans un appel de modèle distinct, et Claude reçoit le résultat de cet appel plutôt que la page brute. L’étape de conversion n’est pas configurable. WebFetch entraîne donc, par conception, une perte d’information. Le prompt d’extraction détermine ce qui parvient à Claude : un résultat indiquant qu’une page ne mentionne pas quelque chose peut simplement signifier que le prompt ne le demandait pas. Demandez à Claude de récupérer à nouveau la page avec un prompt plus précis, ou utilisezcurl via Bash pour obtenir la page non traitée.
Quelques comportements façonnent la réponse que reçoit Claude :
- WebFetch refuse
localhostet tout autre nom d’hôte sans point, comme un simple nom d’intranet, avant d’effectuer une requête. L’erreur qu’il renvoie indique à Claude d’accéder plutôt aux serveurs locaux aveccurlvia Bash. - Les URL HTTP sont automatiquement converties en HTTPS.
- WebFetch lit jusqu’à 100 000 caractères du contenu d’une page par appel. Avec Claude Code v2.1.290 ou version ultérieure, le résultat pour une page plus longue indique à Claude quelle quantité n’a pas été lue, afin que Claude puisse récupérer la partie suivante.
- WebFetch met en cache chaque réponse pendant 15 minutes par défaut, de sorte que les récupérations répétées de la même URL sont rapides. Avec Claude Code v2.1.233 ou version ultérieure, définissez
CLAUDE_CODE_WEBFETCH_CACHE_TTL_MSpour modifier la durée pendant laquelle WebFetch conserve chaque réponse. - Une page dont le téléchargement n’est pas terminé dans un délai de cinq minutes, y compris les redirections suivies par WebFetch, échoue avec une erreur de délai. Avec Claude Code v2.1.268 ou version ultérieure, définissez
CLAUDE_CODE_WEBFETCH_DEADLINE_MSpour modifier cette limite, ou sur0pour la supprimer. - Lorsqu’une URL redirige vers un hôte différent, WebFetch renvoie un résultat textuel qui indique l’URL d’origine et la cible de la redirection au lieu de la suivre. Claude récupère alors la nouvelle URL avec un second appel WebFetch.
- Lorsque l’étape d’extraction rencontre une API surchargée, Claude Code réessaie avec un délai croissant ; une récupération qui échoue toujours renvoie un résultat d’erreur.
acceptEdits, WebFetch demande une permission avant de récupérer une page, sauf pour les domaines que vos règles de permission autorisent ou refusent déjà et pour un ensemble intégré de domaines de documentation préapprouvés, récupérés sans demande. Quoi que vos règles autorisent, une récupération passe également d’abord par la vérification de sécurité des domaines WebFetch ; cette section décrit ce que la vérification envoie et le paramètre qui permet de l’ignorer. La demande propose trois options :
- Yes : approuve uniquement cette récupération. Le prochain appel WebFetch affiche à nouveau une demande, même pour le même domaine.
- Yes, and don’t ask again for
<domain>: approuve la récupération et enregistre une règle d’autorisationWebFetch(domain:...)pour ce domaine dans.claude/settings.local.jsonpour ce dépôt. Consultez comment les approbations enregistrées sont conservées. Lorsque votre organisation définitallowManagedPermissionRulesOnly, Claude Code masque cette option. - No, and tell Claude what to do differently : refuse la récupération.
WebFetch(domain:example.com) ; WebFetch(domain:*) autorise tous les domaines. Les modes de permission auto et bypassPermissions ignorent la demande, sauf pour un domaine correspondant à une règle ask explicite.
Une règle WebFetch(domain:...) explicite dans deny, ask ou allow a priorité sur l’ensemble préapprouvé : vous pouvez donc bloquer un domaine préapprouvé ou exiger une demande pour celui-ci.
Lorsque l’URL est un lien d’artefact claude.ai, Claude Code peut également demander l’approbation pour lire l’artefact lui-même. Pour les cas où il le demande, consultez Lire un artefact partagé avec vous.
WebFetch définit un en-tête User-Agent commençant par Claude-User, ainsi qu’un en-tête Accept qui préfère le Markdown au HTML, afin que les serveurs prenant en charge la négociation de contenu puissent renvoyer directement du Markdown.
Les commandes exécutées dans le sandbox n’héritent pas de l’ensemble intégré de domaines de documentation préapprouvés de WebFetch. Pour permettre à une commande du sandbox d’accéder à un domaine sans demande, ajoutez le domaine à allowedDomains ou autorisez-le avec une règle WebFetch(domain:...), que le sandbox respecte également. En revanche, WebFetch ne lit jamais la liste d’autorisation du sandbox : ajouter un domaine à une liste d’autorisation réseau du sandbox ou de l’organisation n’empêche donc pas WebFetch d’afficher une demande pour celui-ci.
Disponibilité de WebFetch
Avec Claude Code v2.1.285 ou version ultérieure, définissezCLAUDE_CODE_DISABLE_WEB_FETCH sur 1 pour désactiver WebFetch.
Si vous vous connectez avec un compte claude.ai Team ou Enterprise et que vous ne passez pas par une passerelle LLM, WebFetch dépend également de la politique de votre organisation, que Claude Code demande à api.anthropic.com au démarrage d’une session. Il en va de même pour une session dont Claude Code ne peut pas déterminer le forfait, comme une session exécutée avec un jeton claude.ai fourni par une autre application.
Si WebFetch est absent d’une session, exécutez /status dans la session. Si sa ligne Organization policy indique que la politique ne s’est pas chargée et mentionne web fetch parmi les fonctionnalités qui l’attendent, Claude Code retient WebFetch jusqu’à ce qu’il puisse confirmer que votre organisation l’autorise. En dehors d’une session, claude doctor effectue sa propre requête et affiche la même ligne. Dès qu’une politique autorisant WebFetch se charge, l’outil redevient disponible sans redémarrage.
Comportement de l’outil WebSearch
WebSearch exécute une requête sur le backend de recherche web d’Anthropic et retourne les titres et les URL des résultats. Il ne récupère pas les pages de résultats. Pour lire une page que Claude trouve dans les résultats de recherche, il effectue un suivi avec WebFetch. L’outil peut émettre jusqu’à huit recherches backend par appel, en affinant la recherche en interne avant de retourner les résultats. Claude peut limiter les résultats avecallowed_domains pour inclure uniquement certains hôtes, ou blocked_domains pour les exclure. Les deux listes ne peuvent pas être combinées dans un seul appel.
Lorsque la requête de recherche atteint une API surchargée, Claude Code la réessaie avec backoff ; un appel qui échoue toujours retourne un résultat d’erreur.
Les règles de permission WebSearch ne prennent pas de spécificateur. Une entrée WebSearch simple dans allow ou deny est la seule forme.
Le backend de recherche n’est pas configurable. Pour effectuer une recherche avec un fournisseur différent, ajoutez un serveur MCP qui expose un outil de recherche.
WebSearch est disponible sur l’API Claude, Claude Platform sur AWS et Microsoft Foundry. Sur Agent Platform de Google Cloud, cela fonctionne avec Opus 4, Sonnet 4, Haiku 4.5 et les modèles ultérieurs. Amazon Bedrock n’expose pas l’outil de recherche web côté serveur.
Limite de recherche de session
Une session de terminal interactive est limitée à 200 appels WebSearch. Les recherches effectuées depuis la conversation principale et depuis les sous-agents, comme un fan-out de recherche parallèle, comptent dans la même limite. Lorsqu’une session a atteint la limite, les recherches apparaissent dans la conversation comme des appels qui n’ont rien fait. Claude reçoit un avis lui indiquant de continuer avec les informations qu’il a déjà rassemblées, de le signaler dans sa réponse et, s’il a besoin de plus de recherches, de vous demander de relever la limite. Pour obtenir plus de recherches, relevez le plafond, attendez que la limite se recharge ou démarrez une nouvelle conversation :- Relever le plafond : définissez la variable d’environnement
CLAUDE_CODE_MAX_WEB_SEARCHES_PER_SESSIONsur un nombre entier positif, comme500. Le plafond peut être augmenté mais pas désactivé. - Attendre la recharge : sur Claude Code v2.1.290 ou ultérieur, la limite d’une session de terminal interactive se recharge à raison d’environ 100 appels par heure. Pour modifier ce rythme, définissez
CLAUDE_CODE_WEB_SEARCH_REFILLS_PER_HOURsur un nombre d’appels par heure, comme50. - Démarrer une nouvelle conversation : l’exécution de
/cleardans le prompt de Claude Code réinitialise également le compteur. Si un travail qui peut toujours générer des sous-agents survit au clear, comme un workflow en cours d’exécution, le compteur est reporté à la place.
-p et dans l’Agent SDK, la limite s’applique par tour, et non par session. Un tour s’étend depuis un message que vous envoyez jusqu’à ce que Claude ait fini de répondre. La limite est réinitialisée lorsque vous envoyez le message suivant ou lancez une nouvelle exécution claude -p, même avec --continue ou --resume. Pour obtenir plus de recherches, relevez CLAUDE_CODE_MAX_WEB_SEARCHES_PER_SESSION ou définissez un rythme de recharge avec CLAUDE_CODE_WEB_SEARCH_REFILLS_PER_HOUR.
Comportement de l’outil Write
L’outil Write crée un nouveau fichier ou remplace un fichier existant par le contenu complet fourni. Il n’ajoute pas ou ne fusionne pas. Write remplace également un fichier existant dont les octets ne peuvent pas être décodés et enregistre le nouveau contenu en UTF-8, comme décrit dans fichiers non UTF-8. Le fait que Claude doive lire un fichier existant dans la conversation actuelle avant de le remplacer dépend du modèle et du fichier :- Claude Opus 4.6, Claude Haiku 4.5 et les modèles plus anciens exigent toujours la lecture, donc une Write vers un fichier existant non lu échoue avec une erreur.
- Les modèles plus récents peuvent remplacer un fichier qu’ils n’ont jamais lu cette session dans les mêmes conditions que read-before-edit : le lire ne nécessiterait pas une invite de permission et l’outil Read est disponible.
- Les notebooks Jupyter et les fichiers que Claude a lus partiellement avec un avis
PARTIAL viewexigent la lecture sur tous les modèles.
Vérifier quels outils sont disponibles
Votre ensemble d’outils exact dépend de votre fournisseur, de votre plateforme et de vos paramètres. Pour vérifier ce qui est chargé dans une session en cours d’exécution, demandez directement à Claude :/mcp.
L’outil advisor est un outil serveur que l’API exécute, plutôt qu’un outil que Claude Code implémente. Il n’a pas de nom que vous pouvez référencer dans les règles de permission ou les correspondances de hook.
Voir aussi
- Serveurs MCP : ajouter des outils personnalisés en connectant des serveurs externes
- Permissions : système de permission, syntaxe des règles, et motifs spécifiques aux outils
- Subagents : configurer l’accès aux outils pour les subagents
- Hooks : exécuter des commandes personnalisées avant ou après l’exécution des outils