Documentation

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 machineToutes les fenêtres VS Code de cet ordinateur sont concernées, pas seulement le dossier courant
Il partage le tableau avec des variables sans rapportLes 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'agentLe 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
# macOS
2
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

SurfaceS'applique àPersiste
Export de shell (~/.zshrc, ~/.bashrc, variables d'environnement Windows)La CLI claude lancée depuis un shellOui, 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 AgentOui, par portée de paramètres
claudeCode.environmentVariablesUniquement le panneau de l'extension VS CodeOui, pour toute la machine

Les portées de settings.json méritent d'être distinguées :

FichierPortée
~/.claude/settings.jsonVous, dans tous les projets
.claude/settings.jsonTous les membres du projet (à committer)
.claude/settings.local.jsonVous, dans ce projet uniquement (ignoré par git)
Paramètres gérésTous 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_MODEL l'emporte sur model, par exemple).
  • --model sur la ligne de commande et /model dans une session l'emportent sur ANTHROPIC_MODEL.
  • ANTHROPIC_API_KEY l'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 ~/.bashrc
2
export ANTHROPIC_BASE_URL="https://www.codebyai.net/api/agent"
3
export ANTHROPIC_AUTH_TOKEN="sk-proj-xxxx"
4
export API_TIMEOUT_MS=600000
5
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

VariableRôle
ANTHROPIC_API_KEYClé API envoyée dans l'en-tête X-Api-Key. Toujours utilisée en mode -p
ANTHROPIC_AUTH_TOKENValeur personnalisée de l'en-tête Authorization, préfixée par Bearer
CLAUDE_CODE_OAUTH_TOKENJeton d'accès OAuth pour l'authentification Claude.ai, destiné au SDK et aux environnements automatisés
CLAUDE_CODE_OAUTH_REFRESH_TOKENJeton de rafraîchissement échangé sans navigateur par claude auth login
CLAUDE_CODE_OAUTH_SCOPESPortées séparées par des espaces avec lesquelles le jeton de rafraîchissement a été émis

Point de terminaison et routage du fournisseur

VariableRôle
ANTHROPIC_BASE_URLRemplacer 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 / _FOUNDRYRouter via Amazon Bedrock, Google Vertex AI ou Microsoft Foundry
ANTHROPIC_BEDROCK_BASE_URL / ANTHROPIC_VERTEX_BASE_URL / ANTHROPIC_FOUNDRY_BASE_URLRemplacer le point de terminaison pour chaque fournisseur
HTTP_PROXY / HTTPS_PROXY / NO_PROXYProxy sortant pour les connexions réseau
CLAUDE_CODE_SKIP_BEDROCK_AUTH et équivalentsIgnorer l'authentification du fournisseur lorsqu'une passerelle LLM signe elle-même les requêtes

Sélection du modèle

VariableRôle
ANTHROPIC_MODELModè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 / _DESCRIPTIONAjouter une entrée personnalisée au sélecteur /model
CLAUDE_CODE_SUBAGENT_MODELModèle utilisé par les sous-agents
CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERYMettre 1 pour remplir /model depuis la route /v1/models de la passerelle
MAX_THINKING_TOKENSBudget de réflexion étendue ; 0 désactive la réflexion sur l'API Anthropic
CLAUDE_CODE_MAX_OUTPUT_TOKENSNombre maximal de jetons en sortie par requête

Délais d'attente et tentatives

VariableDéfautRôle
API_TIMEOUT_MS600000Délai d'attente des requêtes API, en millisecondes
BASH_DEFAULT_TIMEOUT_MS120000Délai d'attente par défaut des commandes Bash longues
BASH_MAX_TIMEOUT_MS600000Délai d'attente maximal que le modèle peut fixer pour Bash
CLAUDE_CODE_MAX_RETRIES10Nombre 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 :

VariableRôle
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC1 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_HEADER0 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_BETAS1 retire les en-têtes anthropic-beta qu'un proxy peut rejeter
CLAUDE_CODE_DISABLE_THINKINGOmet entièrement le paramètre thinking
ENABLE_TOOL_SEARCHtrue / false / auto : contrôle le chargement différé des outils MCP avec un ANTHROPIC_BASE_URL personnalisé
CLAUDE_CODE_DISABLE_NONSTREAMING_FALLBACKEmpêche qu'un échec en cours de flux relance les appels d'outils sans streaming
DISABLE_PROMPT_CACHINGDésactive la mise en cache des prompts (débogage uniquement — cela augmente le coût)

Diagnostics et chemins

VariableRôle
DEBUG1 (ou true, yes, on) active le mode débogage, comme --debug
CLAUDE_CODE_DEBUG_LOG_LEVELNiveau de journal minimal : verbose, debug, info, warn, error
CLAUDE_CONFIG_DIRRemplacer le répertoire de configuration, par défaut ~/.claude
CLAUDE_CODE_SIMPLE1 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é.