AST-Grep Find
Structural code search that understands syntax. Find patterns like function calls, imports, class definitions - not just text.
When to Use Find code patterns (ignores strings/comments) Search for function calls, class definitions, imports Refactor code with AST precision Rename variables/functions across codebase Usage Search for a pattern uv run python -m runtime.harness scripts/ast_grep_find.py \ --pattern "import asyncio" --language python
Search in specific directory uv run python -m runtime.harness scripts/ast_grep_find.py \ --pattern "async def \$FUNC(\$\$\$)" --language python --path "./src"
Refactor/replace pattern uv run python -m runtime.harness scripts/ast_grep_find.py \ --pattern "console.log(\$MSG)" --replace "logger.info(\$MSG)" \ --language javascript
Dry run (preview changes) uv run python -m runtime.harness scripts/ast_grep_find.py \ --pattern "print(\$X)" --replace "logger.info(\$X)" \ --language python --dry-run
Parameters Parameter Description --pattern AST pattern to search (required) --language Language: python, javascript, typescript, go, etc. --path Directory to search (default: .) --glob File glob pattern (e.g., */.py) --replace Replacement pattern for refactoring --dry-run Preview changes without applying --context Lines of context (default: 2) Pattern Syntax Syntax Meaning $NAME Match single node (variable, expression) $$$ Match multiple nodes (arguments, statements) $_ Match any single node (wildcard) Examples
Find all function definitions
uv run python -m runtime.harness scripts/ast_grep_find.py \ --pattern "def \$FUNC(\$\$\$):" --language python
Find console.log calls
uv run python -m runtime.harness scripts/ast_grep_find.py \ --pattern "console.log(\$\$\$)" --language javascript
Replace print with logging
uv run python -m runtime.harness scripts/ast_grep_find.py \ --pattern "print(\$X)" --replace "logging.info(\$X)" \ --language python --dry-run
vs morph/warpgrep Tool Best For ast-grep Structural patterns (understands code syntax) warpgrep Fast text/regex search (20x faster grep)
Use ast-grep when you need syntax-aware matching. Use warpgrep for raw speed.
MCP Server Required
Requires ast-grep server in mcp_config.json.