Claude Code vous a-t-il soudain affiché un message de ce genre en exigeant que vous vous connectiez ?

Not logged in · Please run /login
Invalid API key · Fix external API key
OAuth token has expired · Please run /login
API Error: 400 ... This organization has been disabled.

Ce sont des erreurs « l'authentification a échoué (qui êtes-vous ?) », qui surgissent le plus souvent sous la forme 401/403. Le côté frustrant, c'est à quel point elles paraissent déroutantes — « je paie, et pourtant je suis rejeté » ou « ça marchait hier, et là on me redemande soudain de me connecter ». Mais la plupart des causes sont classiques, et dès que vous connaissez l'ordre dans lequel vérifier, c'est une réparation rapide.

Le point le plus important d'emblée. (1) Le problème d'authentification numéro un, c'est une variable d'environnement ANTHROPIC_API_KEY qui écrase silencieusement votre connexion par abonnement (Pro/Max) — ce qui devient la vraie cause de facturations à l'usage inattendues, de « organization disabled » et de « Invalid API key ». (2) Le point de départ est toujours /status pour voir « quelle identité est active en ce moment ». (3) En cas de doute, « unset la clé parasite → /logout/login » pour repartir proprement.

CLAUDE CODE · AUTH PRECEDENCE

Les identités ont une « priorité »

— celle qui est plus haut l'emporte, donc une clé API d'environnement écrase votre abonnement

1 Cloud (Bedrock/Vertex/Foundry)
2 ANTHROPIC_AUTH_TOKEN (passerelles)
3 ANTHROPIC_API_KEY ← variable d'env. c'est elle qui gagne = à l'usage
4 apiKeyHelper / 5. CLAUDE_CODE_OAUTH_TOKEN
6 OAuth abonnement (/login) ce que vous voulez vraiment

Si ANTHROPIC_API_KEY traîne dans votre environnement, elle prend le pas sur l'abonnement.
Vérifiez d'abord avec /status → si inutile, unset ANTHROPIC_API_KEY.

1. Ce que cette erreur vous dit vraiment

L'authentification consiste à « prouver qui vous êtes ». Claude Code prouve « vous » soit par votre connexion OAuth d'abonnement, soit par une clé API, soit par des identifiants cloud. Quand cette preuve échoue, vous êtes rejeté en 401 (authentication_error) ou 403 (forbidden). Voici les messages représentatifs et leur signification :

MessageSignification
Not logged in · Please run /loginAucune identité valide → /login
Invalid API key · Fix external API key (anciennes versions : « · Please run /login »)Une clé issue d'une variable d'env. ou d'apiKeyHelper a été rejetée par l'API
This organization has been disabledUne vieille clé API d'une org. désactivée vous écrase
OAuth token revoked / has expired · Please run /loginDéconnecté ailleurs / révoqué par un admin / échec du rafraîchissement auto.
API Error: 403 ... forbidden ... Request not allowedAbonnement inactif, rôle Console manquant ou interférence d'un proxy

L'habitude essentielle : avant de vous accuser, lancez /status pour voir « quelle identité est active en ce moment ». La plupart des erreurs d'authentification viennent de la sélection d'une identité non voulue — et le suspect numéro un est l'« écrasement par clé API » de la section suivante.

2. Le grand piège — une clé API écrase votre abonnement

La documentation officielle indique que Claude Code choisit UNE seule identité par « priorité » (voir l'en-tête). Le hic, c'est que la variable d'environnement ANTHROPIC_API_KEY se situe AU-DESSUS de votre connexion par abonnement (Pro/Max). Autrement dit —

L'explication officielle (paraphrasée)

« Même avec un abonnement actif, si ANTHROPIC_API_KEY est définie dans votre environnement, elle prend le pas une fois approuvée. Si cette clé appartient à une org. désactivée ou expirée, l'authentification échoue. Lancez unset ANTHROPIC_API_KEY pour revenir à votre abonnement, et vérifiez avec /status laquelle est active. »

Cet écrasement produit trois symptômes « déroutants ». (1) Des facturations à l'usage inattendues — ce qui devrait être un abonnement forfaitaire se retrouve facturé au token via la clé API (des factures-surprises élevées ont été signalées). (2) This organization has been disabled — la clé résiduelle appartenait à une ancienne org. désactivée. (3) Invalid API key — la clé est expirée ou erronée. Aucun de ces cas n'est « un problème avec votre connexion » — ce sont « des problèmes de clé parasite squattant votre environnement ».

D'où vient la clé : un export ANTHROPIC_API_KEY=... dans ~/.zshrc / ~/.bashrc / ~/.profile ; un .env lu par direnv, dotenv ou le terminal de votre IDE ; un reliquat d'un ancien poste/projet ; un environnement de CI. Sous Windows, le profil PowerShell ($PROFILE) ou les variables d'environnement utilisateur. Détectez avec /status et env | grep ANTHROPIC ; corrigez avec :

# Désactiver temporairement et lancer
unset ANTHROPIC_API_KEY
claude

# Correction permanente : supprimez la ligne export de votre config shell / .env, puis confirmez avec /status

Remarque : en mode interactif, on vous demande une fois si vous voulez utiliser la clé, et votre choix est mémorisé (modifiable ensuite via le commutateur « Use custom API key » dans /config). À moins de vouloir délibérément utiliser la clé API, confirmez avec /status que l'abonnement est actif.

3. Les autres causes

Les problèmes d'authentification autres que l'écrasement ont eux aussi tendance à avoir des causes bien définies.

OTHER CAUSES

Les ratés d'authentification au-delà de l'écrasement

Jeton révoqué / expiré
Déconnecté ailleurs / révoqué par un admin / échec du rafraîchissement. Reconnectez-vous avec /logout/login.
Horloge système décalée
La validation du jeton dépend d'une heure exacte. Si on vous demande de vous connecter à chaque lancement, réglez l'horloge.
Keychain macOS
Un Keychain verrouillé / un mot de passe non concordant empêche d'enregistrer les identifiants. Vérifiez avec claude doctor.
Rôle Console manquant (403)
Pour l'usage par clé API, confirmez un rôle « Claude Code » / « Developer » dans la Console et un abonnement actif.
OAuth en WSL/SSH/conteneurs
La redirection du navigateur ne peut pas revenir en local. Collez le code affiché, appuyez sur c pour copier l'URL, ou définissez BROWSER.
Politique de l'organisation
« Accès par abonnement désactivé / auth. par clé API » sont des réglages côté serveur que vous ne pouvez pas outrepasser en local. L'admin doit intervenir.

« On me redemande de me connecter à chaque fois » → soupçonnez d'abord un décalage d'horloge ou le Keychain.
« Rejeté avec un 403 » → soupçonnez un abonnement inactif, le rôle Console ou un proxy.

Savoir où vivent les identifiants accélère aussi la récupération. macOS : Keychain ; Linux : ~/.claude/.credentials.json (mode 0600) ; Windows : %USERPROFILE%\.claude\.credentials.json. Normalement /login et /logout gèrent cela, mais si le stockage est corrompu, vous pouvez supprimer ce fichier pour une ré-authentification propre (avancé).

4. Le flux de diagnostic

Quand vous êtes bloqué sur l'authentification, procédez de haut en bas. La plupart des cas se résolvent à l'étape 3.

DIAGNOSE

Isolez le problème de haut en bas

1
/status pour voir quelle identité est active (abonnement, clé API ou cloud).
2
env | grep ANTHROPIC (Windows : $PROFILE / variables d'env. utilisateur) pour repérer une clé parasite.
3
unset ANTHROPIC_API_KEY → relancez. Rendez-le permanent en supprimant la ligne export de votre config shell / .env.
4
Toujours en échec ? /logout → fermez Claude Code → /login pour une ré-authentification propre.
5
Réglez l'horloge / vérifiez le Keychain avec claude doctor (macOS) / confirmez votre rôle Console (organisations).

La règle : « d'abord /status, puis la chasse à la clé parasite. »
La plupart des cas se règlent en retirant simplement la clé qui vous écrasait.

5. La distinguer des erreurs voisines

« Rejeté / arrêté » peut aussi avoir des causes hors authentification. Trier par code HTTP est la méthode fiable.

SymptômeCe que c'est vraimentCorrection principale
401 / 403 · Invalid API key · Not logged inCet article = authentification (problème d'identité)/status → retirer la clé parasite → /login
usage limit reachedQuota du forfait épuisé (l'authentification est bonne)Attendre la réinitialisation ; solutions
429 Request rejectedLimite de débit (l'écrasement par une clé de niveau bas peut provoquer un 429)Ralentir ; vérifiez aussi /status pour une clé parasite
529 / 500Côté serveur : surcharge / erreur interneAttendre & réessayer ; solutions
Credit balance is too lowSolde prépayé de la Console épuisé (régler ou passer à l'abonnement)Ajouter du crédit, ou /login vers un abonnement

Un moyen mnémotechnique : 401/403 est le problème « qui êtes-vous ? » = authentification. usage limit et Credit balance sont des problèmes de « quantité / solde ». 429 est une question de débit, 529/500 relève du serveur. Notamment, une clé API parasite provoque non seulement un « échec d'authentification » mais aussi des « facturations inattendues » et un « 429 sur un niveau bas » — c'est pourquoi la réponse à la confusion est toujours /status en premier. Pour les autres erreurs courantes, voir le récapitulatif des erreurs.

6. Liste de prévention

Une liste pour cesser de rester coincé sur l'authentification à répétition.

(1) Si vous utilisez l'abonnement, ne laissez pas ANTHROPIC_API_KEY dans votre config shell / .env (attention aux reliquats d'anciens postes/projets). (2) Prenez l'habitude de /status pour confirmer l'identité active avant un travail important. (3) Pour la CI, utilisez le CLAUDE_CODE_OAUTH_TOKEN de claude setup-token (ou une clé API explicite) plutôt qu'une connexion interactive. (4) Si on vous demande de vous connecter à chaque fois, vérifiez l'horloge système et le Keychain macOS. (5) Pour les comptes d'organisation, confirmez le rôle Console et l'état du forfait. (6) En WSL/SSH, connaissez la méthode du collage de code.

Résumé

Les erreurs d'authentification/connexion de Claude Code (Not logged in / Invalid API key / organization disabled / OAuth token expired, etc.) sont pour l'essentiel des 401/403 = problèmes d'identité. La vraie cause la plus fréquente est « la variable d'environnement ANTHROPIC_API_KEY qui écrase silencieusement votre connexion par abonnement » — ce qui produit des facturations à l'usage inattendues, organization disabled et Invalid API key. Le point de départ est donc toujours /status pour voir « quelle identité est active ».

Diagnostiquez par (1) /status -> (2) env | grep ANTHROPIC pour traquer une clé parasite -> (3) unset + suppression dans la config shell -> (4) /logout -> /login -> (5) horloge / Keychain / rôle Console. La plupart des cas se règlent en retirant simplement la clé qui vous écrasait. Triez par 401/403 = authentification, usage limit / Credit = quantité-solde, 429 = débit, 529/500 = serveur pour éviter la mauvaise solution. À lire aussi : limite d'usage, erreurs 529/500, récapitulatif des erreurs Claude Code.

FAQ

Q. Je paie, et pourtant j'obtiens « Invalid API key » ou « organization has been disabled ». Pourquoi ?
A. Presque à coup sûr, une variable d'environnement ANTHROPIC_API_KEY écrase votre connexion par abonnement. Si cette clé appartient à une org. expirée ou désactivée, vous êtes rejeté même avec un abonnement actif. Repérez-la avec env | grep ANTHROPIC, lancez unset ANTHROPIC_API_KEY, puis /login et confirmez avec /status. Supprimez aussi la ligne export de votre config shell (.zshrc, etc.) ou de votre .env.

Q. Je suis sur un abonnement forfaitaire mais j'ai été facturé au token.
A. C'est là encore typiquement l'écrasement par ANTHROPIC_API_KEY. Quand la clé API prend le pas, la consommation bascule vers une facturation API au token au lieu de votre abonnement forfaitaire. Confirmez avec /status que « l'abonnement est actif » ; si la clé API est sélectionnée, retirez-la avec unset + nettoyage de la config. Ne la gardez que si vous comptez utiliser la clé API.

Q. On me demande de me connecter à chaque démarrage.
A. Les causes courantes sont (1) un décalage de l'horloge système (la validation du jeton dépend d'une heure exacte) et (2) un Keychain macOS verrouillé / un mot de passe non concordant qui empêche d'enregistrer les identifiants. Réglez l'horloge sur la synchronisation automatique et, sous macOS, vérifiez le Keychain avec claude doctor. Si cela persiste, reconnectez-vous proprement avec /logout/login.

Q. Que m'indique /status ?
A. Il montre quelle méthode d'authentification/identité est active actuellement (OAuth d'abonnement, ANTHROPIC_API_KEY ou identifiants cloud). Comme la plupart des problèmes d'authentification tiennent à « une identité non voulue sélectionnée », /status en premier est la règle. L'affichage exact varie selon la version : confirmez le comportement actuel dans la documentation officielle.

Q. La connexion échoue via WSL ou SSH parce que le navigateur ne s'ouvre pas.
A. Sur les configurations distantes, la redirection du navigateur ne peut pas revenir au callback local. Contournez en collant le code de connexion que Claude Code affiche, en appuyant sur c pour copier l'URL et l'ouvrir dans votre navigateur local, ou en définissant la variable d'environnement BROWSER sous WSL2. Connaître la méthode du collage de code rend l'opération fiable.