Erro de login no MCP do Codex: como corrigir Auth Unsupported
O Codex exibe Auth Unsupported ao lado de um servidor MCP, e o comando codex mcp login ou não executa ou informa que nenhum suporte de autorização foi detectado. Este artigo mostra quando o aviso é inofensivo, como diferenciar um servidor stdio de um HTTP e três correções: uma variável de token bearer, um login OAuth limpo e uma ponte com mcp-remote. Também trata da regressão no macOS e de um erro de conexão parecido.
Você executa codex mcp list, o novo servidor aparece e a coluna Auth mostra Unsupported. Depois, codex mcp login ou não inicia ou para com uma reclamação sobre falta de suporte de autorização. As ferramentas nunca aparecem na sua sessão, e nada na saída indica qual dos vários problemas diferentes você encontrou.
Esta página organiza os problemas na ordem em que você deve verificá-los. Primeiro, se Unsupported é realmente um problema, porque em alguns servidores é o rótulo correto. Depois, três correções (um token bearer, um login OAuth limpo e uma ponte stdio), uma regressão no macOS relatada em julho de 2026 e um erro parecido que não tem nada a ver com login.
💡 Resposta rápida:Unsupported significa que o Codex não encontrou nada com que se autenticar. Para um servidor stdio isso é normal. Para um servidor HTTP que exige credenciais, forneça ao Codex uma variável de token bearer, rode novamente codex mcp login <name> em uma versão atual ou direcione o servidor por meio de mcp-remote.
O que significa Auth Unsupported
De onde vem o rótulo
O próprio Codex calcula a coluna Auth. Segundo um guia passo a passo do subcomando codex mcp, tanto list quanto get verificam três coisas para cada servidor:
Há uma variável de ambiente de token bearer configurada, e ela está de fato definida?
Há tokens OAuth armazenados no cofre de credenciais?
O endpoint HTTP anuncia metadados OAuth?
Se nenhuma das três condições se aplica, a coluna mostra Unsupported. O rótulo descreve o que o Codex consegue ver, não o que o servidor exige. Um servidor pode exigir login e, ainda assim, mostrar Unsupported quando os metadados estão ausentes, malformados ou inacessíveis a partir da sua máquina.
Valores de status em resumo
O que você vê
O que significa
Próximo passo
Unsupported
Sem variável de token, sem tokens armazenados, sem metadados OAuth (ou um servidor stdio)
Verifique o tipo de servidor abaixo
Authenticated
Uma variável de token está definida ou há tokens OAuth armazenados
Nada a corrigir, confirme se as ferramentas carregam
Um rótulo de sessão encerrada
O servidor anuncia OAuth, mas nenhum token está armazenado
Execute codex mcp login <name>
Os exemplos oficiais mostram authenticated e unsupported. A redação do estado de sessão encerrada muda entre versões, então trate a coluna como uma dica e confirme com /mcp dentro da TUI do Codex, que lista os servidores MCP ativos. A documentação oficial do MCP no Codex traz a lista completa de configurações de servidor.
Para colar de forma limpa em um chamado ou em um script, codex mcp list --json e codex mcp get my-server --json imprimem os mesmos dados de status em formato legível por máquina. Essa também é a forma mais rápida de comparar uma máquina em que o login funciona com outra em que não funciona.
Stdio ou HTTP: verifique o tipo de servidor
Antes de mudar qualquer coisa, descubra qual tipo de servidor você registrou. Abra ~/.codex/config.toml e observe a entrada. Uma linha command indica stdio. Uma linha url indica HTTP streamable. A correção depende inteiramente dessa diferença.
Servidores stdio: Unsupported é normal
Um servidor stdio é um processo local que o Codex inicia e com o qual se comunica por entrada e saída padrão:
OAuth pertence ao transporte HTTP. A referência diz isso claramente: "OAuth login is only supported for streamable HTTP servers." Portanto, codex mcp login local-tools é rejeitado por design, e Unsupported é o rótulo esperado. Se esse servidor precisar de uma credencial, entregue-a por meio de env ou env_vars na mesma tabela, em vez de tentar fazer login.
💡 Um servidor público que não exige autenticação também mostrará Unsupported. Se as ferramentas aparecerem na sua sessão, não há nada a corrigir.
Quatro deslizes explicam a maioria das falhas aqui:
Colar o token em bearer_token_env_var. Esse campo recebe o nome da variável, não o segredo.
Exportar no shell errado. Uma variável definida em uma aba do terminal fica invisível em outra.
Iniciar o Codex por um ícone do editor ou do dock. Esses processos costumam não enxergar variáveis exportadas no perfil do seu shell. Inicie o Codex pelo terminal que tem a variável, ou defina a variável no sistema inteiro.
Guardar a linha de cabeçalho inteira. Mantenha apenas o valor do token, já que o Codex o envia no cabeçalho Authorization por você.
Execute codex mcp list novamente. A coluna deve deixar Unsupported assim que a variável estiver definida.
Em CI, guarde o token como um segredo mascarado e exporte-o na etapa do job que inicia o Codex. O nome da variável em config.toml permanece o mesmo, então o arquivo pode ficar no repositório sem vazar nada.
Correção 2: execute o login OAuth
Quando o servidor espera OAuth, não há token para colar. O Codex precisa passar por um login no navegador e armazenar o resultado.
O primeiro comando abre o navegador. Aprove a solicitação e volte ao terminal. O segundo pede escopos específicos quando os padrões do servidor são restritos demais. O terceiro apaga as credenciais armazenadas e imprime Removed OAuth credentials for 'my-server' ou No OAuth credentials stored for 'my-server'.
Trabalhar por SSH ou em uma máquina sem interface gráfica é a armadilha mais comum. A página de login abre em um navegador, e o provedor então redireciona para um endereço de callback que precisa alcançar a máquina onde o Codex está rodando. Em um host remoto, esse redirecionamento costuma cair no seu notebook, e o login nunca termina. Encaminhe a porta do callback ou use a Correção 1 ou a Correção 3 nessa máquina.
Quando um login continua falhando, saia primeiro e entre de novo, para não lutar contra uma sessão antiga. Faça o mesmo antes de excluir a entrada de um servidor, porque remover a entrada não revoga nem apaga os tokens já armazenados.
Fixe o recurso e o callback
Provedores que seguem as regras mais novas de OAuth vinculam cada token a uma URL canônica de recurso. As notas do Codex da MintMCP recomendam definir oauth_resource explicitamente na entrada do servidor, em vez de deixar o Codex deduzi-la, e manter a mesma URL no endpoint MCP, nos metadados do recurso, na solicitação de autorização e no público do token:
Adicione a tabela oauth somente quando o provedor tiver fornecido um ID de cliente pré-registrado. A URL de callback precisa coincidir, caractere por caractere, com o que o provedor tem registrado.
O suporte a OAuth chegou ao Codex aos poucos, então a sua versão importa:
Versão
Data
O que mudou
rust-v0.131.0
2026-05-18
IDs de cliente OAuth explícitos para MCP e vinculação de callback
rust-v0.134.0
2026-05-26
codex mcp add aceita opções de OAuth para servidores HTTP
rust-v0.142.0
2026-06-22
Consulta de metadados de recurso protegido (RFC 9728)
rust-v0.144.0
2026-07-09
Reautenticação interativa após um 401 durante a sessão
rust-v0.145.0
2026-07-21
A inicialização não é mais bloqueada por consultas OAuth; as renovações de credenciais rodam uma por vez
Um servidor que funciona na versão mais nova pode falhar em uma versão de dois meses antes, porque a consulta seguiu outro caminho. Verifique com codex --version e depois atualize pelo instalador que você usou, por exemplo npm i -g @openai/codex@latest.
Correção 3: coloque o mcp-remote no meio
Às vezes o servidor está bem, seu token está bem, e o Codex ainda informa Unsupported. A saída mais limpa é deixar de pedir ao Codex que faça OAuth. O pacote mcp-remote é um pequeno proxy stdio que conversa com o servidor remoto e executa o login no navegador por conta própria, então o Codex só enxerga um processo local.
Aumente startup_timeout_sec acima do padrão de 10 segundos. A primeira inicialização espera você concluir o login no navegador, e um tempo limite curto mata o processo antes que você consiga clicar em qualquer coisa. Remova antes qualquer entrada antiga com o mesmo nome, para que as duas não entrem em conflito.
Contrapartidas a aceitar
A coluna Auth continuará dizendo Unsupported. Isso é esperado: o Codex agora enxerga um servidor stdio, e a ponte cuida da autenticação.
Você depende de Node e de npx estarem disponíveis onde o Codex roda.
Os tokens ficam no cache próprio da ponte (geralmente ~/.mcp-auth), não no Codex. Se um login ruim continuar sendo reaproveitado, apague essa pasta.
Você deixa de usar o caminho OAuth do Codex, o que significa que não há reautenticação gerenciada pelo Codex após um 401 durante a sessão.
Para um servidor que você usa todo dia, esta é uma configuração permanente razoável. Para um teste pontual, a Correção 1 é mais rápida.
Ainda falhando depois da correção?
macOS: nenhum suporte de autorização detectado
Uma falha merece entrada própria. A MintMCP documenta um caso em que codex mcp login para com No authorization support detected no macOS, a partir das versões de 2026-07-22. Contra um servidor OAuth que segue a especificação, a mesma versão do Codex faz login no Linux e falha na etapa de metadados no macOS. O problema é rastreado como openai/codex#34684.
Antes de culpar o servidor, teste os metadados dele a partir da máquina que falha:
Um corpo JSON significa que o servidor publica o que a especificação pede, e o problema está do lado do Codex. Alguns servidores acrescentam o caminho do endpoint, como /.well-known/oauth-protected-resource/mcp. Suas opções, em ordem de esforço:
Atualize o Codex e tente de novo, já que as correções saem com frequência.
Use um token bearer (Correção 1), se o provedor oferecer um.
Passe pelo mcp-remote (Correção 3), que tira o fluxo OAuth do Codex.
Conexão encerrada na inicialização
Alguns erros parecem falhas de autenticação e não são. Um relato na issue #5619 do GitHub descreve o Codex CLI v0.47.0 conectando a um servidor HTTP streamable com um token bearer e terminando com connection closed: initialize response. O cliente anunciou a versão de protocolo 2025-06-18, mas se comportou como o transporte 2024-11-05 mais antigo: fechou a conexão logo após o evento endpoint e nunca esperou a resposta de inicialização. O mesmo servidor funcionou no Cursor.
Se o seu erro diz connection closed em vez de unsupported, nenhuma mudança de token vai ajudar. Atualize para uma versão atual do Codex e confirme qual transporte o servidor realmente usa, porque um endpoint antigo no estilo SSE e um endpoint HTTP streamable não são intercambiáveis.
O checklist de cinco minutos
Execute codex --version e atualize se a versão tiver mais de dois meses.
Execute codex mcp get my-server e anote se a entrada usa command ou url.
Para entradas command, aceite Unsupported e corrija o processo do servidor.
Para entradas url, defina bearer_token_env_var ou execute codex mcp login my-server.
Teste os metadados com curl contra /.well-known/oauth-protected-resource.
No macOS, experimente a ponte mcp-remote antes de gastar uma hora com teorias.
Abra /mcp na TUI e confirme que o servidor aparece.
Depure com o GPT 5.6 Sol na PicassoIA
Quando a configuração parece certa e o erro continua aparecendo, uma segunda leitura ajuda. O GPT 5.6 Sol é feito para tarefas de programação e raciocínio em várias etapas, e aceita capturas de tela, então você pode entregar a saída do terminal diretamente. Ele não executa o Codex nem mexe na sua máquina. Ele apenas lê o que você cola.
Em System Prompt, defina o papel: "Você é um especialista em solução de problemas do Codex CLI e do MCP. Pergunte os dados que faltam antes de chutar."
Em Prompt, cole sua tabela [mcp_servers.my-server] e a saída de codex mcp get my-server.
Adicione uma captura de tela do terminal com erro em Image Input.
Defina Reasoning Effort como medium na maioria dos casos, ou high para uma configuração de OAuth emaranhada. O padrão, none, prioriza velocidade.
Aumente Max Completion Tokens quando usar high ou xhigh, porque um raciocínio pesado pode consumir todo o limite e devolver uma resposta vazia.
Escolha Verbositylow para uma lista curta de correções ou high para um passo a passo completo.
💡 Substitua todo token real, segredo de cliente e nome de host interno por REDACTED antes de colar qualquer coisa.
Prompts que valem a pena enviar
"Aqui estão a entrada da minha configuração e a saída de codex mcp get. Qual das três verificações de autenticação está falhando, e por quê?"
"Este servidor é stdio. Reescreva a entrada para que a credencial chegue ao processo por meio de env_vars."
"Compare minha configuração de OAuth com esta URL de recurso e diga onde o público poderia não bater."
Para uma segunda opinião, o Claude Sonnet 5 na mesma plataforma é outra opção forte para ler configurações e saídas de erro.
Crie suas próprias imagens na Picasso IA
Corrigir um erro de login é um bom momento para criar algo com as ferramentas que agora funcionam. Cada foto deste artigo foi gerada com o P Image na Picasso IA, a partir de prompts que nomeiam a lente, a luz e as texturas. Você pode fazer o mesmo para sua própria documentação, notas de versão ou banners de projeto.
Três modelos que valem a pena abrir em seguida:
Seedream 4.5 para imagens 4K nítidas a partir de uma descrição simples
Flux 2 Pro para texto para imagem e edições baseadas em fotos
Escreva um prompt, gere, ajuste a iluminação ou o ângulo e gere de novo. Quando uma imagem parecer certa, as ferramentas de vídeo da plataforma podem transformá-la em movimento. Abra a Picasso IA, escolha um modelo e crie sua primeira imagem hoje.