Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add commands/cognitx-leyton/codegraph/blast-radiusgit clone --depth 1 https://github.com/cognitx-leyton/codegraphWhat it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00024 | $0.00839 |
| Opus 5 | $0.00012 | $0.00419 |
| Sonnet 5 | $0.00005 | $0.00168 |
| Haiku 4.5 | $0.00002 | $0.00084 |
Grade A, and why
blast-radius scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 67 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Usage
/blast-radius <SymbolName>
Returns every site that would break (or need updating) if you changed the named symbol. Unions five edge kinds in a single query:
| Edge | Captures |
|---|---|
IMPORTS_SYMBOL |
Files that explicitly import the symbol by name |
CALLS |
Methods that call a method of that name (typed or name-based resolution) |
EXTENDS |
Subclasses that'd break if the base changes |
INJECTS |
NestJS DI consumers |
RENDERS |
React components that render the symbol |
Run it before any rename / move / delete. If nothing comes back, the symbol is safe to touch. If many callers come back, you're probably looking at a staged migration.
What this does
codegraph query "
MATCH (caller:File)-[r:IMPORTS_SYMBOL]->(source:File)
WHERE r.symbol = '$ARGUMENTS'
RETURN 'IMPORTS_SYMBOL' AS edge, caller.path AS caller, '' AS caller_sym, source.path AS defined_in, r.symbol AS symbol
UNION ALL
MATCH (caller:Method)-[c:CALLS]->(target:Method)
WHERE target.name = '$ARGUMENTS'
RETURN 'CALLS' AS edge, caller.file AS caller, caller.name AS caller_sym, target.file AS defined_in, target.name AS symbol
UNION ALL
MATCH (sub:Class)-[:EXTENDS]->(parent:Class)
WHERE parent.name = '$ARGUMENTS'
RETURN 'EXTENDS' AS edge, sub.file AS caller, sub.name AS caller_sym, parent.file AS defined_in, parent.name AS symbol
UNION ALL
MATCH (consumer:Class)-[:INJECTS]->(injected:Class)
WHERE injected.name = '$ARGUMENTS'
RETURN 'INJECTS' AS edge, consumer.file AS caller, consumer.name AS caller_sym, injected.file AS defined_in, injected.name AS symbol
UNION ALL
MATCH (parent:Function)-[:RENDERS]->(child:Function)
WHERE child.name = '$ARGUMENTS'
RETURN 'RENDERS' AS edge, parent.file AS caller, parent.name AS caller_sym, child.file AS defined_in, child.name AS symbol
LIMIT 200
"
The --json flag is optional; add it for machine-parseable output. The default-rendered Rich table is easier to eyeball.
Caveats
- Name collisions are a feature. If two classes share a name in different packages, both show up. That's usually what you want when assessing blast radius.
- Python CALLS is method-only. The resolver wires Python
CALLSedges from method bodies; module-level function → method calls aren't tracked (Stage 1 limitation). Callers that live in a top-level function may be missed. - Aliased re-exports. If
pkg/__init__.pyre-exportsFooand another file doesfrom pkg import Foo, theIMPORTS_SYMBOLedge points at the re-export, not the original definition — you'll see both in the blast-radius output. - 200-row limit. Raise the
LIMIT 200at the bottom of the query if you hit it on a very-central symbol.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 2d ago First seen · 67 lines · 24 tokens per session scan A 6a8e085fe38f
blast-radius is a command published in the GitHub repository cognitx-leyton/codegraph (11 stars, last pushed 1mo ago), licensed Apache-2.0. It adds 24 tokens to every session and 839 once invoked, about $0.0001 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other commands, from other repositories
feedback
Security Design Review — PRD/기획서 기반 보안 의견서·검토 의견서 생성.
compliance
이전 보안 진단 보고서의 Finding들이 패치되었는지 확인하고, 변경된 코드에서 신규 취약점을 탐색합니다.
va
Vulnerability Assessment — 8차원 아키텍처 진단 + Self-Verify + Evidence Verification.
pentest
Penetration Testing — 시나리오 기반 모의해킹 + POC + 라이브 검증 (State Delta 기반).
redteam
Red Team Operations — 인프라 설정 보안 리뷰 + MITRE ATT&CK + Detection Engineering.
verify
Adversarial Verification — 보안 진단 보고서 독립 검증 (Autonomous First).