Um desenvolvedor descobriu que uma busca oculta do npx estava adicionando cerca de 10 segundos a cada turno do Claude Code, e substituir essa busca por uma instalação global reduziu seis segundos de cada interação.
Por que a latência importava
O Claude Code navega em um monorepo com dezenas de componentes, indexa símbolos, persiste transcrições no Postgres e envia relatórios de erro. O fluxo de trabalho parece fluido até que as respostas do modelo comecem a atrasar. Um health check expôs várias ineficiências e uma chamada de rede dispendiosa.
O que o health check revelou
- Instalações duplicadas – um launcher nativo e uma versão desatualizada do npm-global coexistiam. Remover a cópia obsoleta eliminou uma busca de caminho desnecessária.
- Arquivo de agente corrompido – um arquivo sem descrição duplicava o nome de um arquivo válido, fazendo com que o Claude Code o ignorasse. Excluir a entrada corrompida resolveu a confusão.
- Extensões não utilizadas – um plugin e um servidor MCP que nunca eram executados foram desativados, reduzindo o footprint de runtime.
- Arquivos “CLAUDE.md” inchados – esses arquivos repetiam informações já presentes no código (ex: comandos de build), inflando o payload enviado ao modelo. Reduzi-los deixou apenas o contexto essencial.
Essas limpezas ajudaram, mas a maior vitória veio do Stop hook que é executado após cada resposta do modelo.
O imposto oculto do npx
O Stop hook executa seis comandos separados, cada um prefixado com npx -y. A flag -y força o npx a verificar o registro do npm em busca de uma versão mais recente antes de executar o comando, disparando uma requisição de rede. Cada busca levava em média 1,6 segundos, então as seis chamadas adicionavam cerca de 10 segundos a cada turno. Na prática, a latência total do hook era de 12 segundos, com picos ocasionais de até 113 segundos quando ocorriam instabilidades na rede.
A solução simples
Substituir as chamadas npx por um binário instalado globalmente removeu a busca no registro:
- Antes:
npx -y @invariance/gps→ 1,6 s por chamada - Depois:
gps(instalado globalmente) → 0,7 s por chamada
A mudança reduziu o tempo de execução do Stop hook em aproximadamente 6 segundos por turno e eliminou os picos massivos causados pela verificação remota.
O que observar a seguir
- Timing de hooks – instrumente quaisquer hooks personalizados para expor a latência antes que ela afete os usuários.
- Higiene de dependências – remova regularmente instalações duplicadas e extensões não utilizadas.
- Arquivos de configuração – mantenha o “CLAUDE.md” enxuto; exiba apenas informações que o modelo não consiga inferir.
A lição é simples: a automação pode esconder processos internos dispendiosos. Um rápido health check pode revelar chamadas de rede ocultas que transformam um assistente de IA fluido em um lento.
Conclusão: Quando o Claude Code parecer lento, cronometre os hooks e elimine quaisquer buscas de npx; uma instalação global pode economizar segundos em cada turno e manter seu fluxo de desenvolvimento ágil.
