Índice
O Claude Code de repente lançou uma mensagem como esta e exigiu que você fizesse login?
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.
Estes são erros de "falha na autenticação (quem é você?)", que geralmente aparecem como 401/403. A parte frustrante é como eles parecem desconcertantes — "estou pagando, mas sou rejeitado" ou "funcionava ontem, e agora de repente pede para fazer login". Mas a maioria das causas é manual de escola, e uma vez que você sabe a ordem em que verificar, é uma correção rápida.
O ponto mais importante logo de cara. (1) O problema de autenticação número um é uma variável de ambiente ANTHROPIC_API_KEY sobrepondo silenciosamente o seu login da assinatura (Pro/Max) — que se torna a verdadeira causa de cobranças pay-as-you-go inesperadas, "organization disabled" e "Invalid API key". (2) O ponto de partida é sempre /status para ver "qual credencial está ativa agora". (3) Na dúvida, "unset da chave perdida → /logout → /login" para uma reentrada limpa.
As credenciais têm uma "precedência"
— a que está mais acima vence, então uma chave de API do ambiente sobrepõe sua assinatura
ANTHROPIC_AUTH_TOKEN (gateways)
ANTHROPIC_API_KEY ← variável de ambiente
esta vence = pay-as-you-go
apiKeyHelper / 5. CLAUDE_CODE_OAUTH_TOKEN
/login)
o que você realmente quer
Se ANTHROPIC_API_KEY persistir no seu ambiente, ela tem precedência sobre a assinatura.
Verifique primeiro com /status → se for desnecessária, unset ANTHROPIC_API_KEY.
1. O que este erro está dizendo
Autenticação significa "provar quem você é". O Claude Code prova "você" com o seu login OAuth da assinatura, uma chave de API ou credenciais de nuvem. Quando essa prova falha, você é rejeitado como 401 (authentication_error) ou 403 (forbidden). As mensagens representativas e seus significados:
| Mensagem | Significado |
|---|---|
| Not logged in · Please run /login | Nenhuma credencial válida → /login |
| Invalid API key · Fix external API key (builds antigas: "· Please run /login") | Uma chave de uma variável de ambiente ou do apiKeyHelper foi rejeitada pela API |
| This organization has been disabled | Uma chave de API obsoleta de uma org desativada está sobrepondo você |
| OAuth token revoked / has expired · Please run /login | Deslogado em outro lugar / revogado pelo admin / falha na renovação automática |
| API Error: 403 ... forbidden ... Request not allowed | Assinatura inativa, falta de papel no Console ou interferência de proxy |
O hábito essencial: antes de se culpar, execute /status para ver "qual credencial está ativa agora". A maioria dos erros de autenticação decorre de uma credencial não intencional sendo selecionada — e o principal suspeito é a "sobreposição da chave de API" da próxima seção.
2. A grande armadilha — uma chave de API sobrepõe sua assinatura
A documentação oficial afirma que o Claude Code escolhe UMA credencial por "precedência" (veja o destaque acima). A pegadinha é que a variável de ambiente ANTHROPIC_API_KEY fica ACIMA do seu login da assinatura (Pro/Max). Em outras palavras —
A explicação oficial (parafraseada)
"Mesmo com uma assinatura ativa, se ANTHROPIC_API_KEY estiver definida no seu ambiente, ela tem precedência uma vez aprovada. Se essa chave pertencer a uma org desativada ou expirada, a autenticação falha. Execute unset ANTHROPIC_API_KEY para voltar à sua assinatura e verifique /status para confirmar qual está ativa."
Essa sobreposição produz três sintomas "desconcertantes". (1) Cobranças pay-as-you-go inesperadas — o que deveria ser uma assinatura de valor fixo passa a ser cobrado por token via a chave de API (já houve relatos de faturas surpresa altas). (2) This organization has been disabled — a chave remanescente pertencia a uma org antiga desativada. (3) Invalid API key — a chave está expirada ou incorreta. Nenhum desses é "um problema com o seu login" — são "um problema de uma chave perdida ocupando o seu ambiente".
De onde vem a chave: um export ANTHROPIC_API_KEY=... em ~/.zshrc / ~/.bashrc / ~/.profile; um .env lido pelo direnv, dotenv ou pelo terminal da IDE; um resquício de um trabalho/projeto anterior; um ambiente de CI. No Windows, o perfil do PowerShell ($PROFILE) ou variáveis de ambiente do usuário. Detecte com /status e env | grep ANTHROPIC; corrija com:
# Desfaça temporariamente e inicie
unset ANTHROPIC_API_KEY
claude
# Correção permanente: remova a linha export da config do shell / .env, depois confirme com /status
Observação: no modo interativo, você é perguntado uma vez se deseja usar a chave, e sua escolha é lembrada (mude depois pelo toggle "Use custom API key" em /config). A menos que você queira deliberadamente usar a chave de API, confirme com /status que a assinatura está ativa.
3. Outras causas
Problemas de autenticação além da sobreposição também costumam ter causas fixas.
Tropeços de autenticação além da sobreposição
/logout → /login.claude doctor.c para copiar a URL ou defina BROWSER.
"Pede login toda vez" → suspeite primeiro de relógio fora de hora ou Keychain.
"Rejeitado com 403" → suspeite de assinatura inativa, papel no Console ou proxy.
Saber onde ficam as credenciais também acelera a recuperação. macOS: Keychain; Linux: ~/.claude/.credentials.json (modo 0600); Windows: %USERPROFILE%\.claude\.credentials.json. Normalmente /login e /logout gerenciam isso, mas se o armazenamento estiver corrompido você pode excluir esse arquivo para uma reautenticação limpa (avançado).
4. O fluxo de diagnóstico
Quando travar na autenticação, vá de cima para baixo. A maioria dos casos se resolve até o passo 3.
Isole de cima para baixo
/status para ver qual credencial está ativa (assinatura, chave de API ou nuvem).env | grep ANTHROPIC (Windows: $PROFILE / variáveis de ambiente do usuário) para encontrar uma chave perdida.unset ANTHROPIC_API_KEY → reinicie. Torne permanente removendo a linha export da config do shell / .env./logout → feche o Claude Code → /login para uma reautenticação limpa.claude doctor (macOS) / confirme seu papel no Console (orgs).
A regra: "primeiro /status, depois cace a chave perdida."
A maioria dos casos se resolve simplesmente removendo a chave que estava sobrepondo você.
5. Como distinguir de erros parecidos
"Rejeitado / parou" também pode ter causas não relacionadas à autenticação. Separar pelo código HTTP é a maneira confiável.
| Sintoma | O que realmente é | Correção principal |
|---|---|---|
| 401 / 403 · Invalid API key · Not logged in | Este artigo = autenticação (problema de credencial) | /status → remova a chave perdida → /login |
| usage limit reached | Cota do plano esgotada (a autenticação está OK) | Aguarde o reset; soluções |
| 429 Request rejected | Limite de taxa (uma chave de tier baixo sobrepondo pode causar um 429) | Reduza o ritmo; verifique também /status por uma chave perdida |
| 529 / 500 | Do lado do servidor: sobrecarga / erro interno | Aguarde e tente de novo; soluções |
| Credit balance is too low | O saldo pré-pago do Console acabou (fature ou troque para a assinatura) | Adicione créditos ou /login em uma assinatura |
Um lembrete: 401/403 é o problema "quem é você?" = autenticação. usage limit e Credit balance são problemas de "quantidade / saldo". 429 é taxa, 529/500 é do lado do servidor. Notavelmente, uma chave de API perdida causa não só "falha de autenticação", mas também "cobranças inesperadas" e "um 429 em um tier baixo" — e é por isso que a resposta à confusão é sempre /status primeiro. Para outros erros comuns, veja a compilação de erros.
6. Checklist de prevenção
Um checklist para parar de travar na autenticação repetidamente.
(1) Se você usa a assinatura, não deixe ANTHROPIC_API_KEY na config do shell / .env (atenção a resquícios de trabalhos/projetos antigos). (2) Crie o hábito de usar /status para confirmar a credencial ativa antes de trabalhos importantes. (3) Para CI, use o CLAUDE_CODE_OAUTH_TOKEN do claude setup-token (ou uma chave de API explícita) em vez do login interativo. (4) Se pedir login toda vez, verifique o relógio do sistema e o Keychain do macOS. (5) Para contas de organização, confirme o papel no Console e o status do plano. (6) No WSL/SSH, conheça o método de colar o código.
Resumo
Os erros de autenticação/login do Claude Code (Not logged in / Invalid API key / organization disabled / OAuth token expired, etc.) são, em sua maioria, 401/403 = problemas de credencial. A verdadeira causa mais frequente é "a variável de ambiente ANTHROPIC_API_KEY sobrepondo silenciosamente o seu login da assinatura" — que produz cobranças pay-as-you-go inesperadas, organization disabled e Invalid API key. Portanto, o ponto de partida é sempre /status para ver "qual credencial está ativa".
Diagnostique por (1) /status -> (2) env | grep ANTHROPIC para caçar uma chave perdida -> (3) unset + remover da config do shell -> (4) /logout -> /login -> (5) relógio / Keychain / papel no Console. A maioria dos casos se resolve simplesmente removendo a chave que estava sobrepondo você. Separe por 401/403 = autenticação, usage limit / Credit = quantidade-saldo, 429 = taxa, 529/500 = servidor para evitar a correção errada. Relacionados: usage limit, erros 529/500, compilação de erros do Claude Code.
FAQ
Q. Estou pagando, mas recebo "Invalid API key" ou "organization has been disabled". Por quê?
A. Quase certamente, uma variável de ambiente ANTHROPIC_API_KEY está sobrepondo o seu login da assinatura. Se essa chave pertencer a uma org expirada ou desativada, você é rejeitado mesmo com uma assinatura ativa. Encontre-a com env | grep ANTHROPIC, execute unset ANTHROPIC_API_KEY, depois /login e confirme com /status. Remova também a linha export da config do shell (.zshrc, etc.) ou do .env.
Q. Estou em uma assinatura de valor fixo, mas fui cobrado por token.
A. Isto também costuma ser a sobreposição da ANTHROPIC_API_KEY. Quando a chave de API tem precedência, o uso flui para a cobrança por token da API em vez da sua assinatura de valor fixo. Confirme com /status que "a assinatura está ativa"; se a chave de API estiver selecionada, remova-a com unset + limpeza da config. Mantenha-a apenas se você pretende usar a chave de API.
Q. É pedido login toda vez que eu inicio.
A. As causas comuns são (1) relógio do sistema fora de hora (a validação do token depende da hora precisa) e (2) um Keychain do macOS bloqueado / senha divergente que impede salvar credenciais. Configure o relógio para sincronizar automaticamente e, no macOS, verifique o Keychain com claude doctor. Se persistir, entre de novo de forma limpa com /logout → /login.
Q. O que o /status me diz?
A. Ele mostra qual método de autenticação/credencial está ativo no momento (OAuth da assinatura, ANTHROPIC_API_KEY ou credenciais de nuvem). Como a maioria dos problemas de autenticação é "uma credencial não intencional sendo selecionada", a regra é /status primeiro. A exibição exata varia conforme a versão, então confirme o comportamento atual na documentação oficial.
Q. O login falha no WSL ou SSH porque o navegador não abre.
A. Em configurações remotas, o redirecionamento do navegador não consegue retornar ao callback local. Contorne colando o código de login que o Claude Code exibe, pressionando c para copiar a URL e abrindo-a no navegador local, ou definindo a variável de ambiente BROWSER no WSL2. Conhecer o método de colar o código torna isso confiável.