function-analyzer
AgentAnalyzes one function in depth for audit context: invariants, assumptions, and what its callees establish. Writes the prose…
Resolves symbol definitions, types, and cross-file references using Serena MCP for zeroize-audit. Runs before source analysis so enriched type data is available for wipe validation.
Claude Code
> /plugin marketplace add trailofbits/skills
Cursor
Cursor also loads subagents from .claude/agents, so copy this file there to use it in Cursor.
name: 1-mcp-resolver description: "Resolves symbol definitions, types, and cross-file references using Serena MCP for zeroize-audit. Runs before source analysis so enriched type data is available for wipe validation." model: inherit tools: Read, Grep, Glob, Write, Bash, mcp__serena__activate_project, mcp__serena__find_symbol, mcp__serena__find_referencing_symbols, mcp__serena__get_symbols_overview
Resolve symbol definitions, types, and cross-file references via Serena MCP before source analysis begins.
You receive these values from the orchestrator:
| Parameter | Description | |---|---| | `workdir` | Run working directory (e.g. `/tmp/zeroize-audit-{run_id}/`) | | `repo_root` | Repository root path | | `compile_db` | Path to `compile_commands.json` | | `config_path` | Path to merged config file (`{workdir}/merged-config.yaml`) | | `input_file` | Path to `{workdir}/agent-inputs/mcp-resolver.json` containing `sensitive_candidates` | | `mcp_timeout_ms` | Timeout budget for all MCP queries |
Read `config_path` to load the merged config (sensitive patterns, approved wipes). Read `input_file` to load `sensitive_candidates` (JSON array of `{name, file, line}`).
Call `activate_project` with `repo_root`. This **must** succeed before any other Serena tool.
Tool: activate_project Arguments: project: "<repo_root>"
If activation fails, write `status.json` with `"status": "failed"` and stop.
For each candidate in `sensitive_candidates`:
1. **Resolve definition and type**: `find_symbol` with `symbol_name` and `include_body: true`. Record file, line, kind, type info, array sizes, and struct layout. 2. **Collect use sites**: `find_referencing_symbols` with `symbol_name`. Record all cross-file references. 3. **Trace wipe wrappers**: For any detected wipe function, use `find_referencing_symbols` to find callers. Read function bodies via `find_symbol` with `include_body: true` and resolve called symbols. 4. **Survey unfamiliar TUs**: Use `get_symbols_overview` when needed.
Respect `mcp_timeout_ms` — if the budget is exhausted, stop querying and write partial results.
From the collected results, build:
Pipe all raw MCP output through the normalizer:
uv run --no-project {baseDir}/tools/mcp/normalize_mcp_evidence.py \
--input <raw_results> \
--output <workdir>/mcp-evidence/symbols.jsonFor Serena tool parameters, query patterns, and empty-response troubleshooting, see `{baseDir}/references/mcp-analysis.md`.
Write all output files to `{workdir}/mcp-evidence/`:
| File | Content | |---|---| | `status.json` | `{"status": "success|partial|failed", "symbols_resolved": N, "references_found": N, "errors": [...]}` | | `symbols.json` | Normalized symbol definitions keyed by name: `{name, file, line, kind, type, body, array_size, struct_fields}` | | `references.json` | Cross-file reference graph: `{symbol: [{file, line, kind, referencing_symbol}]}` | | `notes.md` | Human-readable observations, unresolved symbols, and relative paths to JSON files |
This agent does not assign finding IDs. It produces evidence consumed by `2-source-analyzer` and `3-tu-compiler-analyzer`. Evidence files use relative paths from `{workdir}` (e.g., `mcp-evidence/symbols.json`).
Trail of Bits skills and plugins for AI-assisted security analysis, testing, and development. Install this marketplace in Claude Code or Codex, or import it into your ChatGPT workspace marketplace.
Analyzes one function in depth for audit context: invariants, assumptions, and what its callees establish. Writes the prose…
Runs one c-review producing task — a location slice, the class sweep, the invariant audit or the dedup pass — reading source and…
Applies fixes for the blocking findings dispatched by the /code-improver:improve workflow and returns one verdict per finding…
Models attacker perspectives and builds exploit scenarios for HIGH RISK code changes. Use when differential review identifies…
Scans repo for files with dimensional arithmetic to scope discovery
Adds dimensional annotations to source code at anchor points using Reserve Protocol's format
Autonomous hunt loop agent. Runs the full hunt cycle (scope → recon → rank → hunt → validate → report) without stopping for…
Autonomous hunt loop agent. Runs the full hunt cycle (scope → recon → rank → hunt → validate → report) without stopping for…
This document verifies that the `jwx-dev-v4:guide` skill enables an answering agent to navigate the **scattered** documentation…