Optimiser sa configuration Claude Code pour le développement

Optimiser sa configuration Claude Code pour le développement

·6 min de lecture·Mis à jour le 15 mars 2026

Pourquoi régler ça

Utiliser Claude Code avec les settings par défaut, c'est laisser sur la table des économies de quota, des tâches automatisées et une couche de sécurité gratuite. Voici une config ~/.claude/settings.json complète, section par section.

Variables d'environnement

{
  "env": {
    "DISABLE_NON_ESSENTIAL_MODEL_CALLS": "1",
    "CLAUDE_AUTOCOMPACT_PCT_OVERRIDE": "65",
    "CLAUDE_CODE_MAX_OUTPUT_TOKENS": "128000",
    "BASH_DEFAULT_TIMEOUT_MS": "120000",
    "BASH_MAX_TIMEOUT_MS": "600000",
    "MAX_MCP_OUTPUT_TOKENS": "25000",
    "CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR": "1",
    "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1",
    "DISABLE_TELEMETRY": "1",
    "DISABLE_ERROR_REPORTING": "1",
    "CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY": "1",
    "CLAUDE_CODE_SUBAGENT_MODEL": "haiku"
  }
}

Économie de quota. DISABLE_NON_ESSENTIAL_MODEL_CALLS coupe les appels API de vérification. CLAUDE_AUTOCOMPACT_PCT_OVERRIDE: 65 déclenche le compact plus tôt que le défaut à 60 % — la qualité des réponses se dégrade dans les derniers 25-30 % du contexte, et 65 % garde Claude lucide tout en conservant un bon historique. CLAUDE_CODE_MAX_OUTPUT_TOKENS: 128000 autorise les très longues réponses (refactorings massifs, articles entiers), sans impact sur la quota puisqu'on paie ce qu'on consomme.

Timeouts bash. BASH_DEFAULT_TIMEOUT_MS à 2 minutes pour les builds lents, BASH_MAX_TIMEOUT_MS à 10 minutes pour les compilations ou déploiements massifs. Et surtout CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR: 1, qui garde la même pwd entre les commandes — sans lui, chaque commande repart du home.

Features expérimentales. CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS: 1 laisse Claude créer plusieurs sous-agents en parallèle sur les problèmes complexes, et CLAUDE_CODE_SUBAGENT_MODEL: haiku les fait tourner sur un modèle plus rapide et moins cher, largement suffisant pour la plupart des tâches déléguées.

Mise à jour mars 2026

MAX_THINKING_TOKENS a été retiré : sur Opus 4.6 et Sonnet 4.6, le paramètre thinking est déprécié au profit de l'adaptive thinking, pilotable via /effort low|medium|high. Le modèle ajuste sa réflexion selon la complexité — réponses simples plus rapides, problèmes complexes toujours traités à fond.

Permissions de sécurité

Claude Code peut lire, écrire et lancer des commandes shell n'importe où. La section permissions borne ça :

{
  "permissions": {
    "allow": [
      "Bash(npm *)",
      "Bash(pnpm *)",
      "Bash(bun *)",
      "Bash(git status *)",
      "Bash(git diff *)",
      "Bash(git log *)",
      "Bash(git branch *)",
      "Bash(git show *)"
    ],
    "deny": [
      "Edit(~/.ssh/**)",
      "Edit(~/.aws/**)",
      "Edit(~/.gnupg/**)",
      "Edit(~/.config/gh/**)",
      "Edit(~/.git-credentials)",
      "Read(~/.ssh/id_*)",
      "Read(~/.aws/credentials)",
      "Bash(rm -rf *)",
      "Bash(git push --force *)",
      "Bash(git push * --force *)",
      "Edit(~/.env.claude)",
      "Read(~/.env.claude)"
    ]
  }
}

Depuis la v2.1.0, les wildcards bash type Bash(npm *) auto-approuvent les commandes read-only (git status, git diff) et les gestionnaires de paquets, ce qui supprime les popups de permission incessantes. Les deny rules utilisent la syntaxe Edit() / Read() / Bash() pour être précises.

Les chemins protégés couvrent les clés SSH, les credentials AWS, les clés GPG, le token GitHub, les credentials Git, et ~/.env.claude — le fichier de secrets pour les serveurs MCP, détaillé dans l'article sur la sécurisation des clés API MCP. Côté commandes, rm -rf et git push --force sont bloqués par glob.

Une astuce utile : placer des fichiers « decoy » avec de fausses données dans les chemins sensibles. Toute tentative d'accès apparaît immédiatement dans les logs.

Hooks : automatiser les avant/après

Les hooks exécutent des scripts shell à des moments clés du cycle de vie d'une session :

{
  "hooks": {
    "UserPromptSubmit": [
      {
        "hooks": [
          { "type": "command", "command": "~/.local/bin/claude-prompt-start" },
          { "type": "command", "command": "~/scripts/claude/autoname-session.sh" }
        ]
      }
    ],
    "PostCompact": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "echo \"[$(date +'%Y-%m-%d %H:%M:%S')] Compacted\" >> ~/.claude/compact.log"
          }
        ]
      }
    ],
    "Stop": [
      {
        "hooks": [{ "type": "command", "command": "~/.local/bin/claude-prompt-end" }]
      }
    ]
  }
}
  • UserPromptSubmit se déclenche à chaque prompt soumis : logging des timestamps, et auto-nommage de la session par extraction de mots-clés.
  • PostCompact logge chaque compaction, ce qui permet de voir à quelle fréquence le contexte sature et d'ajuster le seuil d'autocompact en conséquence.
  • Stop logge la fin de session pour mesurer la durée globale.

Depuis début 2026, les hooks HTTP ("type": "http") postent du JSON vers une URL au lieu d'exécuter un script shell — pratique pour du webhook direct sans intermédiaire.

Configuration UI

{
  "showTurnDuration": true,
  "cleanupPeriodDays": 90,
  "enableAllProjectMcpServers": false,
  "skipDangerousModePermissionPrompt": true,
  "spinnerVerbs": {
    "mode": "replace",
    "verbs": [" ⠋", " ⠙", " ⠹", " ⠸", " ⠼", " ⠴", " ⠦", " ⠧", " ⠇", " ⠏"]
  }
}

showTurnDuration affiche le temps de réponse et identifie les appels lents. cleanupPeriodDays: 90 auto-supprime les vieilles sessions avant qu'elles ne saturent le disque. enableAllProjectMcpServers: false conserve la demande de confirmation avant d'activer les serveurs MCP d'un projet — une sécurité sur ce qui s'exécute. skipDangerousModePermissionPrompt: true permet de basculer en Dangerous Mode sans confirmation, à réserver aux utilisateurs qui savent ce qu'ils font.

Plugins

{
  "enabledPlugins": {
    "context7@claude-plugins-official": true,
    "safety-net@cc-marketplace": true,
    "ralph-loop@claude-plugins-official": true
  }
}

Context7 donne accès à la doc en temps réel de 100+ frameworks, ce qui évite les hallucinations sur les APIs récentes. Safety-Net fait une analyse statique des commits et PRs avant push, pour détecter secrets accidentels et logs sensibles. Ralph-Loop boucle automatiquement sur les erreurs de build ou de test jusqu'à correction, sans intervention.

Pour finir

Cette config n'est pas figée : les deny patterns s'enrichissent au fil des inquiétudes, les timeouts s'ajustent selon les projets en cours. L'idée est d'avoir un environnement qui pousse vers les bonnes pratiques par défaut. Copiez, adaptez à vos chemins sensibles et vos commandes dangereuses, itérez.

Voir aussi : Sécuriser ses clés API MCP dans Claude Code — si vos serveurs MCP ont des clés API en dur dans mcp.json, c'est un problème.

PartagerLinkedInXBluesky

Articles similaires