# Bonnes pratiques — Paramètres (settings)

![Last Updated](https://img.shields.io/badge/Last_Updated-Jun%2001%2C%202026%2010%3A42%20AM%20PKT-white?style=flat&labelColor=555) ![Version](https://img.shields.io/badge/Claude_Code-v2.1.159-blue?style=flat&labelColor=555)<br>
[![Implemented](https://img.shields.io/badge/Implemented-2ea44f?style=flat)](../../.claude/settings.json)

Un guide complet de toutes les options de configuration disponibles dans les fichiers `settings.json` de Claude Code. À partir de la v2.1.159, Claude Code expose **80+ paramètres** et **200+ variables d'environnement** (utilise le champ `"env"` dans `settings.json` pour éviter les scripts wrapper).

<table width="100%">
<tr>
<td><a href="../">← Retour à Claude Code Best Practice</a></td>
<td align="right"><img src="../../!/claude-jumping.svg" alt="Claude" width="60" /></td>
</tr>
</table>

## Table des matières

1. [Hiérarchie des paramètres](#hiérarchie-des-paramètres)
2. [Configuration de base](#configuration-de-base)
3. [Permissions](#permissions)
4. [Hooks](#hooks)
5. [Serveurs MCP](#serveurs-mcp)
6. [Sandbox](#sandbox)
7. [Plugins](#plugins)
8. [Configuration du modèle](#configuration-du-modèle)
9. [Affichage & UX](#affichage--ux)
10. [Identifiants AWS & Cloud](#identifiants-aws--cloud)
11. [Variables d'environnement](#variables-denvironnement-via-env)
12. [Commandes utiles](#commandes-utiles)

---

## Hiérarchie des paramètres

Les paramètres s'appliquent par ordre de priorité (du plus élevé au plus bas) :

| Priorité | Emplacement | Portée | Partagé ? | Objectif |
|----------|----------|-------|---------|---------|
| 1 | Managed settings | Organisation | Oui (déployé par l'IT) | Politiques de sécurité non surchargeables |
| 2 | Arguments en ligne de commande | Session | N/A | Surcharges temporaires sur une seule session |
| 3 | `.claude/settings.local.json` | Projet | Non (git-ignored) | Personnel, spécifique au projet |
| 4 | `.claude/settings.json` | Projet | Oui (committé) | Paramètres partagés en équipe |
| 5 | `~/.claude/settings.json` | Utilisateur | N/A | Défauts personnels globaux |

Les **managed settings** sont imposés par l'organisation et ne peuvent être surchargés par aucun autre niveau, y compris les arguments en ligne de commande. Méthodes de livraison :
- Paramètres **gérés par serveur** (livraison distante)
- **Profils MDM** — plist macOS à `com.anthropic.claudecode`
- **Politiques de registre** — Windows `HKLM\SOFTWARE\Policies\ClaudeCode` (admin) et `HKCU\SOFTWARE\Policies\ClaudeCode` (niveau utilisateur, priorité de politique la plus basse)
- **Fichier** — `managed-settings.json` et `managed-mcp.json` (macOS : `/Library/Application Support/ClaudeCode/`, Linux/WSL : `/etc/claude-code/`, Windows : `C:\Program Files\ClaudeCode\`)
- **Répertoire drop-in** — `managed-settings.d/` à côté de `managed-settings.json` pour des fragments de politique indépendants (v2.1.83). Suivant la convention systemd, `managed-settings.json` est fusionné en premier comme base, puis tous les fichiers `*.json` du répertoire drop-in sont triés alphabétiquement et fusionnés par-dessus. Les fichiers plus tardifs surchargent les précédents pour les valeurs scalaires ; les tableaux sont concaténés et dédupliqués ; les objets sont fusionnés en profondeur. Les fichiers cachés commençant par `.` sont ignorés. Utilise des préfixes numériques pour contrôler l'ordre de fusion (par ex. `10-telemetry.json`, `20-security.json`)

Au sein du palier managed, la priorité est : géré par serveur > politiques MDM/au niveau OS > basé sur fichier (`managed-settings.d/*.json` + `managed-settings.json`) > registre HKCU (Windows uniquement). Une seule source managed est utilisée ; les sources ne fusionnent pas entre paliers. Au sein du palier basé sur fichier, les fichiers drop-in et le fichier de base sont fusionnés ensemble.

> **Note :** À partir de la v2.1.75, le chemin de repli Windows déprécié `C:\ProgramData\ClaudeCode\managed-settings.json` a été retiré. Utilise plutôt `C:\Program Files\ClaudeCode\managed-settings.json`.

> **Note (v2.1.126) :** `/config` persiste désormais les changements dans `~/.claude/settings.json` au lieu de les garder seulement en mémoire. Les modifications faites via l'UI Config interactive survivent aux redémarrages.

**Clés de politique managed-only :**

| Clé | Type | Défaut | Description |
|-----|------|---------|-------------|
| `parentSettingsBehavior` | string | `"first-wins"` | Contrôle si les managed settings fournis par programme par un processus hôte d'embarquement (parent SDK) s'appliquent quand un palier managed déployé par admin est aussi présent. `"first-wins"` : les paramètres fournis par le parent sont écartés et seul le palier admin s'applique. `"merge"` : les paramètres fournis par le parent s'appliquent sous le palier admin et sont filtrés pour qu'ils puissent **resserrer** la politique mais pas l'assouplir. Requiert v2.1.133+ |
| `policyHelper` | object | - | Exécutable déployé par admin qui calcule les managed settings dynamiquement au démarrage. Forme d'objet : `{path: string}` pointant vers le binaire helper. Honoré uniquement depuis MDM ou un fichier système `managed-settings.json` (jamais depuis les paramètres utilisateur/projet). La sortie du helper est fusionnée dans le palier managed à chaque démarrage. Requiert v2.1.136+ |

**Important** :
- Les règles `deny` ont la priorité de sécurité la plus élevée et ne peuvent être surchargées par des règles allow/ask de priorité inférieure.
- Les managed settings peuvent verrouiller ou surcharger le comportement local même si des fichiers locaux spécifient des valeurs différentes.
- Les paramètres de type tableau (par ex. `permissions.allow`) sont **concaténés et dédupliqués** entre portées — les entrées de tous les niveaux sont combinées, non remplacées.

---

## Configuration de base

### Paramètres généraux

| Clé | Type | Défaut | Description |
|-----|------|---------|-------------|
| `$schema` | string | - | URL de schéma JSON pour la validation et l'autocomplétion dans l'IDE (par ex. `"https://json.schemastore.org/claude-code-settings.json"`) |
| `model` | string | `"default"` | Surcharger le modèle par défaut. Accepte des alias (`sonnet`, `opus`, `haiku`) ou des IDs de modèle complets |
| `agent` | string | - | Définir l'agent par défaut de la conversation principale. La valeur est le nom de l'agent dans `.claude/agents/`. Aussi disponible via le drapeau CLI `--agent` |
| `language` | string | `"english"` | Langue de réponse préférée de Claude. Définit aussi la langue de la dictée vocale et le titre de l'onglet de terminal (v2.1.121) |
| `claudeMdExcludes` | array | - | Motifs glob ou chemins absolus de fichiers `CLAUDE.md` à ignorer lors du chargement de la [mémoire](https://code.claude.com/docs/en/memory). Les motifs correspondent aux chemins de fichiers absolus. S'applique uniquement à la mémoire utilisateur, projet et locale ; les fichiers de politique managed ne peuvent pas être exclus. Exemple : `["**/vendor/**/CLAUDE.md"]` |
| `claudeMd` | string | - | **(Managed only)** Instructions de style CLAUDE.md injectées comme [mémoire](https://code.claude.com/docs/en/memory) gérée par l'organisation. Honoré uniquement quand défini dans les managed/policy settings ; ignoré dans les paramètres utilisateur, projet et locaux. Exemple : `"Always run make lint before committing."` |
| `cleanupPeriodDays` | number | `30` | Seuil d'âge pour le balayage de nettoyage au démarrage (minimum 1). Les transcripts de sessions inactives et les worktrees de sous-agents orphelins sont supprimés ; à partir de la v2.1.117 le balayage couvre aussi `~/.claude/tasks/`, `~/.claude/shell-snapshots/`, et `~/.claude/backups/`. La valeur `0` est rejetée avec une erreur de validation. Pour désactiver l'écriture des transcripts en mode non interactif (`-p`), utilise `--no-session-persistence` ou l'option SDK `persistSession: false` |
| `autoUpdatesChannel` | string | `"latest"` | Canal de version : `"stable"` ou `"latest"` |
| `minimumVersion` | string | - | Empêcher l'auto-updater de redescendre sous une version spécifique. Défini automatiquement en passant au canal stable et en choisissant de rester sur la version actuelle jusqu'à ce que stable rattrape. Utilisé avec `autoUpdatesChannel` |
| `alwaysThinkingEnabled` | boolean | `false` | Activer la réflexion étendue par défaut pour toutes les sessions |
| `skipWebFetchPreflight` | boolean | `false` | Sauter la vérification de blocklist WebFetch avant de récupérer des URLs *(dans le schéma JSON, pas sur la page officielle des paramètres)* |
| `availableModels` | array | - | Restreindre quels modèles les utilisateurs peuvent sélectionner via `/model`, `--model`, l'outil Config ou `ANTHROPIC_MODEL`. N'affecte pas l'option Default. Exemple : `["sonnet", "haiku"]` |
| `fastModePerSessionOptIn` | boolean | `false` | Exiger des utilisateurs qu'ils optent pour le mode fast à chaque session |
| `defaultShell` | string | `"bash"` | Shell par défaut pour les commandes `!` de la zone de saisie. Accepte `"bash"` (défaut) ou `"powershell"`. Mettre `"powershell"` route les commandes `!` interactives via PowerShell sous Windows. Requiert `CLAUDE_CODE_USE_POWERSHELL_TOOL=1` (v2.1.84). **v2.1.120 :** Quand PowerShell est disponible, il est utilisé comme shell de repli sous Windows même sans Git for Windows installé. **v2.1.126 :** Quand PowerShell est activé, il est traité comme shell *primaire* au lieu de revenir à Bash par défaut. La détection de PowerShell 7 couvre désormais aussi les installs Microsoft Store, les installs MSI hors PATH et les installs d'outils globaux `.NET` |
| `includeGitInstructions` | boolean | `true` | Inclure les instructions intégrées de workflow de commit et de PR ainsi que l'instantané du git status dans le system prompt de Claude. La variable d'environnement `CLAUDE_CODE_DISABLE_GIT_INSTRUCTIONS` prend le pas sur ce paramètre quand elle est définie |
| `voice` | object | - | Configuration de la dictée vocale. Objet à trois champs : `enabled` (boolean — push-to-talk on/off), `mode` (string — `"hold"` pour maintenir-pour-parler ou `"tap"` pour appuyer-pour-basculer), et `autoSubmit` (boolean — soumettre le transcript immédiatement à la fin de la dictée). Écrit automatiquement quand tu lances `/voice`. Requiert un compte Claude.ai (structure élargie en v2.1.118) |
| `voiceEnabled` | boolean | - | **DÉPRÉCIÉ** — alias hérité de `voice.enabled`. Utilise plutôt l'objet `voice` pour obtenir les contrôles `mode` et `autoSubmit` |
| `showClearContextOnPlanAccept` | boolean | `false` | Afficher l'option « clear context » sur l'écran d'acceptation du plan. Mets `true` pour restaurer l'option (masquée par défaut depuis v2.1.81) |
| `viewMode` | string | - | Mode d'affichage du transcript par défaut au démarrage : `"default"`, `"verbose"`, ou `"focus"`. Surcharge la sélection persistante Ctrl+O quand défini |
| `disableDeepLinkRegistration` | string | - | Mets `"disable"` pour empêcher Claude Code d'enregistrer le gestionnaire de protocole `claude-cli://` auprès du système d'exploitation au démarrage. Les deep links permettent à des outils externes d'ouvrir une session Claude Code avec un prompt pré-rempli via `claude-cli://open?q=...`. Le paramètre `q` supporte les prompts multilignes via des sauts de ligne URL-encodés (`%0A`). Utile dans les environnements où l'enregistrement de gestionnaires de protocole est restreint ou géré séparément |
| `showThinkingSummaries` | boolean | `false` | Afficher les résumés de réflexion étendue dans les sessions interactives. Quand non défini ou `false` (défaut en mode interactif), les blocs de réflexion sont caviardés par l'API et affichés sous forme de stub réduit. Le caviardage ne change que ce que tu vois, pas ce que le modèle génère — pour réduire la dépense de réflexion, baisse plutôt le budget ou désactive la réflexion. Le mode non interactif (`-p`) et les appelants SDK reçoivent toujours les résumés indépendamment de ce paramètre |
| `disableSkillShellExecution` | boolean | `false` | Désactiver l'exécution shell inline pour les blocs `` !`...` `` et `` ```! `` dans les skills et commandes personnalisées provenant de sources utilisateur, projet, plugin ou répertoire additionnel. Les commandes sont remplacées par `[shell command execution disabled by policy]` au lieu d'être exécutées. Les skills fournis et managed ne sont pas affectés (v2.1.91) |
| `maxSkillDescriptionChars` | number | `1536` | Limite de caractères par skill sur le texte combiné `description` + `when_to_use` dans la [liste des skills](https://code.claude.com/docs/en/skills) que Claude voit à chaque tour. Le texte plus long est tronqué (v2.1.105) |
| `skillListingBudgetFraction` | number | `0.01` | Fraction de la fenêtre de contexte du modèle réservée à la [liste des skills](https://code.claude.com/docs/en/skills) que Claude voit à chaque tour (`0.01` = 1%). Quand la liste dépasse le budget, les descriptions des skills les moins utilisés sont réduites à leur nom seul, pour que Claude puisse encore les invoquer sans en voir la raison (v2.1.105) |
| `forceRemoteSettingsRefresh` | boolean | `false` | **(Managed only)** Bloquer le démarrage du CLI jusqu'à ce que les managed settings distants soient fraîchement récupérés. Si la récupération échoue, le CLI quitte (fail-closed). À utiliser dans les environnements entreprise où l'application de la politique doit être à jour avant le début de toute session (v2.1.92) |
| `wslInheritsWindowsSettings` | boolean | `false` | **(Managed settings Windows uniquement)** Quand `true`, Claude Code sur WSL lit les managed settings de la chaîne de politique Windows (registre HKLM + `C:\Program Files\ClaudeCode\managed-settings.json`) en plus de `/etc/claude-code`, les sources Windows ayant priorité. Honoré uniquement quand défini dans la clé de registre HKLM ou `C:\Program Files\ClaudeCode\managed-settings.json`, qui requièrent tous deux des droits admin Windows pour écrire. Pour que la politique HKCU s'applique aussi sur WSL, le drapeau doit en plus être défini dans HKCU lui-même. Aucun effet sur Windows natif (v2.1.118) |
| `tui` | string | `"default"` | Mode de rendu : `"fullscreen"` ou `"default"`. Défini via `/tui fullscreen` pour un rendu écran alternatif sans scintillement (v2.1.110) |
| `awaySummaryEnabled` | boolean | `true` | Générer un « away summary » (récapitulatif de session inactive) quand l'utilisateur revient après s'être absenté. Mets `false` pour s'en désinscrire. Va de pair avec la variable d'env `CLAUDE_CODE_ENABLE_AWAY_SUMMARY` (v2.1.110) |
| `skillOverrides` | object | - | Surcharges de visibilité par skill, indexées par nom de skill. La valeur est `"on"` (complet), `"name-only"` (visible mais non auto-décrit), `"user-invocable-only"` (masqué de la découverte modèle mais toujours invocable via slash), ou `"off"` (entièrement masqué). Exemple : `{"legacy-context": "name-only", "deploy": "off"}` (v2.1.129) |
| `disableRemoteControl` | boolean | `false` | Désactiver le [Remote Control](https://code.claude.com/docs/en/remote-control) : bloque `claude remote-control`, le drapeau `--remote-control`, l'auto-démarrage et le toggle en session. Placé typiquement dans les managed settings pour une application MDM par appareil, mais fonctionne depuis n'importe quelle portée (v2.1.128) |
| `disableAgentView` | boolean | `false` | Mets `true` pour désactiver les [agents en arrière-plan et la vue agent](https://code.claude.com/docs/en/agent-view) : `claude agents`, `--bg`, `/background`, et le superviseur à la demande. Peut être défini à n'importe quelle portée mais placé typiquement dans les managed settings. Équivalent à mettre la variable d'env `CLAUDE_CODE_DISABLE_AGENT_VIEW` à `1` |
| `disableWorkflows` | boolean | `false` | Mets `true` pour désactiver les [workflows dynamiques](https://code.claude.com/docs/en/workflows) (`/workflows`) et les commandes slash de workflow fournies. Peut être défini à n'importe quelle portée. Équivalent à la variable d'env `CLAUDE_CODE_DISABLE_WORKFLOWS`. Les workflows ont été introduits en v2.1.154 |
| `workflowKeywordTriggerEnabled` | boolean | `true` | Si taper le mot « workflow » dans un prompt peut déclencher un workflow dynamique. Mets `false` pour exiger une invocation explicite `/workflows`. Apparaît dans `/config` (v2.1.157) |
| `ultracode` | boolean | - | **(Session uniquement — non persisté)** Quand `true`, le harnais rédige et exécute un workflow pour chaque tâche substantielle par défaut, maximisant l'exhaustivité quel que soit le coût en tokens. Apparaît dans la liste officielle « Available settings » mais a une portée de session : défini via `/effort ultracode`, `--settings` ou le SDK plutôt qu'écrit dans `settings.json` (v2.1.154) |
| `feedbackSurveyRate` | number | - | Probabilité (0–1) que l'enquête de qualité de session apparaisse quand éligible. Les admins entreprise peuvent contrôler la fréquence d'affichage de l'enquête. Exemple : `0.05` = 5% des sessions éligibles |

**Exemple :**
```json
{
  "model": "opus",
  "agent": "code-reviewer",
  "language": "japanese",
  "cleanupPeriodDays": 60,
  "autoUpdatesChannel": "stable",
  "alwaysThinkingEnabled": true
}
```

### Répertoires de plans & de mémoire

Stocker les fichiers de plan et d'auto-mémoire dans des emplacements personnalisés.

| Clé | Type | Défaut | Description |
|-----|------|---------|-------------|
| `plansDirectory` | string | `~/.claude/plans` | Répertoire où sont stockées les sorties de `/plan` |
| `autoMemoryDirectory` | string | - | Répertoire personnalisé pour le stockage de l'auto-mémoire. Accepte les chemins étendus `~/`. Non accepté dans les paramètres projet (`.claude/settings.json`) pour empêcher de rediriger les écritures de mémoire vers des emplacements sensibles ; accepté depuis les paramètres policy, local et utilisateur |
| `autoMemoryEnabled` | boolean | `true` | Activer l'[auto-mémoire](https://code.claude.com/docs/en/memory). Quand `false`, Claude ne lit ni n'écrit dans le répertoire d'auto-mémoire. Peut aussi être basculé avec `/memory` durant une session, ou désactivé via la variable d'env `CLAUDE_CODE_DISABLE_AUTO_MEMORY` |

**Exemple :**
```json
{
  "plansDirectory": "./my-plans"
}
```

**Cas d'usage :** Utile pour organiser les artefacts de planification séparément des fichiers internes de Claude, ou pour garder les plans dans un emplacement d'équipe partagé.

### Paramètres de worktree

Configurer comment `--worktree` crée et gère les worktrees git. Utile pour réduire l'usage disque et le temps de démarrage dans les grands monorepos.

| Clé | Type | Défaut | Description |
|-----|------|---------|-------------|
| `worktree.symlinkDirectories` | array | `[]` | Répertoires à lier symboliquement depuis le dépôt principal vers chaque worktree pour éviter de dupliquer de gros répertoires sur disque |
| `worktree.sparsePaths` | array | `[]` | Répertoires à checkout dans chaque worktree via git sparse-checkout (mode cone). Seuls les chemins listés sont écrits sur disque |
| `worktree.baseRef` | string | `"fresh"` | Depuis quelle ref les nouveaux worktrees branchent. `"fresh"` branche depuis `origin/<default-branch>` pour un arbre propre correspondant au distant. `"head"` branche depuis ton `HEAD` local actuel, incluant les changements non committés mais suivis (v2.1.133) |
| `worktree.bgIsolation` | string | `"worktree"` | Mode d'isolation pour les [sessions en arrière-plan](https://code.claude.com/docs/en/agent-view). `"worktree"` (défaut) bloque `Edit`/`Write` dans le checkout principal jusqu'à ce que `EnterWorktree` soit appelé ; `"none"` laisse les jobs d'arrière-plan éditer la copie de travail directement (v2.1.143) |

**Exemple :**
```json
{
  "worktree": {
    "symlinkDirectories": ["node_modules", ".cache"],
    "sparsePaths": ["packages/my-app", "shared/utils"]
  }
}
```

### Paramètres d'attribution

Personnaliser les messages d'attribution pour les commits git et les pull requests.

| Clé | Type | Défaut | Description |
|-----|------|---------|-------------|
| `attribution.commit` | string | Co-authored-by | Attribution des commits git (supporte les trailers) |
| `attribution.pr` | string | Message généré | Attribution de la description de pull request |
| `prUrlTemplate` | string | - | Template d'URL qui contrôle comment le badge « PR » dans l'attribution de commit pointe vers l'UI de la pull request. Supporte des placeholders pour l'hôte du dépôt, le propriétaire, le dépôt et le numéro de PR. Utile pour les instances GitLab/Bitbucket/GitHub Enterprise auto-hébergées où l'URL par défaut `https://github.com/...` ne s'applique pas (v2.1.119) |
| `includeCoAuthoredBy` | boolean | `true` | **DÉPRÉCIÉ** — Utilise `attribution` à la place |

**Exemple :**
```json
{
  "attribution": {
    "commit": "Generated with AI\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
    "pr": "Generated with Claude Code"
  }
}
```

**Note :** Mets une chaîne vide (`""`) pour masquer entièrement l'attribution.

### Helpers d'authentification

Scripts pour la génération dynamique de tokens d'authentification.

| Clé | Type | Description |
|-----|------|-------------|
| `apiKeyHelper` | string | Chemin de script shell qui produit un token d'auth (envoyé comme en-tête `X-Api-Key`) |
| `forceLoginMethod` | string | Restreindre le login aux comptes `"claudeai"` ou `"console"` |
| `forceLoginOrgUUID` | string \| array | Exiger que le login appartienne à une organisation spécifique. Accepte un seul UUID string (qui pré-sélectionne aussi cette organisation pendant le login) ou un tableau d'UUIDs où toute organisation listée est acceptée sans pré-sélection. Quand défini dans les managed settings, le login échoue si le compte authentifié n'appartient pas à une organisation listée ; un tableau vide échoue en fail-closed et bloque le login avec un message de mauvaise configuration |
| `gcpAuthRefresh` | string | Script personnalisé qui rafraîchit les GCP Application Default Credentials quand elles expirent ou ne peuvent être chargées. Exécuté par Claude Code avant de retenter l'authentification. Utile quand les ADC sont à courte durée de vie et requièrent un helper propre à l'organisation pour se renouveler. Exemple : `"gcloud auth application-default login"` |

**Exemple :**
```json
{
  "apiKeyHelper": "/bin/generate_temp_api_key.sh",
  "forceLoginMethod": "console",
  "forceLoginOrgUUID": ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy"]
}
```

### Annonces d'entreprise

Afficher des annonces personnalisées aux utilisateurs au démarrage (alternées aléatoirement).

| Clé | Type | Description |
|-----|------|-------------|
| `companyAnnouncements` | array | Tableau de chaînes affichées au démarrage |

**Exemple :**
```json
{
  "companyAnnouncements": [
    "Welcome to Acme Corp!",
    "Remember to run tests before committing!",
    "Check the wiki for coding standards"
  ]
}
```

---

## Permissions

Contrôler quels outils et opérations Claude peut effectuer.

### Structure des permissions

```json
{
  "permissions": {
    "allow": [],
    "ask": [],
    "deny": [],
    "additionalDirectories": [],
    "defaultMode": "acceptEdits",
    "disableBypassPermissionsMode": "disable"
  }
}
```

### Clés de permission

| Clé | Type | Description |
|-----|------|-------------|
| `permissions.allow` | array | Règles autorisant l'usage d'outils sans demande |
| `permissions.ask` | array | Règles exigeant une confirmation de l'utilisateur |
| `permissions.deny` | array | Règles bloquant l'usage d'outils (priorité la plus élevée) |
| `permissions.additionalDirectories` | array | Répertoires supplémentaires accessibles à Claude |
| `permissions.defaultMode` | string | Mode de permissions par défaut. Dans les environnements Remote, seuls `acceptEdits` et `plan` sont honorés (v2.1.70+) |
| `permissions.disableBypassPermissionsMode` | string | Empêcher l'activation du mode bypass |
| `permissions.skipDangerousModePermissionPrompt` | boolean | Sauter la demande de confirmation affichée avant d'entrer en mode bypass permissions via `--dangerously-skip-permissions` ou `defaultMode: "bypassPermissions"`. Ignoré quand défini dans les paramètres projet (`.claude/settings.json`) pour empêcher des dépôts non fiables de contourner automatiquement la demande |
| `allowManagedPermissionRulesOnly` | boolean | **(Managed only)** Seules les règles de permission managed s'appliquent ; les règles `allow`, `ask`, `deny` utilisateur/projet sont ignorées |
| `autoMode` | object | Personnaliser ce que le classifieur du [mode auto](https://code.claude.com/docs/en/permission-modes#eliminate-prompts-with-auto-mode) bloque et autorise. Contient `environment` (descriptions d'infrastructure de confiance), `allow` (exceptions aux règles de blocage), `soft_deny` (règles de blocage) et `hard_deny` (règles de blocage inconditionnelles — non surchargeables par des exceptions `allow` ou le sentinel `$defaults`, v2.1.136) — tous des tableaux de chaînes en prose. **Non lu depuis les paramètres projet partagés** (`.claude/settings.json`) pour empêcher l'injection par dépôt. Disponible dans les paramètres utilisateur, local et managed. Mettre `allow` ou `soft_deny` **remplace** toute la liste par défaut pour cette section sauf si tu inclus la chaîne littérale `"$defaults"` dans le tableau — le sentinel hérite des règles intégrées à cette position pour que les entrées personnalisées s'ajoutent à côté (v2.1.118). Lance `claude auto-mode defaults` pour voir les règles intégrées avant de personnaliser |
| `disableAutoMode` | string | Mets `"disable"` pour empêcher l'activation du [mode auto](https://code.claude.com/docs/en/permission-modes#eliminate-prompts-with-auto-mode). Retire `auto` du cycle `Shift+Tab` et rejette `--permission-mode auto` au démarrage. Peut être défini à n'importe quel niveau de paramètres ; le plus utile dans les managed settings où les utilisateurs ne peuvent le surcharger |
| `useAutoModeDuringPlan` | boolean | Si le mode plan utilise la sémantique du mode auto quand le mode auto est disponible. Défaut : `true`. Non lu depuis les paramètres projet partagés (`.claude/settings.json`). Apparaît dans `/config` comme « Use auto mode during plan » |

### Modes de permissions

| Mode | Comportement |
|------|----------|
| `"default"` | Vérification standard des permissions avec demandes |
| `"acceptEdits"` | Accepte automatiquement les modifications de fichiers **et les commandes de système de fichiers courantes** (`mkdir`, `touch`, `mv`, `cp`, etc.) pour les chemins dans le répertoire de travail ou `additionalDirectories` |
| `"dontAsk"` | Refuse automatiquement les outils sauf pré-approbation via `/permissions` ou les règles `permissions.allow` |
| `"bypassPermissions"` | Sauter toutes les vérifications de permissions (dangereux). Les écritures vers des chemins protégés (`.git`, `.claude`, `.vscode`, `.idea`, `.husky`) demandent toujours. À partir de la v2.1.121, les écritures vers `.claude/commands/`, `.claude/agents/`, `.claude/skills/` et `.claude/worktrees/` sont explicitement exemptées de la demande sur chemins protégés car Claude y écrit régulièrement en créant skills, sous-agents et commandes. **v2.1.126** étend encore l'exemption : les écritures vers `.claude/`, `.git/`, `.vscode/` et les fichiers de config shell (par ex. `.bashrc`, `.zshrc`) ne demandent plus sous `--dangerously-skip-permissions`. Les suppressions visant la racine du système de fichiers ou le répertoire home (`rm -rf /`, `rm -rf ~`) demandent toujours, comme disjoncteur contre l'erreur du modèle |
| `"auto"` | Approuve automatiquement les appels d'outils avec des vérifications de sécurité en arrière-plan qui vérifient que les actions s'alignent sur ta requête. Aperçu de recherche. Le classifieur auto-approuve la lecture seule et les modifications de fichiers ; envoie tout le reste à une vérification de sécurité. Revient à demander après 3 blocages consécutifs ou 20 au total. Dans le cycle de modes de permissions `Shift+Tab` par défaut depuis v2.1.111 (le drapeau `--enable-auto-mode` a été retiré en v2.1.111 — démarre dans ce mode avec `--permission-mode auto`). Configure avec le paramètre `autoMode` |
| `"plan"` | Mode d'exploration en lecture seule. À partir de la v2.1.136, les écritures de fichiers sont bloquées même quand une règle allow `Edit(...)` correspondante existe — le mode plan surcharge désormais les règles allow explicites pour maintenir sa garantie de lecture seule |

### Syntaxe des permissions d'outils

| Outil | Syntaxe | Exemples |
|------|--------|----------|
| `Bash` | `Bash(command pattern)` | `Bash(npm run *)`, `Bash(* install)`, `Bash(git * main)` |
| `PowerShell` | `PowerShell(cmd *)` | `PowerShell(Get-ChildItem *)`, `PowerShell(git commit *)` — même forme que Bash ; les alias courants sont canonicalisés (`gci`/`ls`/`dir` → `Get-ChildItem`) et l'AST PowerShell est parsé pour que chaque sous-commande d'une chaîne `|`/`;`/`&&`/`||` doive correspondre |
| `Read` | `Read(path pattern)` | `Read(.env)`, `Read(./secrets/**)` |
| `Edit` | `Edit(path pattern)` | `Edit(src/**)`, `Edit(*.ts)` |
| `Write` | `Write(path pattern)` | `Write(*.md)`, `Write(./docs/**)` |
| `NotebookEdit` | `NotebookEdit(pattern)` | `NotebookEdit(*)` |
| `WebFetch` | `WebFetch(domain:pattern)` | `WebFetch(domain:example.com)` |
| `WebSearch` | `WebSearch` | Recherche web globale |
| `Task` | `Task(agent-name)` | `Task(Explore)`, `Task(my-agent)` |
| `Agent` | `Agent(name)` | `Agent(researcher)`, `Agent(*)` — permission limitée à l'instanciation de sous-agents |
| `Skill` | `Skill(skill-name)` ou `Skill(prefix *)` | `Skill(weather-fetcher)`, `Skill(weather *)` correspond à `weather-fetcher`/`weather-svg-creator` (v2.1.139) |
| `MCP` | `mcp__server__tool` ou `MCP(server:tool)` | `mcp__memory__*`, `MCP(github:*)` |

**Ordre d'évaluation :** Les règles sont évaluées dans l'ordre : règles deny d'abord, puis ask, puis allow. La première règle correspondante l'emporte.

**Motifs de chemin Read/Edit :** Les règles de permission pour `Read`, `Edit` et `Write` supportent des motifs de style gitignore avec quatre types de préfixe :

| Préfixe | Signification | Exemple |
|--------|---------|---------|
| `//` | Chemin absolu depuis la racine du système de fichiers | `Read(//Users/alice/file)` |
| `~/` | Relatif au répertoire home | `Read(~/.zshrc)` |
| `/` | Relatif à la racine du projet | `Edit(/src/**)` |
| `./` ou aucun | Chemin relatif (répertoire courant) | `Read(.env)`, `Read(*.ts)` |

**Résolution des liens symboliques :** Les règles de permission vérifient à la fois le chemin du symlink et sa cible résolue. Les règles **allow** s'appliquent uniquement quand *à la fois* le symlink et sa cible correspondent — un symlink dans un répertoire autorisé qui pointe en dehors demande quand même. Les règles **deny** s'appliquent quand *soit* le symlink soit sa cible correspond — un symlink vers un fichier refusé est lui-même refusé.

**Notes sur les jokers Bash :**
- `*` peut apparaître à **n'importe quelle position** : préfixe (`Bash(* install)`), suffixe (`Bash(npm *)`), ou milieu (`Bash(git * main)`)
- **Frontière de mot :** `Bash(ls *)` (espace avant `*`) correspond à `ls -la` mais PAS à `lsof` ; `Bash(ls*)` (sans espace) correspond aux deux
- `Bash(*)` est traité comme équivalent à `Bash` (correspond à toutes les commandes bash)
- Les règles de permission supportent les redirections de sortie : `Bash(python:*)` correspond à `python script.py > output.txt`
- La syntaxe de suffixe héritée `:*` (par ex. `Bash(npm:*)`) est équivalente à ` *` mais est dépréciée
- **Commandes composées :** les opérateurs shell (`&&`, `||`, `;`, `|`, `|&`, `&`, et sauts de ligne) découpent une commande et chaque sous-commande doit correspondre indépendamment — `Bash(safe-cmd *)` n'autorise **pas** `safe-cmd && other-cmd`
- **Wrappers de processus :** `timeout`, `time`, `nice`, `nohup` et `stdbuf` sont retirés avant la correspondance (donc `Bash(npm test *)` correspond aussi à `timeout 30 npm test`) ; `xargs` seul (sans flags) est aussi retiré. Les wrappers d'exec `watch`, `setsid`, `ionice`, `flock` et `find` avec `-exec`/`-delete` demandent toujours et ne peuvent être approuvés par une règle de préfixe |

**Exemple :**
```json
{
  "permissions": {
    "allow": [
      "Edit(*)",
      "Write(*)",
      "Bash(npm run *)",
      "Bash(git *)",
      "WebFetch(domain:*)",
      "mcp__*"
    ],
    "ask": [
      "Bash(rm *)",
      "Bash(git push *)"
    ],
    "deny": [
      "Read(.env)",
      "Read(./secrets/**)",
      "Bash(curl *)"
    ],
    "additionalDirectories": ["../shared-libs/"]
  }
}
```

---

## Hooks

La configuration des hooks (événements, propriétés, matchers, codes de sortie, variables d'environnement et hooks HTTP) est maintenue dans un dépôt dédié :

> **[claude-code-hooks](https://github.com/shanraisshan/claude-code-hooks)** — Référence complète des hooks avec système de notification sonore, les 25 événements de hook, hooks HTTP, motifs de matcher, codes de sortie et variables d'environnement.

Les clés de paramètres liées aux hooks (`hooks`, `disableAllHooks` (désactive aussi toute barre d'état personnalisée), `allowManagedHooksOnly`, `allowedHttpHookUrls`, `httpHookAllowedEnvVars`) y sont documentées.

Pour la référence officielle des hooks, voir la [Documentation des hooks Claude Code](https://code.claude.com/docs/en/hooks).

---

## Serveurs MCP

Configurer les serveurs Model Context Protocol pour des capacités étendues.

> **OAuth (v2.1.111) :** Les serveurs MCP qui s'authentifient via OAuth suivent la [RFC 9728](https://datatracker.ietf.org/doc/rfc9728/) pour la découverte de métadonnées de ressource protégée. Les serveurs conformes exposent les endpoints d'autorisation sous `/.well-known/oauth-protected-resource`, et Claude Code complète le flux OAuth automatiquement — aucun script `apiKeyHelper` ou `headersHelper` manuel requis pour les serveurs conformes à la spec.

> **Nom de serveur réservé (v2.1.128) :** `workspace` est un nom de serveur MCP réservé. Les serveurs définis par l'utilisateur portant ce nom sont sautés au chargement avec un avertissement journalisé dans le log de session. Renomme tout serveur `workspace` préexistant pour éviter la collision.

> **Hot-reload de `.mcp.json` (v2.1.139) :** L'action Reconnect de `/mcp` relit désormais `.mcp.json` depuis le disque avant de se reconnecter, donc ajouter ou éditer un serveur ne requiert plus un redémarrage de session. Claude Code injecte aussi `CLAUDE_PROJECT_DIR` dans les environnements des serveurs MCP lancés en stdio (v2.1.139) pour que les serveurs puissent résoudre les chemins relativement à la racine du projet.

### Paramètres MCP

| Clé | Type | Portée | Description |
|-----|------|-------|-------------|
| `enableAllProjectMcpServers` | boolean | Toutes | Auto-approuver tous les serveurs de `.mcp.json` |
| `enabledMcpjsonServers` | array | Toutes | Allowlist de noms de serveurs spécifiques |
| `disabledMcpjsonServers` | array | Toutes | Blocklist de noms de serveurs spécifiques |
| `allowedMcpServers` | array | Managed only | Allowlist avec correspondance par nom/commande/URL |
| `deniedMcpServers` | array | Managed only | Blocklist avec correspondance |
| `allowManagedMcpServersOnly` | boolean | Managed only | Autoriser uniquement les serveurs MCP explicitement listés dans l'allowlist managed |
| `channelsEnabled` | boolean | Managed only | Autoriser les [channels](https://code.claude.com/docs/en/channels) pour les utilisateurs Team et Enterprise. Quand non défini ou `false`, la livraison de messages de channel est bloquée indépendamment du drapeau `--channels` |
| `allowedChannelPlugins` | array | Managed only | Allowlist de plugins de channel autorisés à pousser des messages. Remplace l'allowlist Anthropic par défaut quand défini. Undefined = repli sur le défaut, tableau vide = bloquer tous les plugins de channel. Requiert `channelsEnabled: true`. Chaque entrée est un objet avec champs `marketplace` et `plugin` (v2.1.84) |
| `allowAllClaudeAiMcps` | boolean | Managed only | Charger les connecteurs MCP cloud claude.ai à côté de `managed-mcp.json`. Quand activé, les connecteurs MCP hébergés par claude.ai sont rendus disponibles en plus des serveurs MCP managed déployés par admin |

### Correspondance de serveurs MCP (Managed Settings)

```json
{
  "allowedMcpServers": [
    { "serverName": "github" },
    { "serverCommand": "npx @modelcontextprotocol/*" },
    { "serverUrl": "https://mcp.company.com/*" }
  ],
  "deniedMcpServers": [
    { "serverName": "dangerous-server" }
  ]
}
```

### Chargement d'outils par serveur (`alwaysLoad`, v2.1.121)

Par défaut, les définitions d'outils MCP sont différées (chargées en contexte à la demande via la recherche d'outils). Mets `alwaysLoad: true` sur une entrée de serveur MCP individuelle dans `.mcp.json` (ou en `mcpServers` inline) pour exempter ce serveur du différé — chaque outil de ce serveur se charge alors d'emblée au démarrage de la session indépendamment de `ENABLE_TOOL_SEARCH`. Disponible sur tous les types de serveurs ; requiert Claude Code v2.1.121+. Utilise cela uniquement pour un petit ensemble d'outils nécessaires à chaque tour — chaque outil chargé d'emblée consomme du contexte qui serait sinon disponible pour la conversation.

```json
{
  "mcpServers": {
    "always-on-server": {
      "type": "http",
      "url": "https://mcp.example.com",
      "alwaysLoad": true
    }
  }
}
```

Un serveur MCP peut aussi marquer des outils individuels comme toujours chargés en incluant `"anthropic/alwaysLoad": true` dans l'objet `_meta` de l'outil — utile quand seul un sous-ensemble des outils d'un serveur doit contourner le différé.

**Exemple :**
```json
{
  "enableAllProjectMcpServers": true,
  "enabledMcpjsonServers": ["memory", "github", "filesystem"],
  "disabledMcpjsonServers": ["experimental-server"]
}
```

---

## Sandbox

Configurer le sandboxing des commandes bash pour la sécurité.

### Paramètres de sandbox

| Clé | Type | Défaut | Description |
|-----|------|---------|-------------|
| `sandbox.enabled` | boolean | `false` | Activer le sandboxing bash |
| `sandbox.failIfUnavailable` | boolean | `false` | Quitter avec une erreur quand le sandbox est activé mais ne peut démarrer, au lieu de tourner sans sandbox. Utile pour les politiques entreprise exigeant un sandboxing strict (v2.1.83) |
| `sandbox.autoAllowBashIfSandboxed` | boolean | `true` | Auto-approuver bash quand sous sandbox. À partir de la v2.1.139, les formes d'expansion shell (`$VAR`, `$(cmd)`) sont correctement reconnues pour que les commandes contenant une substitution de variable ne retombent plus sur une demande quand l'auto-approbation sous sandbox est activée |
| `sandbox.excludedCommands` | array | `[]` | Commandes à exécuter hors sandbox |
| `sandbox.allowUnsandboxedCommands` | boolean | `true` | Autoriser `dangerouslyDisableSandbox`. Quand mis à `false`, l'échappatoire est complètement désactivée et toutes les commandes doivent tourner sous sandbox (ou être dans `excludedCommands`). Utile pour les politiques entreprise exigeant un sandboxing strict |
| `sandbox.ignoreViolations` | object | `{}` | Map de motifs de commande vers des tableaux de chemins — supprimer les avertissements de violation *(dans le schéma JSON, pas sur la page officielle des paramètres)* |
| `sandbox.enableWeakerNestedSandbox` | boolean | `false` | **(Linux et WSL2 uniquement)** Activer un sandbox plus faible pour les environnements Docker non privilégiés (réduit la sécurité) |
| `sandbox.network.allowUnixSockets` | array | `[]` | **(macOS uniquement)** Chemins de sockets Unix spécifiques accessibles dans le sandbox. Ignoré sous Linux et WSL2, où le filtre seccomp ne peut inspecter les chemins de socket ; utilise `allowAllUnixSockets` à la place |
| `sandbox.network.allowAllUnixSockets` | boolean | `false` | Autoriser tous les sockets Unix (surcharge `allowUnixSockets`). Sous Linux et WSL2 c'est le seul moyen d'autoriser les sockets Unix, car cela contourne le filtre seccomp qui bloque sinon les appels `socket(AF_UNIX, ...)` |
| `sandbox.network.allowLocalBinding` | boolean | `false` | Autoriser le binding sur les ports localhost (macOS) |
| `sandbox.network.allowedDomains` | array | `[]` | Allowlist de domaines réseau pour le sandbox |
| `sandbox.network.deniedDomains` | array | `[]` | Denylist de domaines réseau pour le sandbox bash. Prend le pas sur les jokers de `allowedDomains`. Supporte les motifs glob (par ex. `"*.example.com"`) (v2.1.113) |
| `sandbox.network.httpProxyPort` | number | - | Port de proxy HTTP 1-65535 (proxy personnalisé) |
| `sandbox.network.socksProxyPort` | number | - | Port de proxy SOCKS5 1-65535 (proxy personnalisé) |
| `sandbox.network.allowManagedDomainsOnly` | boolean | `false` | Autoriser uniquement les domaines de l'allowlist managed (managed settings) |
| `sandbox.network.allowMachLookup` | array | `[]` | (macOS uniquement) Noms de service XPC/Mach supplémentaires que le sandbox peut rechercher. Supporte un seul `*` final pour la correspondance de préfixe. Nécessaire pour les outils communiquant via XPC comme le simulateur iOS ou Playwright. Exemple : `["com.apple.coresimulator.*"]` |
| `sandbox.filesystem.allowWrite` | array | `[]` | Chemins supplémentaires où les commandes sous sandbox peuvent écrire. Les tableaux sont fusionnés sur toutes les portées de paramètres. Aussi fusionnés avec les chemins des règles de permission allow `Edit(...)`. Préfixe : `/` (absolu), `~/` (home), `./` ou aucun (relatif au projet dans les paramètres projet, relatif à `~/.claude` dans les paramètres utilisateur). L'ancien préfixe `//` pour les chemins absolus fonctionne toujours. **Note :** Cela diffère des [règles de permission Read/Edit](#syntaxe-des-permissions-doutils), qui utilisent `//` pour absolu et `/` pour relatif au projet |
| `sandbox.filesystem.denyWrite` | array | `[]` | Chemins où les commandes sous sandbox ne peuvent écrire. Les tableaux sont fusionnés sur toutes les portées de paramètres. Aussi fusionnés avec les chemins des règles de permission deny `Edit(...)`. Mêmes conventions de préfixe de chemin que `allowWrite` |
| `sandbox.filesystem.denyRead` | array | `[]` | Chemins où les commandes sous sandbox ne peuvent lire. Les tableaux sont fusionnés sur toutes les portées de paramètres. Aussi fusionnés avec les chemins des règles de permission deny `Read(...)`. Mêmes conventions de préfixe de chemin que `allowWrite` |
| `sandbox.filesystem.allowRead` | array | `[]` | Chemins pour ré-autoriser l'accès en lecture dans les régions `denyRead`. Prend le pas sur `denyRead`. Les tableaux sont fusionnés sur toutes les portées de paramètres. Mêmes conventions de préfixe de chemin que `allowWrite` |
| `sandbox.filesystem.allowManagedReadPathsOnly` | boolean | `false` | **(Managed only)** Seuls les chemins `allowRead` des managed settings sont respectés. Les entrées `allowRead` des paramètres utilisateur, projet et locaux sont ignorées |
| `sandbox.enableWeakerNetworkIsolation` | boolean | `false` | (macOS uniquement) Autoriser l'accès au trust TLS système (`com.apple.trustd.agent`) ; réduit la sécurité |
| `sandbox.bwrapPath` | string | - | **(Managed only, Linux/WSL2)** Chemin absolu vers le binaire bubblewrap (`bwrap`). Surcharge la détection automatique par `PATH`. Honoré uniquement depuis les managed settings, pas les paramètres utilisateur ou projet. Exemple : `/opt/admin/bwrap` (v2.1.133) |
| `sandbox.socatPath` | string | - | **(Managed only, Linux/WSL2)** Chemin absolu vers le binaire `socat` utilisé pour le proxy réseau du sandbox. Surcharge la détection automatique par `PATH`. Honoré uniquement depuis les managed settings. Exemple : `/opt/admin/socat` (v2.1.133) |

**Exemple :**
```json
{
  "sandbox": {
    "enabled": true,
    "autoAllowBashIfSandboxed": true,
    "excludedCommands": ["git", "docker", "gh"],
    "allowUnsandboxedCommands": false,
    "network": {
      "allowUnixSockets": ["/var/run/docker.sock"],
      "allowLocalBinding": true
    }
  }
}
```

---

## Plugins

Configurer les plugins et marketplaces Claude Code.

### Paramètres de plugin

| Clé | Type | Portée | Description |
|-----|------|-------|-------------|
| `enabledPlugins` | object | Toutes | Activer/désactiver des plugins spécifiques |
| `extraKnownMarketplaces` | object | Projet | Ajouter des marketplaces de plugins personnalisées (partage d'équipe via `.claude/settings.json`) |
| `strictKnownMarketplaces` | array | Managed only | Allowlist de marketplaces autorisées |
| `strictPluginOnlyCustomization` | boolean \| array | Managed only | Bloquer skills, agents, hooks et serveurs MCP provenant de sources utilisateur et projet, pour qu'ils ne puissent venir que de plugins ou managed settings. `true` verrouille les quatre surfaces ; un tableau comme `["skills", "hooks"]` ne verrouille que celles nommées |
| `pluginSuggestionMarketplaces` | array | Managed only | Allowlist de noms de marketplaces dont les plugins peuvent apparaître comme suggestions d'installation contextuelles durant une session. Restreint quelles marketplaces peuvent faire remonter les invites « vous pourriez vouloir ce plugin » (v2.1.152) |
| `skippedMarketplaces` | array | Toutes | Marketplaces que l'utilisateur a refusé d'installer *(dans le schéma JSON, pas sur la page officielle des paramètres)* |
| `skippedPlugins` | array | Toutes | Plugins que l'utilisateur a refusé d'installer *(dans le schéma JSON, pas sur la page officielle des paramètres)* |
| `pluginConfigs` | object | Toutes | Configs de serveur MCP par plugin (indexées par `plugin@marketplace`) *(dans le schéma JSON, pas sur la page officielle des paramètres)* |
| `blockedMarketplaces` | array | Managed only | Bloquer des marketplaces de plugins spécifiques. Chaque entrée peut correspondre par chaîne source, `hostPattern` ou `pathPattern` — à partir de la v2.1.119 les matchers `hostPattern` et `pathPattern` sont correctement appliqués avant qu'aucun téléchargement ne touche le système de fichiers, donc les marketplaces bloquées n'atteignent jamais le disque |
| `pluginTrustMessage` | string | Managed only | Message personnalisé affiché lors de l'invite à faire confiance aux plugins |

**Types de source de marketplace :** `github`, `git`, `directory`, `hostPattern`, `settings`, `url`, `npm`, `file`. Utilise `source: 'settings'` pour déclarer un petit ensemble de plugins inline sans mettre en place un dépôt de marketplace hébergé.

**Exemple :**
```json
{
  "enabledPlugins": {
    "formatter@acme-tools": true,
    "deployer@acme-tools": true,
    "experimental@acme-tools": false
  },
  "extraKnownMarketplaces": {
    "acme-tools": {
      "source": {
        "source": "github",
        "repo": "acme-corp/claude-plugins"
      }
    },
    "inline-tools": {
      "source": {
        "source": "settings",
        "name": "inline-tools",
        "plugins": [
          {
            "name": "code-formatter",
            "source": { "source": "github", "repo": "acme-corp/code-formatter" }
          }
        ]
      }
    }
  }
}
```

---

## Configuration du modèle

### Alias de modèle

| Alias | Description |
|-------|-------------|
| `"default"` | Recommandé pour ton type de compte |
| `"sonnet"` | Dernier modèle Sonnet (Claude Sonnet 4.6 sur l'API Anthropic ; 4.5 sur les fournisseurs tiers) |
| `"opus"` | Dernier modèle Opus (Claude Opus 4.8 sur l'API Anthropic depuis v2.1.154 ; 4.6 sur Bedrock/Vertex/Foundry). Aussi le défaut du mode fast depuis v2.1.142. Opus 4.8 a par défaut l'effort `high` et supporte `/effort xhigh` |
| `"haiku"` | Modèle Haiku rapide |
| `"sonnet[1m]"` | Sonnet avec contexte de 1M tokens |
| `"opus[1m]"` | Opus avec contexte de 1M tokens (défaut sur Max, Team et Enterprise depuis v2.1.75) |
| `"opusplan"` | Opus pour la planification, Sonnet pour l'exécution |

**Exemple :**
```json
{
  "model": "opus"
}
```

> **Note (v2.1.144) :** `/model` change le modèle pour la **session courante uniquement**. Appuie sur `d` dans le sélecteur `/model` pour aussi définir la sélection comme ton défaut. Le paramètre `model` et `ANTHROPIC_MODEL` continuent de contrôler le défaut persistant.

### Surcharges de modèle

Mapper les IDs de modèle Anthropic vers des IDs de modèle propres au fournisseur pour les déploiements Bedrock, Vertex ou Foundry.

| Clé | Type | Défaut | Description |
|-----|------|---------|-------------|
| `effortLevel` | string | - | Persister le niveau d'effort entre sessions. Accepte `"low"`, `"medium"`, `"high"` ou `"xhigh"` (Opus 4.7 et 4.8, v2.1.111). Écrit automatiquement quand tu lances `/effort low`, `/effort medium`, `/effort high` ou `/effort xhigh`. Supporté sur Opus 4.6, Sonnet 4.6, Opus 4.7 et Opus 4.8 (défaut `high`). Les niveaux non supportés retombent sur le plus haut niveau supporté du modèle actif |
| `modelOverrides` | object | - | Mapper les entrées du sélecteur de modèle vers des IDs propres au fournisseur (par ex. ARNs de profils d'inférence Bedrock). Chaque clé est un nom d'entrée du sélecteur de modèle, chaque valeur est l'ID de modèle du fournisseur |

**Exemple :**
```json
{
  "modelOverrides": {
    "claude-opus-4-6": "arn:aws:bedrock:us-east-1:123456789:inference-profile/anthropic.claude-opus-4-6-v1:0",
    "claude-sonnet-4-6": "arn:aws:bedrock:us-east-1:123456789:inference-profile/anthropic.claude-sonnet-4-6-v1:0"
  }
}
```

### Niveau d'effort

La commande `/model` expose un contrôle de **niveau d'effort** qui ajuste la quantité de raisonnement que le modèle applique par réponse. Utilise les flèches ← → dans l'UI `/model` pour parcourir les niveaux d'effort.

| Niveau d'effort | Description |
|-------------|-------------|
| Max | Profondeur de raisonnement maximale, Opus 4.6 uniquement |
| XHigh | Profondeur de raisonnement étendue, Opus 4.7 et 4.8 (défaut sur Opus 4.7 tous plans, v2.1.111 ; sur Opus 4.8 disponible mais le défaut est `high`, v2.1.154) |
| High (défaut sur Opus 4.6/Sonnet 4.6) | Profondeur de raisonnement complète, idéal pour les tâches complexes |
| Medium | Raisonnement équilibré, bon pour les tâches quotidiennes |
| Low | Raisonnement minimal, réponses les plus rapides |

**Comment l'utiliser :**
1. Lance `/effort low`, `/effort medium` ou `/effort high` pour définir directement (v2.1.76+)
2. Ou lance `/model` → sélectionne un modèle → utilise les flèches **← →** pour ajuster
3. Le paramètre persiste via la clé `effortLevel` dans `settings.json`

**Note :** Le niveau d'effort est disponible pour Opus 4.6, Sonnet 4.6, Opus 4.7 et Opus 4.8 sur les plans Max et Team. Le défaut a été changé de High à Medium en v2.1.68, puis remis à **High** pour les utilisateurs avec clé API, Bedrock/Vertex/Foundry, Team et Enterprise en v2.1.94. En v2.1.117, le défaut a aussi été relevé de `medium` à `high` pour les abonnés Pro/Max sur Opus 4.6 et Sonnet 4.6, alignant tous les paliers sur `high`. La v2.1.111 a introduit **`xhigh`** (Opus 4.7 uniquement à l'époque) et en a fait le niveau d'effort par défaut sur Opus 4.7 tous plans. **v2.1.154** a ajouté **Opus 4.8** comme dernier Opus sur l'API Anthropic ; il supporte `xhigh` mais a par défaut `high`. À partir de la v2.1.75, la fenêtre de contexte de 1M pour Opus 4.6 est disponible par défaut sur les plans Max, Team et Enterprise.

**Propagation d'env de l'effort :** Dans les fichiers de skill, utilise `${CLAUDE_EFFORT}` pour référencer le niveau d'effort actuel (v2.1.120). À partir de la v2.1.133, la même variable `$CLAUDE_EFFORT` est aussi injectée dans l'environnement des sous-processus de l'outil Bash et des handlers de hook, pour que scripts shell et commandes de hook puissent adapter leur comportement selon le palier d'effort actif sans lire un fichier de config séparé.

### Variables d'environnement de modèle

Configurer via la clé `env` :

```json
{
  "env": {
    "ANTHROPIC_MODEL": "sonnet",
    "ANTHROPIC_DEFAULT_HAIKU_MODEL": "custom-haiku-model",
    "ANTHROPIC_DEFAULT_SONNET_MODEL": "custom-sonnet-model",
    "ANTHROPIC_DEFAULT_OPUS_MODEL": "custom-opus-model",
    "CLAUDE_CODE_SUBAGENT_MODEL": "haiku",
    "MAX_THINKING_TOKENS": "10000"
  }
}
```

---

## Affichage & UX

### Paramètres d'affichage

| Clé | Type | Défaut | Description |
|-----|------|---------|-------------|
| `statusLine` | object | - | Configuration de barre d'état personnalisée |
| `outputStyle` | string | `"default"` | Style de sortie (par ex. `"Explanatory"`) |
| `spinnerTipsEnabled` | boolean | `true` | Afficher des astuces pendant l'attente |
| `spinnerVerbs` | object | - | Verbes de spinner personnalisés avec `mode` ("append" ou "replace") et tableau `verbs` |
| `spinnerTipsOverride` | object | - | Astuces de spinner personnalisées avec `tips` (tableau de chaînes) et `excludeDefault` optionnel (boolean). Quand `excludeDefault` est `true`, seules les astuces personnalisées s'affichent ; quand `false` ou absent, les astuces personnalisées fusionnent avec les astuces intégrées. À partir de la v2.1.121, `excludeDefault: true` supprime aussi les astuces de spinner basées sur le temps |
| `respectGitignore` | boolean | `true` | Respecter .gitignore dans le sélecteur de fichiers |
| `prefersReducedMotion` | boolean | `false` | Réduire les animations et effets de mouvement dans l'UI |
| `syntaxHighlightingDisabled` | boolean | `false` | Désactiver la coloration syntaxique dans les diffs, blocs de code et aperçus de fichiers. Distinct de la variable d'env `CLAUDE_CODE_SYNTAX_HIGHLIGHT`, qui ne gouverne que la sortie de diff |
| `fileSuggestion` | object | - | Commande de suggestion de fichiers personnalisée (voir Configuration de suggestion de fichiers ci-dessous) |
| `autoScrollEnabled` | boolean | `true` | Auto-défilement de la conversation en mode plein écran. Mets `false` pour désactiver le défilement automatique (v2.1.110). Les versions avant v2.1.119 stockaient ceci dans `~/.claude.json` |
| `editorMode` | string | `"normal"` | Mode de raccourcis clavier pour la zone de saisie : `"normal"` ou `"vim"`. Apparaît dans `/config` comme **Editor mode**. Les versions avant v2.1.119 stockaient ceci dans `~/.claude.json` |
| `showTurnDuration` | boolean | `true` | Afficher les messages de durée de tour après les réponses (par ex. « Cooked for 1m 6s »). Les versions avant v2.1.119 stockaient ceci dans `~/.claude.json` |
| `teammateMode` | string | `"auto"` | Comment les coéquipiers d'[équipe d'agents](https://code.claude.com/docs/en/agent-teams) s'affichent : `"auto"` (choisit les panneaux divisés sous tmux ou iTerm2, in-process sinon), `"in-process"` ou `"tmux"`. Voir [choisir un mode d'affichage](https://code.claude.com/docs/en/agent-teams#choose-a-display-mode). Les versions avant v2.1.119 stockaient ceci dans `~/.claude.json` |
| `terminalProgressBarEnabled` | boolean | `true` | Afficher la barre de progression du terminal dans les terminaux supportés (ConEmu, Ghostty 1.2.0+, et iTerm2 3.6.6+). Apparaît dans `/config` comme **Terminal progress bar**. Les versions avant v2.1.119 stockaient ceci dans `~/.claude.json` |
| `preferredNotifChannel` | string | `"auto"` | Méthode pour les notifications de tâche terminée et de demande de permission. Valeurs : `"auto"`, `"terminal_bell"`, `"iterm2"`, `"iterm2_with_bell"`, `"kitty"`, `"ghostty"`, `"notifications_disabled"`. Le défaut `"auto"` envoie une notification desktop sous iTerm2, Ghostty et Kitty et ne fait rien dans les autres terminaux. Mets `"terminal_bell"` pour faire sonner le caractère bell dans n'importe quel terminal. Apparaît dans `/config` comme **Notifications**. Voir [Obtenir une cloche ou notification de terminal](https://code.claude.com/docs/en/terminal-config#get-a-terminal-bell-or-notification) |

### Paramètres de config globale (`~/.claude.json`)

Ces préférences liées à l'IDE sont stockées dans `~/.claude.json`, et **non** `settings.json`.

> **Note de migration v2.1.119 :** À partir de la v2.1.119, `autoScrollEnabled`, `editorMode`, `showTurnDuration`, `teammateMode` et `terminalProgressBarEnabled` sont passés dans `settings.json` et sont documentés dans le tableau des Paramètres d'affichage ci-dessus. Les versions antérieures les stockaient ici.

| Clé | Type | Défaut | Description |
|-----|------|---------|-------------|
| `autoConnectIde` | boolean | `false` | Se connecter automatiquement à un IDE en cours d'exécution quand Claude Code démarre depuis un terminal externe. Apparaît dans `/config` comme **Auto-connect to IDE (external terminal)** quand exécuté hors d'un terminal VS Code ou JetBrains |
| `autoInstallIdeExtension` | boolean | `true` | Installer automatiquement l'extension IDE Claude Code en exécutant depuis un terminal VS Code. Apparaît dans `/config` comme **Auto-install IDE extension**. Peut aussi être désactivé via la variable d'env `CLAUDE_CODE_IDE_SKIP_AUTO_INSTALL` |
| `externalEditorContext` | boolean | `false` | Préfixer la réponse précédente de Claude comme contexte commenté `#` quand tu ouvres l'éditeur externe avec `Ctrl+G`. Mets `true` pour activer |
| `teammateDefaultModel` | string | `null` | Modèle par défaut pour les coéquipiers d'[équipe d'agents](https://code.claude.com/docs/en/agent-teams) quand le lead les dispatche. `null` hérite du modèle du lead. Listé sous « Global config settings » sur la page officielle des paramètres |

### Espace de travail & équipes

| Clé | Type | Description |
|-----|------|-------------|
| `sshConfigs` | object[] | Définitions de connexion SSH présentées comme menu déroulant dans Desktop. Chaque entrée doit inclure `id`, `name` et `sshHost` ; optionnellement `sshPort`, `sshIdentityFile` et `startDirectory` |

**Référence des champs :**

| Champ | Requis | Description |
|-------|----------|-------------|
| `id` | oui | Identifiant unique de l'entrée de connexion SSH |
| `name` | oui | Nom d'affichage montré dans le menu déroulant Desktop |
| `sshHost` | oui | Hôte SSH (par ex. `user@dev.example.com` ou `dev.example.com`) |
| `sshPort` | non | Numéro de port SSH |
| `sshIdentityFile` | non | Chemin vers le fichier d'identité SSH (clé privée) |
| `startDirectory` | non | Répertoire de travail initial après connexion |

**Exemple :**
```json
{
  "sshConfigs": [
    {
      "id": "dev-vm",
      "name": "Dev VM",
      "sshHost": "user@dev.example.com",
      "sshPort": 22,
      "sshIdentityFile": "~/.ssh/id_ed25519",
      "startDirectory": "/home/user/project"
    }
  ]
}
```

### Configuration de la barre d'état

```json
{
  "statusLine": {
    "type": "command",
    "command": "~/.claude/statusline.sh",
    "padding": 2,
    "refreshInterval": 5
  }
}
```

| Champ | Description |
|-------|-------------|
| `type` | Mets `"command"` pour exécuter un script shell |
| `command` | Commande shell ou chemin de script qui génère la sortie de la barre d'état |
| `padding` | Espacement horizontal supplémentaire (en caractères) ajouté au contenu de la barre d'état. Défaut `0`. Contrôle l'indentation relative au-delà de l'espacement intégré de l'interface |
| `refreshInterval` | Réexécuter la commande toutes les N secondes en plus des mises à jour pilotées par événement. Minimum `1`. Utile quand la barre d'état affiche des données basées sur le temps (par ex. une horloge) ou quand des sous-agents d'arrière-plan changent l'état git pendant que la session principale est inactive. Laisse non défini pour n'exécuter que sur événements (v2.1.97) |

**Champs d'entrée de la barre d'état :**

La commande de barre d'état reçoit un objet JSON sur stdin. Pour le schéma JSON complet et des exemples, voir la [Documentation de la barre d'état](https://code.claude.com/docs/en/statusline).

| Champ | Description |
|-------|-------------|
| `model.id`, `model.display_name` | Identifiant et nom d'affichage du modèle actuel |
| `cwd`, `workspace.current_dir` | Répertoire de travail courant (les deux contiennent la même valeur ; `workspace.current_dir` préféré) |
| `workspace.project_dir` | Répertoire où Claude Code a été lancé (peut différer de `cwd` si le répertoire de travail change) |
| `workspace.added_dirs` | Répertoires supplémentaires ajoutés via `/add-dir` ou `--add-dir` |
| `workspace.git_worktree` | Nom du worktree git quand on est dans un worktree lié créé avec `git worktree add`. Absent dans l'arbre de travail principal (v2.1.97) |
| `cost.total_cost_usd` | Coût total de la session en USD |
| `cost.total_duration_ms` | Temps mur total depuis le début de la session, en millisecondes |
| `cost.total_api_duration_ms` | Temps total passé à attendre les réponses API, en millisecondes |
| `cost.total_lines_added`, `cost.total_lines_removed` | Lignes de code modifiées durant la session |
| `context_window.total_input_tokens`, `context_window.total_output_tokens` | Comptes de tokens cumulés sur la session |
| `context_window.context_window_size` | Taille maximale de la fenêtre de contexte en tokens (200000 par défaut, 1000000 pour le contexte étendu) |
| `context_window.used_percentage` | Pourcentage pré-calculé de fenêtre de contexte utilisée |
| `context_window.remaining_percentage` | Pourcentage pré-calculé de fenêtre de contexte restante |
| `context_window.current_usage` | Comptes de tokens du dernier appel API (tokens d'entrée, sortie, cache) |
| `exceeds_200k_tokens` | Si le total de tokens de la réponse API la plus récente dépasse 200k (seuil fixe) |
| `rate_limits.five_hour.used_percentage` | Pourcentage d'usage de la limite de débit sur cinq heures (v2.1.80+) |
| `rate_limits.five_hour.resets_at` | Horodatage de réinitialisation de la limite sur cinq heures (secondes Unix epoch) |
| `rate_limits.seven_day.used_percentage` | Pourcentage d'usage de la limite de débit sur sept jours |
| `rate_limits.seven_day.resets_at` | Horodatage de réinitialisation de la limite sur sept jours (secondes Unix epoch) |
| `session_id` | Identifiant unique de session |
| `session_name` | Nom de session personnalisé défini avec `--name` ou `/rename`. Absent si aucun nom personnalisé défini |
| `transcript_path` | Chemin vers le fichier de transcript de conversation |
| `version` | Version de Claude Code |
| `output_style.name` | Nom du style de sortie actuel |
| `vim.mode` | Mode vim actuel (`NORMAL` ou `INSERT`) quand le mode vim est activé |
| `agent.name` | Nom de l'agent en exécutant avec le drapeau `--agent` ou les paramètres d'agent |
| `effort.level` | Effort de raisonnement actuel (`low`, `medium`, `high`, `xhigh` ou `max`). Reflète la valeur live de la session, y compris les changements `/effort` en cours de session. Absent quand le modèle actuel ne supporte pas le paramètre d'effort (v2.1.121) |
| `thinking.enabled` | Si la réflexion étendue est activée pour la session (v2.1.121) |
| `worktree.name` | Nom du worktree actif (présent seulement durant les sessions `--worktree`) |
| `worktree.path` | Chemin absolu vers le répertoire du worktree |
| `worktree.branch` | Nom de branche git du worktree. Absent pour les worktrees basés sur hook |
| `worktree.original_cwd` | Répertoire avant d'entrer dans le worktree |
| `worktree.original_branch` | Branche git checkoutée avant d'entrer dans le worktree. Absent pour les worktrees basés sur hook |
| `github` | Informations de dépôt GitHub et de pull request pour la branche courante quand détectées — identité du dépôt et PR associée (v2.1.145) |

### Configuration de suggestion de fichiers

Le script de suggestion de fichiers reçoit un objet JSON sur stdin (par ex. `{"query": "src/comp"}`) et doit produire jusqu'à 15 chemins de fichiers (un par ligne).

```json
{
  "fileSuggestion": {
    "type": "command",
    "command": "~/.claude/file-suggestion.sh"
  },
  "respectGitignore": true
}
```

**Exemple :**
```json
{
  "statusLine": {
    "type": "command",
    "command": "git branch --show-current 2>/dev/null || echo 'no-branch'"
  },
  "spinnerTipsEnabled": true,
  "spinnerVerbs": {
    "mode": "replace",
    "verbs": ["Cooking", "Brewing", "Crafting", "Conjuring"]
  },
  "spinnerTipsOverride": {
    "tips": ["Use /compact at ~50% context", "Start with plan mode for complex tasks"],
    "excludeDefault": true
  }
}
```

---

## Identifiants AWS & Cloud

### Paramètres AWS

| Clé | Type | Description |
|-----|------|-------------|
| `awsAuthRefresh` | string | Script pour rafraîchir l'auth AWS (modifie le répertoire `.aws`) |
| `awsCredentialExport` | string | Script produisant un JSON avec des identifiants AWS |

**Exemple :**
```json
{
  "awsAuthRefresh": "aws sso login --profile myprofile",
  "awsCredentialExport": "/bin/generate_aws_grant.sh"
}
```

### OpenTelemetry

| Clé | Type | Description |
|-----|------|-------------|
| `otelHeadersHelper` | string | Script pour générer des en-têtes OpenTelemetry dynamiques |

**Exemple :**
```json
{
  "otelHeadersHelper": "/bin/generate_otel_headers.sh"
}
```

---

## Variables d'environnement (via `env`)

Définir des variables d'environnement pour toutes les sessions Claude Code.

```json
{
  "env": {
    "ANTHROPIC_API_KEY": "...",
    "NODE_ENV": "development",
    "DEBUG": "true"
  }
}
```

### Variables d'environnement courantes

| Variable | Description |
|----------|-------------|
| `ANTHROPIC_API_KEY` | Clé API pour l'authentification |
| `ANTHROPIC_AUTH_TOKEN` | Token OAuth |
| `CLAUDE_CODE_OAUTH_TOKEN` | Token d'accès OAuth pour l'authentification Claude.ai. Alternative à `/login` pour le SDK et les environnements automatisés. Prend le pas sur les identifiants stockés en trousseau |
| `CLAUDE_CODE_OAUTH_REFRESH_TOKEN` | Token de rafraîchissement OAuth pour l'authentification Claude.ai. Quand défini, `claude auth login` échange ce token directement au lieu d'ouvrir un navigateur. Requiert `CLAUDE_CODE_OAUTH_SCOPES` |
| `CLAUDE_CODE_OAUTH_SCOPES` | Scopes OAuth séparés par des espaces avec lesquels le token de rafraîchissement a été émis (par ex. `"user:profile user:inference user:sessions:claude_code"`). Requis quand `CLAUDE_CODE_OAUTH_REFRESH_TOKEN` est défini |
| `ANTHROPIC_WORKSPACE_ID` | ID de workspace pour la [fédération d'identité de charge de travail](https://platform.claude.com/docs/en/manage-claude/workload-identity-federation). Défini quand ta règle de fédération couvre plus d'un workspace pour que l'échange de token sache lequel cibler (v2.1.141) |
| `ANTHROPIC_BASE_URL` | Endpoint API personnalisé |
| `ANTHROPIC_BEDROCK_BASE_URL` | Surcharger l'URL d'endpoint Bedrock |
| `ANTHROPIC_BEDROCK_MANTLE_BASE_URL` | Surcharger l'URL d'endpoint Bedrock Mantle. Voir [endpoint Mantle](https://code.claude.com/docs/en/amazon-bedrock#use-the-mantle-endpoint) |
| `ANTHROPIC_BEDROCK_SERVICE_TIER` | Palier de service Bedrock : `default`, `flex` ou `priority`. Envoyé comme en-tête `X-Amzn-Bedrock-Service-Tier` sur chaque requête. Voir [paliers de service Amazon Bedrock](https://code.claude.com/docs/en/amazon-bedrock#service-tiers) (v2.1.122) |
| `ANTHROPIC_AWS_API_KEY` | Clé API de workspace pour Claude Platform sur AWS |
| `ANTHROPIC_AWS_BASE_URL` | Surcharger l'URL d'endpoint de Claude Platform sur AWS |
| `ANTHROPIC_AWS_WORKSPACE_ID` | ID de workspace requis pour Claude Platform sur AWS |
| `CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST` | Défini par les plateformes hôtes qui embarquent Claude Code et gèrent le routage de fournisseur de modèle pour le compte de l'utilisateur. Quand défini, les variables d'env de sélection de fournisseur / endpoint / authentification dans `settings.json` (par ex. `CLAUDE_CODE_USE_BEDROCK`, `ANTHROPIC_BASE_URL`, `ANTHROPIC_API_KEY`) sont ignorées pour que les paramètres utilisateur ne puissent surcharger le routage de l'hôte. Le désengagement automatique de télémétrie pour Bedrock/Vertex/Foundry est aussi sauté, donc la télémétrie suit le désengagement standard `DISABLE_TELEMETRY` (v2.1.126) |
| `ANTHROPIC_VERTEX_BASE_URL` | Surcharger l'URL d'endpoint Vertex AI |
| `ANTHROPIC_BETAS` | Valeurs d'en-tête beta Anthropic séparées par des virgules |
| `ANTHROPIC_VERTEX_PROJECT_ID` | ID de projet GCP pour Vertex AI |
| `GCLOUD_PROJECT` | ID de projet GCP pour les requêtes Vertex AI (surcharge `ANTHROPIC_VERTEX_PROJECT_ID`) |
| `GOOGLE_APPLICATION_CREDENTIALS` | Chemin vers le fichier d'identifiants de compte de service GCP pour l'authentification Vertex AI |
| `GOOGLE_CLOUD_PROJECT` | ID de projet GCP pour les requêtes Vertex AI (surcharge `ANTHROPIC_VERTEX_PROJECT_ID`) |
| `ANTHROPIC_CUSTOM_MODEL_OPTION` | ID de modèle à ajouter comme entrée personnalisée dans le sélecteur `/model`. À utiliser pour rendre sélectionnable un modèle non standard ou propre à une gateway sans remplacer les alias intégrés |
| `ANTHROPIC_CUSTOM_MODEL_OPTION_NAME` | Nom d'affichage de l'entrée de modèle personnalisée dans le sélecteur `/model`. Défaut : l'ID du modèle quand non défini |
| `ANTHROPIC_CUSTOM_MODEL_OPTION_DESCRIPTION` | Description d'affichage de l'entrée de modèle personnalisée dans le sélecteur `/model`. Défaut : `Custom model (<model-id>)` quand non défini |
| `ANTHROPIC_CUSTOM_MODEL_OPTION_SUPPORTED_CAPABILITIES` | Surcharger la détection de capacités pour l'entrée de modèle personnalisée. Valeurs séparées par des virgules (par ex. `effort,thinking`). Requis quand le modèle personnalisé supporte des fonctionnalités que l'auto-détection ne peut confirmer. Voir [configuration de modèle](https://code.claude.com/docs/en/model-config#customize-pinned-model-display-and-capabilities) |
| `ANTHROPIC_MODEL` | Nom du modèle à utiliser. Accepte des alias (`sonnet`, `opus`, `haiku`) ou des IDs de modèle complets. Surcharge le paramètre `model` |
| `INIT_PROMPT` | System prompt personnalisé injecté à l'initialisation de session |
| `ANTHROPIC_DEFAULT_HAIKU_MODEL` | Surcharger l'alias de modèle Haiku par un ID de modèle personnalisé (par ex. pour des déploiements tiers) |
| `ANTHROPIC_DEFAULT_HAIKU_MODEL_NAME` | Personnaliser le libellé de l'entrée Haiku dans le sélecteur `/model` en utilisant un modèle épinglé sur Bedrock/Vertex/Foundry. Défaut : l'ID du modèle |
| `ANTHROPIC_DEFAULT_HAIKU_MODEL_DESCRIPTION` | Personnaliser la description de l'entrée Haiku dans le sélecteur `/model`. Défaut : `Custom model (<model-id>)` |
| `ANTHROPIC_DEFAULT_HAIKU_MODEL_SUPPORTED_CAPABILITIES` | Surcharger la détection de capacités pour un modèle Haiku épinglé. Valeurs séparées par des virgules (par ex. `effort,thinking`). Requis quand le modèle épinglé supporte des fonctionnalités que l'auto-détection ne peut confirmer |
| `CLAUDECODE` | Mis à `1` dans les environnements shell que Claude Code lance (outil Bash, sessions tmux). Non défini dans les hooks ou commandes de barre d'état. À utiliser pour détecter quand un script tourne dans un shell Claude Code |
| `CLAUDE_CODE_SESSION_ID` | Lecture seule. Défini automatiquement dans les sous-processus des outils Bash et PowerShell avec l'ID de session courant. Correspond au champ `session_id` passé aux hooks. Mis à jour sur `/clear`. À utiliser pour corréler scripts et outils externes avec la session Claude Code qui les a lancés (v2.1.132) |
| `AI_AGENT` | Défini automatiquement par Claude Code dans les environnements de sous-processus (outil Bash, hooks, serveurs MCP stdio). Drapeau générique identifiant le processus parent comme agent IA — utile pour les outils qui adaptent leur comportement quand invoqués depuis n'importe quel agent IA plutôt que de vérifier chaque variable propre à un agent comme `CLAUDECODE` *(dans le changelog v2.1.120, pas encore sur la page officielle des variables d'env)* |
| `CLAUDE_CODE_SKIP_FAST_MODE_NETWORK_ERRORS` | Mets `1` pour autoriser le mode fast quand la vérification du statut de l'organisation échoue à cause d'une erreur réseau. Utile quand un proxy d'entreprise bloque l'endpoint de statut |
| `CLAUDE_CODE_USE_BEDROCK` | Utiliser AWS Bedrock (`1` pour activer) |
| `CLAUDE_CODE_USE_VERTEX` | Utiliser Google Vertex AI (`1` pour activer) |
| `CLAUDE_CODE_USE_FOUNDRY` | Utiliser Microsoft Foundry (`1` pour activer) |
| `CLAUDE_CODE_USE_MANTLE` | Utiliser l'[endpoint Mantle](https://code.claude.com/docs/en/amazon-bedrock#use-the-mantle-endpoint) Bedrock (`1` pour activer) |
| `CLAUDE_CODE_USE_POWERSHELL_TOOL` | Mets `1` pour activer l'outil PowerShell sous Windows (aperçu opt-in). Quand activé, Claude peut exécuter des commandes PowerShell nativement au lieu de router via Git Bash. Supporté uniquement sur Windows natif, pas WSL (v2.1.84) |
| `CLAUDE_CODE_POWERSHELL_RESPECT_EXECUTION_POLICY` | Mets `1` pour empêcher Claude Code de passer `-ExecutionPolicy Bypass` en lançant PowerShell pour les appels d'outils, hooks et commandes de barre d'état, respectant plutôt la politique d'exécution effective de la machine. Par défaut Claude Code contourne la politique d'exécution au niveau processus pour que les scripts `.ps1` et imports de module fonctionnent sur un Windows Restricted par défaut. Ne surcharge jamais les Group Policy `MachinePolicy`/`UserPolicy` (v2.1.143) |
| `CLAUDE_CODE_REMOTE` | Lecture seule. Mis automatiquement à `true` quand Claude Code tourne comme session cloud. Lis ceci depuis un hook ou script de setup pour détecter si tu es dans un environnement cloud |
| `CLAUDE_CODE_REMOTE_SESSION_ID` | Lecture seule. Défini automatiquement dans les sessions cloud avec l'ID de la session courante. Lis ceci pour construire un lien vers le transcript de la session |
| `CLAUDE_REMOTE_CONTROL_SESSION_NAME_PREFIX` | Préfixe pour les noms de sessions Remote Control auto-générés. Défaut : le hostname de la machine |
| `CLAUDE_CODE_ENABLE_TELEMETRY` | Activer/désactiver la télémétrie (`0` ou `1`) |
| `DISABLE_ERROR_REPORTING` | Désactiver le reporting d'erreurs (`1` pour désactiver) |
| `DISABLE_AUTOUPDATER` | Mets `1` pour désactiver les vérifications de mise à jour automatiques contre le registre npm. Configurable aussi comme variable de démarrage uniquement — voir [Drapeaux de démarrage du CLI](./claude-cli-startup-flags.md#variables-denvironnement) |
| `DISABLE_UPDATES` | Mets `1` pour bloquer complètement tous les chemins de mise à jour — vérifications automatiques, notifications et `claude update` manuel. Plus strict que `DISABLE_AUTOUPDATER`, qui ne désactive que la vérification d'arrière-plan. À utiliser dans les environnements où toutes les mises à jour doivent être bloquées jusqu'à réactivation explicite *(dans le changelog v2.1.118, pas encore sur la page officielle des variables d'env)* |
| `CLAUDE_CODE_PACKAGE_MANAGER_AUTO_UPDATE` | Mets `1` pour laisser Claude Code exécuter la commande de mise à niveau de ton gestionnaire de paquets en arrière-plan quand une nouvelle version est disponible. S'applique aux installations Homebrew et WinGet. Les autres gestionnaires continuent d'afficher la commande de mise à niveau sans l'exécuter. Voir [Mises à jour automatiques](https://code.claude.com/docs/en/setup#auto-updates) (v2.1.129) |
| `CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY` | Mets `1` pour peupler le sélecteur `/model` depuis l'endpoint `/v1/models` de ta gateway quand `ANTHROPIC_BASE_URL` pointe vers une gateway compatible Anthropic comme LiteLLM, Kong ou un proxy interne. Désactivé par défaut car les gateways adossées à une clé API partagée exposeraient sinon chaque modèle accessible par la clé. Les modèles découverts sont quand même filtrés par l'allowlist `availableModels` (v2.1.129, changement opt-in par rapport à l'auto-découverte précédente) |
| `DISABLE_TELEMETRY` | Désactiver la télémétrie (`1` pour désactiver) |
| `DO_NOT_TRACK` | Variable de désengagement standard ; mets `1` pour te désinscrire de la collecte de télémétrie. Respectée par `DISABLE_TELEMETRY` |
| `MCP_TIMEOUT` | Timeout de démarrage MCP en ms |
| `CLAUDE_CODE_MCP_ALLOWLIST_ENV` | Lancer les serveurs MCP stdio avec un environnement de base sûr uniquement, retirant la plupart des variables d'env héritées pour empêcher la fuite d'identifiants dans les processus serveurs non fiables |
| `MAX_MCP_OUTPUT_TOKENS` | Tokens de sortie MCP max (défaut : 25000). Avertissement affiché quand la sortie dépasse 10 000 tokens |
| `API_TIMEOUT_MS` | Timeout en ms pour les requêtes API (défaut : 600000) |
| `BASH_MAX_TIMEOUT_MS` | Timeout des commandes bash |
| `BASH_MAX_OUTPUT_LENGTH` | Longueur de sortie bash max |
| `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` | Pourcentage de seuil d'auto-compaction (1-100). Défaut ~95%. Mets plus bas (par ex. `50`) pour déclencher la compaction plus tôt. Les valeurs au-dessus de 95% n'ont aucun effet. Utilise `/context` pour surveiller l'usage actuel. Exemple : `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE=50 claude` |
| `CLAUDE_CODE_MAX_CONTEXT_TOKENS` | Surcharger la taille de fenêtre de contexte que Claude Code suppose pour le modèle actif. Ne prend effet que quand `DISABLE_COMPACT` est aussi défini. À utiliser en routant vers un modèle via `ANTHROPIC_BASE_URL` dont la fenêtre de contexte ne correspond pas à la taille intégrée pour son nom |
| `CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR` | Garder le cwd entre appels bash (`1` pour activer) |
| `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` | Désactiver les tâches d'arrière-plan (`1` pour désactiver) |
| `CLAUDE_CODE_DISABLE_AGENT_VIEW` | Mets `1` pour désactiver les agents d'arrière-plan et la vue agent (`claude agents`, `--bg`, `/background`, superviseur à la demande). Équivalent en variable d'env du paramètre `disableAgentView` *(référencé sur la page officielle des paramètres ; non listé sur la page des variables d'env)* |
| `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` | Activer la fonctionnalité expérimentale d'équipes d'agents (`1` pour activer). Permet d'instancier des équipes coordonnées de sous-agents dans une session |
| `CLAUDE_CODE_DISABLE_WORKFLOWS` | Mets `1` pour désactiver les [workflows dynamiques](https://code.claude.com/docs/en/workflows) (`/workflows`) et les commandes slash de workflow fournies. Équivalent en variable d'env du paramètre `disableWorkflows` |
| `CLAUDE_CODE_ENABLE_AUTO_MODE` | Mets `1` pour activer le [mode auto](https://code.claude.com/docs/en/permissions#auto-mode) sur Bedrock/Vertex/Foundry pour Opus 4.7 et Opus 4.8 (v2.1.158). Sur l'API Anthropic le mode auto est disponible sans ce drapeau *(dans le changelog v2.1.158, pas encore sur la page officielle des variables d'env)* |
| `ENABLE_TOOL_SEARCH` | Seuil de recherche d'outils MCP (par ex. `auto:5`) |
| `ENABLE_PROMPT_CACHING_1H` | Opter pour un TTL de cache de prompt d'1 heure. Remplace le déprécié `ENABLE_PROMPT_CACHING_1H_BEDROCK` *(dans le changelog v2.1.108, pas encore sur la page officielle des variables d'env)* |
| `FORCE_PROMPT_CACHING_5M` | Forcer un TTL de cache de prompt de 5 minutes *(dans le changelog v2.1.108, pas encore sur la page officielle des variables d'env)* |
| `CLAUDE_CODE_ENABLE_AWAY_SUMMARY` | Se désinscrire de l'away summary / récapitulatif de session inactive. Mets `0` pour désactiver. Va de pair avec le paramètre `awaySummaryEnabled` (v2.1.110) |
| `DISABLE_PROMPT_CACHING` | Désactiver tout le caching de prompt (`1` pour désactiver) |
| `DISABLE_PROMPT_CACHING_HAIKU` | Désactiver le caching de prompt Haiku |
| `DISABLE_PROMPT_CACHING_SONNET` | Désactiver le caching de prompt Sonnet |
| `DISABLE_PROMPT_CACHING_OPUS` | Désactiver le caching de prompt Opus |
| `ENABLE_PROMPT_CACHING_1H_BEDROCK` | Demander un TTL de cache d'1 heure sur Bedrock (`1` pour activer) *(pas dans les docs officielles — non vérifié ; le changelog v2.1.108 indique déprécié, remplacé par `ENABLE_PROMPT_CACHING_1H`)* |
| `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS` | Désactiver les fonctionnalités beta expérimentales (`1` pour désactiver) |
| `CLAUDE_CODE_SHELL` | Surcharger la détection automatique du shell |
| `CLAUDE_CODE_FILE_READ_MAX_OUTPUT_TOKENS` | Surcharger la limite de tokens de lecture de fichier par défaut |
| `CLAUDE_CODE_GLOB_HIDDEN` | Mets `false` pour exclure les dotfiles des résultats quand Claude invoque l'outil Glob. Inclus par défaut. N'affecte pas l'autocomplétion de fichier `@`, `ls`, Grep ou Read |
| `CLAUDE_CODE_GLOB_NO_IGNORE` | Mets `false` pour faire respecter à l'outil Glob les motifs `.gitignore`. Par défaut, Glob renvoie tous les fichiers correspondants y compris ceux gitignorés. N'affecte pas l'autocomplétion de fichier `@`, qui a son propre paramètre `respectGitignore` |
| `CLAUDE_CODE_GLOB_TIMEOUT_SECONDS` | Timeout en secondes pour la découverte de fichiers Glob |
| `CLAUDE_CODE_ENABLE_TASKS` | Mets `true` pour activer le suivi de tâches en mode non interactif (drapeau `-p`). Les tâches sont activées par défaut en mode interactif |
| `CLAUDE_CODE_SIMPLE` | Mets `1` pour tourner avec un system prompt minimal et seulement les outils Bash, lecture et édition de fichiers. Configurable aussi comme variable de démarrage uniquement — voir [Drapeaux de démarrage du CLI](./claude-cli-startup-flags.md#variables-denvironnement) |
| `CLAUDE_CODE_EXIT_AFTER_STOP_DELAY` | Auto-quitter le mode SDK après une durée d'inactivité (ms) |
| `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` | Désactiver la réflexion adaptative (`1` pour désactiver) |
| `CLAUDE_CODE_DISABLE_THINKING` | Forcer la désactivation de la réflexion étendue (`1` pour désactiver) |
| `DISABLE_INTERLEAVED_THINKING` | Empêcher l'envoi de l'en-tête beta interleaved-thinking (`1` pour désactiver) |
| `CLAUDE_CODE_DISABLE_1M_CONTEXT` | Désactiver la fenêtre de contexte de 1M tokens (`1` pour désactiver) |
| `CLAUDE_CODE_ACCOUNT_UUID` | Surcharger l'UUID de compte pour l'authentification |
| `CLAUDE_CODE_DISABLE_GIT_INSTRUCTIONS` | Désactiver les instructions de system prompt liées à git |
| `CLAUDE_CODE_ATTRIBUTION_HEADER` | Mets `0` pour omettre le bloc d'attribution Claude Code du system prompt |
| `CLAUDE_CODE_NEW_INIT` | Mets `true` pour faire de `/init` un flux de setup interactif. Demande quels fichiers générer (CLAUDE.md, skills, hooks) avant d'explorer le codebase. Sans cela, `/init` génère un CLAUDE.md automatiquement |
| `CLAUDE_CODE_PLUGIN_SEED_DIR` | Chemin vers un ou plusieurs répertoires de seed de plugins en lecture seule, séparés par `:` sous Unix ou `;` sous Windows. Embarque des plugins pré-peuplés dans une image de conteneur. Claude Code enregistre les marketplaces de ces répertoires au démarrage et utilise les plugins pré-cachés sans re-cloner |
| `ENABLE_CLAUDEAI_MCP_SERVERS` | Activer les serveurs MCP Claude.ai |
| `CLAUDE_CODE_EFFORT_LEVEL` | Définir le niveau d'effort : `low`, `medium`, `high`, `xhigh` (Opus 4.7 uniquement, v2.1.111), `max` (Opus 4.6 uniquement), ou `auto` (utiliser le défaut du modèle). Prend le pas sur `/effort` et le paramètre `effortLevel`. Configurable aussi comme variable de démarrage uniquement — voir [Drapeaux de démarrage du CLI](./claude-cli-startup-flags.md#variables-denvironnement) |
| `CLAUDE_EFFORT` | Lecture seule. Injecté dans les sous-processus de l'outil Bash et les handlers de hook avec le niveau d'effort actif pour que scripts shell et hooks puissent s'adapter au palier actuel (compagnon de `CLAUDE_CODE_EFFORT_LEVEL` ; v2.1.133). Dans les fichiers de skill utilise `${CLAUDE_EFFORT}` *(dans le changelog, pas sur la page officielle des variables d'env — lecture seule, non configurable par l'utilisateur)* |
| `CLAUDE_CODE_MAX_TURNS` | Tours agentiques maximum avant arrêt *(pas dans les docs officielles — non vérifié)* |
| `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` | Équivalent à définir `DISABLE_AUTOUPDATER`, `DISABLE_FEEDBACK_COMMAND`, `DISABLE_ERROR_REPORTING` et `DISABLE_TELEMETRY` |
| `CLAUDE_CODE_SKIP_SETTINGS_SETUP` | Sauter le flux de setup des paramètres au premier lancement *(pas dans les docs officielles — non vérifié)* |
| `CLAUDE_CODE_PROMPT_CACHING_ENABLED` | Surcharger le comportement de caching de prompt *(pas dans les docs officielles — non vérifié)* |
| `CLAUDE_CODE_DISABLE_TOOLS` | Liste d'outils à désactiver séparés par des virgules *(pas dans les docs officielles — non vérifié)* |
| `CLAUDE_CODE_DISABLE_MCP` | Désactiver tous les serveurs MCP (`1` pour désactiver) *(pas dans les docs officielles — non vérifié)* |
| `CLAUDE_CODE_MAX_OUTPUT_TOKENS` | Tokens de sortie max par réponse. Défaut : 32 000 (64 000 pour Opus 4.6 depuis v2.1.77). Borne supérieure : 64 000 (128 000 pour Opus 4.6 et Sonnet 4.6 depuis v2.1.77) |
| `CLAUDE_CODE_DISABLE_FAST_MODE` | Désactiver entièrement le mode fast (`1` pour désactiver) |
| `CLAUDE_CODE_OPUS_4_6_FAST_MODE_OVERRIDE` | Mets `1` pour épingler le [mode fast](https://code.claude.com/docs/en/fast-mode) sur Claude Opus 4.6 au lieu du défaut Opus 4.7. Avec ce paramètre, `/fast` tourne sur Opus 4.6 ; sans, `/fast` tourne sur Opus 4.7 (v2.1.142) |
| `CLAUDE_CODE_DISABLE_NONSTREAMING_FALLBACK` | Mets `1` pour désactiver le repli non-streaming quand une requête streaming échoue en cours de flux. Les erreurs de streaming se propagent à la couche de retry à la place. Utile quand un proxy ou une gateway cause une double exécution d'outil par le repli (v2.1.83) |
| `CLAUDE_ENABLE_STREAM_WATCHDOG` | Avorter les flux bloqués (`1` pour activer) |
| `CLAUDE_CODE_ENABLE_FINE_GRAINED_TOOL_STREAMING` | Activer le streaming d'outils fin (`1` pour activer) |
| `CLAUDE_CODE_DISABLE_AUTO_MEMORY` | Désactiver l'auto-mémoire (`1` pour désactiver) |
| `CLAUDE_CODE_DISABLE_FILE_CHECKPOINTING` | Désactiver le checkpointing de fichiers pour `/rewind` (`1` pour désactiver) |
| `CLAUDE_CODE_DISABLE_ATTACHMENTS` | Désactiver le traitement des pièces jointes (`1` pour désactiver) |
| `CLAUDE_CODE_DISABLE_CLAUDE_MDS` | Empêcher le chargement des fichiers CLAUDE.md (`1` pour désactiver) |
| `CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD` | Charger les fichiers de mémoire CLAUDE.md des répertoires additionnels spécifiés via `--add-dir` au démarrage (`1` pour activer) |
| `CLAUDE_CODE_DISABLE_POLICY_SKILLS` | Sauter le chargement des skills du répertoire de skills managed à l'échelle système (`1` pour désactiver) |
| `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` | Auto-reprendre si la session précédente s'est terminée en cours de tour (`1` pour activer) |
| `CLAUDE_CODE_SKIP_PROMPT_HISTORY` | Mets `1` pour sauter l'écriture de l'historique de prompts et des transcripts de session sur disque. Les sessions démarrées avec cette variable n'apparaissent pas dans `--resume`, `--continue` ou l'historique flèche-haut. Utile pour les sessions scriptées éphémères |
| `CLAUDE_CODE_USER_EMAIL` | Fournir l'e-mail utilisateur de façon synchrone pour l'authentification |
| `CLAUDE_CODE_ORGANIZATION_UUID` | Fournir l'UUID d'organisation de façon synchrone pour l'authentification |
| `CLAUDE_CONFIG_DIR` | Répertoire de config personnalisé (surcharge le défaut `~/.claude`) |
| `CLAUDE_CODE_TMPDIR` | Surcharger le répertoire temp utilisé pour les fichiers temp internes. Claude Code ajoute `/claude/` à ce chemin. Défaut : `/tmp` sous Unix/macOS, `os.tmpdir()` sous Windows |
| `ANTHROPIC_CUSTOM_HEADERS` | En-têtes personnalisés pour les requêtes API (format `Name: Value`, séparés par sauts de ligne pour plusieurs en-têtes) |
| `CLAUDE_CODE_EXTRA_BODY` | Objet JSON à fusionner au niveau supérieur du corps de chaque requête API. À utiliser pour injecter des champs propres au fournisseur (par ex. indices de routage pour une gateway personnalisée) |
| `CLAUDE_CODE_PROPAGATE_TRACEPARENT` | Mets `1` pour propager l'en-tête W3C `traceparent` à travers les requêtes en routant via un proxy personnalisé, liant les traces Claude Code à ta télémétrie en amont |
| `ANTHROPIC_FOUNDRY_API_KEY` | Clé API pour l'authentification Microsoft Foundry |
| `ANTHROPIC_FOUNDRY_BASE_URL` | URL de base pour la ressource Foundry |
| `ANTHROPIC_FOUNDRY_RESOURCE` | Nom de la ressource Foundry |
| `AWS_BEARER_TOKEN_BEDROCK` | Clé API Bedrock pour l'authentification |
| `ANTHROPIC_SMALL_FAST_MODEL` | **DÉPRÉCIÉ** — Utilise `ANTHROPIC_DEFAULT_HAIKU_MODEL` à la place |
| `ANTHROPIC_SMALL_FAST_MODEL_AWS_REGION` | Région AWS pour la surcharge de modèle de classe Haiku dépréciée |
| `CLAUDE_CODE_SHELL_PREFIX` | Préfixe de commande ajouté aux commandes bash |
| `BASH_DEFAULT_TIMEOUT_MS` | Timeout par défaut des commandes bash en ms |
| `CLAUDE_CODE_SKIP_BEDROCK_AUTH` | Sauter l'auth AWS pour Bedrock (`1` pour sauter) |
| `CLAUDE_CODE_SKIP_FOUNDRY_AUTH` | Sauter l'auth Azure pour Foundry (`1` pour sauter) |
| `CLAUDE_CODE_SKIP_MANTLE_AUTH` | Sauter l'authentification AWS pour Bedrock Mantle (par ex. en utilisant une gateway LLM) |
| `CLAUDE_CODE_SKIP_VERTEX_AUTH` | Sauter l'auth Google pour Vertex (`1` pour sauter) |
| `CLAUDE_CODE_PROXY_RESOLVES_HOSTS` | Autoriser le proxy à effectuer la résolution DNS |
| `CLAUDE_CODE_API_KEY_HELPER_TTL_MS` | Intervalle de rafraîchissement des identifiants en ms pour `apiKeyHelper` |
| `CLAUDE_CODE_CLIENT_CERT` | Chemin du certificat client pour mTLS |
| `CLAUDE_CODE_CLIENT_KEY` | Chemin de la clé privée client pour mTLS |
| `CLAUDE_CODE_CLIENT_KEY_PASSPHRASE` | Passphrase pour la clé mTLS chiffrée |
| `CLAUDE_CODE_CERT_STORE` | Liste de sources de certificats CA séparées par des virgules pour les connexions TLS : `bundled` (jeu CA Mozilla livré avec Claude Code) et/ou `system` (trust store de l'OS). Défaut : `bundled,system`. La distribution en binaire natif est requise pour l'intégration du store système ; sur le runtime Node.js, seul le jeu bundled est utilisé indépendamment de cette valeur (v2.1.101) |
| `CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS` | Timeout de clone git de marketplace de plugins en ms (défaut : 120000) |
| `CLAUDE_CODE_PLUGIN_PREFER_HTTPS` | Mets `1` pour cloner les sources de plugins en raccourci GitHub `owner/repo` via HTTPS au lieu de SSH. S'applique à l'install/update de plugins et `/plugin marketplace add`/`update`. Utile dans les runners CI ou conteneurs sans clé SSH configurée pour `github.com` (v2.1.141) |
| `CLAUDE_CODE_PLUGIN_CACHE_DIR` | Surcharger le répertoire racine des plugins |
| `CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL` | Sauter l'ajout automatique de la marketplace officielle (`1` pour désactiver) |
| `CLAUDE_CODE_SYNC_PLUGIN_INSTALL` | Attendre la fin de l'install de plugin avant la première requête (`1` pour activer) |
| `CLAUDE_CODE_SYNC_PLUGIN_INSTALL_TIMEOUT_MS` | Timeout en ms pour l'install synchrone de plugin |
| `CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE` | Mets `1` pour garder le cache de marketplace existant quand un `git pull` échoue au lieu d'effacer et re-cloner. Utile dans les environnements hors ligne ou airgapped où re-cloner échouerait de la même façon |
| `CLAUDE_CODE_ENABLE_BACKGROUND_PLUGIN_REFRESH` | Rafraîchir l'état des plugins aux frontières de tour de session après la fin d'une install d'arrière-plan (`1` pour activer). Sans cela, les plugins nouvellement installés prennent effet à la prochaine session |
| `CLAUDE_CODE_HIDE_ACCOUNT_INFO` | Masquer les infos email/org de l'UI *(pas dans les docs officielles — non vérifié)* |
| `CLAUDE_CODE_DISABLE_CRON` | Désactiver les tâches planifiées/cron (`1` pour désactiver) |
| `DISABLE_INSTALLATION_CHECKS` | Désactiver les avertissements d'installation |
| `DISABLE_FEEDBACK_COMMAND` | Désactiver la commande `/feedback`. L'ancien nom `DISABLE_BUG_COMMAND` est aussi accepté |
| `DISABLE_DOCTOR_COMMAND` | Masquer la commande `/doctor` (`1` pour désactiver) |
| `DISABLE_LOGIN_COMMAND` | Masquer la commande `/login` (`1` pour désactiver) |
| `DISABLE_LOGOUT_COMMAND` | Masquer la commande `/logout` (`1` pour désactiver) |
| `DISABLE_UPGRADE_COMMAND` | Masquer la commande `/upgrade` (`1` pour désactiver) |
| `DISABLE_EXTRA_USAGE_COMMAND` | Masquer la commande `/extra-usage` — renommée `/usage-credits` en v2.1.144, bien que ce nom de variable d'env reste inchangé (`1` pour désactiver) |
| `DISABLE_INSTALL_GITHUB_APP_COMMAND` | Masquer la commande `/install-github-app` (`1` pour désactiver) |
| `DISABLE_NON_ESSENTIAL_MODEL_CALLS` | Désactiver le texte d'ambiance et les appels de modèle non essentiels *(pas dans les docs officielles — non vérifié)* |
| `CLAUDE_CODE_DEBUG_LOGS_DIR` | Surcharger le chemin du répertoire des fichiers de log de debug |
| `CLAUDE_CODE_DEBUG_LOG_LEVEL` | Niveau minimal de log de debug |
| `CLAUDE_AUTO_BACKGROUND_TASKS` | Forcer l'auto-arrière-plan des tâches longues (`1` pour activer) |
| `CLAUDE_CODE_DISABLE_LEGACY_MODEL_REMAP` | Empêcher le remappage d'Opus 4.0/4.1 vers des modèles plus récents (`1` pour désactiver) |
| `FALLBACK_FOR_ALL_PRIMARY_MODELS` | Déclencher le modèle de repli pour tous les modèles primaires, pas seulement le défaut (`1` pour activer) |
| `CCR_FORCE_BUNDLE` | Mets `1` pour forcer `claude --remote` à bundler et uploader ton dépôt local même quand l'accès GitHub est disponible. Configurable aussi comme variable de démarrage uniquement — voir [Drapeaux de démarrage du CLI](./claude-cli-startup-flags.md#variables-denvironnement) |
| `CLAUDE_CODE_GIT_BASH_PATH` | Windows uniquement : chemin vers l'exécutable Git Bash (`bash.exe`). À utiliser quand Git Bash est installé mais pas dans ton PATH |
| `DISABLE_COST_WARNINGS` | Désactiver les messages d'avertissement de coût |
| `CLAUDE_CODE_SUBAGENT_MODEL` | Surcharger le modèle pour les sous-agents (par ex. `haiku`, `sonnet`) |
| `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB` | Mets `1` pour retirer les identifiants Anthropic et de fournisseurs cloud des environnements de sous-processus (outil Bash, hooks, serveurs MCP stdio). À utiliser en défense en profondeur quand les sous-processus ne doivent pas hériter des clés API (v2.1.83) |
| `CLAUDE_CODE_SCRIPT_CAPS` | Objet JSON limitant combien de fois des scripts spécifiques peuvent être invoqués par session quand `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB` est défini. Les clés sont des sous-chaînes comparées au texte de la commande ; les valeurs sont des limites d'appels entières. Par exemple, `{"deploy.sh": 2}` autorise `deploy.sh` à être appelé au plus deux fois. La correspondance est par sous-chaîne ; le fan-out à l'exécution via `xargs` ou `find -exec` n'est pas détecté — c'est un contrôle de défense en profondeur |
| `CLAUDE_CODE_PERFORCE_MODE` | Mets `1` pour activer la protection d'écriture consciente de Perforce. Quand défini, Edit, Write et NotebookEdit échouent avec un indice `p4 edit <file>` si le fichier cible n'a pas le bit owner-write, que Perforce efface sur les fichiers synchronisés jusqu'à ce que `p4 edit` les ouvre. Empêche Claude Code de contourner le suivi de changements Perforce (v2.1.98) |
| `CLAUDE_CODE_MAX_RETRIES` | Surcharger le nombre de retries de requête API (défaut : 10) |
| `CLAUDE_CODE_MAX_TOOL_USE_CONCURRENCY` | Outils en lecture seule parallèles max (défaut : 10) |
| `CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS` | Désactiver les types de sous-agents intégrés en mode SDK (`1` pour désactiver) |
| `CLAUDE_AGENT_SDK_MCP_NO_PREFIX` | Sauter le préfixe `mcp__<server>__` pour les outils MCP en mode SDK (`1` pour activer) |
| `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS` | Timeout de blocage en ms pour les sous-agents d'arrière-plan (défaut : 600000 / 10 minutes). Le sous-agent est tué s'il ne produit aucune sortie pendant cette durée |
| `MCP_CONNECTION_NONBLOCKING` | Mets `true` en mode `-p` pour sauter entièrement l'attente de connexion MCP. Borne les connexions de serveurs `--mcp-config` à 5s au lieu de bloquer sur le serveur le plus lent *(dans le changelog v2.1.89, pas encore sur la page officielle des variables d'env)* |
| `CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS` | Timeout des hooks SessionEnd en ms (remplace la limite dure de 1,5s) |
| `CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY` | Désactiver les invites d'enquête de feedback (`1` pour désactiver) |
| `CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL` | Mets `1` pour router l'enquête de qualité de session vers ton propre collecteur OpenTelemetry quand le trafic non essentiel vers Anthropic est bloqué. Les notes d'enquête ne sont émises que comme événements OTEL vers ton collecteur configuré — aucune donnée d'enquête n'est envoyée à Anthropic. S'applique quand `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`, `DISABLE_TELEMETRY` ou `DO_NOT_TRACK` est défini ; sans effet sinon. `CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY` et la politique de feedback produit de l'organisation prennent le pas (v2.1.136) |
| `CLAUDE_CODE_DISABLE_TERMINAL_TITLE` | Désactiver les mises à jour du titre de terminal (`1` pour désactiver) |
| `CLAUDE_CODE_TMUX_TRUECOLOR` | Mets `1` pour autoriser la sortie truecolor 24 bits dans tmux. Par défaut, Claude Code se limite à 256 couleurs quand `$TMUX` est défini car tmux ne laisse pas passer les séquences d'échappement truecolor sauf configuration. Mets ceci après avoir ajouté `set -ga terminal-overrides ',*:Tc'` à ton `~/.tmux.conf` |
| `CLAUDE_CODE_NO_FLICKER` | Mets `1` pour activer le rendu écran alternatif sans scintillement. Élimine le scintillement visuel pendant les redessins plein écran (v2.1.88) |
| `CLAUDE_CODE_ALT_SCREEN_FULL_REPAINT` | Mets `1` pour repeindre tout l'écran à chaque frame en rendu plein écran. À utiliser quand les redessins partiels produisent des artefacts visuels dans des émulateurs de terminal inhabituels |
| `CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN` | Mets `1` pour désactiver le rendu plein écran et utiliser le moteur de rendu classique sur écran principal. La conversation reste dans le scrollback natif de ton terminal pour que `Cmd+f` et le mode copie tmux fonctionnent comme d'habitude. Prend le pas sur `CLAUDE_CODE_NO_FLICKER` et le paramètre `tui`. Tu peux aussi basculer avec `/tui default` (v2.1.132) |
| `CLAUDE_CODE_FORCE_SYNC_OUTPUT` | Mets `1` pour forcer l'activation de la sortie synchronisée DEC private mode 2026 quand ton terminal la supporte mais n'est pas auto-détecté. Utile pour les émulateurs comme `eat` d'Emacs qui implémentent BSU/ESU mais ne répondent pas à la sonde de capacité. Sans effet sous tmux (v2.1.129) |
| `CLAUDE_CODE_SCROLL_SPEED` | Multiplicateur de défilement de molette pour le rendu plein écran. Augmente pour un défilement plus rapide, diminue pour un contrôle plus fin |
| `CLAUDE_CODE_DISABLE_VIRTUAL_SCROLL` | Mets `1` pour désactiver le défilement virtuel en rendu plein écran et rendre chaque message du transcript. À utiliser si le défilement en mode plein écran montre des régions vides où des messages devraient apparaître |
| `CLAUDE_CODE_DISABLE_MOUSE` | Mets `1` pour désactiver le suivi de la souris en rendu plein écran. Utile quand les événements souris interfèrent avec les multiplexeurs de terminal ou les outils d'accessibilité |
| `CLAUDE_CODE_HIDE_CWD` | Mets `1` pour masquer le répertoire de travail courant dans la bannière logo de démarrage de Claude Code. Utile dans les enregistrements d'écran, démos ou sessions partagées où le chemin CWD divulgue des infos sur l'hôte ou la disposition du projet (v2.1.119) |
| `CLAUDE_CODE_ACCESSIBILITY` | Mets `1` pour garder le curseur natif du terminal visible pour les lecteurs d'écran et outils d'accessibilité |
| `CLAUDE_CODE_NATIVE_CURSOR` | Mets `1` pour afficher le curseur propre du terminal à la position du caret de saisie au lieu du caractère de curseur personnalisé de Claude Code |
| `CLAUDE_CODE_SYNTAX_HIGHLIGHT` | Mets `0` pour désactiver la coloration syntaxique dans la sortie de diff |
| `CLAUDE_CODE_IDE_SKIP_AUTO_INSTALL` | Sauter l'installation automatique de l'extension IDE (`1` pour sauter) |
| `CLAUDE_CODE_AUTO_CONNECT_IDE` | Surcharger le comportement de connexion auto à l'IDE |
| `CLAUDE_CODE_IDE_HOST_OVERRIDE` | Surcharger l'adresse hôte de l'IDE pour la connexion |
| `CLAUDE_CODE_IDE_SKIP_VALID_CHECK` | Sauter la validation du lockfile IDE (`1` pour sauter) |
| `CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS` | Intervalle de debounce en ms pour le script helper d'en-têtes OTel |
| `CLAUDE_CODE_OTEL_FLUSH_TIMEOUT_MS` | Timeout en ms pour le flush OpenTelemetry |
| `CLAUDE_CODE_OTEL_SHUTDOWN_TIMEOUT_MS` | Timeout en ms pour l'arrêt OpenTelemetry |
| `CLAUDE_ENABLE_BYTE_WATCHDOG` | Mets `1` pour forcer l'activation du watchdog d'inactivité de streaming au niveau octet, ou `0` pour le forcer désactivé. Quand non défini, le watchdog est activé par défaut pour les connexions à l'API Anthropic. Le watchdog octet avorte une connexion quand aucun octet n'arrive sur le fil pendant la durée fixée par `CLAUDE_STREAM_IDLE_TIMEOUT_MS` (minimum 5 minutes), indépendamment du watchdog au niveau événement |
| `CLAUDE_STREAM_IDLE_TIMEOUT_MS` | Timeout en ms pour le watchdog d'inactivité de streaming. Deux watchdogs s'appliquent : **niveau octet** (défaut et minimum `300000` / 5 minutes, avorte quand aucun octet n'arrive sur le fil) et **niveau événement** (défaut `90000` / 90 secondes, sans minimum, avorte quand aucun événement SSE n'arrive). Le watchdog octet est activé par défaut pour les connexions à l'API Anthropic ; contrôle-le via `CLAUDE_ENABLE_BYTE_WATCHDOG`. Augmente le timeout d'événement si des outils de longue durée ou des réseaux lents causent des erreurs de timeout prématurées |
| `OTEL_LOG_TOOL_DETAILS` | Mets `1` pour inclure `tool_parameters` dans les événements OpenTelemetry. Omis par défaut pour la confidentialité *(dans le changelog v2.1.85, pas encore sur la page officielle des variables d'env)* |
| `OTEL_LOG_RAW_API_BODIES` | Mets `1` pour émettre les corps complets de requête et réponse API comme événements de log OpenTelemetry. Omis par défaut pour la confidentialité et la taille de payload. Utile pour le débogage à une gateway ou un proxy *(dans le changelog v2.1.111, pas encore sur la page officielle des variables d'env)* |
| `OTEL_LOG_USER_PROMPTS` | Mets `1` pour inclure le champ `user_system_prompt` dans les spans de requête LLM OpenTelemetry. Omis par défaut pour la confidentialité — les prompts utilisateur peuvent contenir des données sensibles, alors n'opte que quand tu contrôles le collecteur OTel et as des politiques en place *(dans le changelog v2.1.121, pas encore sur la page officielle des variables d'env)* |
| `OTEL_EXPORTER_OTLP_ENDPOINT` | URL d'endpoint de collecteur OpenTelemetry pour les métriques et logs. Voir [Monitoring](https://code.claude.com/docs/en/monitoring-usage) |
| `OTEL_EXPORTER_OTLP_HEADERS` | En-têtes d'exporteur OpenTelemetry (format `Name=Value`, séparés par virgules) pour t'authentifier avec ton collecteur |
| `OTEL_LOG_TOOL_CONTENT` | Mets `1` pour émettre les entrées et sorties complètes d'outils comme événements de log OpenTelemetry. Omis par défaut pour la confidentialité |
| `OTEL_METRICS_EXPORTER` | Type d'exporteur de métriques OpenTelemetry (par ex. `otlp`). Voir [Monitoring](https://code.claude.com/docs/en/monitoring-usage) |
| `OTEL_TRACES_EXPORTER` | Type d'exporteur de traces OpenTelemetry (par ex. `otlp`). Voir [Monitoring](https://code.claude.com/docs/en/monitoring-usage) |
| `CLAUDE_CODE_FORK_SUBAGENT` | Mets `1` pour activer les sous-agents forkés sur les builds externes (distributions non signées par Anthropic). Les sous-agents forkés tournent dans un processus enfant isolé au lieu de partager le contexte de l'agent principal *(dans le changelog v2.1.117, pas encore sur la page officielle des variables d'env)* |
| `CLAUDE_CODE_MCP_SERVER_NAME` | Nom du serveur MCP, passé comme variable d'environnement aux scripts `headersHelper` pour qu'ils génèrent des en-têtes d'authentification propres au serveur *(dans le changelog v2.1.85, pas encore sur la page officielle des variables d'env)* |
| `CLAUDE_CODE_MCP_SERVER_URL` | URL du serveur MCP, passée comme variable d'environnement aux scripts `headersHelper` à côté de `CLAUDE_CODE_MCP_SERVER_NAME` *(dans le changelog v2.1.85, pas encore sur la page officielle des variables d'env)* |
| `ANTHROPIC_DEFAULT_OPUS_MODEL` | Surcharger l'alias de modèle Opus (par ex. `claude-opus-4-6[1m]`) |
| `ANTHROPIC_DEFAULT_OPUS_MODEL_NAME` | Personnaliser le libellé de l'entrée Opus dans le sélecteur `/model` en utilisant un modèle épinglé sur Bedrock/Vertex/Foundry. Défaut : l'ID du modèle |
| `ANTHROPIC_DEFAULT_OPUS_MODEL_DESCRIPTION` | Personnaliser la description de l'entrée Opus dans le sélecteur `/model`. Défaut : `Custom model (<model-id>)` |
| `ANTHROPIC_DEFAULT_OPUS_MODEL_SUPPORTED_CAPABILITIES` | Surcharger la détection de capacités pour un modèle Opus épinglé. Valeurs séparées par des virgules (par ex. `effort,thinking`). Requis quand le modèle épinglé supporte des fonctionnalités que l'auto-détection ne peut confirmer |
| `ANTHROPIC_DEFAULT_SONNET_MODEL` | Surcharger l'alias de modèle Sonnet (par ex. `claude-sonnet-4-6`) |
| `ANTHROPIC_DEFAULT_SONNET_MODEL_NAME` | Personnaliser le libellé de l'entrée Sonnet dans le sélecteur `/model` en utilisant un modèle épinglé sur Bedrock/Vertex/Foundry. Défaut : l'ID du modèle |
| `ANTHROPIC_DEFAULT_SONNET_MODEL_DESCRIPTION` | Personnaliser la description de l'entrée Sonnet dans le sélecteur `/model`. Défaut : `Custom model (<model-id>)` |
| `ANTHROPIC_DEFAULT_SONNET_MODEL_SUPPORTED_CAPABILITIES` | Surcharger la détection de capacités pour un modèle Sonnet épinglé. Valeurs séparées par des virgules (par ex. `effort,thinking`). Requis quand le modèle épinglé supporte des fonctionnalités que l'auto-détection ne peut confirmer |
| `MAX_THINKING_TOKENS` | Tokens de réflexion étendue maximum par réponse |
| `CLAUDE_CODE_AUTO_COMPACT_WINDOW` | Définir la capacité de contexte en tokens utilisée pour les calculs d'auto-compaction. Défaut : la fenêtre de contexte du modèle (200K standard, 1M pour les modèles à contexte étendu). Utilise une valeur plus basse (par ex. `500000`) sur un modèle 1M pour le traiter comme 500K pour la compaction. Plafonné à la fenêtre de contexte réelle. `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` est appliqué comme pourcentage de cette valeur. Définir ceci découple le seuil de compaction du `used_percentage` de la barre d'état |
| `DISABLE_AUTO_COMPACT` | Désactiver la compaction automatique du contexte (`1` pour désactiver). Le `/compact` manuel fonctionne toujours *(pas dans les docs officielles — non vérifié)* |
| `DISABLE_COMPACT` | Désactiver toute compaction — automatique et manuelle (`1` pour désactiver) |
| `CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION` | Activer les suggestions de prompt |
| `CLAUDE_CODE_PLAN_MODE_REQUIRED` | Exiger le mode plan pour les sessions |
| `CLAUDE_CODE_TEAM_NAME` | Nom d'équipe pour les équipes d'agents |
| `CLAUDE_CODE_TASK_LIST_ID` | ID de liste de tâches pour l'intégration de tâches |
| `CLAUDE_ENV_FILE` | Chemin de fichier d'environnement personnalisé |
| `FORCE_AUTOUPDATE_PLUGINS` | Forcer les mises à jour auto des plugins (`1` pour activer) |
| `HTTP_PROXY` | URL de proxy HTTP pour les requêtes réseau |
| `HTTPS_PROXY` | URL de proxy HTTPS pour les requêtes réseau |
| `NO_PROXY` | Liste d'hôtes contournant le proxy, séparés par des virgules |
| `MCP_TOOL_TIMEOUT` | Timeout d'exécution d'outil MCP en ms |
| `MCP_CLIENT_SECRET` | Secret client OAuth MCP |
| `MCP_OAUTH_CALLBACK_PORT` | Port de callback OAuth MCP |
| `IS_DEMO` | Activer le mode démo |
| `SLASH_COMMAND_TOOL_CHAR_BUDGET` | Budget de caractères pour la sortie d'outil de commande slash |
| `VERTEX_REGION_CLAUDE_3_5_HAIKU` | Surcharge de région Vertex AI pour Claude 3.5 Haiku |
| `VERTEX_REGION_CLAUDE_3_7_SONNET` | Surcharge de région Vertex AI pour Claude 3.7 Sonnet |
| `VERTEX_REGION_CLAUDE_4_0_OPUS` | Surcharge de région Vertex AI pour Claude 4.0 Opus |
| `VERTEX_REGION_CLAUDE_4_0_SONNET` | Surcharge de région Vertex AI pour Claude 4.0 Sonnet |
| `VERTEX_REGION_CLAUDE_4_1_OPUS` | Surcharge de région Vertex AI pour Claude 4.1 Opus |

---

## Commandes utiles

| Commande | Description |
|---------|-------------|
| `/model` | Changer de modèle et ajuster le niveau d'effort d'Opus 4.6 |
| `/effort` | Définir le niveau d'effort directement : `low`, `medium`, `high`, `xhigh` (Opus 4.7 uniquement, v2.1.111), ou `max` (Opus 4.6 uniquement) (v2.1.76+) |
| `/config` | UI de configuration interactive |
| `/memory` | Voir/éditer tous les fichiers de mémoire |
| `/agents` | Gérer les sous-agents |
| `/mcp` | Gérer les serveurs MCP |
| `/hooks` | Voir les hooks configurés |
| `/plugin` | Gérer les plugins |
| `claude plugin tag` | Taguer une version de plugin dans une marketplace pour distribution. À lancer depuis le dépôt de marketplace avec le nom et la version du plugin (v2.1.118) |
| `claude plugin prune` | Retirer les plugins dont la source de marketplace n'est plus présente (par ex. marketplace supprimée ou entrée `extraKnownMarketplaces` retirée). Nettoie le cache local et désactive les plugins orphelins (v2.1.121) |
| `claude plugin details <plugin>` | Afficher l'inventaire de composants du plugin (commandes, agents, skills, hooks) et le coût en tokens de contexte par session qu'il ajoute. Utile pour auditer la dépense en tokens avant d'activer un plugin dans un environnement managed (v2.1.139) |
| `/keybindings` | Configurer des raccourcis clavier personnalisés |
| `/skills` | Voir et gérer les skills |
| `/permissions` | Voir et gérer les règles de permission |
| `/usage-credits` | Voir les crédits d'usage et limites restants. Renommé depuis `/extra-usage` en v2.1.144 (l'ancien nom fonctionne toujours) |
| `--doctor` | Diagnostiquer les problèmes de configuration |
| `--debug` | Mode debug avec détails d'exécution des hooks |

---

## Référence rapide : exemple complet

```json
{
  "$schema": "https://json.schemastore.org/claude-code-settings.json",
  "model": "sonnet",
  "agent": "code-reviewer",
  "language": "english",
  "cleanupPeriodDays": 30,
  "autoUpdatesChannel": "stable",
  "alwaysThinkingEnabled": true,
  "showThinkingSummaries": true,
  "viewMode": "default",
  "tui": "fullscreen",
  "awaySummaryEnabled": false,
  "includeGitInstructions": true,
  "defaultShell": "bash",
  "plansDirectory": "./plans",
  "claudeMdExcludes": ["**/vendor/**/CLAUDE.md"],
  "effortLevel": "xhigh",
  "maxSkillDescriptionChars": 1536,
  "skillListingBudgetFraction": 0.01,
  "disableAgentView": false,
  "disableWorkflows": false,
  "workflowKeywordTriggerEnabled": true,
  "syntaxHighlightingDisabled": false,

  "worktree": {
    "symlinkDirectories": ["node_modules"],
    "sparsePaths": ["packages/my-app", "shared/utils"],
    "baseRef": "fresh",
    "bgIsolation": "worktree"
  },

  "skillOverrides": {
    "legacy-context": "name-only",
    "deploy": "off"
  },

  "modelOverrides": {
    "claude-opus-4-6": "arn:aws:bedrock:us-east-1:123456789:inference-profile/anthropic.claude-opus-4-6-v1:0"
  },

  "autoMode": {
    "environment": [
      "Source control: github.example.com/acme-corp and all repos under it",
      "Trusted internal domains: *.internal.example.com"
    ],
    "soft_deny": ["$defaults", "Never run terraform apply"],
    "hard_deny": ["Never run rm -rf on directories outside the project"]
  },

  "permissions": {
    "allow": [
      "Edit(*)",
      "Write(*)",
      "Bash(npm run *)",
      "Bash(git *)",
      "WebFetch(domain:*)",
      "mcp__*",
      "Agent(*)"
    ],
    "deny": [
      "Read(.env)",
      "Read(./secrets/**)"
    ],
    "additionalDirectories": ["../shared/"],
    "defaultMode": "acceptEdits"
  },

  "enableAllProjectMcpServers": true,

  "mcpServers": {
    "always-on-server": {
      "type": "http",
      "url": "https://mcp.example.com",
      "alwaysLoad": true
    }
  },

  "sshConfigs": [
    {
      "id": "dev-vm",
      "name": "Dev VM",
      "sshHost": "user@dev.example.com"
    }
  ],

  "sandbox": {
    "enabled": true,
    "excludedCommands": ["git", "docker"],
    "filesystem": {
      "denyRead": ["./secrets/"],
      "denyWrite": ["./.env"]
    }
  },

  "attribution": {
    "commit": "Generated with Claude Code",
    "pr": ""
  },
  "prUrlTemplate": "https://gitlab.example.com/{owner}/{repo}/-/merge_requests/{number}",

  "statusLine": {
    "type": "command",
    "command": "git branch --show-current"
  },

  "spinnerTipsEnabled": true,
  "spinnerTipsOverride": {
    "tips": ["Custom tip 1", "Custom tip 2"],
    "excludeDefault": false
  },
  "prefersReducedMotion": false,
  "preferredNotifChannel": "terminal_bell",

  "env": {
    "NODE_ENV": "development",
    "CLAUDE_CODE_EFFORT_LEVEL": "medium",
    "ANTHROPIC_BEDROCK_SERVICE_TIER": "priority",
    "CLAUDE_CODE_ENABLE_AUTO_MODE": "1"
  }
}
```

---

## Sources

- [Documentation des paramètres Claude Code](https://code.claude.com/docs/en/settings)
- [Schéma JSON des paramètres Claude Code](https://json.schemastore.org/claude-code-settings.json)
- [Changelog Claude Code](https://github.com/anthropics/claude-code/blob/main/CHANGELOG.md)
- [Exemples de paramètres Claude Code sur GitHub](https://github.com/feiskyer/claude-code-settings)
- [Référence des variables d'environnement Claude Code](https://code.claude.com/docs/en/env-vars)
- [Référence des permissions Claude Code](https://code.claude.com/docs/en/permissions)
