Référence des paramètres de Claude Code
Chaque clé dans settings.json, la liste complète des variables d'environnement, et la chaîne de priorité à cinq niveaux qui décide quelle config gagne quand managed et user s'affrontent.
Arrêtez de configurer. Commencez à construire.
Templates SaaS avec orchestration IA.
Le problème : La plupart des douleurs avec Claude Code ont une seule cause racine. Ta config ne correspond pas à ta façon de travailler. Tu valides des commandes bash toute la journée, les defaults de l'équipe ne se chargent jamais, ou une clé que tu as éditée hier ne fait rien.
La solution c'est de comprendre le système de paramètres. Pas seulement les clés, mais les règles de priorité qui choisissent un gagnant quand deux portées sont en désaccord.
Gain rapide : Ajoute une ligne $schema dans settings.json et tout éditeur qui comprend les schémas JSON s'active avec l'autocomplétion et les vérifications en ligne. VS Code, Cursor, et tout autre outil avec support de schéma en bénéficient.
La chaîne de priorité à cinq niveaux
Les paramètres suivent un ordre fixe. Le connaître comble le fossé entre "pourquoi mon changement n'a pas pris effet" et "ah, mauvais fichier."
Priorité des portées (de la plus haute à la plus basse)
| Priorité | Portée | Emplacement | Qui ça affecte | Partagé ? |
|---|---|---|---|---|
| 1 | Managed | Répertoires système | Tous les utilisateurs de la machine | Oui (déployé par IT) |
| 2 | Command line | Options CLI | Session actuelle uniquement | Non |
| 3 | Local | .claude/settings.local.json | Toi, ce projet | Non (gitignored) |
| 4 | Project | .claude/settings.json | Tous les collaborateurs | Oui (dans git) |
| 5 | User | ~/.claude/settings.json | Toi, tous les projets | Non |
Les portées supérieures battent toujours les inférieures. Point final. Une règle managed de l'IT qui bloque Bash(curl *) est inaccessible depuis n'importe quel fichier personnel ou de projet.
Choisir la bonne portée
Managed convient aux organisations qui ont besoin de règles sans échappatoire :
- Politiques de sécurité (bloquer l'accès aux credentials, interdire les commandes destructives)
- Conformité qui doit s'appliquer à chaque ingénieur et chaque dépôt
- Hooks standard ou configs MCP déployés par l'IT
Command line gère les overrides ponctuels dans une seule session :
- Essayer un modèle différent :
claude --model claude-sonnet-4-5-20250929 - Accorder plus de permissions pour un travail spécifique
- Lancer avec l'option
--debug
Local est ton bac à sable privé pour un dépôt donné :
- Overrider discrètement une règle de projet qui ne convient pas à ta machine
- Tester un hook avant de le proposer à l'équipe
- Chemins uniques à cette machine (où ta clé SSH se trouve, sur quel port le proxy local tourne)
Project c'est là où l'équipe s'aligne :
- Règles de permission que tout le monde suit
- Hooks partagés pour le formatage auto et le lint
- Configs de serveur MCP dont chaque coéquipier a besoin
- Instructions CLAUDE.md qui décrivent le projet
User c'est tes propres defaults :
- Langue, thème et style de sortie que tu préfères
- Plugins que tu veux actifs dans chaque dépôt
- Règles de permission globales (comme un deny global sur
~/.ssh)
Chemins des paramètres managed par OS
Les fichiers managed nécessitent des droits admin et se trouvent en dehors de tout répertoire utilisateur :
| Système d'exploitation | Chemin |
|---|---|
| macOS | /Library/Application Support/ClaudeCode/ |
| Linux / WSL | /etc/claude-code/ |
| Windows | C:\Program Files\ClaudeCode\ |
Deux fichiers vivent dans ces dossiers. managed-settings.json contient les paramètres, managed-mcp.json contient les serveurs MCP.
Chaque réglage de Claude Code se trouve à un chemin de fichier connu dans chaque portée :
| Fonctionnalité | User | Project (partagé) | Local (personnel) |
|---|---|---|---|
| Settings | ~/.claude/settings.json | .claude/settings.json | .claude/settings.local.json |
| Subagents | ~/.claude/agents/ | .claude/agents/ | N/A |
| Serveurs MCP | ~/.claude.json | .mcp.json | ~/.claude.json (par projet) |
| Plugins | ~/.claude/settings.json | .claude/settings.json | .claude/settings.local.json |
| CLAUDE.md | ~/.claude/CLAUDE.md | CLAUDE.md ou .claude/CLAUDE.md | CLAUDE.local.md |
Référence des paramètres
Paramètres généraux
| Clé | Description | Défaut | Exemple |
|---|---|---|---|
model | Override le modèle par défaut | (défaut système) | "claude-sonnet-4-5-20250929" |
language | Langue de réponse préférée de Claude | English | "japanese" |
outputStyle | Ajuste le style du prompt système | (aucun) | "Explanatory" |
cleanupPeriodDays | Jours avant suppression des sessions inactives | 30 | 20 |
autoUpdatesChannel | Canal de version : "stable" ou "latest" | "latest" | "stable" |
showTurnDuration | Afficher le timing des réponses ("Cooked for 1m 6s") | true | false |
spinnerVerbs | Personnaliser le texte du spinner | (defaults) | {"mode": "append", "verbs": ["Pondering"]} |
spinnerTipsEnabled | Afficher des conseils pendant que Claude travaille | true | false |
terminalProgressBarEnabled | Barre de progression terminal (iTerm2, Windows Terminal) | true | false |
alwaysThinkingEnabled | Activer la réflexion étendue par défaut | false | true |
plansDirectory | Où les fichiers plan sont stockés | ~/.claude/plans | "./plans" |
respectGitignore | Le sélecteur de fichiers @ respecte .gitignore | true | false |
companyAnnouncements | Messages affichés au démarrage (cycle aléatoire) | (aucun) | ["Review guidelines at docs.acme.com"] |
Paramètres de permissions
Les clés ci-dessous s'imbriquent toutes dans l'objet "permissions".
| Clé | Description | Exemple |
|---|---|---|
allow | Règles pour auto-approuver l'utilisation des outils | ["Bash(npm run lint)", "Read(~/.zshrc)"] |
ask | Règles nécessitant une confirmation | ["Bash(git push *)"] |
deny | Règles pour bloquer complètement l'utilisation des outils | ["WebFetch", "Bash(curl *)", "Read(./.env)"] |
additionalDirectories | Répertoires supplémentaires accessibles à Claude | ["../docs/", "../shared/"] |
defaultMode | Mode de permission par défaut au lancement | "acceptEdits" |
disableBypassPermissionsMode | Bloquer --dangerously-skip-permissions | "disable" |
Ordre d'évaluation : Deny passe en premier. Ask vient ensuite. Allow en dernier. La première règle qui correspond s'applique.
Exemples de syntaxe de règles :
| Règle | Ce qu'elle correspond |
|---|---|
Bash | Toutes les commandes Bash |
Bash(npm run *) | Commandes commençant par npm run |
Read(./.env) | Lecture du fichier .env |
Read(./secrets/**) | Lecture de tout dans secrets/ |
WebFetch(domain:example.com) | Requêtes fetch vers example.com |
Paramètres sandbox
Les clés ci-dessous s'imbriquent dans l'objet "sandbox" et régissent l'isolation des commandes bash.
| Clé | Description | Défaut | Exemple |
|---|---|---|---|
enabled | Activer le sandboxing bash | false | true |
autoAllowBashIfSandboxed | Auto-approuver les commandes quand sandboxé | true | true |
excludedCommands | Commandes qui tournent en dehors du sandbox | (aucun) | ["git", "docker"] |
allowUnsandboxedCommands | Autoriser l'échappatoire dangerouslyDisableSandbox | true | false |
enableWeakerNestedSandbox | Sandbox plus faible pour Docker (Linux/WSL2) | false | true |
network.allowedDomains | Liste blanche des domaines sortants | (aucun) | ["github.com", "*.npmjs.org"] |
network.allowUnixSockets | Chemins de sockets Unix accessibles dans le sandbox | (aucun) | ["~/.ssh/agent-socket"] |
network.allowAllUnixSockets | Autoriser toutes les connexions de sockets Unix | false | true |
network.allowLocalBinding | Autoriser la liaison à localhost (macOS uniquement) | false | true |
network.httpProxyPort | Port proxy HTTP personnalisé | (auto) | 8080 |
network.socksProxyPort | Port proxy SOCKS5 personnalisé | (auto) | 8081 |
Paramètres d'attribution
Les clés ci-dessous s'imbriquent dans l'objet "attribution" et décident comment git attribue le travail de Claude.
| Clé | Description | Défaut |
|---|---|---|
commit | Texte ajouté aux messages de commit git | "Generated with Claude Code..." + trailer Co-Authored-By |
pr | Texte ajouté aux descriptions de pull request | "Generated with Claude Code..." |
Vide l'une ou l'autre clé avec "" et la ligne correspondante disparaît de git. L'ancienne clé includeCoAuthoredBy fonctionne encore, bien qu'elle soit maintenant dépréciée.
Paramètres de plugins
| Clé | Description | Exemple |
|---|---|---|
enabledPlugins | Activer/désactiver les plugins | {"formatter@acme-tools": true} |
extraKnownMarketplaces | Sources de plugins supplémentaires | Voir exemple ci-dessous |
strictKnownMarketplaces | (Managed uniquement) Restreindre les sources de marketplace | [{"source": "github", "repo": "acme/plugins"}] |
Quatre types de sources existent. github pointe vers un dépôt. git accepte n'importe quelle URL. directory utilise un chemin local pendant le développement. hostPattern fait du matching regex sur les noms d'hôte.
Paramètres des serveurs MCP
| Clé | Description | Exemple |
|---|---|---|
enableAllProjectMcpServers | Auto-approuver tous les serveurs MCP du projet | true |
enabledMcpjsonServers | Serveurs MCP spécifiques à approuver | ["memory", "github"] |
disabledMcpjsonServers | Serveurs MCP spécifiques à rejeter | ["filesystem"] |
allowedMcpServers | (Managed uniquement) Liste blanche des serveurs MCP | [{"serverName": "github"}] |
deniedMcpServers | (Managed uniquement) Liste noire des serveurs MCP | [{"serverName": "filesystem"}] |
Paramètres d'authentification et de fournisseur
| Clé | Description | Exemple |
|---|---|---|
apiKeyHelper | Script pour générer la valeur d'auth | "/bin/generate_temp_api_key.sh" |
forceLoginMethod | Restreindre à claudeai ou console | "claudeai" |
forceLoginOrgUUID | Auto-sélectionner l'organisation à la connexion | "xxxxxxxx-xxxx-..." |
awsAuthRefresh | Script pour rafraîchir les credentials AWS | "aws sso login --profile myprofile" |
awsCredentialExport | Script générant le JSON de credentials AWS | "/bin/generate_aws_grant.sh" |
otelHeadersHelper | Script générant les headers OpenTelemetry | "/bin/generate_otel_headers.sh" |
Paramètres de hooks et avancés
| Clé | Description | Exemple |
|---|---|---|
hooks | Configuration des hooks d'événements du cycle de vie | Voir le guide des hooks |
disableAllHooks | Désactiver tous les hooks | true |
allowManagedHooksOnly | (Managed uniquement) Bloquer les hooks user/project | true |
allowManagedPermissionRulesOnly | (Managed uniquement) Bloquer les règles de permission user/project | true |
fileSuggestion | Script d'autocomplétion @ personnalisé pour les fichiers | {"type": "command", "command": "~/.claude/file-suggestion.sh"} |
statusLine | Affichage de la barre de statut personnalisée | {"type": "command", "command": "~/.claude/statusline.sh"} |
env | Variables d'environnement pour chaque session | {"FOO": "bar"} |
Variables d'environnement
Claude Code lit environ 70 variables d'env. La plupart sont des cas limites. Un ensemble opérationnel d'environ 20 est tout ce que tu vois au quotidien.
Modèle et fournisseur
| Variable | Utilisation |
|---|---|
ANTHROPIC_API_KEY | Clé API pour l'accès direct à l'API |
ANTHROPIC_MODEL | Override le modèle par défaut |
ANTHROPIC_DEFAULT_SONNET_MODEL | Nom du modèle pour l'alias Sonnet |
CLAUDE_CODE_SUBAGENT_MODEL | Modèle pour les sous-agents (séparé du modèle principal) |
CLAUDE_CODE_USE_BEDROCK | Router via AWS Bedrock |
CLAUDE_CODE_USE_VERTEX | Router via Google Vertex |
Les variables d'alias (ANTHROPIC_DEFAULT_SONNET_MODEL, ANTHROPIC_DEFAULT_OPUS_MODEL, ANTHROPIC_DEFAULT_HAIKU_MODEL) sont utiles quand ton organisation pointe un modèle fine-tuné vers les noms d'alias standards.
Optimisation des performances
| Variable | Utilisation |
|---|---|
CLAUDE_CODE_MAX_OUTPUT_TOKENS | Tokens de sortie max (défaut : 32K, max : 64K) |
MAX_THINKING_TOKENS | Budget de réflexion étendue (défaut : 31 999, mettre 0 pour désactiver) |
CLAUDE_AUTOCOMPACT_PCT_OVERRIDE | % de capacité de contexte (1-100) déclenchant l'auto-compaction |
BASH_DEFAULT_TIMEOUT_MS | Timeout par défaut des commandes bash |
BASH_MAX_TIMEOUT_MS | Timeout bash maximum que Claude peut définir |
BASH_MAX_OUTPUT_LENGTH | Caractères max de sortie bash avant troncature |
Confidentialité et télémétrie
| Variable | Utilisation |
|---|---|
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC | Désactiver les mises à jour, la télémétrie, les rapports d'erreurs en une fois |
DISABLE_TELEMETRY | Se désabonner de la télémétrie Statsig |
DISABLE_ERROR_REPORTING | Se désabonner des rapports d'erreurs Sentry |
CLAUDE_CODE_HIDE_ACCOUNT_INFO | Masquer l'email et le nom d'organisation de l'UI |
DISABLE_AUTOUPDATER | Désactiver les mises à jour automatiques de version |
Contrôle de session
| Variable | Utilisation |
|---|---|
CLAUDE_CODE_TASK_LIST_ID | Partager une liste de tâches entre plusieurs sessions |
CLAUDE_CODE_ENABLE_TASKS | Mettre false pour revenir à l'ancienne liste TODO |
CLAUDE_CODE_SHELL | Override la détection automatique du shell |
CLAUDE_CONFIG_DIR | Emplacement personnalisé du répertoire config/données |
MCP_TIMEOUT | Timeout en ms pour le démarrage du serveur MCP |
MCP_TOOL_TIMEOUT | Timeout en ms pour l'exécution des outils MCP |
Deux façons de les appliquer. Exporte-les depuis ton profil shell, ou ajoute-les dans l'objet "env" de settings.json pour qu'elles survivent aux sessions sans modifier le fichier rc du shell.
Résoudre les conflits de config
La plupart des maux de tête classiques avec la config disparaissent une fois que tu sais quelle portée prime sur quelle autre.
Cas 1 : Une règle de permission est en désaccord entre les portées
Ta config user autorise Bash(curl *). La config project le refuse. Qui l'emporte ? Project est en priorité 4 et user en priorité 5, donc le blocage tient. Si curl est vraiment nécessaire sur ta machine, mets la règle d'autorisation dans .claude/settings.local.json à la place. Local en priorité 3 prime project en priorité 4, et l'autorisation locale override alors la règle bloquée.
Cas 2 : Un fichier managed annule une règle de projet
Le settings.json de ton équipe dans le projet autorise Bash(rm -rf *). L'IT déploie ensuite un fichier managed qui bloque cette même commande. Managed gagne. Toujours. Rien dans un fichier user, local ou project ne peut dépasser les règles managed. Le design est intentionnel, et la conformité en est la raison.
Cas 3 : Tester quelque chose localement
Tu veux tester un nouveau hook avant de le proposer à l'équipe. Mets-le dans .claude/settings.local.json. Il prime sur le .claude/settings.json partagé et reste sur ta machine uniquement.
Cas 4 : Deux portées qui fusionnent
Les portées ne s'effacent pas complètement l'une l'autre. Elles s'empilent. La config user qui autorise Bash(git status) et la config project qui autorise Bash(npm run lint) te donnent les deux règles actives en même temps. La fusion assemble les tableaux de permissions. Si la même clé porte une valeur différente dans deux portées, la portée supérieure est celle qui s'applique pour cette seule clé.
Cas 5 : Une variable d'env exportée depuis le shell et listée dans settings.json
Exporte ANTHROPIC_MODEL depuis ton shell et liste-la aussi dans l'objet env de settings.json, et l'export shell est la valeur que Claude Code utilise.
Comment les paramètres s'articulent avec le reste du système
Les fichiers CLAUDE.md contiennent les instructions que Claude charge au démarrage, plus le contexte dont il a besoin. Modèle mental propre : settings dit ce que Claude est autorisé à faire, CLAUDE.md dit ce que Claude doit savoir.
Les serveurs MCP branchent de nouveaux outils sur Claude. Leur config vit dans ses propres fichiers (.mcp.json au niveau projet, ~/.claude.json au niveau user). settings.json est l'endroit qui décide quels serveurs sont approuvés et lesquels sont bloqués.
Les hooks vivent dans settings.json sous la clé hooks. Chacun exécute une commande shell, ou envoie un prompt LLM, quand un événement du cycle de vie se déclenche.
Les plugins passent aussi par settings.json, via enabledPlugins et ta liste de marketplaces.
Les sous-agents sont des fichiers Markdown simples. Les user vont dans ~/.claude/agents/, les project dans .claude/agents/.
Sauvegardes et récupération
Chaque fois qu'un fichier de config change, Claude Code écrit une sauvegarde horodatée. Les cinq dernières copies par fichier sont conservées. Une mauvaise mise à jour ne signifie plus fouiller dans git reflog. La version précédente fonctionnelle se trouve juste à côté de la cassée.
Démarrage
Nouveau dans les paramètres de Claude Code ? Parcours cette courte liste dans l'ordre.
- Règles de permission au niveau projet. Bloquer toute lecture de
.envet autres fichiers secrets. Autoriser les commandes de build ou de test que tu utilises chaque jour - Un hook PostToolUse qui formate automatiquement à la sauvegarde. Cette seule entrée détruit la fatigue d'approbation plus vite que n'importe quoi d'autre
- Paramètres d'attribution si la ligne Co-Authored-By doit être modifiée ou masquée
- Defaults user pour les préférences que tu veux actives dans chaque dépôt que tu touches
- Un fichier CLAUDE.md contenant le contexte du projet et tes conventions de code
Arrêtez de configurer. Commencez à construire.
Templates SaaS avec orchestration IA.
Le sandboxing de Claude Code
Le sandboxing de Claude Code applique des restrictions sur le système de fichiers et le réseau au niveau du noyau. Configuration pour macOS Seatbelt, Linux, WSL2 bubblewrap et les listes blanches de proxy.
La Fenêtre de Contexte 1M dans Claude Code
Anthropic a activé la fenêtre de contexte 1M tokens pour Opus 4.6 et Sonnet 4.6 dans Claude Code. Sans header beta, sans surcharge, tarification fixe, et moins de compactions.