GET /protocol, cobrindo os endpoints de sign-in, inferência, configurações gerenciadas, descoberta de modelo e telemetria desse gateway. É um documento separado deste guia.
- Para implantar um gateway existente ou de terceiros para sua organização, consulte Implantar um gateway LLM
- Se você é um desenvolvedor individual autenticando Claude Code em um gateway com uma credencial que lhe foi fornecida, consulte Conectar Claude Code a um gateway LLM
- Formatos de API e os endpoints a servir para cada um
- Comportamento do cliente por método de conexão: como IDs de modelo, valores de
anthropic-beta, campos de solicitação e padrões diferem entre os formatos e um sign-in de gateway de aplicativos Claude - Headers de solicitação: quais devem chegar ao upstream e quais seu gateway pode consumir
- Headers de resposta: o que retornar para que a detecção de travamento, tentativas e exibição de limite de uso funcionem
- O bloco de atribuição de prompt do sistema e como ele interage com cache de prompt
- Passagem de recursos: o que quebra quando headers ou campos de corpo são removidos
- Descoberta de modelo
- Encaminhar inalterado: passá-lo para o upstream byte por byte
- Consumir: o gateway pode lê-lo para roteamento, atribuição ou rastreamento e não precisa encaminhá-lo
Formatos de API
Um gateway deve expor pelo menos um dos seguintes formatos de API para clientes Claude Code. Um cliente escolhe um formato e aponta Claude Code para seu gateway com as variáveis na coluna Selecionado pela tabela abaixo. Google Cloud’s Agent Platform é o endpoint Claude do Google Cloud, anteriormente Vertex AI; seus nomes de variáveis mantêm a grafiaVERTEX.
Foundry e Claude Platform on AWS
Microsoft Foundry e a Claude Platform on AWS implementam o formato Anthropic Messages. Claude Code roteia para eles através de suas próprias variáveis,ANTHROPIC_FOUNDRY_BASE_URL e ANTHROPIC_AWS_BASE_URL, mas um gateway fronteando qualquer um deles implementa a linha Anthropic Messages acima. Um gateway fronteando a Claude Platform on AWS também deve encaminhar o header anthropic-workspace-id, que essa plataforma requer em cada requisição.
Endpoints opcionais e tráfego de inicialização
Endpoints de contagem de tokens são os únicos opcionais: quando estão ausentes, Claude Code volta para uma estimativa baseada em caracteres do uso de contexto. Corresponda no caminho, não na URL completa:- Requisições de inferência postam para
/v1/messages?beta=true - O método Google Cloud’s Agent Platform sufixos anexam ao caminho do modelo do publisher, como em
/projects/{project}/locations/{location}/publishers/anthropic/models/{model}:streamRawPredict
HEAD /api/hello, que Claude Code pula quando um proxy HTTP ou certificado de cliente está configurado. Um gateway no formato Amazon Bedrock recebe uma requisição GET /inference-profiles?type=SYSTEM_DEFINED e, quando o modelo configurado é um perfil de inferência, buscas GET /inference-profiles/{profile}.
Sessões que passam por um gateway não são elegíveis para a configuração HIPAA. Verifique como os desenvolvedores fazem login e se conectam lista quais métodos de login e de conexão são elegíveis. Consulte A configuração HIPAA por trás de um gateway.
A verificação de disponibilidade do modo rápido nunca aparece nos logs do gateway: ela chama api.anthropic.com diretamente em vez de seguir ANTHROPIC_BASE_URL, então em uma rede que bloqueia egresso direto para api.anthropic.com, o modo rápido pode relatar um erro de conectividade enquanto a inferência através do gateway continua funcionando. A verificação de segurança de domínio WebFetch também chama api.anthropic.com diretamente. Usar modo rápido atrás de proxies e gateways LLM cobre as variáveis que o restauram.
Streaming
Claude Code lê cada resposta de inferência em streaming evento por evento conforme ela chega, então a forma como seu gateway retransmite o stream afeta o que o usuário vê:- Se seu gateway armazena uma resposta em buffer até que ela esteja completa, Claude Code trava.
- Claude Code espera a sequência completa de eventos de cada resposta, em ordem, até os eventos finais
message_deltaemessage_stop. Se o corpo termina de forma limpa depois que um bloco de conteúdo começou, mas antes dessemessage_deltafinal, Claude Code trata a resposta como uma conexão descartada. A resposta acima pode estar incompleta descreve o que o usuário vê nesse caso, e Tentativas automáticas diz quando Claude Code reemite a requisição em vez disso. - Quando um guardrail do Amazon Bedrock bloqueia uma resposta, os eventos que o Bedrock envia podem referenciar um bloco de conteúdo cujo
content_block_stopjá chegou, e Claude Code depende de recebê-los da forma como foram enviados. AWS Guardrails descreve como essa resposta termina. - Claude Code aborta uma resposta em streaming quando nenhum byte o alcança por mais tempo do que seu timeout de inatividade de streaming. Durante uma pausa longa de pensamento, os eventos SSE
pingdo upstream podem ser os únicos bytes no stream, então um gateway que os remove ou armazena em buffer pode acionar esse timeout no meio de uma resposta. Um gateway que traduz de um upstream sem pings, como o event stream binário do Amazon Bedrock, tem a mesma lacuna, a menos que emita seus próprios eventosping. - No formato Amazon Bedrock InvokeModel, Claude Code lê a resposta de
/model/{model}/invoke-with-response-streamcomo o corpo binárioapplication/vnd.amazon.eventstreamque o Bedrock retorna, e não consegue analisá-la quando um gateway a converte para server-sent events ou reescreve esse headerContent-Type. Erros de streaming atrás de um gateway ou proxy descreve o que o usuário vê nesse caso.
Incompatibilidade de formato com o upstream
Qual formato o cliente fala determina o que seu gateway recebe. O modo de falha comum é uma incompatibilidade entre o formato que o cliente envia para seu gateway e o formato que o provedor upstream atrás dele aceita.- Quando o cliente fala o formato Amazon Bedrock ou Google Cloud’s Agent Platform, Claude Code envia apenas o subconjunto de seu conjunto completo de capacidades que esses provedores aceitam
- Quando o cliente fala o formato Anthropic Messages, Claude Code envia o conjunto completo, mesmo que seu gateway encaminhe para um upstream Amazon Bedrock ou Google Cloud’s Agent Platform
Como o método de conexão altera o comportamento do cliente
A forma como um desenvolvedor se conecta ao seu gateway determina quais IDs de modelo, valores deanthropic-beta e campos de solicitação o Claude Code envia, e quais padrões ele aplica. Seu gateway vê um dos três comportamentos de cliente:
- Formato Amazon Bedrock ou Agent Platform: o desenvolvedor define
CLAUDE_CODE_USE_BEDROCK=1comANTHROPIC_BEDROCK_BASE_URL, ouCLAUDE_CODE_USE_VERTEX=1comANTHROPIC_VERTEX_BASE_URL, apontando para seu gateway. Claude Code usa os IDs de modelo, campos de solicitação e padrões desse provedor. - Formato Anthropic Messages: o desenvolvedor define
ANTHROPIC_BASE_URLpara seu gateway. Claude Code trata o gateway como a API Claude e não consegue dizer para qual upstream você encaminha. - Entrada do gateway de aplicativos Claude: o desenvolvedor entra em um gateway de aplicativos Claude. Esse gateway fala o formato Anthropic Messages, mas pode rotear para qualquer upstream, então Claude Code envia apenas os valores de
anthropic-betae suposições de capacidade de modelo que Amazon Bedrock e Agent Platform também aceitam.
Solicitações e padrões por método de conexão
A tabela abaixo compara os três métodos de conexão, um comportamento por linha. Ela omite Microsoft Foundry e Claude Platform on AWS, que também usam o formato Anthropic Messages, mas que Claude Code alcança através de suas próprias variáveis. Para esses, consulte as páginas Microsoft Foundry e Claude Platform on AWS.
Para os recursos que cada conexão suporta e a telemetria que envia para Anthropic por padrão, consulte Disponibilidade de recursos e Comportamentos padrão por provedor de API.
Configurações para IDs de modelo não reconhecidos
Duas configurações do lado do cliente alteram o que Claude Code assume para um ID de modelo que não reconhece, independentemente do método de conexão que o desenvolvedor usa:- Janela de contexto: Claude Code assume 200K, ou 1M quando o ID carrega
[1m]. Para declarar a janela real, consulte Corrigir a janela para um gateway ou ID de modelo personalizado - Capacidades: para dar a um alias de gateway as capacidades do modelo por trás dele, mapeie o ID Anthropic desse modelo para seu alias com uma entrada
modelOverridesnas configurações que você distribui. Para onde as variáveisANTHROPIC_DEFAULT_*_MODEL_SUPPORTED_CAPABILITIESse aplicam, consulte passagem de recursos
Headers de solicitação
Claude Code inclui esses headers em solicitações de API. Nomes de headers não diferenciam maiúsculas de minúsculas no fio. Encaminheanthropic-version e anthropic-beta inalterados, mais anthropic-workspace-id quando o upstream é a Claude Platform on AWS; o resto o gateway pode consumir para roteamento, atribuição e rastreamento, e não precisa encaminhar.
IDs de subagentes são gerados novamente cada vez que Claude Code gera um subagente. Agentes companheiros, os membros nomeados de uma equipe de agentes, reutilizam um ID estável baseado em nome entre reconexões. Em ambos os casos, o ID identifica um agente, não uma pessoa ou dispositivo, então não trate o header de ID de agente como um identificador de usuário.
Se seus desenvolvedores definirem
ANTHROPIC_CUSTOM_HEADERS, esses headers também aparecem em solicitações.
Headers de dica de gateway
Claude Code também pode enviar dicas de roteamento: fatos por solicitação que um gateway ou roteador pode usar para agendar, armazenar em cache ou atribuir uma solicitação. Requer Claude Code v2.1.273 ou posterior. Se uma solicitação as carrega depende de onde Claude Code as envia:- Conexão direta com a API Anthropic: enviado por padrão
- URL base personalizada: desativado por padrão, porque um proxy que rejeita headers desconhecidos falharia na solicitação. Para recebê-los, defina
CLAUDE_CODE_GATEWAY_HINT_HEADERS=1para seus desenvolvedores, por exemplo no blocoenvde configurações gerenciadas - Qualquer outro backend, incluindo Amazon Bedrock, Agent Platform do Google Cloud, Microsoft Foundry e Claude Platform on AWS: enviado apenas quando
CLAUDE_CODE_GATEWAY_HINT_HEADERS=1está definido
CLAUDE_CODE_GATEWAY_HINT_HEADERS para 0 interrompe os headers em cada conexão.
Os headers carregam apenas o que as linhas abaixo listam: vocabulários fixos, nomes de ferramentas, durações e um identificador de prompt aleatório, nunca texto de prompt ou conteúdo de arquivo. Cada valor é ASCII imprimível.
Antes de analisar
x-claude-code-prev-tool-durations, verifique como Claude Code constrói o valor e o que deixa de fora:
- Entradas: uma por chamada de ferramenta que foi executada, na ordem em que seu resultado foi coletado, em milissegundos inteiros
- Limite: Claude Code envia no máximo 32 entradas e 4 KB, mantendo as primeiras entradas
- Codificação: nomes de ferramentas são codificados em percentual, cobrindo
%,;,=, vírgula, espaço e qualquer caractere fora do ASCII imprimível - Análise: dividir em
;, depois em=, e decodificar cada nome - Ausência: chamadas de compactação, solicitações laterais e a primeira solicitação de um novo prompt nunca a carregam. Não leia um header ausente como uma volta que não executou ferramentas
- Tempos: cada um exclui prompts de permissão e hooks, e chamadas de ferramenta paralelas cada uma relata seu próprio tempo, então as entradas não somam a lacuna entre solicitações
Encaminhar como listas abertas
Trate os headers e campos de corpo como listas abertas, não fechadas. Claude Code ganha capacidades ao longo dos lançamentos, e elas chegam como novos valoresanthropic-beta, novos campos de corpo de solicitação e ocasionalmente novos headers anthropic-* ou x-claude-code-*.
Ao encaminhar para um upstream no formato Anthropic, passe headers de solicitação anthropic-* e campos de corpo de solicitação através inalterados em vez de fazer uma lista de permissões dos que você vê hoje. Um gateway fixado a uma lista observada remove o header ou campo da próxima capacidade e quebra-o no lançamento que a introduz.
A exceção é um upstream não-Anthropic, como Amazon Bedrock ou Agent Platform do Google Cloud, onde fazer a ponte da diferença de schema é trabalho do gateway; consulte passagem de recursos.
Cabeçalhos de resposta
Claude Code lê esses cabeçalhos de resposta para detectar fluxos travados, para decidir se e quando tentar novamente, e para mostrar limites de uso. A tabela lista o que retornar para cada um. Também encaminhe corpos de resposta de erro sem modificações, para que a recuperação de rejeição de capacidade do Claude Code possa corresponder à redação do erro do upstream.Bloco de atribuição do prompt do sistema
Claude Code prepara um bloco de atribuição curto para o prompt do sistema contendo a versão do cliente e uma impressão digital derivada da conversa. O endpointapi.anthropic.com remove o bloco antes do processamento quando ele chega inalterado como o primeiro bloco do sistema, portanto não afeta o cache de prompt de primeira parte. Qualquer outro upstream o recebe como parte do prompt.
A remoção é posicional, portanto funciona apenas quando o gateway encaminha o array system inalterado. Para manter o bloco fora do prompt sem perder outro conteúdo do sistema:
- Encaminhe o array
systemexatamente como recebido, mantendo o bloco primeiro: adicionar outro bloco do sistema, reordenar o array ou convertê-lo em uma única string derrota a remoção, e o bloco então chega ao modelo e à chave do cache de prompt. - Mantenha o bloco em sua própria entrada de array: o endpoint trata um bloco mesclado que começa com o cabeçalho de atribuição como atribuição em sua totalidade e descarta tudo mesclado nele, incluindo o resto do prompt do sistema.
- Se seu gateway deve reformular o conteúdo do sistema, defina
CLAUDE_CODE_ATTRIBUTION_HEADER=0para que Claude Code omita o bloco. Anthropic e os endpoints Claude dos provedores de nuvem leem o bloco para atribuição, portanto omita-o no cliente em vez de removê-lo ou movê-lo no gateway.
0:
- As solicitações vão para
api.anthropic.com, comANTHROPIC_BASE_URLnão definido ou nomeando esse host e nenhum provedor de terceiros selecionado. - A credencial ativa não é uma credencial de perfil Anthropic ou federação.
0 remove o bloco das solicitações do classificador também. Antes de v2.1.229, essa exceção não existia: definir 0 removia o bloco dessas solicitações do classificador, e quando a API recusava as solicitações não identificadas, o modo automático falhava em cada ação que enviava ao classificador.
A partir de Claude Code v2.1.181, o bloco é estável pela vida útil de uma conversa quando solicitações são roteadas através de uma URL base personalizada, portanto um cache de prompt do lado do gateway com chave no corpo completo da solicitação funciona sem desabilitá-lo, e qualquer provedor para o qual seu gateway encaminha recebe um prefixo de prompt estável. Antes de v2.1.181, o bloco incluía um token por solicitação que alterava o início do prompt do sistema em cada solicitação. Nessas versões, defina CLAUDE_CODE_ATTRIBUTION_HEADER=0 quando seu gateway faz qualquer um destes:
- Implementa um cache de prompt com chave no corpo da solicitação.
- Encaminha solicitações para um provedor de terceiros como Amazon Bedrock, Microsoft Foundry ou Agent Platform do Google Cloud, no formato Anthropic Messages ou no próprio formato do provedor, onde o prefixo em mudança reduz a reutilização do cache de prompt nesse provedor.
Passagem de recursos
Claude Code trata um gatewayANTHROPIC_BASE_URL como um endpoint no formato Anthropic e envia a ele os headers beta e campos de corpo de solicitação que envia para api.anthropic.com, exceto um pequeno conjunto de diagnósticos e padrões reservados para conexões diretas, como o padrão de streaming de ferramenta de granulação fina coberto abaixo. Esse conjunto varia por lançamento, então não dependa de seu conteúdo.
Streaming de ferramenta de granulação fina é um dos padrões de conexão direta: está desativado por padrão sempre que solicitações são roteadas através de uma URL base personalizada, e um gateway o recebe quando desenvolvedores definem CLAUDE_CODE_ENABLE_FINE_GRAINED_TOOL_STREAMING=1.
Pares de header beta e campo de corpo
Capacidades que adicionam campos de corpo os emparelham com um header beta, e o par viaja junto. Um gateway que remove o header enquanto passa o corpo, ou encaminha um corpo no formato Anthropic para um upstream com um esquema diferente, produz erros400. Quando ambas as metades estão ausentes juntas, o recurso é desativado silenciosamente.
Um gateway que reescreve ou redige corpos de solicitação para inspeção de conteúdo quebra o emparelhamento da mesma forma que remover o faz, então inspecione sem modificar. A tabela observa onde um recurso se desvia do emparelhamento.
As variáveis
ANTHROPIC_DEFAULT_*_MODEL_SUPPORTED_CAPABILITIES declaram capacidades de modelo apenas nas configurações do provedor: CLAUDE_CODE_USE_BEDROCK, CLAUDE_CODE_USE_VERTEX, CLAUDE_CODE_USE_FOUNDRY, e CLAUDE_CODE_USE_MANTLE. Elas não têm efeito atrás de um gateway ANTHROPIC_BASE_URL.
Retry automático e encaminhamento de erro
Quando o upstream rejeita uma dessas capacidades, Claude Code pode tentar novamente a requisição por conta própria com a parte rejeitada removida ou alterada:- Quando um
400diz que o valorenabledouadaptivedethinking.typenão é suportado, Claude Code tenta novamente uma vez com o outro tipo e mantém o campothinking. Requisições posteriores para esse modelo mantêm o tipo alterado até Claude Code sair. Antes da v2.1.121, Claude Code não tentava novamente, entãothinking.type.enabled is not supportedchegava ao desenvolvedor - Quando o upstream rejeita uma entrada
role: "system"dentro demessages, Claude Code tenta novamente uma vez sem essas mensagens de sistema no meio da conversa e leva o texto delas em mensagens de usuário. Requisições posteriores na conversa mantêm esse formato até o desenvolvedor executar/clearou a conversa ser compactada - Quando o upstream rejeita apenas o marcador
cache_controlem uma mensagem de sistema no meio da conversa, Claude Code mantém as mensagens de sistema e tenta novamente uma vez com o marcador movido. O marcador vai na última entrada emmessagesque não é uma mensagem de sistema, nessa nova tentativa e em requisições posteriores até Claude Code sair - Quando o upstream rejeita uma assinatura de pensamento, incluindo com um
400cuja mensagem diz que o bloco estábound to a different conversation, Claude Code remove blocos de pensamento anteriores da solicitação, tenta novamente, e os mantém fora de cada solicitação posterior. Novas respostas ainda incluem pensamento - Quando o gateway ou seu upstream rejeita a entrada da ferramenta advisor em
toolscomo um tipo de ferramenta não reconhecido, Claude Code tenta novamente a requisição uma vez sem essa entrada e seu valoranthropic-beta. Requisições posteriores os omitem. Claude Code reconhece essa rejeição por uma resposta400ou422cuja mensagem nomeia o tipo de ferramenta apósInput tag, comoInput tag 'advisor_20260301'. Antes da v2.1.280, Claude Code não tentava novamente essa rejeição - Quando o upstream rejeita
output_config.effortou seu valoranthropic-beta, o gateway vê a requisição mais uma vez sem eles. Requisições posteriores os omitem. Seu gateway não precisa de nenhuma alteração se encaminhar o400do upstream sem modificações e a mensagem:- Nomear
output_config.effortjunto comExtra inputs are not permitted - Disser que o modelo não suporta o parâmetro de esforço
- Começar com
Unexpected value(s)e listareffort-2025-11-24para o headeranthropic-beta. Requer v2.1.310 ou posterior. Desenvolvedores cujoANTHROPIC_BETASlista o valor continuam enviando-o e recebendo o400, então peça a eles que removam essa entrada
- Nomear
- Quando o upstream rejeita o campo
context_managementou seu valoranthropic-beta, o gateway vê a requisição mais uma vez sem eles. Requisições posteriores os omitem. Claude Code reconhece essa rejeição por sua mensagem, por exemplo uma que contenhacontext_management: Extra inputs are not permitted. Antes da v2.1.304, Claude Code não tentava novamente essa rejeição - Quando um
400rejeita outro valoranthropic-betapelo nome, o gateway vê a requisição mais uma vez sem ele se a nova tentativa cobrir esse valor - Quando o upstream rejeita um campo de ferramenta beta diferente de
defer_loading, comostrict, o400chega ao desenvolvedor. Antes disso, o gateway pode ver a requisição novamente sem os campos de busca de ferramentas. Para deixar de enviar esses campos, peça aos desenvolvedores que definamCLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1
bound to a different conversation vem da verificação de pensamento preservado da API, que falha quando conteúdo de system, tools, ou messages anteriores difere da solicitação que produziu o pensamento. Um gateway que reescreve qualquer um desses conteúdos pode causar a rejeição em si; Bibliotecas, proxies e gateways cobre o que passar inalterado.
A maior parte dessa lógica de retry corresponde à redação de erro do upstream, então encaminhe corpos de resposta de erro inalterados. Um gateway que envolve erros upstream em seu próprio envelope quebra o caminho de recuperação, mesmo quando preserva o código de status, a menos que a mensagem do envelope carregue um token capability_rejected: estável. O gateway de aplicativos Claude substitui esses tokens pela redação de erro dos provedores de nuvem, por exemplo capability_rejected: prompt_too_long.
Tentar novamente sem um valor beta rejeitado
Quando um400 rejeita pelo nome um valor anthropic-beta que essa nova tentativa cobre, o gateway vê a requisição mais uma vez sem ele. Requisições posteriores omitem o valor. A maioria dos valores que ela cobre requer v2.1.314 ou posterior.
Seu gateway não precisa de nenhuma alteração se a mensagem do 400 que ele retorna carregar o valor em qualquer uma destas formas:
- A frase da API: a frase
Unexpected value(s)que lista o valor para o headeranthropic-beta - Um token
beta_header::capability_rejected: beta_header:seguido do valor, um tokencapability_rejected:
- Um valor com sua própria nova tentativa, como advisor ou busca de ferramentas: o gateway vê a nova tentativa própria dessa capacidade em vez disso
- Um valor que Claude Code não reconhece: um valor que um desenvolvedor definiu por meio de
ANTHROPIC_BETASpermanece em cada requisição, então as requisições do desenvolvedor continuam falhando com o400. Peça ao desenvolvedor que remova a entrada - Um
invalid beta flagisolado: Claude Code tenta adivinhar qual valor o upstream rejeitou. Se a requisição carregava um valor que ele tenta adivinhar, o gateway vê a requisição novamente sem esse valor. Se o400ainda chegar ao desenvolvedor, faça seu gateway nomear o valor rejeitado em uma dessas formas
Por quanto tempo um valor beta rejeitado fica de fora
Tentar novamente sem busca de ferramentas
Na v2.1.305 ou posterior, Claude Code reenvia uma requisição sem camposdefer_loading e blocos tool_reference após um 400 ou 422 que nomeia a busca de ferramentas ou cuja causa ele não reconhece. Após uma nova tentativa bem-sucedida, as requisições posteriores nessa conversa também os omitem.
As requisições do desenvolvedor continuam funcionando sem nenhuma alteração no gateway, com suas ferramentas MCP carregadas antecipadamente. Quando Claude Code tenta a busca de ferramentas novamente, o gateway pode ver outra requisição rejeitada seguida de sua nova tentativa. Para a busca de ferramentas em si, Claude Code espera que o gateway encaminhe os campos defer_loading e os blocos tool_reference com seu valor anthropic-beta.
Desabilitar capacidades de pré-lançamento
Quando seu gateway ou o upstream dele rejeita valoresanthropic-beta de pré-lançamento ou os campos de corpo emparelhados com eles, e você não pode encaminhar ambas as metades, peça aos desenvolvedores que definam CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1. Com a variável definida, Claude Code deixa de enviar capacidades de pré-lançamento e os valores anthropic-beta emparelhados com elas, incluindo:
- Gerenciamento de contexto e seu campo de corpo
context_management - Os campos de schema de ferramenta beta, como
strictedefer_loading. Os campos de ferramenta padrãoname,description,input_schemaecache_controlpermanecem - O campo de saída estruturada
output_config.format. Requer Claude Code v2.1.287 ou posterior - O campo
output_config.task_budget - MCP Tool Search, de modo que cada ferramenta MCP é carregada antecipadamente, a menos que sua organização a mantenha ativada por meio de configurações gerenciadas
anthropic-beta. O que ela mantém inclui:
- Os valores
anthropic-betapara contexto estendido, pensamento intercalado e esforço, que os provedores de nuvem também aceitam - O campo
output_config.effortde nível superior. Retry automático e encaminhamento de erro cobre um upstream que o rejeita - O campo
thinkingdo raciocínio adaptativo, que não tem header beta - As entradas
role: "system"que carregam mensagens de sistema no meio da conversa - O valor
anthropic-betade OAuth que a autenticação de assinatura requer - Valores de header e campos de corpo que os próprios desenvolvedores adicionam por meio de
ANTHROPIC_BETASouCLAUDE_CODE_EXTRA_BODY
CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST, CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS não impede que sessões de modo automático em Amazon Bedrock, Agent Platform do Google Cloud, Microsoft Foundry, ou um gateway de aplicativos Claude peçam ao servidor por revisão de classificador. Essa revisão adiciona um valor anthropic-beta e um campo de solicitação safeguards. Defina CLAUDE_CODE_AUTO_MODE_SERVER=0 para interrompê-lo lá.
Em Claude Code v2.1.227 ou posterior, sua organização pode manter busca de ferramenta MCP ativada sob essa variável através de configurações gerenciadas. O que Claude Code envia com essa substituição em vigor depende de como você se conecta:
- Em uma conexão direta sem a configuração HIPAA, ou através de um gateway definido com
ANTHROPIC_BASE_URL, Claude Code continua enviando o header beta de busca de ferramenta, campos de ferramentadefer_loading, e blocostool_reference - Em um provedor de nuvem, ou conectado através de um gateway de aplicativos Claude, a substituição não tem efeito
- Em uma sessão que recebe a configuração HIPAA, a substituição não tem efeito e a busca de ferramenta permanece desativada
Descoberta de modelos
QuandoANTHROPIC_BASE_URL aponta para um gateway que expõe o formato Anthropic Messages, Claude Code pode consultar o endpoint /v1/models do gateway na inicialização e adicionar os modelos retornados ao seletor /model. Se você ou seu administrador definir replaceBuiltInOptions em um modelPicker lineup, Claude Code oculta os modelos descobertos do seletor.
Desenvolvedores o habilitam definindo CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY=1, em seu próprio ambiente ou através de configurações gerenciadas. A descoberta está desativada por padrão para que gateways apoiados por uma chave de API compartilhada não exponham cada modelo que a chave pode acessar a cada usuário.
Quando a descoberta é executada
A descoberta se aplica apenas ao formato Anthropic Messages. Não é executada quando:- Qualquer variável de provedor
CLAUDE_CODE_USE_*é definida, mesmo seANTHROPIC_BASE_URLtambém for definido ANTHROPIC_BASE_URLnão está definido ou aponta paraapi.anthropic.com
Solicitação e resposta
A solicitação éGET /v1/models?limit=1000 com um timeout de 3 segundos por padrão, e qualquer redirecionamento é tratado como falha para que a credencial não vaze para um alvo de redirecionamento. Um gateway que responde mais lentamente do que o timeout, ou um que redireciona /v1/models, mesmo http para https, falha na descoberta silenciosamente; sirva o endpoint diretamente na URL base configurada.
Para dar a um gateway lento mais tempo, defina CLAUDE_CODE_GATEWAY_MODEL_DISCOVERY_TIMEOUT_MS. A variável requer Claude Code v2.1.269 ou posterior.
Claude Code envia a solicitação de descoberta com ambos os headers de credencial abaixo e omite um header cujo valor não se resolve. Enviar ambos os headers requer Claude Code v2.1.248 ou posterior. Versões anteriores enviam apenas Authorization quando ANTHROPIC_AUTH_TOKEN é definido e apenas x-api-key caso contrário.
Authorization:ANTHROPIC_AUTH_TOKENcomo um token bearer, caso contrário o valorapiKeyHelpercomo um token bearer.x-api-key: a chave de API que Claude Code resolveu, comoANTHROPIC_API_KEY. Quando um valor helper é a única credencial, este header também o carrega, para que o valor chegue em ambos os headers.
ANTHROPIC_CUSTOM_HEADERS. Quando um header customizado tem um valor não vazio, Claude Code o envia no lugar de um header integrado de mesmo nome, correspondendo nomes case-insensitively.
Quando nenhum valor do header de credencial se resolve, Claude Code pula a descoberta e escreve uma linha [gatewayDiscovery] skipped no log de debug de uma sessão claude --debug. Se você fornecer uma credencial apenas através de ANTHROPIC_CUSTOM_HEADERS, Claude Code ainda pula a descoberta.
Claude Code lê id, o display_name opcional e a description opcional de cada entrada no array data da resposta:
id contém claude ou anthropic em qualquer lugar na string, correspondido case-insensitively, e ignora o resto. IDs com prefixo de provedor como vertex_ai/claude-sonnet-4-6 ou bedrock/anthropic.claude-sonnet-4-5 passam no filtro; um ID que não contém nenhuma substring não passa. Antes da v2.1.223, Claude Code mantinha uma entrada apenas quando seu id começava com claude ou anthropic, o que ocultava IDs com prefixo de provedor.
Entradas do seletor e cache
O seletor é a lista de modelos interativa que abre quando um desenvolvedor executa/model em Claude Code. Cada entrada descoberta usa display_name como seu nome quando o gateway envia um que difere do id. Caso contrário, a entrada mostra o nome do modelo quando Claude Code reconhece o id, e o id quando não reconhece. Por exemplo, uma entrada com o id my-gateway-claude-sonnet-4-6 e sem display_name aparece como Sonnet 4.6.
A descoberta adiciona apenas modelos que a configuração gerenciada availableModels permite.
Cada entrada também mostra a description do modelo, recolhida em uma linha. Uma entrada sem description lê “Do gateway” em vez disso. Antes da v2.1.257, cada entrada descoberta lia “Do gateway”.
Um ID descoberto não recebe sua própria linha quando corresponde a uma linha já no seletor:
- Mesmo ID: o ID descoberto corresponde exatamente ao ID de uma linha existente, ou os dois IDs são grafias da mesma versão Fable.
- Mesmo modelo que um alias integrado: quando um ID explícito descoberto nomeia o modelo para o qual um alias integrado atualmente se resolve, o seletor mostra apenas a linha do alias. Por exemplo, enquanto
sonnetse resolve paraclaude-sonnet-5-5, umclaude-sonnet-5-5descoberto colapsa na linhasonnet, e umclaude-sonnet-5descoberto ainda recebe sua própria linha.
~/.claude/cache/gateway-models.json, ou %USERPROFILE%\.claude\cache\gateway-models.json no Windows, e atualizados em cada inicialização. Se você definir CLAUDE_CONFIG_DIR, o cache fica sob esse diretório em vez disso. Se a solicitação falhar ou o gateway não implementar /v1/models, o seletor volta para a lista em cache da inicialização anterior ou para a lista de modelos integrada. Se seu gateway serve modelos Claude sob aliases que não correspondem ao filtro de descoberta, desenvolvedores podem adicionar esses aliases manualmente com as variáveis de configuração de modelo.
Recursos relacionados
Para o resto do conjunto de documentação do gateway e as referências de API subjacentes:- Visão geral de gateway: o que é um gateway e como escolher entre o gateway de aplicativos Claude e outro produto
- Outros gateways LLM: como implantar um gateway que sua organização executa e como ele interage com assinaturas claude.ai
- Implantar um gateway LLM para sua organização: a lista de verificação do administrador que usa este guia
- Conectar Claude Code a um gateway LLM: configuração por desenvolvedor e a tabela de solução de problemas
- Referência de headers beta: o conjunto atual de valores
anthropic-beta - Messages API: o formato de API que um gateway no formato Anthropic implementa