Passer au contenu principal
Code Mode modifie la façon dont Claude utilise ses outils. Sans Code Mode, Claude demande directement des appels d’outils tels que Bash, Read ou Edit et lit chaque résultat avant de décider de la suite. Avec Code Mode, Claude écrit un morceau de JavaScript qui effectue les appels d’outils, et Claude Code exécute ce code dans votre session.
Code Mode est expérimental et désactivé par défaut. Il peut changer ou être supprimé dans n’importe quelle version. Pour partager vos commentaires, exécutez /feedback.

Fonctionnement de Code Mode

Dans une session Code Mode, vous décrivez toujours votre tâche dans un prompt, et Claude écrit du JavaScript pour l’accomplir. Un seul morceau de code peut exécuter des commandes en parallèle, utiliser un résultat dans l’appel suivant et renvoyer la partie de la sortie que Claude doit lire. Par exemple, si vous demandez à Claude d’augmenter une limite de nouvelles tentatives, Claude peut écrire ce code pour trouver le fichier, le modifier et exécuter les tests. La dernière ligne renvoie à Claude le chemin du fichier et la sortie des tests :
Dans la conversation, vous voyez les appels d’outils, comme le diff de la modification, et non le code. Pour lire le code, appuyez sur Ctrl+O afin d’ouvrir la visionneuse de transcription. Chaque morceau de code y apparaît sous la forme d’une ligne Code réduite, accompagnée d’une indication sur la façon de la développer.

Quand utiliser Code Mode

Essayez Code Mode sur des tâches qui nécessitent de nombreux appels d’outils liés, par exemple :
  • Une modification qui se répète dans de nombreux fichiers
  • Une recherche dont les résultats doivent être filtrés avant que Claude ne les lise
  • Plusieurs commandes indépendantes qui peuvent s’exécuter en même temps

Limitations de Code Mode

Avant d’activer Code Mode, vérifiez que vous pouvez accepter ces limites :

Prérequis

  • Version : Claude Code v2.1.323 ou ultérieure, sur l’un ou l’autre canal de publication. Une version plus ancienne démarre sans Code Mode, avec ou sans la raison it isn't open to your account yet
  • Compte : un abonnement Claude ou un compte Console. Vous ne pouvez pas utiliser Code Mode via une passerelle, Amazon Bedrock, Claude Platform on AWS, Agent Platform de Google Cloud ou Microsoft Foundry
  • Organisation : votre organisation n’utilise ni la configuration HIPAA ni la conservation zéro des données
  • Modèle : Claude Opus 5.5, Sonnet 5.5, Haiku 5.5 ou Fable 5.2
  • Surface : une session claude interactive dans un terminal. Code Mode ne fonctionne pas avec -p, l’Agent SDK, le panneau VS Code, l’application Desktop ni les sessions cloud
  • Installation : le build natif de Claude Code
  • Windows : Git for Windows est installé
Vous ne pouvez pas non plus démarrer Code Mode lorsque certains paramètres sont activés, comme un assistant de clé API, les équipes d’agents, l’export OpenTelemetry ou DISABLE_TELEMETRY. Pour la solution à chacun de ces cas, consultez Code Mode ne démarre pas.

Essayer Code Mode

Activez Code Mode, confiez une tâche à Claude et examinez le code que Claude a écrit.
1

Vérifier votre version

Exécutez claude --version. Si la version est antérieure à v2.1.323, exécutez claude update. Si vous êtes sur le canal stable et que la mise à jour n’atteint pas v2.1.323, attendez que stable rattrape son retard ou passez à latest.
2

Démarrer Claude Code avec Code Mode activé

Définissez la variable d’environnement CLAUDE_CODE_EXPERIMENTAL_CODE_MODE sur 1. Pour essayer Code Mode, définissez-la dans votre shell. Pour activer Code Mode pour chaque nouvelle session, définissez-la dans vos paramètres utilisateur.
3

Confirmer que vous souhaitez utiliser Code Mode

Claude Code vous demande de confirmer avant votre première session Code Mode. Sélectionnez Yes, turn on Code Mode. Claude Code redémarre et affiche cette ligne en haut de la session :
Si vous voyez une ligne différente ou aucune ligne, consultez Code Mode ne démarre pas.
4

Confier à Claude une tâche comportant de nombreux appels d'outils

Dans un projet que vous connaissez, envoyez un prompt tel que celui-ci :
5

Lire le code écrit par Claude

Appuyez sur Ctrl+O et développez une ligne Code pour voir le JavaScript derrière les appels d’outils. Appuyez de nouveau sur Ctrl+O pour revenir à la conversation.
Pour reprendre ultérieurement une session Code Mode, laissez CLAUDE_CODE_EXPERIMENTAL_CODE_MODE défini sur 1 lorsque vous exécutez claude --continue ou claude --resume. Lorsque Code Mode est désactivé, Claude Code refuse de reprendre la session. Les sessions que vous avez démarrées sans Code Mode reprennent sans Code Mode, même si la variable est définie.

Désactiver Code Mode

Supprimez CLAUDE_CODE_EXPERIMENTAL_CODE_MODE de votre shell et de ~/.claude/settings.json, puis démarrez une nouvelle session. Vous pouvez aussi conserver la variable et changer sa valeur en 0 à l’un ou l’autre de ces emplacements. Avec un 0 à un emplacement, Code Mode reste désactivé même si vous définissez 1 à l’autre.

Bloquer Code Mode pour votre organisation

Ajoutez CLAUDE_CODE_EXPERIMENTAL_CODE_MODE avec la valeur 0 à vos paramètres gérés afin que personne dans votre organisation ne puisse utiliser Code Mode :
Les utilisateurs qui se trouvent dans une session Code Mode y restent jusqu’à ce qu’ils quittent ou redémarrent Claude Code. Ensuite, vos utilisateurs démarrent sans Code Mode et ne peuvent pas reprendre leurs sessions Code Mode tant que le 0 est en place. Vous ne pouvez pas activer Code Mode pour vos utilisateurs depuis les paramètres gérés.

Permissions et code de longue durée

Votre mode de permission détermine la façon dont le code de Claude est vérifié et si vous pouvez parler à Claude pendant l’exécution du code.

Vérifications des permissions

Chaque appel d’outil effectué par le code de Claude passe par vos règles de permission deny et ask ainsi que par vos hooks PreToolUse. Vous n’avez pas besoin de modifier une règle ou un matcher pour un outil tel que Bash. Au-delà des règles et des hooks, un classifieur examine le code en mode auto, et vous répondez aux demandes de permission dans les modes qui en affichent :
  • Mode auto : le classifieur examine chaque morceau de code avant son exécution, et non chaque appel d’outil. Il ne voit pas les valeurs calculées à l’exécution, comme un chemin tiré d’une sortie de recherche ; conservez donc des règles ou des hooks pour les appels que vous devez contrôler. Des demandes de permission peuvent toujours vous être présentées lorsqu’un nouveau code démarre alors qu’un code antérieur est en cours d’exécution
  • Autres modes de permission : le code démarre sans examen, et une demande de permission vous est présentée pour chaque appel d’outil qui vous en présenterait une dans ce mode
Pour vérifier le code lui-même, écrivez un hook PreToolUse qui correspond à REPL, l’outil qui exécute le code de Claude, et lisez le JavaScript depuis tool_input.code.
Les règles Bash correspondent au texte des commandes ; Claude peut donc exécuter une commande refusée sous une forme à laquelle la règle ne correspond pas, avec ou sans Code Mode. Pour des limites qui ne dépendent pas du texte des commandes, consultez sandboxing.

Code de longue durée

Lorsque le code exécute un build ou des tests longs, Claude l’attend ou le laisse se poursuivre en arrière-plan :
  • Attente : Claude répond une fois le code terminé, et le code s’arrête au bout de dix minutes, y compris le temps que vous passez sur les demandes de permission
  • Arrière-plan : vous pouvez continuer à parler à Claude, et le code peut s’exécuter jusqu’à deux heures
Pour exécuter du code en arrière-plan, démarrez votre session en mode auto ou bypassPermissions. Si Claude attend toujours, vérifiez votre mode actuel et la façon dont vous avez démarré la session :
  • Vous êtes passé à un autre mode : appuyez sur Shift+Tab jusqu’à revenir au mode dans lequel vous avez démarré
  • Vous avez démarré dans un autre mode, ou avez choisi la session dans la liste claude --resume : si le mode auto est disponible pour vous, quittez, puis exécutez claude --continue --permission-mode auto avec Code Mode activé
  • Vous avez passé des noms d’outils à --tools : redémarrez en mode auto sans ce flag

Dépannage

Code Mode ne démarre pas

Code Mode (experimental) isn't available en haut de la session signifie que Claude Code a démarré sans Code Mode. La raison suit sur la même ligne, et /status l’affiche également. Trouvez la raison dans ce tableau, effectuez la modification et démarrez une nouvelle session. Pour une raison qui ne figure pas dans la liste, consultez les prérequis. Si vous ne voyez aucune ligne concernant Code Mode, exécutez claude --version. Si votre version est antérieure à v2.1.323, mettez à jour. Vérifiez ensuite que CLAUDE_CODE_EXPERIMENTAL_CODE_MODE vaut 1 dans votre shell ou vos paramètres utilisateur, et supprimez tout 0 de ces emplacements ainsi que de tout fichier --settings.

Demande de permission avec compte à rebours

Lorsque Claude démarre du code supplémentaire en mode auto alors qu’un code antérieur est encore en cours d’exécution, le code antérieur perd l’examen du classifieur. Claude Code vous interroge alors sur les appels restants du code antérieur qui nécessiteraient un examen. Si aucun IDE n’est connecté, la demande de permission affiche un compte à rebours :
Répondez avant la fin du compte à rebours. Sinon, cet appel est refusé, et les appels suivants qui afficheraient un compte à rebours sont refusés sans demande de permission. Pour voir de nouveau les demandes de permission, envoyez un message à Claude.

Appel d’outil refusé par un hook

Si Claude signale un appel d’outil refusé, demandez-lui le texte de l’erreur. Ces erreurs signifient qu’un hook PreToolUse n’a pas fourni de décision, ce qui refuse l’appel même lorsque onFailure n’est pas défini :
  • the hook failed : lors d’un appel provenant du code de Claude, votre hook n’a pas pu démarrer, a été arrêté de force, s’est terminé avec le code 126, 127 ou un code supérieur à 128, ou a renvoyé une erreur HTTP ou une sortie non valide. Corrigez le hook
  • the hook did not finish : votre hook a expiré lors d’un appel provenant du code de Claude, ou lors de tout autre appel d’outil une fois que Claude a exécuté du code dans la session. Augmentez le timeout du hook
Pour laisser les appels se poursuivre lorsqu’un hook command ou http échoue ou expire, définissez "onFailure": "continue" sur celui-ci. Si un hook command se termine avec un code ordinaire tel que 1, l’appel se poursuit, sauf si vous définissez "onFailure": "block".

Sortie de code retenue par un hook

Si Claude signale la raison de blocage d’un hook là où vous attendiez la sortie du code de Claude, vérifiez vos hooks UserPromptSubmit. Lorsque le code peut s’exécuter en arrière-plan, les hooks command, http et mcp_tool associés à cet événement s’exécutent aussi sur la sortie du code. Pour laisser passer la sortie, modifiez le hook afin qu’il ne bloque pas lorsque source dans son entrée vaut poll_event.