> ## Documentation Index
> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Exécuter des appels d'outils depuis du code avec Code Mode

> Essayez Code Mode, une fonctionnalité expérimentale dans laquelle Claude écrit du JavaScript qui effectue plusieurs appels d'outils en une seule étape.

Code Mode modifie la façon dont Claude utilise ses [outils](https://code.claude.com/docs/fr/tools-reference.md). 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.

> [!NOTE]
>
> 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 :

```javascript theme={null}
const files = await $`rg -l "function retryPolicy" src`.text();
const target = files.trim().split("\n")[0];
await edit(target, "maxAttempts: 3", "maxAttempts: 5");
({ edited: target, tests: $`npm test -- retryPolicy`.nothrow() });
```

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](https://code.claude.com/docs/fr/interactive-mode.md#transcript-viewer). 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 :

* **Reprise** : vous ne pouvez reprendre une session Code Mode que dans le terminal, avec Code Mode activé
* **Mode auto** : le classifieur du mode auto [examine le code, et non chaque appel d'outil](#permission-checks)
* **Code de longue durée** : sauf si [le code peut s'exécuter en arrière-plan](#long-running-code), vous attendez qu'il se termine, et il s'arrête au bout de dix minutes
* **Hooks** : vous pouvez voir des [appels d'outils refusés](#tool-call-refused-by-a-hook) lorsqu'un hook `PreToolUse` ne peut pas s'exécuter ou expire, et une [sortie de code bloquée](#code-output-withheld-by-a-hook) par un hook `UserPromptSubmit`
* **Fonctionnalités indisponibles** : vous ne pouvez pas utiliser [Remote Control](https://code.claude.com/docs/fr/remote-control.md), [Claude in Chrome](https://code.claude.com/docs/fr/chrome.md) ni [computer use](https://code.claude.com/docs/fr/computer-use.md)
* **Déplacement de la session** : vous ne pouvez pas déplacer la session vers l'application Desktop ni la transformer en [session en arrière-plan](https://code.claude.com/docs/fr/agent-view.md), et `/fork` ne peut pas démarrer de copie en arrière-plan

## Prérequis

* **Version** : Claude Code v2.1.323 ou ultérieure, sur l'un ou l'autre [canal de publication](https://code.claude.com/docs/fr/setup.md#configure-release-channel). 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](https://code.claude.com/docs/fr/hipaa-setup.md) ni la [conservation zéro des données](https://code.claude.com/docs/fr/zero-data-retention.md)
* **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](https://code.claude.com/docs/fr/setup.md) de Claude Code
* **Windows** : [Git for Windows](https://git-scm.com/downloads/win) 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](#code-mode-doesnt-start).

## 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`](https://code.claude.com/docs/fr/setup#configure-release-channel).

**2. Démarrer Claude Code avec Code Mode activé**

Définissez la variable d'environnement [`CLAUDE_CODE_EXPERIMENTAL_CODE_MODE`](https://code.claude.com/docs/fr/env-vars#variables) 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.

> [tab] macOS, Linux, WSL
>
> ```bash theme={null}
> CLAUDE_CODE_EXPERIMENTAL_CODE_MODE=1 claude
> ```

> [tab] Windows PowerShell
>
> ```powershell theme={null}
> $env:CLAUDE_CODE_EXPERIMENTAL_CODE_MODE = "1"
> claude
> ```

> [tab] settings.json
>
> Enregistrez ce bloc `env` dans `~/.claude/settings.json` et démarrez `claude` :
>
> ```json theme={null}
> {
>   "env": {
>     "CLAUDE_CODE_EXPERIMENTAL_CODE_MODE": "1"
>   }
> }
> ```
>
> Claude Code [ignore cette variable dans les fichiers de paramètres d'un projet](https://code.claude.com/docs/fr/settings-reference.md#variables-claude-code-ignores-in-env), de sorte qu'un dépôt que vous clonez ne peut pas activer Code Mode à votre place.

**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 :

```text theme={null}
Code Mode (experimental) is on · this session can be resumed only with Code Mode on
```

Si vous voyez une ligne différente ou aucune ligne, consultez [Code Mode ne démarre pas](#code-mode-doesnt-start).

**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 :

```text theme={null}
Read every Markdown file in this project and list the links that point to local files that don't exist.
```

**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.

> [!WARNING]
>
> 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](https://code.claude.com/docs/fr/managed-settings.md) afin que personne dans votre organisation ne puisse utiliser Code Mode :

```json theme={null}
{
  "env": {
    "CLAUDE_CODE_EXPERIMENTAL_CODE_MODE": "0"
  }
}
```

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](https://code.claude.com/docs/fr/permissions.md) `deny` et `ask` ainsi que par vos [hooks `PreToolUse`](https://code.claude.com/docs/fr/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](https://code.claude.com/docs/fr/permission-modes.md#eliminate-prompts-with-auto-mode)** : 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](#permission-prompt-with-a-countdown)
* **Autres [modes de permission](https://code.claude.com/docs/fr/permission-modes.md)** : 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`.

> [!WARNING]
>
> 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](https://code.claude.com/docs/fr/permissions.md#bash-rule-limits), avec ou sans Code Mode. Pour des limites qui ne dépendent pas du texte des commandes, consultez [sandboxing](https://code.claude.com/docs/fr/sandboxing.md).

### 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](https://code.claude.com/docs/fr/permission-modes.md#eliminate-prompts-with-auto-mode) 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](#requirements).

| La raison contient | Que faire |
| :- | :- |
| `it isn't open to your account yet` | Si votre version est antérieure à v2.1.323, [mettez à jour](#try-code-mode). Sinon, vérifiez votre connexion réseau et recommencez. Si la raison persiste, réessayez un autre jour |
| `it only works with the Anthropic API` | Supprimez les paramètres qui acheminent les requêtes via un fournisseur cloud, une passerelle ou une `ANTHROPIC_BASE_URL` personnalisée |
| `it doesn't work with an API key helper` | Supprimez `apiKeyHelper`, `ANTHROPIC_AUTH_TOKEN` et tout en-tête `Authorization` ou `X-Api-Key` dans `ANTHROPIC_CUSTOM_HEADERS`. Connectez-vous ensuite ou définissez `ANTHROPIC_API_KEY` |
| `it only works with Opus 5.5, Sonnet 5.5 and later models` | Démarrez avec un [modèle pris en charge](#requirements), par exemple avec `--model opus`. Haiku 5.5 et Fable 5.2 fonctionnent également |
| `it doesn't work in background jobs` | Démarrez au premier plan, sans `--remote-control` |
| `it needs settings that Claude Code downloads from Anthropic` | Supprimez la variable qui [désactive la récupération des feature flags](https://code.claude.com/docs/fr/env-vars.md#features-that-need-feature-flag-fetching), comme `DISABLE_TELEMETRY` |
| `OpenTelemetry is on` | Supprimez `CLAUDE_CODE_ENABLE_TELEMETRY` et `ENABLE_BETA_TRACING_DETAILED` si vous pouvez vous passer de l'[export OpenTelemetry](https://code.claude.com/docs/fr/monitoring-usage.md) |
| `it doesn't yet work with an installed mod` | Désactivez le [mod](https://code.claude.com/docs/fr/plugins/mods/overview.md) qui vérifie les appels d'outils |
| `it can't be used together with agent teams yet` | Supprimez `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` |
| `this launch's tool options` | Démarrez sans `--restricted`, ajoutez `REPL` à `--tools` et retirez `REPL` de `--disallowedTools` et de vos règles `deny` |
| `couldn't save your answer` | Rendez `~/.claude.json` accessible en écriture |
| `your organization's settings don't allow it` | Interrogez votre administrateur au sujet du [paramètre géré](#block-code-mode-for-your-organization) |

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 :

```text theme={null}
Claude Code will automatically block this request in 1:59, to avoid holding up an unattended session
```

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`](https://code.claude.com/docs/fr/hooks#block-the-action-when-a-hook-fails) 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`](https://code.claude.com/docs/fr/hooks#common-fields) 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`](https://code.claude.com/docs/fr/hooks#userpromptsubmit). Lorsque [le code peut s'exécuter en arrière-plan](#long-running-code), 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`.

## Ressources associées

* [Modes de permission](https://code.claude.com/docs/fr/permission-modes.md) : comparer le mode auto avec les modes qui vous présentent des demandes de permission
* [Référence des hooks](https://code.claude.com/docs/fr/hooks.md) : écrire des hooks `PreToolUse` et `UserPromptSubmit`
* [Paramètres gérés](https://code.claude.com/docs/fr/managed-settings.md) : appliquer une configuration unique à l'ensemble d'une organisation
