Skip to main content
Quand Claude ignore une instruction ou qu’une fonctionnalité que vous avez configurée n’apparaît pas, la cause est généralement que le fichier n’a pas été chargé, qu’il a été chargé depuis un emplacement différent de celui que vous attendiez, ou qu’un autre fichier l’a remplacé. Ce guide montre comment inspecter ce que Claude Code a réellement chargé afin que vous puissiez déterminer lequel de ces cas s’applique. Pour les problèmes d’installation, d’authentification et de connectivité, consultez plutôt Troubleshooting installation and login à la place.

Voir ce qui a été chargé dans le contexte

La commande /context affiche tout ce qui occupe la fenêtre de contexte pour la session actuelle, ventilé par catégorie : invite système, outils système, outils MCP, sous-agents personnalisés avec la source de chacun, fichiers de mémoire, skills et messages de conversation. Exécutez-la d’abord pour confirmer si vos fichiers CLAUDE.md, règles ou descriptions de skills sont présents. La section skills dans /context inclut également les skills groupés, que /skills ne liste pas. Pour plus de détails sur une catégorie spécifique, suivez avec la commande dédiée : Si un fichier de mémoire est absent de la ventilation /context, vérifiez son emplacement par rapport à comment les fichiers CLAUDE.md se chargent. Les fichiers CLAUDE.md des sous-répertoires se chargent à la demande plutôt qu’au démarrage de la session, ils n’apparaissent donc pas dans cette ventilation. Si /context confirme que le fichier a été chargé mais que Claude ne suit toujours pas une instruction particulière, le problème est probablement la façon dont l’instruction est écrite plutôt que si elle a été chargée. CLAUDE.md fonctionne bien pour le type de conseils que vous donneriez à un nouveau coéquipier, comme les conventions de projet, les commandes de compilation et l’emplacement des fichiers. L’adhérence diminue quand une instruction est assez vague pour être interprétée de plusieurs façons, quand deux fichiers donnent des directives conflictuelles, ou quand le fichier est devenu assez long pour que les règles individuelles reçoivent moins d’attention. Écrire des instructions efficaces couvre les modèles de spécificité, de taille et de structure qui maintiennent l’adhérence élevée.
CLAUDE.md et les permissions résolvent des problèmes différents. CLAUDE.md dit à Claude comment fonctionne votre projet afin qu’il prenne de bonnes décisions. Permissions et hooks appliquent des limites indépendamment de ce que Claude décide. Utilisez CLAUDE.md pour « nous le faisons de cette façon ici ». Utilisez les permissions ou les hooks pour les limites de sécurité et tout ce qui ne doit jamais se produire, où vous avez besoin d’une garantie plutôt que de conseils.

Vérifier les paramètres résolus

Les paramètres fusionnent entre les portées gérées, utilisateur, projet et locale. Les paramètres gérés s’appliquent d’abord quand ils sont présents. Parmi le reste, la portée plus proche remplace la plus large dans l’ordre local, puis projet, puis utilisateur. Certains paramètres peuvent également être définis par des drapeaux de ligne de commande ou des variables d’environnement, qui agissent comme une autre couche de remplacement. Quand un paramètre ne semble pas s’appliquer, la valeur que vous avez définie est généralement remplacée par une autre portée ou une variable d’environnement. Pour trouver les fichiers de paramètres invalides, exécutez claude doctor depuis votre terminal. Il affiche les diagnostics d’installation et de paramètres en lecture seule sans démarrer une session. Pour une vérification complète qui propose également des corrections et demande avant de les appliquer, exécutez /doctor dans une session. Exécutez /status pour voir quelles sources de paramètres sont actives, y compris si les paramètres gérés sont en vigueur. Pour comprendre quelle portée Claude Code utilise pour une clé donnée, consultez Précédence des paramètres.

Vérifier les serveurs MCP

Exécutez /mcp pour voir chaque serveur configuré, son statut de connexion et si vous l’avez approuvé pour le projet actuel. Un serveur peut être défini correctement mais ne pas fournir d’outils pour quelques raisons courantes :
  • Les serveurs à portée de projet dans .mcp.json nécessitent une approbation unique. Si l’invite a été rejetée, le serveur reste désactivé jusqu’à ce que vous l’approuviez depuis /mcp.
  • Un serveur qui échoue au démarrage s’affiche comme échoué dans /mcp. Les chemins de fichiers relatifs dans command ou args sont une cause fréquente, car ils se résolvent par rapport au répertoire à partir duquel vous avez lancé Claude Code plutôt qu’à l’emplacement de .mcp.json.
  • Un serveur qui s’affiche comme connecté mais qui liste zéro outils a démarré avec succès mais ne retourne pas de liste d’outils. Sélectionnez Reconnect depuis /mcp. Si le nombre reste à zéro, exécutez claude --debug=mcp et lisez la sortie stderr du serveur dans le journal de débogage à ~/.claude/debug/<session-id>.txt.
Pour les emplacements de configuration et les règles de portée, consultez MCP.

Vérifier les hooks

Exécutez /hooks pour lister chaque hook enregistré pour la session actuelle, groupé par événement. Si un hook que vous avez défini n’apparaît pas, Claude Code ne l’a pas chargé. Vérifiez les causes suivantes :
  • Le hook est défini dans un fichier autonome. Les hooks vont sous la clé "hooks" dans un fichier de paramètres.
  • La valeur matcher est un tableau au lieu d’une chaîne unique. Claude Code liste l’entrée comme un paramètre invalide lorsque vous démarrez une session interactive et dans claude doctor. Si le tableau se trouve sous PreToolUse ou PermissionRequest, aucun des autres hooks de ce fichier ne se charge non plus.
Si le hook apparaît mais ne se déclenche pas, le matcher est la cause habituelle. Vérifiez-le pour ces erreurs :
  • Le champ matcher est une chaîne unique qui utilise | pour correspondre à plusieurs noms d’outils, par exemple "Edit|Write". Un séparateur , est équivalent, donc "Edit,Write" correspond aux mêmes outils. Avant v2.1.191, une virgule passait à l’évaluation regex et le matcher ne correspondait jamais, donc utilisez | si vous n’êtes pas sur v2.1.191 encore.
  • Un nom d’outil mal orthographié produit un matcher qui ne correspond à rien, donc le hook échoue silencieusement.
Lorsque vous modifiez settings.json, la modification prend effet dans la session en cours après un bref délai de stabilité du fichier, même si vous créez le fichier ou le dossier .claude/ du projet lui-même après le démarrage de la session. Vous n’avez pas besoin de redémarrer. Avant v2.1.257, Claude Code ne détectait pas les modifications dans un dossier .claude/ créé après le démarrage de la session. Si /hooks affiche toujours l’ancienne définition quelques secondes après l’enregistrement, exécutez /hooks à nouveau pour actualiser la vue. Si /hooks affiche le hook mais qu’il ne se déclenche toujours pas, l’étape suivante consiste à regarder l’évaluation du hook en direct. Démarrez une session avec claude --debug et déclenchez l’appel d’outil. Le journal de débogage enregistre chaque événement, quels matchers ont été vérifiés, et le code de sortie et la sortie du hook. Consultez Debug hooks pour le format du journal et hooks troubleshooting pour les modèles d’échec courants.

Tester avec une configuration propre

Commencez par claude --safe-mode, qui lance une session avec vos personnalisations désactivées, y compris :
  • CLAUDE.md
  • Les skills, les plugins et les hooks
  • Les serveurs MCP
  • Les commandes et agents personnalisés
  • Les styles de sortie personnalisés
  • Les raccourcis clavier personnalisés
L’authentification, la sélection du modèle, les outils intégrés et les permissions fonctionnent normalement. Si le problème disparaît en mode sécurisé, vous avez réduit la cause à l’un des éléments que vous avez désactivés. Pour le trouver, utilisez la vérification correspondant à cet élément, comme Voir ce qui a été chargé dans le contexte, Vérifier les serveurs MCP ou Vérifier les hooks. Le mode sécurisé applique toujours les hooks gérés et la politique de paramètres de votre organisation. Les plugins gérés, les skills, CLAUDE.md et les serveurs MCP sont désactivés. Si le problème persiste en mode sécurisé, ou si vos paramètres eux-mêmes sont suspects, démarrez une session sans aucune de vos propres configurations et vérifiez si le problème se reproduit.
1

Créer un répertoire vide et s'y déplacer

Dans votre shell, sans session Claude Code en cours d’exécution, créez le répertoire et déplacez-vous dedans :
2

Démarrer Claude Code avec un répertoire de configuration propre

Depuis le même shell, définissez CLAUDE_CONFIG_DIR sur un nouveau répertoire à la place de ~/.claude, et passez --setting-sources user pour désactiver la configuration du projet, comme .claude/settings.json, CLAUDE.md et .mcp.json :
La variable s’applique uniquement à ce lancement.
Au premier lancement, vous repassez par les écrans de configuration initiale, signe que le répertoire de configuration propre est en vigueur. Les paramètres gérés s’appliquent toujours, et les connecteurs se chargent toujours si vous vous connectez avec un compte claude.ai.
3

Reproduire le problème

Répétez ce qui a déclenché le problème dans la session propre :
  • Le problème a disparu : la cause se trouve dans votre configuration utilisateur ou projet. Copiez ~/.claude.json et les fichiers de ~/.claude dans ~/claude-clean/config un par un. Si aucun ne fait réapparaître le problème, accédez au répertoire de votre projet dans le même shell et démarrez Claude Code sans --setting-sources user. Dans Bash ou Zsh, exécutez CLAUDE_CONFIG_DIR=~/claude-clean/config claude. Dans PowerShell, la variable est toujours définie, exécutez donc claude.
  • Le problème persiste : la cause se trouve en dehors de votre configuration utilisateur et projet. Exécutez /status dans la session pour vérifier la présence de paramètres gérés, vérifiez les variables d’environnement de votre shell, puis consultez Dépannage.

Vérifier les causes courantes

La plupart des surprises de configuration remontent à un petit ensemble de règles d’emplacement et de syntaxe. Vérifiez-les avant de supposer un bogue : Pour la référence complète sur chaque surface de configuration, consultez la page dédiée :