Quando vale a pena usar Haiku nos subagentes do Claude Code?

Haiku nos subagentes faz sentido quando o papel é mecânico: varrer arquivo, resumir saída longa, conferir formato e devolver aprovado ou reprovado. O modelo forte fica onde existe decisão: escrever o patch, decidir arquitetura, dar o veredito final. No Claude Code isso é um campo no frontmatter do arquivo .md do subagente (model: haiku), com os arquivos em ~/.claude/agents/ para usuário e .claude/agents/ para projeto. Omitir o campo equivale a inherit, que usa o modelo da conversa principal. Na API, o Claude Haiku 4.5 custa US$ 1 por milhão de tokens de entrada e US$ 5 de saída.
Fala aí, beleza? Existe um gasto silencioso em quase todo fluxo de agente: você paga preço de modelo topo de linha pra alguém abrir 40 arquivos e te dizer em quais aparece a palavra auth
Esse é o caso clássico de modelo por papel
A ideia é simples: o modelo leve fica nos papéis de apoio (varrer arquivo, resumir saída longa, checar formato, conferir lista) e o forte fica onde existe decisão de verdade (escrever o patch, decidir a arquitetura, dar o veredito final)
Neste post eu mostro quando colocar Haiku nos subagentes compensa, como configurar isso no Claude Code passo a passo e, principalmente, o que quebra quando o papel de apoio erra
Bora? 🙂
Quais papéis aguentam o Haiku e quais não
Antes do como, o porquê
O Claude Haiku 4.5 entrega nível de desempenho em código parecido com o do Claude Sonnet 4, por um terço do custo e mais que o dobro da velocidade
No SWE-bench Verified ele marcou 73,3%, em média de 50 tentativas, sem test-time compute, com orçamento de thinking de 128K e parâmetros de sampling padrão, no conjunto completo de 500 problemas
Domine o Claude Code do básico ao avançado
Você vai aprender a criar sistemas completos com Claude Code, sem precisar ser programador. Inscreva-se para ter acesso a um desconto de lançamento e bônus especiais!
E não é aquele modelinho capado de antigamente: o Haiku 4.5 foi o primeiro Haiku a incluir extended thinking, computer use e context awareness
Ou seja, ele pensa antes de responder quando você deixa
Só não confunda as contas: aquela comparação de desempenho e custo é contra o Sonnet 4, um modelo de geração anterior
A tabela abaixo é outra coisa, é o preço da linha atual, então a proporção entre os modelos aqui é diferente:
| Modelo | Entrada (por milhão de tokens) | Saída (por milhão de tokens) |
|---|---|---|
| Claude Haiku 4.5 | US$ 1 | US$ 5 |
| Claude Sonnet 5 | US$ 2 | US$ 10 |
| Claude Opus 5 | US$ 5 | US$ 25 |
E aqui vale um aviso pra não te enganarem por aí: o Haiku 4.5 foi anunciado pela Anthropic em 15 de outubro de 2025 e é o Haiku mais recente da linha
Não existe um "Claude Haiku 5" lançado, beleza?
Papel de apoio (Haiku resolve bem):
- Busca ampla e leitura de muitos arquivos: o trabalho aqui é volume, não julgamento, e velocidade importa mais que sutileza
- Resumo de saída longa: log gigante, stack trace, retorno de build, tudo que precisa virar 10 linhas
- Checagem de formato: o JSON tem os campos? o frontmatter está válido? o arquivo segue o padrão?
- Conferência de lista contra critério: pegar uma lista de itens e marcar cada um como bate ou não bate
Papel de decisão (deixa no forte):
- Escrita de patch: aqui o modelo escolhe entre abordagens, e escolha ruim custa muito mais que token
- Decisão de arquitetura: o custo do erro aparece semanas depois, não na fatura
- Veredito final: o cara que decide se aquilo vai pro repositório
A régua que eu uso é essa: o papel EXECUTA ou o papel JULGA?
Se ele executa comando mecânico e devolve um resultado objetivo, o leve dá conta
Se ele julga qualidade, vai de forte
Se você quer aprofundar em qual modelo usar em cada tarefa, tem um post inteiro só sobre isso aqui no blog
O que você precisa antes de configurar
Subagente do Claude Code é arquivo Markdown com frontmatter YAML
O frontmatter traz a configuração e o corpo do arquivo vira o system prompt do subagente
Só isso, sem mistério
E tem dois lugares onde esse arquivo pode viver:
~/.claude/agents/são os subagentes de usuário, que valem pra todos os seus projetos.claude/agents/são os subagentes de projeto, específicos daquele projeto, que podem ser versionados e compartilhados com o time
Essa escolha não é decorativa
Regra de qualidade muda de projeto pra projeto, então revisor costuma ser de projeto
Tome cuidado com isso: a partir da versão 2.1.198 do Claude Code, o comando /agents não abre mais o assistente interativo de criação
Ele imprime um aviso apontando pros diretórios de subagentes
Então a criação hoje é manual, na mão, criando o arquivo você mesmo
Se tu procurou o painel e não achou, não é bug, é isso mesmo
Como definir o modelo de cada subagente no Claude Code
Agora sim, o passo a passo
Passo 1: Crie o arquivo .md no diretório certo
mkdir -p .claude/agents
touch .claude/agents/revisor.md
O erro comum deste passo é jogar tudo em ~/.claude/agents/ por preguiça e depois levar a regra de qualidade de um projeto pra dentro de outro
Outro tropeço clássico: o Claude Code não observa mudanças em .claude/agents/ dentro de diretórios adicionados com --add-dir ou /add-dir
Se você criou ou editou o subagente lá, precisa reiniciar pra alteração carregar
Passo 2: Preencha o frontmatter com o campo model
---
model: haiku
---
Você é o revisor deste projeto
Não escreva código e não conserte código
Rode os comandos de qualidade do projeto e responda apenas: aprovado ou reprovado
O campo model aceita alias de modelo (sonnet, opus, haiku ou fable), ID completo do modelo (como claude-opus-5 ou claude-sonnet-5) ou o valor inherit
Repara que tudo abaixo do frontmatter é o system prompt do subagente
O erro comum deste passo é fixar haiku num papel que decide, tipo o subagente que escreve o patch
Barato ali não é economia, é retrabalho
Passo 3: Entenda que omitir o campo equivale a inherit
Se você não colocar model na definição, o padrão é inherit: o subagente usa o mesmo modelo da conversa principal
O erro comum aqui é achar que subagente sem model roda no modelo mais barato por padrão
Não roda
Se a sua sessão está em Opus, o subagente sem model também está
Passo 4: Sobrescreva pontualmente pela ordem de resolução
A ordem que o Claude Code segue pra resolver o modelo de um subagente é essa:
- variável de ambiente
CLAUDE_CODE_SUBAGENT_MODEL - parâmetro
modelda invocação - campo
modeldo frontmatter - modelo da conversa principal
CLAUDE_CODE_SUBAGENT_MODEL=haiku claude
A partir da versão 2.1.196, definir CLAUDE_CODE_SUBAGENT_MODEL como inherit equivale a não definir a variável: a resolução segue pro parâmetro por invocação e depois pro frontmatter
O erro comum deste passo é deixar essa variável exportada no shell e depois jurar que o frontmatter está quebrado
A variável ganha do arquivo, sempre
Passo 5: No Agent SDK, use AgentDefinition.model
A definição programática de subagente tem um campo model opcional, passado pelo parâmetro agents das opções de query()
query({
prompt: "revisa o projeto",
options: {
agents: {
revisor: {
// demais campos da definição do subagente
model: "haiku"
}
}
}
})
O erro comum deste passo é supor que os aliases são idênticos aos do frontmatter
A documentação de subagentes no Agent SDK lista apenas sonnet, opus, haiku e inherit nesse campo
O que quebra quando o papel de apoio erra
Aqui é onde a maioria se perde, então vou por sintoma
O subagente rodou num modelo diferente do que eu configurei
Causa provável 1: o Claude Code confere os valores de modelo (variável de ambiente, parâmetro por invocação e frontmatter) contra a allowlist availableModels da organização
Se o valor resolver pra um modelo excluído, ele é ignorado e o subagente roda no modelo herdado
Causa provável 2: a variável de ambiente ganhando do frontmatter, como no passo 4
Como prevenir: antes de acusar o arquivo, cheque a variável de ambiente da sessão e a allowlist da organização
Editei o subagente e nada mudou
Causa: não existe file watching em .claude/agents/ dentro de diretórios adicionados com --add-dir ou /add-dir
Como prevenir: reinicie o Claude Code depois de mexer em subagente que mora nesses diretórios extras
O mesmo nome está definido em dois lugares
Causa: subagentes de projeto são descobertos subindo a partir do diretório de trabalho atual, varrendo todo .claude/agents/ até a raiz do repositório
Quando mais de um diretório define o mesmo nome, vale a definição mais próxima do diretório de trabalho
Como prevenir: em monorepo, saiba de qual pasta você abriu o Claude Code, porque isso decide qual definição vence
O Explore ficou mais caro do que era antes
Causa: a partir da versão 2.1.198, o subagente embutido Explore passou a herdar o modelo da conversa principal em vez de rodar sempre em Haiku
E na Claude API a herança do Explore é limitada ao Opus: conversa principal num tier superior roda o Explore em Opus, e conversa principal em Sonnet ou Haiku roda o Explore no mesmo modelo
Como prevenir: se o seu fluxo dependia do Explore barato por padrão, essa conta mudou de lugar e precisa ser reavaliada
O subagente está pensando demais
Causa: a partir da versão 2.1.198, os subagentes também herdam a configuração de extended thinking da conversa principal
Se o thinking está ligado na sessão, fica ligado no subagente
Como prevenir: lembre que thinking ligado num papel puramente mecânico é token gasto pra confirmar o óbvio
Todos esses comportamentos estão descritos na documentação de subagentes do Claude Code, vale a leitura
O que aconteceu quando troquei o modelo do papel de apoio
No vídeo abaixo eu mostro isso montado na prática, num fluxo de loop
Eu criei um subagente revisor dedicado ao projeto, com a instrução de não escrever e não consertar código: ele só roda os comandos de qualidade e responde aprovado ou reprovado
Deixei esse revisor no Haiku justamente por isso
Ele não julga se o código foi bem escrito, ele executa verificação mecânica
Configurei com escopo de projeto, não global, porque cada projeto tem regra de qualidade diferente
E configurei manualmente, já que eu tinha o prompt pronto, em vez de deixar a IA gerar a descrição
Detalhe que economiza mais do que parece: deixei o prompt de revisão dentro do subagente em vez de escrever as regras no arquivo de contexto do projeto
Aquele arquivo é relido a cada prompt, então tudo que mora nele você paga sempre
No arquivo de referência eu defini as condições de pronto (testes passam, checagem de tipos passa, lint passa, build roda sem erro) e os critérios de aceite do app
Aí amarrei o loop ao revisor: o subagente é chamado a cada iteração e o trabalho só é considerado feito com zero falhas
O modelo forte ficou no agente principal, o que constrói
E aqui entra o freio, que na minha opinião é a parte MAIS importante: guard rail de número máximo de turnos
Loop sem limite é loop infinito de programação, e você não quer descobrir isso pela fatura
Na primeira execução eu botei teto de 12 turnos
Só que o loop nem chegou perto disso: resolveu tudo de uma vez, concluiu num único turno e não iterou
Atribuí isso ao modelo muito forte no agente principal somado a um projeto simples demais
Pra forçar a iteração de verdade, montei uma segunda fase mais complexa (com autenticação e API) e troquei o modelo principal por um menor, com teto de 10 turnos
A aposta era essa: modelo menor com mais complexidade faz o loop repetir os ciclos
E é aí que a lição fica clara
Baixar o modelo no papel de apoio é barato e seguro, porque o papel é mecânico
Baixar o modelo no papel que constrói é o que faz o número de iterações subir, e iteração custa
O limite de turnos é exatamente o que segura o barato que sai caro
Uma coisa que eu comentei lá e mantenho: dá pra melhorar o acompanhamento do loop com avisos a cada iteração, mas isso é refinamento, não o mínimo
O mínimo é o par arquivo de especificação bem construído mais agente revisor
Abaixo disso o agente roda à toa e pode sair pior que prompt a prompt
Próximo passo: comece trocando um subagente só
A regra prática cabe numa linha: leve no apoio, forte na decisão
Não saia refazendo todos os seus subagentes hoje
Escolhe UM, o mais óbvio: aquele que só varre arquivo e resume o que achou
Coloca model: haiku no frontmatter dele
Deixa todos os outros sem o campo model, ou seja, em inherit, herdando o modelo da conversa principal
Roda o teu fluxo normal por alguns dias e compara duas coisas: o custo e a qualidade do que aquele papel devolve
Se o resultado se manteve, aí sim tu expande pro próximo papel de apoio
Se caiu, tu já sabe exatamente qual subagente reverter, porque só mexeu num…
É mais chato que trocar tudo de uma vez? É
Mas é assim que você descobre onde o barato resolve de verdade, em vez de adivinhar 😀
Até o próximo post!
Perguntas frequentes
Dá para usar Haiku no subagente Explore embutido do Claude Code?
A partir da versão 2.1.198 do Claude Code, o Explore passou a herdar o modelo da conversa principal em vez de rodar sempre em Haiku. Na Claude API essa herança fica limitada ao Opus: uma sessão em tier superior roda o Explore em Opus, enquanto uma sessão em Sonnet ou Haiku roda o Explore no mesmo modelo. Ou seja, hoje o Explore não fica mais travado no Haiku por padrão.
O que acontece se eu definir um modelo que não está na allowlist da organização?
O Claude Code confere o valor de modelo, seja da variável de ambiente, do parâmetro por invocação ou do frontmatter, contra a allowlist availableModels da organização. Se o valor resolver para um modelo excluído dessa lista, ele é ignorado e o subagente roda no modelo herdado da conversa principal. Não aparece erro, ele simplesmente cai pro modelo herdado.
Se eu tiver mais de um .claude/agents/ no repositório, qual definição vale?
O Claude Code descobre subagentes de projeto subindo a partir do diretório de trabalho atual, varrendo todo .claude/agents/ até a raiz do repositório. Quando mais de um diretório define um subagente com o mesmo nome, vale a definição mais próxima do diretório de trabalho. Um subagente numa subpasta pode sobrescrever o da raiz do projeto por causa dessa regra.
O extended thinking funciona em subagente configurado com Haiku?
A partir da versão 2.1.198 do Claude Code, os subagentes passaram a herdar a configuração de extended thinking da conversa principal. Se o thinking está ligado na sessão, ele fica ligado no subagente também, incluindo os que rodam em Haiku. O Haiku 4.5 foi inclusive o primeiro modelo Haiku a incluir extended thinking.
Preciso reiniciar o Claude Code depois de criar um subagente novo?
Depende de onde o diretório vive. O Claude Code não observa mudanças em .claude/agents/ dentro de diretórios adicionados com –add-dir ou /add-dir, então criar ou editar um subagente ali exige reiniciar pra carregar a alteração. Fora desse caso, o cuidado maior é escolher certo entre ~/.claude/agents/ e .claude/agents/ na hora de criar o arquivo.
Dá para forçar um modelo diferente do frontmatter sem editar o arquivo do subagente?
Dá, usando o parâmetro model da invocação ou a variável de ambiente CLAUDE_CODE_SUBAGENT_MODEL. A ordem de resolução é: primeiro a variável de ambiente, depois o parâmetro por invocação, depois o campo model do frontmatter e por último o modelo da conversa principal. Então a variável de ambiente sempre ganha do que está escrito no arquivo do subagente.
Formações
Formação Vibe Coding
Do Prompt ao Produto: Crie Software Real com IA
- 474 aulas
- 20 projetos
- 39h 27min
Blog | Mais populares
As diferenças de var, let e const
Como fazer redirecionamento com PHP
Neste artigo você vai aprender a como fazer redirecionamento com PHP, utilizaremos abordagens fáceis de entender e de aplicar Fala programador(a), beleza? Bora aprender mais […]
Checklist de segurança n8n VPS pública: guia essencial para proteger sua instalação
Checklist de segurança n8n VPS pública: guia essencial para proteger sua instalação A popularidade da automação de processos com o n8n está em alta, principalmente […]
