Você terminou uma tarefa longa e não sabe dizer se ela custou caro, se demorou por causa do modelo ou porque você ficou 40 minutos lendo a saída antes de responder. O comando /cost responde as duas perguntas com um bloco de texto só, sem dashboard e sem integração.
Ele existe desde as primeiras versões herdadas, mas quase ninguém abre: a maioria acha que o número em dólar é a fatura do plano e fecha o comando. Não é. Entender de onde o valor sai é o que torna a leitura útil.
O que o comando /cost mostra?
Ele imprime cinco blocos: custo total, duração de API, duração de parede, linhas de código alteradas e uso separado por modelo. É um resumo da sessão atual, não do mês.
| Linha na saída | O que mede |
|---|---|
Total cost | Custo estimado em dólar, calculado localmente a partir dos tokens. |
Total duration (API) | Tempo somado das chamadas ao modelo, incluindo as que deram certo e as que foram repetidas. |
Total duration (wall) | Tempo de relógio desde o início do processo, ou desde a troca de sessão. Inclui o tempo em que você estava lendo. |
Total code changes | Linhas adicionadas e removidas pelos edits do agente na sessão. |
Usage by model | Tokens de entrada, saída, cache de leitura e cache de escrita, por modelo, com o custo de cada um. |
Quando a sessão não teve nenhuma chamada ainda, a última linha aparece como Usage: 0 input, 0 output. É o único caso em que o bloco vem vazio.
Como rodar o /cost?
Dentro da sessão interativa, digite o comando sozinho e aperte Enter:
/cost
Ele também funciona em modo headless, porque o comando declara suporte a execução não interativa. Útil para medir um script que você roda no CI:
verboo -p "/cost"
De onde vem o valor de Total cost?
O número é calculado no seu computador, multiplicando os tokens da sessão por uma tabela de preço embutida no binário. Nenhuma chamada de cobrança acontece para montar essa linha.
A conta, em dólar por milhão de tokens, é esta:
custo = entrada / 1M * preco_entrada
+ saida / 1M * preco_saida
+ cache_read / 1M * preco_cache_read
+ cache_write / 1M * preco_cache_write
+ buscas_web * 0.01
Os preços por faixa de modelo na tabela do binário, na versão 0.15.41:
| Faixa na tabela | Entrada | Saída | Cache leitura | Cache escrita |
|---|---|---|---|---|
| Haiku 3.5 | 0,80 | 4 | 0,08 | 1 |
| Haiku 4.5 | 1 | 5 | 0,10 | 1,25 |
| Sonnet 4.x | 3 | 15 | 0,30 | 3,75 |
| Opus 4.5 a 4.7 | 5 | 25 | 0,50 | 6,25 |
| Opus 4 e 4.1 | 15 | 75 | 1,50 | 18,75 |
| Opus 4.6 em fast mode | 30 | 150 | 3 | 37,50 |
Valores em dólar por milhão de tokens, como estão em src/utils/modelCost.ts. Se o seu provedor cobra diferente, a linha Total cost continua sendo a conta do binário, não a do provedor.
Duas consequências práticas:
- Cache muda a ordem de grandeza. No Sonnet, cache de leitura custa 0,30 contra 3,00 de entrada limpa, dez vezes menos. Sessão que reaproveita contexto pesa muito menos do que o volume de tokens sugere.
- Modelo fora da tabela distorce a leitura. Quando o modelo não tem preço cadastrado, o binário usa o preço do modelo padrão e acrescenta o aviso
(costs may be inaccurate due to usage of unknown models). Se esse aviso aparecer, trate o número como ordem de grandeza.
O valor é exibido com duas casas decimais quando passa de meio dólar e com quatro casas abaixo disso. Ver $0.0312 não significa cobrança fracionada: significa sessão curta.
Por que a duração de API é menor que a duração de parede?
Porque a duração de parede conta o relógio inteiro, inclusive o tempo em que o agente estava parado esperando você. A duração de API conta só o tempo dentro das chamadas ao modelo.
Essa diferença é o diagnóstico mais barato que o comando oferece. Parede de 2h com API de 9min quer dizer que o gargalo foi a sua leitura, não a inferência. Parede de 40min com API de 35min quer dizer o contrário: o agente trabalhou quase o tempo todo, e o próximo passo é olhar modelo e tamanho de contexto.
Como usar a linha Usage by model?
Ela separa o consumo por modelo, o que responde qual parte da sessão pesou. Cache de leitura, cache de escrita e busca web só aparecem quando são maiores que zero, então linha curta é sinal de sessão sem reaproveitamento.
Leitura típica: se 80% do custo está no modelo mais caro e a tarefa era renomear arquivo, o ajuste não é escrever prompt melhor. É trocar de modelo com /model para o trecho mecânico e voltar ao modelo forte só na parte difícil. A tabela por modelo mostra o tamanho do desvio, não só a impressão.
/cost ou /usage: qual é a diferença?
/cost mede o que a sessão consumiu. /usage mostra a cota do plano e quando ela reseta. São perguntas diferentes e os dois números não se substituem.
| Pergunta | Comando | O que responde |
|---|---|---|
| Quanto esta sessão consumiu? | /cost | Custo, duração, linhas e tokens por modelo. |
| Quanto ainda tenho no plano? | /usage | Limite da cota e janela de reset. |
| Onde o contexto está pesando? | /context | Distribuição do contexto por categoria. |
Se a dúvida é por que o limite acabou rápido, o comando é /usage para ver o consumo e /context para achar o que está ocupando janela. O /cost entra depois, para comparar sessões entre si.
Como ver o custo de cada requisição, não só o total?
O resumo agrega a sessão. Para ver requisição por requisição, existe uma variável de ambiente que o binário lê e que não aparece na interface: ela escreve uma linha JSON por chamada no stderr.
VERBOO_LOG_TOKEN_USAGE=verbose verboo -p "seu prompt" 2> usage.jsonl
Cada linha traz modelo, tokens de entrada e saída, cache, taxa de acerto de cache e cost_usd daquela chamada. Com esse arquivo, dá para somar por modelo em uma linha de jq:
jq -s 'group_by(.model) | map({model: .[0].model, usd: (map(.cost_usd) | add)})' usage.jsonl
É um recurso de depuração, não uma interface estável: se um dia a variável mudar de nome, o grep que encontra é VERBOO_LOG_TOKEN_USAGE em src/cost-tracker.ts.
Checklist para ler a sessão em 30 segundos
- Rode
/cost. - Compare duração de API com duração de parede. Diferença grande aponta para espera humana.
- Olhe
Usage by modele ache o modelo que concentra o custo. - Se o aviso de modelo desconhecido aparecer, trate o valor como estimativa.
- Se a pergunta for cota, troque para
/usage.
Medir a sessão serve para escolher onde gastar a próxima tentativa. Quando o plano não cobra por token, o número do /cost deixa de ser fatura e vira sinal de esforço e de escolha de modelo.
Quer rodar a mesma medição num modelo mais forte sem contar token? O /cost continua disponível na Verboo Code, e a comparação entre sessões passa a ser sobre tempo e qualidade.



