O que é ast-grep?
ast-grep encontra código pela estrutura, não pelo texto. Você escreve um padrão que parece código comum, como `$A && $A()`, com marcadores para as partes que variam, e ele localiza cada ponto do código com esse formato, não importa o espaçamento ou os nomes de variáveis. Os mesmos padrões alimentam regras de lint em YAML (`ast-grep scan`), testes de regras e reescritas, aplicadas em lote ou uma a uma com `--interactive`. Ele faz o parsing com tree-sitter e suporta 28 linguagens de fábrica, de Bash e C a TypeScript e Zig.
O projeto, liderado por Herrington Darkholme, tem licença MIT, é escrito em Rust e soma cerca de 16.600 estrelas no GitHub; a versão 0.51.2 saiu em 11 de novembro de 2026. Instala via Homebrew, npm, pip, cargo, MacPorts ou Nix, e também traz APIs para JavaScript, Python e WebAssembly, um servidor de linguagem para editores e um modo de saída JSON. Para agentes de código há o comando `outline` (prévia alfa desde a 0.44.0), uma skill oficial para agentes e um servidor MCP experimental.
ast-grep vale a pena?
Busca por texto é a ferramenta errada para a maioria das refatorações, e agentes cometem esse erro mais rápido que pessoas. Uma regex que reescreve uma chamada de função também reescreve as mesmas palavras num comentário, numa string e numa variável que por acaso tem o mesmo nome. ast-grep faz o parsing do arquivo primeiro, então um padrão só corresponde a código real com aquele formato. Por isso virou uma dependência comum em configurações de agentes: o npm contou cerca de 9,6 milhões de downloads de @ast-grep/cli nos 30 dias até 12 de novembro de 2026, número que inclui CI e instalações transitivas, não só pessoas digitando comandos.
O design mantém os padrões legíveis. Em vez de aprender uma linguagem de consulta, você escreve código com metavariáveis e acrescenta regras YAML (inside, has, not, any) quando um padrão sozinho não basta. As regras podem trazer uma correção, uma severidade e testes, o que transforma buscas pontuais num linter do projeto. O ritmo de versões é constante, com a 0.51.1 em 2 de novembro e a 0.51.2 nove dias depois, e o histórico tem mais de 100 colaboradores.
O porém: ele só enxerga sintaxe. O FAQ diz com clareza que não há análise de escopo, tipos, fluxo de controle, fluxo de dados nem taint, então ele não encontra uma variável de determinado tipo nem segue uma entrada do usuário até uma chamada ao banco de dados. Para regras de segurança desse tipo, Semgrep ou CodeQL vão mais longe. Os padrões também precisam ser código que o tree-sitter consiga analisar, o que confunde com fragmentos como uma chave JSON solta, e no Linux o alias curto `sg` conflita com o comando setgroups do sistema. O servidor MCP é marcado como experimental e roda com Python e uv, então a maioria dos agentes é mais bem servida pela CLI e pela skill.
Nossa opinião: pense no ast-grep como um grep que sabe onde uma chamada de função começa e termina. Deixe o agente usá-lo em toda busca e reescrita que tenha formato, e mantenha uma ferramenta que entende tipos para perguntas sobre significado.
Onde ele se destaca
Um engenheiro de plataforma num monorepo grande de TypeScript
Trocar em todo lugar uma chamada de logging obsoleta sem mexer em comentários ou strings
Escreva um padrão com correção, revise com `ast-grep run --interactive` e aplique em toda a árvore. Roda localmente em segundos na maioria dos repositórios e não custa nada; o que depende de tipos ainda exige o compilador.
Um tech lead que aplica regras internas no CI
Bloquear código novo que chama uma API interna do jeito errado
Adicione regras YAML a um projeto sgconfig.yml, dê a cada uma um caso de teste e rode `ast-grep scan` no pipeline. As regras ficam no repositório e são revisadas como código, sem taxa de licença.
Uma desenvolvedora usando Claude Code numa base de código desconhecida
Fazer o agente encontrar e editar código pela estrutura em vez de regex
Instale a CLI e a skill oficial para que o agente escreva regras do ast-grep, e deixe o `ast-grep outline` listar os símbolos de um arquivo antes de ele ler o arquivo inteiro. Menos edições indevidas; outline ainda é prévia alfa.
Antes de decidir
- Configuração
- `brew install ast-grep`, `npm i @ast-grep/cli -g`, `pip install ast-grep-cli` ou `cargo install ast-grep --locked`; uma primeira busca leva um minuto. `ast-grep new` cria a estrutura de um projeto de regras.
- Integrações
- 28 linguagens embutidas e outras via tree-sitter, servidor de linguagem para VS Code e outros editores, saída JSON, APIs para JavaScript (napi), Python e WebAssembly, um playground online, o plugin ast-grep/agent-skill e o servidor experimental ast-grep-mcp.
- Dados e privacidade
- Roda inteiramente na sua máquina sobre arquivos locais; nenhuma conta ou serviço de rede está envolvido. Licença MIT.
- Custo em escala
- Gratuito, sem plano pago. O mantenedor aceita GitHub Sponsors; o custo em escala é escrever e testar as regras.
- Limites
- Só sintaxe: sem análise de tipos, escopo, fluxo de controle, fluxo de dados ou taint. Padrões precisam ser código analisável. `outline` é uma prévia alfa cuja cobertura de linguagens pode mudar. Cerca de 46 issues e pull requests abertos na última verificação.
O que é bom
- Padrões escritos como código comum com marcadores
- 28 linguagens embutidas via tree-sitter
- Busca, regras de lint com testes e reescritas num só binário
- APIs para JavaScript, Python e WebAssembly, mais servidor de linguagem
O que não é
- Sem análise de tipos, escopo ou fluxo de dados
- Padrões precisam ser código válido, o que confunde iniciantes
- Alias `sg` conflita com um comando do sistema no Linux
- Servidor MCP ainda experimental
Ideal para
Desenvolvedores e agentes de código que precisam de buscas e codemods precisos e repetíveis numa base de código grande, sem escrever um plugin de compilador.
Alternativas ao ast-grep
ast-grep: perguntas frequentes
- ast-grep vale a pena?
- ast-grep é a ferramenta de busca estrutural para entregar a um agente de código antes que ele recorra ao sed, desde que ninguém confunda a correspondência sintática com análise semântica. Damos nota 4.5 de 5.
- Quanto custa ast-grep?
- Gratuito e de código aberto (MIT).
- Quais são as desvantagens de ast-grep?
- Sem análise de tipos, escopo ou fluxo de dados; padrões precisam ser código válido, o que confunde iniciantes; alias `sg` conflita com um comando do sistema no Linux; servidor MCP ainda experimental.
- Para quem ast-grep é indicado?
- Desenvolvedores e agentes de código que precisam de buscas e codemods precisos e repetíveis numa base de código grande, sem escrever um plugin de compilador.
- Quanto custa ast-grep para uma equipe ou em produção?
- Gratuito, sem plano pago. O mantenedor aceita GitHub Sponsors; o custo em escala é escrever e testar as regras.
- ast-grep é seguro para dados da empresa?
- Roda inteiramente na sua máquina sobre arquivos locais; nenhuma conta ou serviço de rede está envolvido. Licença MIT.
- Quais são as melhores alternativas ao ast-grep?
- As alternativas mais próximas que analisamos são grepai, Repowise e jevgrep.
Respostas verificadas em 13 de nov. de 2026.