Tokenscope

Servidor MCP que permite que agentes de IA analisem o custo da sessão do Claude Code e a atribuição de contexto — uso de tokens, releituras em cache e gravações em cache. Local, somente leitura.

Documentação

tokenscope ⏣

Veja quanto sua sessão de codificação com IA realmente custou — e o que está consumindo seu contexto. Um CLI local, somente leitura, que analisa os logs de sessão do Claude Code e mostra para onde vai o dinheiro: saída do modelo vs. contexto sendo reenviado a cada turno (os 60%+ ocultos da maioria das contas).

$ npx @wartzar-bee/tokenscope

  tokenscope ⏣  latest session
  ──────────────────────────────────────────────────────
  Total cost   $868.84   over 967 model turns

  Where the money went
  output (model writing)     ████░░░░░░░░░░░░░░░░░░░░  16%  $137.24
  cache read (re-sent ctx)   ████████████████░░░░░░░░  66%  $577.59
  cache write (new ctx)      ████░░░░░░░░░░░░░░░░░░░░  18%  $153.67

  Context size per turn  (peak 822k · avg 404k · now 822k tokens)
  ▁▁▁▁▁▂▂▂▂▂▂▂▃▃▃▃▃▃▃▄▄▄▄▄▅▅▅▅▅▆▆▆▆▇▇▇▇▇▇█

  Insights
  • Re-sent (cached) context cost $577.59 (66% of spend) — context re-read every turn.
  • Peak context ~822k tokens — /compact or a fresh session would cut per-turn cost.
  • Only 16% of spend is the model's actual output.

(Uma sessão real, preços padrão do Opus. Seus números serão diferentes — os preços são substituíveis.)

Por quê

Codificação agêntica (Claude Code, etc.) gera contas surpresa, e a causa é mundana: conforme a sessão cresce, o contexto inteiro é reenviado a cada turno, então o custo aumenta mesmo quando o modelo escreve pouco. Dashboards existentes mostram totais; tokenscope mostra a atribuição — saída vs. leitura de cache vs. escrita de cache vs. entrada nova, a curva de crescimento do contexto por turno, custo por modelo, gasto de subagentes e quais ferramentas preenchem seu contexto — com insights concretos de "corte isso".

Experimente em 10 segundos (sem precisar de logs do Claude Code)

npx @wartzar-bee/tokenscope --demo

Executa em uma sessão de amostra incluída para que você veja o relatório completo antes de apontá-lo para seus próprios logs — sem configuração, nada para ajustar. (A amostra é sintética, para demonstração.)

Instalar / executar

Sem instalação — executa via npx:

npx @wartzar-bee/tokenscope               # your most recent Claude Code session
npx @wartzar-bee/tokenscope --demo        # a bundled sample session — no logs needed
npx @wartzar-bee/tokenscope --all         # aggregate every session
npx @wartzar-bee/tokenscope <file|dir>    # a specific session .jsonl
npx @wartzar-bee/tokenscope --version     # print the installed version and exit
npx @wartzar-bee/tokenscope --json        # machine-readable
npx @wartzar-bee/tokenscope --share       # privacy-safe shareable summary (markdown + SVG card)
npx @wartzar-bee/tokenscope --share-svg   # just the SVG "cost report card"
npx @wartzar-bee/tokenscope scan          # static token footprint of a source dir (the engine behind ci-guardrail)
npx @wartzar-bee/tokenscope scan --diff ../base   # cost delta of the current dir vs a base dir — catch a regression before you push
npx @wartzar-bee/tokenscope scan --max-total 50000            # exit 1 if the footprint exceeds a budget — a local cost gate
npx @wartzar-bee/tokenscope scan --diff ../base --max-delta 2000   # exit 1 if the diff adds more than N tokens

~/.claude/projects/**/*.jsonl. Somente leitura, local, sem rede, sem telemetria — abra o código-fonte; nada sai da sua máquina.

Portão de custo local (pré-push / pré-commit)

--max-total N / --max-delta N fazem scan sair com código 1 quando a pegada de tokens (ou o delta de um diff) estoura um orçamento — a mesma verificação que o ci-guardrail executa no CI, mas localmente, antes de você fazer push. Vincule o orçamento absoluto a um hook do git para que um prompt/config descontrolado nunca saia da sua máquina:

# .git/hooks/pre-push  (chmod +x)
npx -y @wartzar-bee/tokenscope scan --dir prompts --max-total 50000 \
  || { echo "prompt token footprint over budget — trim before pushing"; exit 1; }

Dentro do orçamento, imprime o relatório e sai com código 0; acima do orçamento, imprime uma linha BLOCKED: e sai com código 1. Sem a flag --max-*, scan apenas reporta (código 0), então é opt-in. --max-delta controla o delta entre dois diretórios no disco (scan --diff <baseDir> --max-delta N) — aponte-o para uma árvore base com checkout quando quiser um portão de regressão em vez de um limite absoluto.

Usando o framework pre-commit? Adicione tokenscope ao seu .pre-commit-config.yaml — sem scripts de hook do git:

repos:
  - repo: https://github.com/wartzar-bee/tokenscope
    rev: v0.2.6
    hooks:
      - id: tokenscope
        args: ["--dir", "prompts", "--max-total", "50000"]   # optional — omit to just report

language: node, zero dependências. Sem args, imprime a pegada (código 0); adicione --max-total N (ou --diff <baseDir> --max-delta N) para falhar o commit acima do orçamento.

Compartilhe sua conta (seguro para privacidade)

--share emite um resumo compacto construído apenas com números agregadossem caminhos de arquivo, sem conteúdo de prompt/resposta — então é seguro colar em público:

  • Markdown para Reddit / Discord / uma issue do GitHub (total, a divisão saída/leitura de cache/escrita de cache/entrada nova com %, contexto pico/médio, e a manchete "X% do gasto foi contexto reenviado").
  • Um SVG "cartão de relatório de custo" autocontido (--share-svg) — sem dependências binárias; renderiza inline no GitHub e é trivialmente compartilhável.
  • Como você se compara — ambas as formas agora respondem "minha sessão é incomum?" contra um conjunto de referência offline incluído de sessões reais (ex.: "mais eficiente em cache do que ~80% das sessões medidas; sessão mediana reenvia 24%"). É uma régua de referência, não um censo — distribuição honesta completa em tokenscope.pages.dev/benchmark.

Prefere não tocar em uma flag de terminal? A mesma renderização roda inteiramente no seu navegador na superfície web em web/: cole sua saída --json e ele desenha o relatório completo + o cartão SVG localmente — nada é enviado.

Use de um agente de IA (servidor MCP)

Há um servidor MCP que expõe o mesmo motor a agentes de IA / clientes MCP (Claude Desktop, Claude Code, etc.) como ferramentas: analyze_claude_cost, get_cost_benchmark e tokenscope_share_summary. Adicione-o à sua configuração MCP:

{ "mcpServers": { "tokenscope": { "command": "npx", "args": ["-y", "@wartzar-bee/tokenscope-mcp"] } } }

Então pergunte ao seu agente "use tokenscope para analisar minha última sessão do Claude Code." É o mesmo motor local, somente leitura — veja mcp/README.md.

Preços

Usa preços padrão documentados (multiplicadores de cache Anthropic: escrita 1,25×/2×, leitura 0,1× da entrada). Verifique e substitua para seu modelo/tier exato via ./.tokenscope.json:

{ "pricing": { "claude-opus-4": { "in": 15, "out": 75 } } }

Modelos desconhecidos são sinalizados (nunca contados silenciosamente como $0). As contagens de tokens são lidas diretamente dos logs; custo = essas contagens × os preços mostrados.

Parte do kit de custo wartzar-bee

tokenscope é o motor de medição por trás de uma ferramenta irmã, e um de três projetos de custo de código aberto:

  • ci-guardrail — uma GitHub Action que executa tokenscope no CI para prever o delta de custo de tokens de um pull request e comentar nos arquivos responsáveis (somente relatório, ou falhar o build acima de um limite): uses: wartzar-bee/ci-guardrail@v1.
  • enclave — o runtime e sandbox self-hosted, com foco em segurança, no qual a frota de agentes wartzar-bee roda (Apache-2.0).

Se você acha tokenscope útil, ci-guardrail é a maneira zero-config de executá-lo em todo PR.

Por que isso existe — leitura adicional

tokenscope surgiu de rodar agentes autônomos e observar a conta. Os artigos por trás disso:

Status / roadmap

  • v0.1: custo de sessão do Claude Code + atribuição de contexto + insights. 20/20 testes unitários na matemática de custo (npm test).
  • Próximo (baseado em evidências): atribuição de tokens por ferramenta/arquivo; alertas diários/orçamentários; um medidor ao vivo --watch; suporte a logs OpenAI/Codex.

MIT. Não afiliado à Anthropic.