MÓDULO 4.4

⚠️ Evitando Cobranças Acidentais

Entenda como cobranças acontecem, como o modelo Haiku opera em background e como se proteger completamente com um checklist de segurança.

6
Tópicos
25
Minutos
Básico
Nível
Prático
Tipo

🚨 Alerta Importante

Se você não configurar TODOS os modelos, pode ser cobrado sem perceber. Claude Code faz chamadas em background que você não vê diretamente nas respostas — e essas chamadas podem ir para modelos pagos.

1

💸 Como Cobranças Acontecem

O mecanismo de cobrança é simples: qualquer chamada a um modelo sem :free é cobrada. O problema não é usar o OpenRouter em si — é deixar algum slot de modelo não configurado.

🔄 Fluxo de Chamadas do Claude Code

Você digita algo
Claude Code processa o pedido
ANTHROPIC_MODEL
Resposta principal — configurado = grátis
HAIKU (background)
Tarefas internas — se não configurado = PAGO
SUBAGENT (background)
Subagentes paralelos — se não configurado = PAGO

💸 Cenário Típico de Cobrança

Desenvolvedor configura apenas ANTHROPIC_MODEL e inicia sessão. Para cada mensagem sua, Claude Code faz internamente:

  • 11 chamada ao modelo principal (configurado como :free) — $0
  • 22-3 chamadas ao Haiku (não configurado) — cobrado por token
  • 3Acúmulo invisível de cobranças ao longo da sessão
2

🤖 O Modelo Haiku em Background

Claude Code foi projetado pela Anthropic para usar Claude Haiku (o modelo mais rápido e barato) para tarefas internas. Quando você redireciona para o OpenRouter, esse comportamento persiste.

🤖 O que o Haiku faz em background

  • Análise de contexto — decide quais arquivos são relevantes para sua pergunta
  • Sumários internos — condensa partes do contexto para caber na janela
  • Verificação de resultados — valida se as ações foram executadas corretamente
  • Planejamento de subagentes — quando opera em modo agente paralelo

💡 A Solução

Configure ANTHROPIC_DEFAULT_HAIKU_MODEL com o mesmo modelo :free dos demais slots. O Claude Code vai usar seu modelo gratuito onde normalmente usaria o Haiku pago.

# No settings.json ou como variável de ambiente
"ANTHROPIC_DEFAULT_HAIKU_MODEL": "qwen/qwen3-coder:free"
3

🔇 CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC

Além de configurar os slots de modelo, existe uma variável que desativa chamadas de API que não são essenciais para a tarefa em si. Isso economiza requisições diárias e elimina uma classe de possíveis cobranças.

O que essa variável desativa:

  • Telemetria e analytics enviados para a Anthropic
  • Verificações de contexto opcionais em background
  • Análises proativas que não foram explicitamente pedidas
  • Chamadas de heartbeat e status

Como configurar:

# Opção 1: variável de ambiente (temporário)
export CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1

# Opção 2: settings.json (permanente - recomendado)
{
  "env": {
    "CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1"
  }
}
4

🚫 DISABLE_PROMPT_CACHING

Claude Code envia headers de beta para ativar o prompt caching da Anthropic. O OpenRouter não reconhece esses headers e retorna erro 400. A variável DISABLE_PROMPT_CACHING elimina esse problema.

🐛 Sintoma do Problema

Se você ver erros como estes ao usar Claude Code com OpenRouter, é o problema dos headers beta:

Error: 400 Bad Request
anthropic-beta header not supported
Prompt caching not available for this model

A Solução:

# Opção 1: variável de ambiente
export DISABLE_PROMPT_CACHING=1

# Opção 2: settings.json (recomendado)
{
  "env": {
    "DISABLE_PROMPT_CACHING": "1",
    "CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1"
  }
}
5

📊 Verificando no Dashboard

O dashboard de atividade do OpenRouter é a fonte de verdade. Após cada sessão de trabalho, verifique que todas as chamadas foram para modelos :free com custo $0.

1

Acesse a página de atividade

Vá para https://openrouter.ai/activity. A página mostra todas as chamadas recentes com modelo, tokens e custo.

2

Verifique os modelos utilizados

Cada linha deve mostrar o modelo com sufixo :free. Se aparecer um modelo sem :free, identifique qual variável não está configurada.

3

Confirme custo total $0

O custo total da sessão deve ser $0.00. Qualquer valor >$0 indica modelo pago sendo usado.

4

Use os filtros se necessário

O dashboard permite filtrar por data e modelo. Se tiver muitas entradas, filtre pelo horário da sua sessão de trabalho.

6

🔄 Versão Específica do Claude Code

Atualizações do Claude Code podem introduzir mudanças que quebram a compatibilidade com o OpenRouter. Se após atualizar surgirem problemas, fazer downgrade para uma versão estável é a solução mais rápida.

Como trocar a versão:

# Verificar versão atual
claude --version

# Instalar versão específica estável
npm install -g @anthropic-ai/claude-code@2.1.68

# Verificar se a instalação foi aplicada
claude --version

Checklist de Segurança Completo

Marque cada item antes de começar uma sessão de trabalho:

💡 Solução Completa em Um Arquivo

O settings.json abaixo inclui todas as proteções necessárias:

{
  "env": {
    "ANTHROPIC_BASE_URL": "https://openrouter.ai/api",
    "ANTHROPIC_AUTH_TOKEN": "sk-or-sua-chave-aqui",
    "ANTHROPIC_API_KEY": "",
    "ANTHROPIC_MODEL": "qwen/qwen3-coder:free",
    "ANTHROPIC_DEFAULT_SONNET_MODEL": "qwen/qwen3-coder:free",
    "ANTHROPIC_DEFAULT_OPUS_MODEL": "qwen/qwen3-coder:free",
    "ANTHROPIC_DEFAULT_HAIKU_MODEL": "qwen/qwen3-coder:free",
    "ANTHROPIC_SMALL_FAST_MODEL": "qwen/qwen3-coder:free",
    "CLAUDE_CODE_SUBAGENT_MODEL": "qwen/qwen3-coder:free",
    "CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1",
    "DISABLE_PROMPT_CACHING": "1"
  }
}

Resumo do Módulo 4.4

Cobranças acontecem — qualquer modelo sem :free é cobrado, incluindo os de background
Haiku em background — configure ANTHROPIC_DEFAULT_HAIKU_MODEL para evitar cobranças ocultas
DISABLE_NONESSENTIAL_TRAFFIC — economiza requisições e elimina tráfego desnecessário
DISABLE_PROMPT_CACHING — resolve erros 400 de headers beta incompatíveis com OpenRouter
Verificação no dashboard — confirmar custo $0 após cada sessão em openrouter.ai/activity

Trilha Completa!

Você concluiu a Trilha 4. Continue para a Trilha 5 para aprender a usar Claude Code na prática em projetos reais.