claude -p com --tools "" gastando 400 mil tokens por chamada: como cortar com --strict-mcp-config
Voltar para o Blog
Artigoclaude codetroubleshootingmcpagente de programaçãodev tools

claude -p com --tools "" gastando 400 mil tokens por chamada: como cortar com --strict-mcp-config

Mafra2 de novembro de 20265 min de leitura

Você roda o Claude Code em script com claude -p --tools "" achando que, sem ferramentas, a chamada fica leve. Com login de assinatura e conectores do claude.ai ativos, acontece o contrário: um usuário mediu 429.388 tokens de entrada por chamada para um prompt de uma linha (issue anthropics/claude-code #106413, Claude Code 2.1.312, 31/10/2026). A correção é uma flag: --strict-mcp-config derrubou o mesmo teste para 2.854 tokens.

Por que claude -p --tools "" gasta tanto token?

Porque --tools "" remove também a ferramenta ToolSearch, e sem ela o Claude Code carrega a definição completa de todas as ferramentas MCP logo no início, em vez de buscá-las sob demanda. A documentação oficial diz isso na seção Configure tool search: "If you deny ToolSearch or leave it out of --tools, MCP tools load upfront instead."

O segundo ingrediente são os conectores do claude.ai (Gmail, Slack, Drive e afins). Segundo a mesma página, eles só são buscados quando a autenticação ativa é o login de assinatura do claude.ai. Com ANTHROPIC_API_KEY, ANTHROPIC_AUTH_TOKEN ou apiKeyHelper ativos, não entram.

Há uma pegadinha no nome da flag: a referência da CLI avisa que --tools "doesn't affect MCP tools". Ele restringe as ferramentas embutidas. As de MCP continuam lá, agora carregadas por inteiro.

Quanto cada configuração custa, medido?

Os números abaixo são do autor da issue #106413 (Claude Code 2.1.312, login de assinatura, mesmo prompt de uma linha, tokens de entrada somando cache) e de um segundo usuário que reproduziu no Mac com a 2.1.316 e o Haiku. Não são medição nossa.

ConfiguraçãoTokens de entradaFonte
claude -p --tools ""429.388autor da issue
+ --strict-mcp-config2.854autor da issue
ENABLE_CLAUDEAI_MCP_SERVERS=false, sem strict2.854autor da issue
--strict-mcp-config --mcp-config com 1 servidor próprio3.326autor da issue
claude -p puro~60 milsegundo usuário
claude -p --tools ""~276 milsegundo usuário
claude -p --tools "" --strict-mcp-config~5 milsegundo usuário

A leitura: com claude -p puro, os conectores custam só o nome, porque a busca de ferramentas está ligada. É a combinação --tools "" mais conectores que explode. O total varia com quantos conectores a sua conta tem, então meça o seu caso antes de comparar.

Fluxograma: claude -p --tools vazio carrega MCP inteiro, medir com --output-format json, cortar todos os MCP com --strict-mcp-config ou só os conectores com ENABLE_CLAUDEAI_MCP_SERVERS=false; se precisar de um MCP, usar strict com --mcp-config de um servidor
Do sintoma à correção. Fontes: documentação oficial do Claude Code (mcp e cli-reference) e issue #106413.

Como medir quantos tokens a sua chamada está gastando?

Use --output-format json e leia o bloco usage da resposta. Some entrada, criação de cache e leitura de cache, que é como a issue mediu:

claude -p "responda OK" --tools "" --output-format json \
  | jq '.usage | .input_tokens + .cache_creation_input_tokens + .cache_read_input_tokens'

Rode a mesma linha com e sem --strict-mcp-config. Se a diferença for de centenas de milhares, você está no caso deste artigo. Para ver quais servidores estão conectados, /mcp no modo interativo lista cada um e marca os que vêm do claude.ai.

Como cortar os conectores numa chamada que não usa ferramenta?

Adicione --strict-mcp-config. A flag faz o Claude Code usar só os servidores passados em --mcp-config, e como você não passou nenhum, fica com zero. No código do -p, a busca dos conectores do claude.ai também é pulada quando a flag está presente.

claude -p "classifique este texto: ..." \
  --tools "" \
  --strict-mcp-config \
  --output-format json

É a correção que o próprio autor da issue adotou no programa dele.

E se o script precisa de um servidor MCP próprio?

Você tem duas saídas documentadas, dependendo do que quer manter.

  • Só o servidor que o script usa: --strict-mcp-config junto com --mcp-config apontando para um arquivo com aquele servidor. Na medição da issue, isso custou 472 tokens a mais que o strict puro, que é o peso da ferramenta daquele servidor.
  • Todos os seus servidores, sem os conectores do claude.ai: desligue só os conectores, por variável de ambiente ou por configuração.
# um servidor só
claude -p "..." --tools "" --strict-mcp-config --mcp-config ./one-server.json

# seus servidores, sem os conectores do claude.ai (vale para a sessão do shell)
ENABLE_CLAUDEAI_MCP_SERVERS=false claude -p "..." --tools ""

Para deixar permanente, a doc oficial (seção Disable claude.ai connectors) indica a chave abaixo em qualquer escopo de settings. Servidores passados via --mcp-config não são afetados.

{
  "disableClaudeAiConnectors": true
}

Se o problema não são os conectores mas as ferramentas MCP em geral, a referência da CLI documenta --disallowedTools "mcp__*", que remove todas as ferramentas MCP do contexto. Essa opção não foi medida na issue.

Por que não usar --bare?

Porque --bare não usa o login de assinatura. Ele pula hooks, skills, plugins, servidores MCP, memória e CLAUDE.md, e a doc oficial (headless) recomenda o modo para scripts. Mas no modo bare o Claude Code "never reads OAuth credentials", então exige ANTHROPIC_API_KEY e cobra pela API. Para quem quer rodar script dentro da assinatura, --strict-mcp-config é o caminho.

Como evitar que isso volte depois de uma atualização?

Coloque um teto no próprio script. A sugestão que saiu da discussão da issue: comparar os tokens de entrada de cada chamada com o normal daquele tipo de chamada e alertar quando passar. Um exemplo mínimo em shell:

TOKENS=$(claude -p "$PROMPT" --tools "" --strict-mcp-config --output-format json \
  | jq '.usage | .input_tokens + .cache_creation_input_tokens + .cache_read_input_tokens')
if [ "$TOKENS" -gt 30000 ]; then
  echo "alerta: chamada usou $TOKENS tokens de entrada" >&2
fi

O autor da issue usa 30 mil como teto para chamadas que normalmente gastam cerca de 2,5 mil. Ajuste ao seu caso. O ponto é que uma atualização que comece a carregar algo novo apareça no mesmo dia, não três dias de cota depois.

Na Verboo Code as mesmas flags existem no modo de script (verboo -p --tools "" --strict-mcp-config), e os tokens são ilimitados: um script que roda a cada poucos minutos não come a cota do seu dia de trabalho.

Gostou deste artigo?
Compartilhe conhecimento com sua rede.
// Leia também

Artigos relacionados