O Codex estava funcionando, você não mexeu em nada, e de repente toda mensagem volta com unexpected status 401 Unauthorized: Incorrect API key provided. Pior: você nem usa API key, entrou com a conta do ChatGPT. Esse erro tem três causas bem diferentes, e só uma delas se resolve na sua máquina. O jeito mais rápido de separar é olhar o pedaço da chave que aparece mascarado na própria mensagem.
O que significa o 401 "Incorrect API key provided" no Codex?
Significa que o servidor da OpenAI recusou a credencial que chegou junto com o pedido. A mensagem completa costuma ser esta:
unexpected status 401 Unauthorized: Incorrect API key provided: sk-svcac***...fvMA.
You can find your API key at https://platform.openai.com/account/api-keys.,
url: https://chatgpt.com/backend-api/codex/responses
O detalhe que decide tudo é a chave mascarada depois de provided:. Ela diz qual credencial foi recusada. Se não é uma chave sua, o problema não está no seu computador, e trocar senha, deslogar ou apagar configuração não vai adiantar.
Como saber em 30 segundos se o problema é seu ou da OpenAI?
Compare o sufixo da chave mascarada com o que o Codex acha que está usando. Dois comandos resolvem:
codex login status
env | grep -E '^(CODEX|OPENAI)_'
O primeiro imprime Logged in using ChatGPT ou Logged in using an API key - sk-proj-***abcde (os 8 primeiros e os 5 últimos caracteres da chave salva). O segundo mostra se existe alguma chave exportada no seu shell. Com isso na mão, a tabela abaixo aponta o caso:
| O que você vê | Causa | O que fazer |
|---|---|---|
Chave começa com sk-svcac e o status diz Logged in using ChatGPT | Falha do lado da OpenAI | Conferir status.openai.com e esperar |
Só o codex exec falha, o codex interativo funciona | CODEX_API_KEY exportada no shell | unset CODEX_API_KEY |
| O sufixo da chave recusada bate com o da sua chave salva | Chave revogada ou apagada no painel | codex logout e login de novo |
A chave recusada começa com sk-svcac: o que aconteceu?
É uma chave de serviço da própria OpenAI, não sua. Foi o que aconteceu em 25/09/2026: de cerca de 22:40 até 23:54 UTC (19:40 a 20:54 em Brasília), toda chamada ao Codex de quem entrava com ChatGPT voltava com o mesmo sk-svcac…fvMA, no Mac, no Windows e no Linux. A OpenAI registrou o incidente como "Issues with Codex" no status oficial, afetando Codex Web, CLI, extensão de VS Code e API, e declarou tudo recuperado às 23:54.
Na issue #48237, com mais de 90 comentários, dezenas de pessoas confirmaram que nada local resolvia: codex logout seguido de login, CODEX_HOME limpo, reinstalar o app, girar a chave. Um usuário mostrou que o próprio token OAuth funcionava em GET /backend-api/codex/models e só falhava no POST /backend-api/codex/responses. A credencial recusada era trocada no servidor.
O que fazer nesse caso:
- Abra
status.openai.com. Se tem incidente de Codex aberto, é isso. - Não gire nem apague sua chave: ela não é a chave da mensagem.
- Se não dá pra esperar, a saída que a própria OpenAI publicou durante o incidente foi entrar por API key, que cobra por token na conta da plataforma, fora do plano do ChatGPT:
printenv OPENAI_API_KEY | codex login --with-api-key
Quando o incidente fechar, volte pro login normal com codex logout e codex login, senão você continua pagando por token sem perceber.
Só o codex exec dá 401 e o codex interativo funciona: por quê?
Porque existe uma CODEX_API_KEY no seu ambiente, e o codex exec dá prioridade a ela sobre o login do ChatGPT. Isso está no código-fonte do Codex (codex-rs/login/src/auth/manager.rs), com o comentário literal "API key via env var takes precedence over any other auth method". O codex exec liga essa leitura; o codex interativo e o codex login status não.
O efeito prático é traiçoeiro: codex login status responde Logged in using ChatGPT, o terminal interativo funciona, e o seu script de CI ou o seu alias com codex exec quebra com 401 usando uma chave velha que ficou num .bashrc, num .env ou num secret do pipeline.
# descobrir se a variável está setada
env | grep -E '^(CODEX|OPENAI)_'
# tirar da sessão atual
unset CODEX_API_KEY
# testar de novo
codex exec "Responda só: OK"
Se o teste passa, procure onde a variável é exportada (grep -rn CODEX_API_KEY ~/.bashrc ~/.zshrc ~/.profile) e remova ou troque pela chave atual.
O sufixo é da sua própria chave: como resolver?
Aí a chave salva no Codex foi revogada, apagada ou pertence a um projeto sem acesso. Acontece com quem fez codex login --with-api-key meses atrás e depois limpou chaves no painel da plataforma. O codex login status mostra o final da chave salva, então dá pra comparar direto com o sufixo da mensagem de erro.
codex logout
codex login # volta pro login com ChatGPT
# ou, se quer continuar por API key:
printenv OPENAI_API_KEY | codex login --with-api-key
O --with-api-key lê a chave pela entrada padrão, não como argumento. Se você digitar codex login --with-api-key sozinho no terminal, ele avisa que espera a chave por pipe.
E se nenhum dos três casos bater?
Rode o diagnóstico local e guarde a saída:
codex doctor --json
Ele mostra o modo de autenticação salvo (stored auth mode), se existe chave ou token do ChatGPT guardado (stored API key, stored ChatGPT tokens) e se OPENAI_API_KEY ou CODEX_API_KEY estão presentes no ambiente, sem vazar o valor. Com isso dá pra abrir issue sem expor segredo.
Vale saber: mesmo depois de a OpenAI declarar o incidente de 25/09 resolvido, apareceram relatos isolados do mesmo sk-svcac na issue #48237, um em 26/09 na extensão de VS Code depois de bater o limite de uso e outro em 28/09 num Raspberry Pi com o CLI 0.158.0. Até 29/09/2026 nenhum mantenedor tinha respondido a esses dois. Se é o seu caso, anexe o codex doctor --json na issue aberta em vez de criar uma nova.
Quando o 401 vem do servidor, nada na sua máquina resolve, e a hora parada é a mesma pra todo mundo. O que muda o prejuízo é ter um segundo agente de programação pronto no terminal. A Verboo Code roda no terminal com tokens ilimitados e segura o trabalho enquanto o provedor principal volta.



