Documentação
CC Switch
O CC Switch alterna Claude Code e Codex entre provedores por meio de um aplicativo para desktop. Kunavo é configurado como uma Configuração Personalizada — raiz do serviço, autenticação Bearer, protocolo nativo Anthropic Messages, sem roteamento local.
Três campos e dois menus suspensos. https://api.kunavo.com como endpoint, sua chave sk-kn-… e — o detalhe que a maioria dos guias omite — deixe API Format em Anthropic Messages (Native) e Auth Field em ANTHROPIC_AUTH_TOKEN. Kunavo oferece suporte nativo à API Messages, então não há roteamento local no lado do Claude Code.
Provider Name Kunavo
API Key sk-kn-...
API Endpoint https://api.kunavo.com <- service root, no /v1, no trailing slash
Advanced Options
API Format Anthropic Messages (Native) <- the default; do NOT switch
Auth Field ANTHROPIC_AUTH_TOKEN (Default)/v1, sem barra no final. Clientes no estilo Anthropic acrescentam /v1/messages por conta própria — por isso este campo é diferente de todos os exemplos OpenAI, em que /v1 faz parte da URL base. Veja a explicação completa na página ANTHROPIC_BASE_URL.Passo a passo (aba Claude Code)
- Crie uma chave em
/app/keyse copie-a — ela é exibida uma única vez. - Abra o CC Switch na aba principal
Claude Codee clique no botão de adição. Mantenha a opção padrãoCustom Configurationem vez de escolher uma predefinição. - Preencha
Provider Name,API KeyeAPI Endpoint=https://api.kunavo.com. - Expanda
Advanced Optionse confirme seAPI Formatestá emAnthropic Messages (Native)eAuth FieldemANTHROPIC_AUTH_TOKEN (Default). Esses são os valores padrão; a ideia é conferir, não alterar. - Salve e depois
Activate. O cartão não deve exibir um indicadorNeeds Routing— esse indicador só aparece nos provedores cujo protocolo precisa ser traduzido.
Por que não há o indicador “Requer roteamento”
O roteamento local do CC Switch existe para fazer a ponte entre protocolos. O Claude Code envia solicitações Anthropic Messages para /v1/messages; um gateway que oferece apenas OpenAI Chat Completions ou a API Responses não pode atendê-las, então a rota converte a solicitação na saída e converte a resposta no retorno. Essa conversão reformata os eventos de streaming, as chamadas de ferramentas e a configuração de raciocínio — funciona, mas acrescenta mais uma etapa entre o editor e o modelo.
Kunavo oferece POST /v1/messages diretamente, então não há nada para converter no lado do Claude Code: o provedor permanece em Anthropic Messages (Native) e a rota nem chega a ser usada. Kunavo também oferece POST /v1/chat/completions e POST /v1/responses com a mesma chave, o que possibilita a configuração para o Codex descrita abaixo.
| Aba do CC Switch | Defina o formato como | Roteamento local |
|---|---|---|
| Claude Code | Anthropic Messages (Native) | Não é necessário |
| Codex | Anthropic Messages (routing required) | Obrigatório — a rota reescreve /responses como /v1/messages |
Executar modelos Claude no Codex
Esta é a configuração que os guias dos outros provedores não abordam. O Codex usa a API OpenAI Responses, então apontá-lo diretamente para um endpoint /v1/messages retorna 404 — o CC Switch resolve isso mantendo o Codex na rota local e fazendo a tradução. Na aba Codex, não há predefinição Anthropic, então esta também é uma Custom Configuration:
Provider Name Kunavo
API Key sk-kn-...
API Request URL https://api.kunavo.com
Default Model claude-sonnet-5
Advanced Options
Upstream Format Anthropic Messages (routing required)sk-kn-… atende às interfaces Messages e Responses, e nenhuma delas tem uma lista de clientes permitidos. Se preferir evitar totalmente a tradução, a CLI do Codex também pode apontar diretamente para a interface nativa /v1/responses da Kunavo; esse caminho está na página da CLI do Codex.Mapeamento de modelos
O CC Switch mapeia as três categorias do Claude Code para IDs de modelos reais. Preencha as três e também Default fallback model — caso contrário, solicitações sem correspondência são encaminhadas com o nome original do Claude e geram erro no serviço de origem. As tarifas são em USD por 1 milhão de tokens, entrada / saída, consultadas em tempo real no catálogo.
| Nível | ID do modelo | Entrada / saída da Kunavo | Por quê |
|---|---|---|---|
| Haiku | claude-haiku-4-5 | $0.70 / $3.50 | O Claude Code encaminha subtarefas em segundo plano para cá — a categoria mais barata é a escolha certa |
| Sonnet | claude-sonnet-5 | $1.40 / $7.00 | A opção padrão funcional para edição |
| Opus | claude-opus-5-5 | $2.80 / $14.00 | Alterações no nível da arquitetura |
1M desmarcada, a menos que a categoria realmente ofereça uma janela de um milhão de tokens. Declarar um contexto que o serviço de origem não tem não amplia nada — apenas desloca a falha para o meio de uma conversa longa.Verifique antes de depurar o aplicativo
Um par de solicitações basta para determinar se a falha está na chave, no endpoint ou no CC Switch. Se ambas retornarem 200, qualquer problema restante está em um campo do formulário — quase sempre é Auth Field ou um /v1 que não deveria estar no endpoint.
# Settles whether a failure is the key, the endpoint, or CC Switch.
# 200 + a JSON list of model ids means the same key works in the app.
curl -sS https://api.kunavo.com/v1/models \
-H "Authorization: Bearer sk-kn-..."
# The Anthropic face, which is the one the Claude Code tab actually calls.
curl -sS https://api.kunavo.com/v1/messages \
-H "Authorization: Bearer sk-kn-..." \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{"model":"claude-haiku-4-5","max_tokens":16,
"messages":[{"role":"user","content":"ping"}]}'Referência
O CC Switch é de código aberto em github.com/farion1231/cc-switch. Os nomes dos campos e o comportamento acima vêm dos próprios guias — o guia de roteamento do Claude Code e o guia de roteamento do Codex —, ambos aplicáveis à versão 3.17.0 e posteriores. Em versões mais antigas, o formulário é diferente; consulte a seção Sobre do aplicativo se algum campo mencionado aqui não aparecer. A documentação do lado da Kunavo está em API Messages, chat completions e central de integrações.
Perguntas frequentes
Como adiciono um provedor personalizado ao CC Switch?
Na aba Claude Code, clique no botão de adição, mantenha Custom Configuration, a opção padrão, e preencha Provider Name, API Key e API Endpoint. API Endpoint é a raiz do serviço do gateway, sem barra final — para o Kunavo, é https://api.kunavo.com, sem /v1. Em seguida, abra Advanced Options e confira dois campos: API Format e Auth Field. Esses dois campos determinam se o provedor funciona, mas costumam ser omitidos nos guias de configuração.
Preciso ativar o roteamento local do CC Switch para usar o Kunavo?
Não. O roteamento local serve para converter protocolos — ele converte a solicitação /v1/messages do Claude Code para OpenAI Responses ou Chat Completions quando o serviço upstream oferece apenas esses formatos. O Kunavo oferece a API Anthropic Messages nativamente em https://api.kunavo.com/v1/messages, então mantenha API Format na opção padrão Anthropic Messages (Native), o cartão do provedor não exibirá o indicador Needs Routing e as solicitações serão enviadas diretamente ao upstream. Um gateway que ofereça apenas Chat Completions precisa usar o roteamento local em todas as solicitações.
Por que o campo API Endpoint não inclui /v1, como nos exemplos da OpenAI?
Porque as duas convenções são diferentes por definição. Clientes no estilo Anthropic acrescentam /v1/messages por conta própria; por isso, precisam apenas da origem — https://api.kunavo.com. Os SDKs da OpenAI esperam que /v1 já faça parte de base_url; por isso, precisam de https://api.kunavo.com/v1. A aba Claude Code do CC Switch usa o formato da Anthropic, então /v1 fica de fora. Inverter essas formas é a causa mais comum de falhas de configuração em todos os clientes; a página ANTHROPIC_BASE_URL explica as duas.
Devo definir Auth Field como ANTHROPIC_API_KEY?
Não — mantenha o valor padrão, ANTHROPIC_AUTH_TOKEN. Com esse valor, o CC Switch envia Authorization: Bearer <key>. Se escolher ANTHROPIC_API_KEY, ele envia um cabeçalho x-api-key, que o Kunavo também aceita; portanto, o problema não está no cabeçalho, e sim na autorização. Antes de usar ANTHROPIC_API_KEY em uma sessão interativa, o Claude Code solicita uma aprovação única. Se essa aprovação for recusada, a chave será ignorada nas solicitações seguintes — um erro de autenticação que parece indicar uma chave inválida, embora ela esteja correta.
Posso executar modelos Claude dentro do Codex usando o CC Switch?
Sim, e essa é a parte que a maioria dos guias de provedores omite. Na aba Codex, adicione uma Custom Configuration com API Request URL https://api.kunavo.com e um Default Model como claude-sonnet-5; em seguida, em Advanced Options, defina Upstream Format como Anthropic Messages (routing required). O roteamento local precisa estar ativado nessa direção, porque o Codex usa a API Responses e a rota reescreve /responses para /v1/messages. O próprio guia do CC Switch alerta que alguns provedores restringem a API Claude ao cliente Claude Code e que essas chaves falham no Codex — o Kunavo não tem essa restrição: a mesma chave sk-kn- funciona em ambos os casos.
Quais IDs de modelo devo colocar no mapeamento de modelos do CC Switch?
Use os IDs de catálogo da Kunavo. Uma divisão padrão adequada é claude-haiku-4-5 ($0.70 / $3.50 por 1M de tokens) no nível Haiku, pois o Claude Code envia as subtarefas em segundo plano para ele; claude-sonnet-5 ($1.40 / $7.00) no Sonnet; e claude-opus-5-5 ($2.80 / $14.00) no Opus. Sempre preencha também o modelo substituto padrão — o CC Switch encaminha solicitações não correspondentes usando o nome original do Claude se você deixar o campo vazio, e elas falham no upstream. A lista atualizada está em GET /v1/models.
Onde o CC Switch armazena minha chave de API?
No próprio banco de dados, não na configuração do cliente. O CC Switch armazena os provedores em ~/.cc-switch/cc-switch.db e, quando o roteamento local assume o controle de um cliente, grava apenas o endereço da rota local em ~/.claude/settings.json, com um valor de preenchimento no campo de autenticação — a rota insere a chave real ao encaminhar a solicitação. Isso é uma característica do CC Switch, não do Kunavo. Vale saber porque a chave que você cola não é a chave que aparece no arquivo que talvez esteja prestes a incluir em um commit.