Pular para o conteúdo
US$ 0,04 US$ 0,02 CLAUDE.md ficam de fora texto para o modelo o mod desenha por dentro
US$ 0,04 US$ 0,02 CLAUDE.md ficam de fora texto para o modelo o mod desenha por dentro

Quanto custou cada agente? — Do CLAUDE.md ao mod no Claude Code

As peças de extensão do Claude Code em ordem, do CLAUDE.md ao mod, o que cada uma alcança e o csr-cockpit, o painel que reparte o custo da sessão por agente e por turno.

Cesar Schutz23 min de leitura
TL;DR · o artigo em 5 pontos
  • O Claude Code ganhou as peças de extensão uma depois da outra: CLAUDE.md, MCP, comandos, hooks, subagentes, linha de status, estilos de saída, plugins, skills e temas. Nenhuma desenha um painel: quase todas entregam texto ou ferramentas ao modelo, ou rodam um script por fora.
  • O mod, oficial desde a versão 2.1.287 (01/10/2026), é código que roda dentro do Claude Code, guarda estado e desenha na tela.
  • Um plugin é a pasta que se instala, e um marketplace é um repositório com um marketplace.json. Um repositório público no GitHub basta.
  • O csr-cockpit é um mod que só observa: mostra agentes, diffs, contexto, arquivos e turnos, com o custo de cada agente e de cada turno.
  • O custo por agente é uma repartição feita pelo mod. O Claude Code informa o custo da sessão inteira, não o de cada agente.
Neste artigo

Quanto custou cada agente que o Claude Code rodou no seu último pedido? E cada turno da conversa?

A tela do Claude Code com o painel do csr-cockpit aberto ao lado da conversa. A aba Agentes mostra dois subagentes rodando, cada um com o modelo, o tempo, o tamanho do contexto e o custo atribuído até ali, de 2 e de 1 centavo de dólar. Acima do prompt, a linha de resumo mostra o contexto usado e o custo da sessão.
O painel de que este post trata, o csr-cockpit, ao lado da conversa: um desenho com os textos e os números de uma sessão real (Claude Code 2.1.287, modelo Haiku 4.5) · github.com

Agente, aqui, é o subagente: o ajudante que o Claude Code chama para cuidar de uma parte da tarefa. Turno é cada pedido seu, com tudo o que ele desencadeia. Até os mods virarem oficiais, em 01/10/2026, a ferramenta não me mostrava essa conta: o /usage mostra quanto a sessão inteira custou e, nos planos pagos, que fatia do uso foi para subagentes, em percentual. Quanto custou cada agente, ou cada turno, ele não diz.

Desde aquele dia dá para fazer a conta, por causa de uma peça nova: o mod, código que roda dentro do Claude Code e desenha na interface. No mesmo dia publiquei um: o csr-cockpit, o painel da imagem. Ele está no claude-code-kit, um repositório meu.

O número de cada agente é uma conta do painel, não do Claude Code, que continua informando só o custo da sessão inteira. Como o painel reparte esse custo, e onde a conta pode errar, está em O que ainda não dá.

Este post conta como o Claude Code chegou até o mod, peça por peça. Quando comecei, eu não conhecia skill, agente, hook, plugin, marketplace nem mod: aprendi tudo naquele dia. Por isso o texto explica o básico de cada peça e aponta a documentação oficial para quem quiser se aprofundar. Não é um tutorial de código.

A linha do tempo

O Claude Code foi lançado em 24/02/2025, como prévia de pesquisa, e o mod chegou em 01/10/2026. São pouco mais de 19 meses, e nesse intervalo a ferramenta ganhou, uma depois da outra, as peças desta tabela:

QuandoPeça
24/02/2025 (lançamento)CLAUDE.md e MCP: um texto que o modelo lê em toda sessão, e ferramentas trazidas de fora
05/03/2025 (0.2.31)Comandos próprios: um prompt salvo, chamado por /nome
30/06/2025 (1.0.38)Hooks: um comando do sistema que roda sozinho num evento da sessão
24/07/2025 (1.0.60)Subagentes: um ajudante com papel e contexto próprios
07/08/2025 (1.0.71)Linha de status: uma linha no rodapé, escrita por um script seu
14/08/2025 (1.0.81)Estilos de saída: um jeito de responder
09/10/2025 (2.0.12)Plugins e marketplaces: a embalagem que junta as peças, e o catálogo de onde ela se instala
16/10/2025 (2.0.20)Skills: instruções que o modelo carrega quando o pedido combina com a descrição delas
22/04/2026 (2.1.118)Temas próprios: as cores da interface
01/10/2026 (2.1.287)Mods: código que roda dentro do Claude Code e desenha na tela

Entre parênteses está a versão em que a peça entrou. Cada data é a da publicação dessa versão no npm, e a linha de cada peça está no changelog do repositório.

O CLAUDE.md e o MCP são a exceção: não têm linha de estreia, porque já estavam na documentação do dia do lançamento.

Eu leio essa tabela como uma escada, e em cada degrau faço a mesma pergunta: com isso eu conseguiria aquele painel? Para responder, uma distinção ajuda. O modelo é a IA, o Claude: lê texto e responde. O Claude Code é o programa que você abre no terminal: manda o texto ao modelo, executa as ferramentas que ele pede (ler um arquivo, rodar um comando) e desenha a tela. Um painel só pode vir do programa.

Mais um termo, que volta até o fim do post. Tudo o que o modelo tem na frente para responder (as instruções, a conversa, os arquivos lidos) é o contexto. Ele tem tamanho máximo e é medido em tokens, os pedaços de palavra em que o modelo conta o texto e pelos quais se cobra.

Cada peça e o que ela não alcança

CLAUDE.md. Um arquivo de texto, em geral na raiz do projeto, que o Claude Code entrega ao modelo no começo de toda sessão. É onde ficam as instruções permanentes: como rodar os testes, as convenções do time, o que nunca fazer. Use para o que vale sempre. Para o painel ele não serve: é texto para o modelo ler.

MCP. O Model Context Protocol liga o modelo a sistemas de fora: um servidor MCP entrega ferramentas novas, como consultar um banco de dados ou controlar um navegador. Use quando o modelo precisa alcançar algo que ele não enxerga. O painel continua fora de alcance: o MCP dá ferramentas ao modelo, e a tela segue a mesma.

Comando. Um prompt salvo num arquivo Markdown, que você chama digitando /nome. Serve para o pedido que se repete toda semana. Poupa a digitação, e só: o que chega ao modelo é o mesmo texto.

Hook. Na forma mais comum, um comando do sistema que o Claude Code roda sozinho num evento: no início da sessão, antes de uma ferramenta, depois de uma edição. É a peça para o que tem de acontecer sempre, sem depender de o modelo lembrar. O exemplo do kit é o responder-em-portugues, um echo no início da sessão. Das peças antigas, é a que vê os eventos passarem. Só que roda fora do Claude Code (nota: o mod vai rodar dentro), como um processo à parte, e não desenha nada.

Subagente. É o agente da pergunta do começo: um ajudante com papel próprio, ferramentas limitadas e um contexto só dele (quer dizer: não ocupa o da conversa), que faz a tarefa e devolve um resumo. Use para isolar o trabalho que encheria a conversa principal, como uma busca em dezenas de arquivos. No kit há dois, o pesquisador e o critico, cada um definido por um arquivo de instruções.

Linha de status. Uma linha no rodapé, impressa por um script seu, que recebe do Claude Code os dados da sessão, entre eles o custo. É a peça que mais se parece com o painel. Mas é uma linha só, sem clique, e o custo que chega a ela é o da sessão inteira.

Estilo de saída. Um jeito de responder: o papel, o tom e o formato das respostas de uma sessão. O professor do kit explica o porquê de cada passo. Muda o texto da resposta, não a tela.

Skill. Uma pasta com um arquivo SKILL.md: instruções que o modelo carrega quando o pedido combina com a descrição, ou quando você chama pelo nome. É a peça para o procedimento que você vive colando na conversa. Os comandos próprios, lá de cima, foram incorporados às skills, e os arquivos antigos continuam funcionando. No kit, a mensagem-de-commit escreve a mensagem de commit das mudanças já preparadas com git add.

Plugin. É a embalagem: uma pasta com skills, agentes, hooks, estilos e servidores MCP, que se instala de uma vez. Dentro dela, o arquivo .claude-plugin/plugin.json é o manifesto, que descreve o plugin. Use quando um segundo projeto, ou uma segunda pessoa, precisa da mesma configuração. O exemplos do kit leva uma skill, um agente, um hook e um estilo de saída. Sozinho, o plugin não acrescenta poder nenhum: empacota o que já existia.

Tema. As cores da interface, num arquivo JSON que parte de um tema pronto e troca algumas cores. O tinta-azul troca três. Muda a cor do que já está na tela.

Nenhuma dessas peças chega ao painel. O CLAUDE.md, o comando, o subagente, o estilo e a skill são texto para o modelo. O MCP dá ferramentas a ele. O hook e a linha de status rodam um script do lado de fora. O plugin embala, e o tema troca cores. Faltava a peça que roda por dentro.

Antes de chegar a ela, três seções sobre como as peças se instalam, porque foi ali que eu mais me perdi.

Skill, agente ou plugin: o que eu demorei a entender

Esta é a lista do que me confundiu, antes do detalhe. Marketplace é o catálogo de onde os plugins se instalam, e é o assunto da seção seguinte.

  • Skill, agente e plugin não são alternativas. A skill é uma instrução. O agente é quem executa uma tarefa numa conversa à parte. O plugin é a pasta que entrega os dois.
  • Mod é plugin, não skill. A skill é um texto que o modelo lê. O mod é código que o Claude Code executa. Os dois se instalam do mesmo jeito.
  • Não há build. Nada de npm install nem de empacotador: o Claude Code lê o código direto da pasta.
  • O que se instala é a pasta inteira. Cada item do catálogo aponta para uma pasta, e tudo o que está nela vem junto.
  • Uma peça avulsa não precisa de plugin.json. Para instalar uma skill sozinha, basta a entrada dela no catálogo, que faz o papel de manifesto.
  • O nome do repositório e o nome do marketplace são coisas diferentes. O meu repositório se chama claude-code-kit, e o marketplace, cesarschutz. O primeiro aparece na hora de cadastrar; o segundo, na hora de instalar.
  • Não precisa de conta empresarial. Um marketplace é um repositório git. Um repositório público no GitHub basta.
  • A sessão aberta continua na versão antiga. Depois de atualizar um plugin, a sessão que já estava aberta segue com a versão que carregou, até um /reload-plugins ou até ser reaberta.

Marketplace: o catálogo num repositório

Um marketplace é um repositório com um arquivo .claude-plugin/marketplace.json, de três campos obrigatórios: name, owner e plugins. Cada entrada de plugins é um item instalável, com um name e um source, que é a pasta dele dentro do repositório. Este é um pedaço do meu, só com os campos de que este post fala e com as descrições encurtadas:

.claude-plugin/marketplace.json JSON
{
"name": "cesarschutz",
"owner": { "name": "Cesar Schutz" },
"plugins": [
{
"name": "csr-cockpit",
"source": "./plugins/csr-cockpit",
"description": "Mod: painel ao lado da conversa..."
},
{
"name": "explicar-erro",
"source": "./skills/explicar-erro",
"description": "Exemplo de skill: explica um erro ou stack trace...",
"skills": ["./"] (nota: é este campo que dispensa o plugin.json)
}
]
}

A primeira entrada é um plugin completo: a pasta plugins/csr-cockpit tem o seu .claude-plugin/plugin.json. A segunda é uma peça avulsa: não há plugin.json, e a própria entrada diz o que a pasta traz, no campo skills.

Instalar e atualizar seguem o caminho da lousa, em cinco passos, do repositório no GitHub à sessão aberta na sua máquina. O play desenha tudo desde o início, e um clique num passo da lista leva a lousa até ele.

claude-code-kit o repositório, no GitHub marketplace.json name: cesarschutz clona cesarschutz o catálogo, clonado 1 2 plugins/csr-cockpit version 0.5.0 0.6.0 copia csr-cockpit version 0.5.0 3 0.5.0 0.6.0 atualiza 0.6.0 5 skills/explicar-erro o número não subiu 4 O seu Claude Code a sua máquina commits no repositório mais commits sessão aberta 0.5.0 até /reload-plugins

A regra dos dois últimos passos está na referência de carregamento dos plugins: o Claude Code calcula uma versão para cada plugin instalado e só vê atualização quando ela muda. Com o campo version no plugin.json, vale esse número, não importa quantos commits eu publique. Sem ele, que é o caso das peças avulsas, a versão é o commit.

Num marketplace de terceiros, como o meu, a atualização automática vem desligada: quem instalou roda o claude plugin update quando quiser a versão nova.

conferido em out/2026

Os comandos

Estes são os comandos que eu usei. O resto está na referência dos comandos de plugin.

No terminal:

ComandoO que faz
claude plugin marketplace add <dono>/<repo>cadastra um marketplace a partir de um repositório do GitHub
claude plugin install <item>@<marketplace>instala um item do catálogo
claude plugin listlista o que está instalado, com a versão e o estado
claude plugin details <item>mostra as peças de um plugin e o custo delas em tokens
claude plugin marketplace update <marketplace>renova o catálogo, sem mexer no que está instalado
claude plugin update <item>@<marketplace>atualiza um plugin para a versão mais nova do catálogo
claude plugin uninstall <item>@<marketplace>remove o plugin
claude plugin validate <pasta>confere o manifesto e as peças de uma pasta; com --strict, os avisos viram erro
claude plugin test <pasta>roda os testes de um mod
claude --plugin-dir <pasta>abre uma sessão com o plugin de uma pasta local, sem instalar; a cópia local ganha da instalada

Dentro da sessão:

ComandoO que faz
/pluginabre a tela de plugins e marketplaces
/reload-pluginsaplica na sessão aberta o que mudou nos plugins
/theme e /output-styleescolhem o tema e o estilo de saída
/cockpitabre e fecha o painel do csr-cockpit

O que é um mod

O mod é um plugin com uma diferença. Num plugin comum, o arquivo hooks/hooks.json lista os hooks: que comando do sistema rodar em cada evento. No mod, o mesmo arquivo aponta um módulo, que é um arquivo de código.

plugins/csr-cockpit/hooks/hooks.json JSON
{ "modules": ["./register.tsx"] } (nota: o código do mod)

Esse módulo exporta uma função register(on). Dentro dela, cada on(...) liga uma função a um evento do Claude Code: uma chamada de ferramenta, o início de um turno, um pedaço da interface sendo desenhado. A função recebe três coisas: $, a API dos mods; e, o evento; e next, que passa o evento adiante, como num middleware (nota: sem chamar next, o hook responde). Este é o hook do cockpit que registra um subagente novo, com o miolo resumido num comentário:

plugins/csr-cockpit/hooks/register.tsx tsx
export const register: Register = on => {
on('agent.spawn', async ($, e, next) => {
const iniciado = await next(e) (nota: o evento segue adiante como chegou)
// guarda o agente e o pedido dele no estado da sessão
return iniciado
})
}

A documentação também chama de hook cada função dessas. A ideia é a do hook de antes, reagir a um evento, só que agora é código rodando dentro do Claude Code, que pode observar o evento, reescrevê-lo ou responder no lugar do programa. Com isso, um mod:

  • roda dentro do Claude Code, no processo dele, e não como um script à parte;
  • guarda estado (lembra o que viu) entre um evento e outro, pelo tempo da sessão;
  • registra um comando /nome que executa código na hora, sem passar pelo modelo;
  • desenha: um painel ao lado da conversa e uma faixa acima do prompt, a caixa onde se digita o pedido.

Das peças da tabela, é a primeira que roda ali dentro e a primeira que desenha.

A figura junta as peças no lugar em que cada uma age. Do lado de fora ficam o texto que vai para o contexto do modelo (azul), as ferramentas do MCP (âmbar) e o script do hook (verde), quase tudo dentro da pasta do plugin (roxo). Do lado de dentro, só o mod (petróleo): o código dele vem na mesma pasta, recebe os eventos, guarda estado e desenha o painel e a faixa. Com o mouse numa cor da legenda, só aquele papel fica aceso.

Claude Code A tela CLAUDE.md SKILL.md critico.md professor.md Contexto do modelo o que ele lê e pode usar MCP ferramentas Hook script de fora Plugin a pasta que se instala register.tsx o código do mod Mod código por dentro estado painel faixa desenha eventos texto para o modelo ferramentas (MCP) script de fora (hook) a pasta (plugin) o mod
Cada cor é um papel: texto para o modelo (azul), ferramentas do MCP (âmbar), o script do hook (verde), a pasta do plugin (roxo) e o mod, por dentro (petróleo).

Os mods passaram por um período de acesso antecipado em setembro de 2026, só para quem ligava uma variável de ambiente, e são oficiais a partir da 2.1.287, ligados por padrão.

conferido em out/2026

O cockpit

O csr-cockpit é um painel ao lado da conversa, aberto e fechado com /cockpit, com cinco abas. Cada uma responde a uma pergunta:

AbaA perguntaO que mostra
AgentesQuem está trabalhando agora, e em quê?cada subagente com o modelo, o tempo, o contexto dele, o custo atribuído, as chamadas e a tarefa
DiffsO que mudou neste turno?cada edição, com as linhas que saíram e as que entraram
ContextoQuanto do contexto sobra, e quanto já custou?o percentual usado, o custo da sessão e do último turno e o limite de uso do plano
ArquivosO que foi lido e rodado, e por quem?os arquivos lidos e os comandos Bash, com quem leu ou rodou, o status e a duração
TurnosO que aconteceu, na ordem?um registro por pedido, com a duração, o custo, as ferramentas e as falhas

A aba Agentes responde à primeira pergunta do post. O custo de cada agente é a parte do custo da sessão que o cockpit atribuiu a ele. Na sessão das imagens, foram US$ 0,04 para um agente e US$ 0,02 para o outro:

A aba Agentes do csr-cockpit com dois subagentes concluídos. O primeiro levou 28 segundos, ficou com 16,4 mil tokens de contexto, teve custo atribuído de 4 centavos de dólar e fez 9 chamadas. O segundo levou 7,5 segundos, ficou com 13,3 mil tokens, teve custo atribuído de 2 centavos e fez 1 chamada.
A aba Agentes, com dois subagentes concluídos e o custo que o cockpit atribuiu a cada um (desenho do README do csr-cockpit) · github.com

A aba Turnos responde à segunda. Cada pedido meu é um turno, com o que ele custou e o que desencadeou. O custo do turno também é conta do cockpit (nota: o fim menos o começo): quanto o custo da sessão subiu do começo ao fim do pedido.

A aba Turnos do csr-cockpit com três turnos de uma sessão que custou 15 centavos de dólar. O turno 3 levou 7,5 segundos e custou 2 centavos. O turno 2 levou 9,3 segundos e custou 2 centavos. O turno 1, que rodou dois agentes em segundo plano, levou 27 segundos, teve 2 falhas, custou 11 centavos e usou 13 ferramentas.
A aba Turnos, com a duração, o custo e as ferramentas de cada pedido (desenho do README do csr-cockpit) · github.com

Clicar no nome de um agente, de um comando Bash ou de um turno abre o detalhe: o pedido, as chamadas e a resposta. E acima do prompt fica uma linha de resumo, com o painel aberto ou fechado:

A linha de resumo do csr-cockpit acima do prompt: contexto em 22%, 44,8 mil tokens com mais 1,1 mil do último turno, custo de 15 centavos de dólar com mais 2 centavos do último turno, limite de uso de 5 horas em 17% e de 7 dias em 64%, e 2 agentes concluídos.
A linha de resumo: entre parênteses, o que o último turno somou (desenho do README do csr-cockpit) · github.com

A regra do cockpit é só observar. Nenhum hook dele bloqueia ou altera uma chamada de ferramenta ou uma resposta do modelo: o evento passa adiante como chegou, e o resultado volta como veio.

Ele não faz chamada de rede e não grava arquivo. Do disco, lê uma coisa só: o conteúdo antigo de um arquivo antes de uma escrita, para o diff mostrar o que mudou de verdade. O que ele registra fica no estado da sessão e some com ela.

Nada nele gasta token, porque o mod não chama o modelo. A única coisa que dispara requisições a mais é o botão “Contagem exata”, da aba Contexto, que troca a estimativa local pela contagem de verdade. Quem faz essas requisições é o Claude Code, e só quando eu aperto o botão.

Como se testa um mod

Testei o cockpit em três camadas, da mais barata para a mais cara.

claude plugin validate. Num mod, além de conferir o manifesto, ele lista os eventos que o mod escuta e as chamadas que faz à API, sem executar nada. Serve também para auditar o mod de outra pessoa antes de instalar. No cockpit, a lista não tem chamada de rede, de gravação de arquivo nem de processo; do disco, só aquela leitura.

claude plugin test. Roda os testes do mod contra um Claude Code de mentira, sem login e sem rede: o teste dispara os eventos, monta o painel, aperta os botões e confere o que foi desenhado. O cockpit tem 15 testes, e um deles confere a regra de só observar.

Carimbo: rodado em 02/10/2026: 15 de 15

Uma sessão de verdade. Abri o Claude Code num projeto de exemplo, com o mod carregado por claude --plugin-dir. Carregada assim, a pasta fica vigiada: o Claude Code recarrega o mod a cada arquivo salvo. É a única das três camadas que mostra o painel desenhado no terminal.

O que ainda não dá

São os limites da versão 0.5.0, em 02/10/2026.

O mais importante: o custo por agente não é um número oficial. O Claude Code informa o custo da sessão inteira, não o de cada agente. O cockpit reparte esse custo: ao fim de cada resposta do modelo, o que o custo da sessão subiu vai para quem deu a resposta. Cada aumento vai para um dono só, então nada é contado duas vezes, e o que não vai para agente nenhum é o gasto da conversa principal: na sessão das imagens, os dois agentes ficaram com US$ 0,06 dos US$ 0,15. É uma atribuição feita pelo mod e, se duas respostas terminam no mesmo instante, uma fração pode cair no agente vizinho.

O próprio valor em dólar é uma estimativa: o Claude Code calcula a preço de tabela, a partir dos tokens. Para quem paga assinatura ele não é cobrança, e serve para comparar um agente com outro.

Os outros limites:

  • Não há custo por comando Bash. O cockpit mostra custo por agente e por turno. Um comando Bash aparece com o status e a duração.
  • O raciocínio interno de um agente não aparece. O Claude Code não o expõe. O detalhe mostra só o texto que o agente escreveu.
  • O código de saída do Bash não vem como campo. Em caso de falha, o cockpit tira o código do texto de erro. Em caso de sucesso, a linha mostra só a marca de concluído e a duração.
  • A API de mods ainda pode mudar de uma versão para outra.
  • No aplicativo de desktop eu não conferi. Ele traz a própria cópia do Claude Code, que pode estar numa versão mais antiga que a do terminal, e o desenho do painel eu só conferi no terminal.

O repositório

O claude-code-kit é público, com licença MIT. Em 02/10/2026 ele tem:

  • o csr-cockpit, na versão 0.5.0;
  • o exemplos, um plugin com uma skill, um agente, um hook e um estilo de saída;
  • sete peças avulsas: duas skills, dois agentes, um estilo de saída, um tema e um hook.
(nota: cada linha instala sozinha)

Para instalar o cockpit são dois comandos, e ele pede o Claude Code 2.1.287 ou mais novo:

Janela do terminal
claude plugin marketplace add cesarschutz/claude-code-kit
claude plugin install csr-cockpit@cesarschutz

Lembrete: Se o /cockpit não aparecer depois de instalar, confira a versão com claude --version.

O README.md explica o catálogo, e o CONTRIBUTING.md, como acrescentar um item. Vou continuar colocando coisas lá.

Para ir além do básico, eu começaria pela página Extend Claude Code, que compara as peças e diz quando usar cada uma, e pelos mods de exemplo da Anthropic.

Fontes