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.

CLAUDE CODE · AUTH PRECEDENCE

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

1 Cloud (Bedrock/Vertex/Foundry)
2 ANTHROPIC_AUTH_TOKEN (gateways)
3 ANTHROPIC_API_KEY ← variável de ambiente esta vence = pay-as-you-go
4 apiKeyHelper / 5. CLAUDE_CODE_OAUTH_TOKEN
6 OAuth da assinatura (/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:

MensagemSignificado
Not logged in · Please run /loginNenhuma 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 disabledUma chave de API obsoleta de uma org desativada está sobrepondo você
OAuth token revoked / has expired · Please run /loginDeslogado em outro lugar / revogado pelo admin / falha na renovação automática
API Error: 403 ... forbidden ... Request not allowedAssinatura 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.

OTHER CAUSES

Tropeços de autenticação além da sobreposição

Token revogado / expirado
Deslogado em outro lugar / revogado pelo admin / falha na renovação. Entre de novo com /logout/login.
Relógio do sistema fora de hora
A validação do token depende da hora precisa. Se for pedido login a cada inicialização, acerte o relógio.
Keychain do macOS
Um Keychain bloqueado / senha divergente impede salvar credenciais. Verifique com claude doctor.
Falta de papel no Console (403)
Para uso com chave de API, confirme um papel "Claude Code" / "Developer" no Console e uma assinatura ativa.
OAuth em WSL/SSH/contêineres
O redirecionamento do navegador não consegue retornar localmente. Cole o código exibido, pressione c para copiar a URL ou defina BROWSER.
Política da organização
"Acesso à assinatura / autenticação por chave de API desativados" são configurações do lado do servidor que você não pode sobrepor localmente. O admin precisa agir.

"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.

DIAGNOSE

Isole de cima para baixo

1
/status para ver qual credencial está ativa (assinatura, chave de API ou nuvem).
2
env | grep ANTHROPIC (Windows: $PROFILE / variáveis de ambiente do usuário) para encontrar uma chave perdida.
3
unset ANTHROPIC_API_KEY → reinicie. Torne permanente removendo a linha export da config do shell / .env.
4
Ainda falhando? /logout → feche o Claude Code → /login para uma reautenticação limpa.
5
Acerte o relógio / verifique o Keychain com 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.

SintomaO que realmente éCorreção principal
401 / 403 · Invalid API key · Not logged inEste artigo = autenticação (problema de credencial)/status → remova a chave perdida → /login
usage limit reachedCota do plano esgotada (a autenticação está OK)Aguarde o reset; soluções
429 Request rejectedLimite de taxa (uma chave de tier baixo sobrepondo pode causar um 429)Reduza o ritmo; verifique também /status por uma chave perdida
529 / 500Do lado do servidor: sobrecarga / erro internoAguarde e tente de novo; soluções
Credit balance is too lowO 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.