Variables d'environnement de Claude Code
Variables d'environnement de Claude Code : à quoi elles servent et comment elles atteignent le panneau VS Code via claudeCode.environmentVariables.
Claude Code se configure presque entièrement par variables d'environnement. L'authentification, le point de terminaison de l'API, le modèle, le comportement des tentatives et des délais d'attente, ainsi que chaque commutateur de compatibilité pour les proxys et les passerelles sont des variables d'environnement — pas des options de ligne de commande, et pas des champs dans un assistant de configuration. Si votre installation de Claude Code ne se comporte pas comme prévu, cette page est la liste de contrôle : quelle variable, quel fichier, quelle règle de priorité.
Ce qu'est claudeCode.environmentVariables
claudeCode.environmentVariables est le paramètre VS Code qui transmet des variables d'environnement au panneau de l'extension Claude Code. C'est un simple tableau de paires { "name": ..., "value": ... } stocké dans le settings.json utilisateur de VS Code :
1 "claudeCode.environmentVariables": [2 { "name": "ANTHROPIC_BASE_URL", "value": "https://www.codebyai.net/api/agent" },3 { "name": "ANTHROPIC_AUTH_TOKEN", "value": "sk-proj-xxxx" }4 ]
Quatre propriétés de ce tableau méritent d'être connues avant de le modifier, car toutes les quatre surprennent :
| Propriété | Conséquence |
|---|---|
| C'est un tableau d'objets, pas une table de correspondance | "KEY": "value" est ignoré sans avertissement — le panneau démarre sans aucune variable |
| Sa portée est la machine | Toutes les fenêtres VS Code de cet ordinateur sont concernées, pas seulement le dossier courant |
| Il partage le tableau avec des variables sans rapport | Les réglages de proxy ou NODE_EXTRA_CA_CERTS vivent dans le même tableau — si vous l'écrasez, ils disparaissent |
| Il n'est lu qu'une fois, au démarrage de l'agent | Le modifier ne change rien avant Developer: Reload Window (ou un redémarrage de VS Code) |
Pourquoi un export de shell n'atteint pas le panneau de l'extension
La CLI claude hérite de l'environnement du processus qui l'a lancée : un export ANTHROPIC_BASE_URL=... dans ~/.zshrc fonctionne donc. L'extension, en revanche, non : elle lance son processus d'agent depuis le processus de la fenêtre VS Code, si bien que le panneau voit l'environnement de bureau/session avec lequel VS Code a été démarré — jamais le shell dans lequel vous avez tapé export.
C'est la cause de la mauvaise configuration la plus fréquente de Claude Code : le terminal fonctionne, mais le panneau de l'extension continue de parler au point de terminaison par défaut. Soit vous lancez VS Code depuis ce terminal (il hérite alors des variables — mais toutes les fenêtres sont routées), soit vous définissez claudeCode.environmentVariables, qui est l'échappatoire propre à l'extension.
Vérifier ce que le panneau voit réellement
Cette commande affiche les noms que l'extension va injecter, en masquant tout ce qui ressemble à un identifiant :
1 # macOS2 S="$HOME/Library/Application Support/Code/User/settings.json"3 # Linux: S="$HOME/.config/Code/User/settings.json"4 # Windows: S="$APPDATA/Code/User/settings.json"5 6 jq -r '.["claudeCode.environmentVariables"] // [] | .[] | "\(.name)"' "$S"
Aucune sortie signifie que le panneau hérite de l'environnement du processus VS Code — les variables doivent donc venir d'ailleurs.
Les trois endroits où définir une variable
| Surface | S'applique à | Persiste |
|---|---|---|
Export de shell (~/.zshrc, ~/.bashrc, variables d'environnement Windows) | La CLI claude lancée depuis un shell | Oui, par session de shell |
Bloc env dans settings.json (~/.claude/settings.json, .claude/settings.json, .claude/settings.local.json) | La CLI, l'extension VS Code et le SDK Agent | Oui, par portée de paramètres |
claudeCode.environmentVariables | Uniquement le panneau de l'extension VS Code | Oui, pour toute la machine |
Les portées de settings.json méritent d'être distinguées :
| Fichier | Portée |
|---|---|
~/.claude/settings.json | Vous, dans tous les projets |
.claude/settings.json | Tous les membres du projet (à committer) |
.claude/settings.local.json | Vous, dans ce projet uniquement (ignoré par git) |
| Paramètres gérés | Tous les membres de l'organisation |
1 {2 "env": {3 "ANTHROPIC_BASE_URL": "https://www.codebyai.net/api/agent",4 "API_TIMEOUT_MS": "600000"5 }6 }
Règles de priorité
- Une variable d'environnement l'emporte sur le champ
settings.jsonéquivalent (ANTHROPIC_MODELl'emporte surmodel, par exemple). --modelsur la ligne de commande et/modeldans une session l'emportent surANTHROPIC_MODEL.ANTHROPIC_API_KEYl'emporte sur la connexion interactive à l'abonnement en mode interactif ; en mode-p(print), la clé API est toujours utilisée.- Les variables sont lues au démarrage du processus. Rien ne les recharge en cours de session : redémarrez
claude, ou exécutez Developer: Reload Window dans VS Code.
Pointer Claude Code vers Code By AI
Code By AI expose un point de terminaison compatible Anthropic : les seules variables en jeu sont donc le point de terminaison et le jeton qui va avec. Choisissez la surface qui correspond à votre façon de lancer Claude Code.
Terminal / CLI
1 # ~/.zshrc or ~/.bashrc2 export ANTHROPIC_BASE_URL="https://www.codebyai.net/api/agent"3 export ANTHROPIC_AUTH_TOKEN="sk-proj-xxxx"4 export API_TIMEOUT_MS=6000005 export CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1
Extension VS Code
1 "claudeCode.environmentVariables": [2 { "name": "ANTHROPIC_BASE_URL", "value": "https://www.codebyai.net/api/agent" },3 { "name": "ANTHROPIC_AUTH_TOKEN", "value": "sk-proj-xxxx" },4 { "name": "API_TIMEOUT_MS", "value": "600000" },5 { "name": "CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC", "value": "1" }6 ],
Rechargez la fenêtre, puis vérifiez que l'en-tête du panneau affiche le point de terminaison de la passerelle. La version pas à pas, avec les équivalents en ligne de commande Windows, se trouve dans Configuration de Claude Code.
ANTHROPIC_AUTH_TOKEN est envoyé comme valeur de l'en-tête Authorization: Bearer <value>, ce qu'attend la passerelle Code By AI. ANTHROPIC_API_KEY est envoyé à la place dans X-Api-Key — utilisez l'un ou l'autre, jamais les deux, sinon c'est la mauvaise valeur qui risque de l'emporter.
Référence des variables
Authentification
| Variable | Rôle |
|---|---|
ANTHROPIC_API_KEY | Clé API envoyée dans l'en-tête X-Api-Key. Toujours utilisée en mode -p |
ANTHROPIC_AUTH_TOKEN | Valeur personnalisée de l'en-tête Authorization, préfixée par Bearer |
CLAUDE_CODE_OAUTH_TOKEN | Jeton d'accès OAuth pour l'authentification Claude.ai, destiné au SDK et aux environnements automatisés |
CLAUDE_CODE_OAUTH_REFRESH_TOKEN | Jeton de rafraîchissement échangé sans navigateur par claude auth login |
CLAUDE_CODE_OAUTH_SCOPES | Portées séparées par des espaces avec lesquelles le jeton de rafraîchissement a été émis |
Point de terminaison et routage du fournisseur
| Variable | Rôle |
|---|---|
ANTHROPIC_BASE_URL | Remplacer le point de terminaison de l'API (proxy ou passerelle). Un hôte non officiel désactive la recherche d'outils MCP sauf si ENABLE_TOOL_SEARCH=true |
CLAUDE_CODE_USE_BEDROCK / _VERTEX / _FOUNDRY | Router via Amazon Bedrock, Google Vertex AI ou Microsoft Foundry |
ANTHROPIC_BEDROCK_BASE_URL / ANTHROPIC_VERTEX_BASE_URL / ANTHROPIC_FOUNDRY_BASE_URL | Remplacer le point de terminaison pour chaque fournisseur |
HTTP_PROXY / HTTPS_PROXY / NO_PROXY | Proxy sortant pour les connexions réseau |
CLAUDE_CODE_SKIP_BEDROCK_AUTH et équivalents | Ignorer l'authentification du fournisseur lorsqu'une passerelle LLM signe elle-même les requêtes |
Sélection du modèle
| Variable | Rôle |
|---|---|
ANTHROPIC_MODEL | Modèle à utiliser. Remplacé par --model et /model |
ANTHROPIC_DEFAULT_SONNET_MODEL / _HAIKU_ / _OPUS_ | Fixer l'identifiant du modèle par défaut pour une gamme |
ANTHROPIC_CUSTOM_MODEL_OPTION / _NAME / _DESCRIPTION | Ajouter une entrée personnalisée au sélecteur /model |
CLAUDE_CODE_SUBAGENT_MODEL | Modèle utilisé par les sous-agents |
CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY | Mettre 1 pour remplir /model depuis la route /v1/models de la passerelle |
MAX_THINKING_TOKENS | Budget de réflexion étendue ; 0 désactive la réflexion sur l'API Anthropic |
CLAUDE_CODE_MAX_OUTPUT_TOKENS | Nombre maximal de jetons en sortie par requête |
Délais d'attente et tentatives
| Variable | Défaut | Rôle |
|---|---|---|
API_TIMEOUT_MS | 600000 | Délai d'attente des requêtes API, en millisecondes |
BASH_DEFAULT_TIMEOUT_MS | 120000 | Délai d'attente par défaut des commandes Bash longues |
BASH_MAX_TIMEOUT_MS | 600000 | Délai d'attente maximal que le modèle peut fixer pour Bash |
CLAUDE_CODE_MAX_RETRIES | 10 | Nombre de tentatives pour les requêtes API échouées |
Compatibilité proxy et passerelle
Ce sont les variables qui déterminent si un point de terminaison tiers fonctionne tout court :
| Variable | Rôle |
|---|---|
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC | 1 désactive d'un seul commutateur le module de mise à jour, la commande de retour d'expérience, le rapport d'erreurs et la télémétrie |
CLAUDE_CODE_ATTRIBUTION_HEADER | 0 supprime le bloc d'attribution du prompt système, ce qui améliore le taux de réussite du cache de prompt derrière une passerelle |
CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS | 1 retire les en-têtes anthropic-beta qu'un proxy peut rejeter |
CLAUDE_CODE_DISABLE_THINKING | Omet entièrement le paramètre thinking |
ENABLE_TOOL_SEARCH | true / false / auto : contrôle le chargement différé des outils MCP avec un ANTHROPIC_BASE_URL personnalisé |
CLAUDE_CODE_DISABLE_NONSTREAMING_FALLBACK | Empêche qu'un échec en cours de flux relance les appels d'outils sans streaming |
DISABLE_PROMPT_CACHING | Désactive la mise en cache des prompts (débogage uniquement — cela augmente le coût) |
Diagnostics et chemins
| Variable | Rôle |
|---|---|
DEBUG | 1 (ou true, yes, on) active le mode débogage, comme --debug |
CLAUDE_CODE_DEBUG_LOG_LEVEL | Niveau de journal minimal : verbose, debug, info, warn, error |
CLAUDE_CONFIG_DIR | Remplacer le répertoire de configuration, par défaut ~/.claude |
CLAUDE_CODE_SIMPLE | 1 fonctionne avec un prompt système minimal et uniquement les outils Bash et fichiers |
Dépannage
La variable semble ignorée. Vérifiez d'abord la surface. Un export de shell est invisible pour le panneau de l'extension VS Code ; claudeCode.environmentVariables est invisible pour la CLI. Vérifiez ensuite le redémarrage : les variables d'environnement ne sont lues qu'une fois, au démarrage du processus.
401 ou invalid api key après un changement de point de terminaison. ANTHROPIC_API_KEY et ANTHROPIC_AUTH_TOKEN sont envoyés dans des en-têtes différents. Un ANTHROPIC_API_KEY oublié dans la même portée l'emportera en mode -p — supprimez-le lorsque vous vous authentifiez avec un jeton.
Toutes les requêtes échouent à travers un proxy. Ajoutez CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1 ; certains proxys rejettent les en-têtes bêta que Claude Code envoie par défaut.
Les requêtes expirent sur les générations longues. Augmentez API_TIMEOUT_MS (la valeur par défaut est de dix minutes) plutôt que de réessayer — le délai est généreux, mais un diff volumineux peut le dépasser.
Le sélecteur /model est vide derrière une passerelle. Définissez CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY=1 pour que le sélecteur soit rempli depuis la route /v1/models de la passerelle, ou nommez le modèle explicitement avec ANTHROPIC_MODEL.
Le taux de réussite du cache de prompt est faible derrière une passerelle. Définissez CLAUDE_CODE_ATTRIBUTION_HEADER=0 : le bloc d'attribution change d'une session à l'autre et invalide le préfixe mis en cache.
FAQ
Où Claude Code lit-il ses variables d'environnement ?
Depuis l'environnement du processus avec lequel il a été démarré, fusionné avec le bloc env des fichiers settings.json applicables. La variable d'environnement l'emporte lorsque les deux définissent le même comportement. Le panneau de l'extension VS Code est une arborescence de processus distincte et a donc besoin de claudeCode.environmentVariables.
Faut-il redémarrer après avoir modifié une variable ?
Oui. Claude Code lit sa configuration au démarrage. Redémarrez claude pour la CLI, ou exécutez Developer: Reload Window dans VS Code pour l'extension.
Qui l'emporte, ANTHROPIC_API_KEY ou ANTHROPIC_AUTH_TOKEN ?
ANTHROPIC_API_KEY en mode -p, et elle l'emporte aussi sur une connexion interactive à un abonnement. Si vous passez par une passerelle qui s'authentifie avec un jeton bearer, supprimez ANTHROPIC_API_KEY pour lever toute ambiguïté.
Puis-je utiliser un autre modèle sans changer les variables ?
Oui — --model au lancement et /model dans une session l'emportent tous deux sur ANTHROPIC_MODEL. Les variables définissent la valeur par défaut, les options la remplacent.
Claude Code, Codex et Gemini passent tous par le même point de terminaison et la même clé sur Code By AI, à partir de 1/6 du prix officiel de l'API. Voir la comparaison des prix ou recharger et obtenir une clé.