A janela de contexto do seu agente não é lixeira.
O token-guard mede o custo real do repositório em tokens e barra as chamadas que estouram a janela — varredura sem escopo, leitura cega de arquivo grande, acesso a node_modules, dump de árvore no shell. Todo bloqueio devolve a alternativa barata, pronta para reexecutar: nunca um deny cego.
Vereditos reais do núcleo de decisão — as mesmas regras que rodam no seu harness.
É quanto custa só a lista dos nomes dos arquivos de um monorepo de 215 mil — antes do agente ler uma linha de código. A janela é fixa; o repositório não. Por isso a seleção do que entra é a arquitetura, e é exatamente ela que este kit governa.
Cinco regras. Cada bloqueio ensina.
broadScan
Varredura sem escopo devolve a lista de caminhos de todo o repo. O custo não é a busca — é a saída.
✓ glob "**/*.java"
✓ glob com paths=["src/main"]
blindRead
Ler um arquivo grande inteiro para usar 20 linhas. Acima de 50KB, peça a faixa.
✓ Read com view_range [40, 90]
✓ arquivo pequeno inteiro
noisePath
node_modules, target, dist, .git são artefato: leia a fonte que os produz, nunca o artefato.
✓ allowlist para o caso legítimo
shellDump
O shell é a porta dos fundos: um comando despeja a árvore inteira e cada linha é faturada.
✓ "| Select-Object -First 50"
✓ grep -rn TODO src/ (escopado)
bigResult (pós-execução)
Resultado legítimo que se revela gigante? Vira stub com preview; a versão integral vai para o disco e a dica junto.
✓ preview + .token-guard/results/ + "refaça com head_limit"
A economia tem número próprio.
Fontes: bench/replay-transcripts.cjs (replay real) · bench/savings.cjs (simulação com premissas declaradas) · bench/latency.cjs (meça na sua máquina). Limitações declaradas na documentação.
Onde bloqueia, onde orienta. Sem maquiagem.
| Harness | Mecanismo | Bloqueia? | Cobre |
|---|---|---|---|
| Copilot CLI / App | extensão in-process | sim | 4 regras + bigResult real |
| Claude Code | PreToolUse + PostToolUse + UserPromptSubmit | sim | 4 regras + contrato injetado + bigResult* *substituição real no Claude Code ≥ 2.1.121 |
| Cursor (IDE recente) | preToolUse genérico + eventos nomeados | sim | todas as 4 regras |
| VS Code / Windsurf / Zed / JetBrains | MCP server | orienta | token_audit · token_guard_check · mcp-cost |
Três comandos. Sem npm install.
npx @allansantos-dev/token-guard auditnpx @allansantos-dev/token-guard init --target all --mode warnnpx @allansantos-dev/token-guard testAlvos: copilot · claude · cursor · mcp · repo (viaja no git). Emergência: TOKEN_GUARD=off.
Todo bloqueio devolve a alternativa barata, pronta para reexecutar. Um guard que só diz "não" transfere o problema para a pessoa.
Regra quebrada, payload hostil, config corrompida: tudo resulta em liberar. Um guard de economia jamais derruba a sessão que deveria baratear.
Só Node stdlib — para rodar dentro de harness empacotado e em máquina corporativa sem npm install.
Latência medida e reproduzível por bench; economia com premissas declaradas e limitações honestas na documentação.