Docs / Read an answer
Real answers from real runs
What LLMGRAPH actually says to a coding agent, copied from real runs on open-source repos, including where it can't see and where it loses.
Many call graphs guess when they can't resolve a call, and hand the guess to the agent as fact. LLMGRAPH is the truth layer between your agent and your repo: it never presents a guess as proven, labels every answer line, and names what it can't see.
You don't need an account to judge that. Below are real answers from real runs on open-source projects. The stop check's text is exactly as printed; in the other blocks we trimmed lines where marked.
1It holds the agent when an edit breaks callers
An agent in Claude Code was asked to change super_len(o) to super_len(o, strict) in requests v2.32.3 and touch no other file. When it tried to finish, the stop check held it:
LLMGRAPH: 8 calls break because of your edits:
src/requests/models.py:526 PreparedRequest.prepare_body: misses "strict"
src/requests/models.py:575 PreparedRequest.prepare_content_length: misses "strict"
tests/test_utils.py:62 TestSuperLen.test_io_streams: misses "strict"
tests/test_utils.py:63 TestSuperLen.test_io_streams: misses "strict"
tests/test_utils.py:69 TestSuperLen.test_super_len_correctly_calculates_len_of_partially_read_file: misses "strict"
tests/test_utils.py:82 TestSuperLen.test_super_len_handles_files_raising_weird_errors_in_tell: misses "strict"
tests/test_utils.py:95 TestSuperLen.test_super_len_tell_ioerror: misses "strict"
tests/test_utils.py:98 TestSuperLen.test_string: misses "strict"
Fix them, or tell the user why each is fine.The agent listed the breaks and offered two fixes instead of finishing. In all, 16 calls broke; the other 8 were still being confirmed. Since version 0.4.5 the first line also says how many more aren't confirmed yet.
Raw: stop-check-requests-2026-10-26.txt · LLMGRAPH 0.4.4, plugin 0.3.0, 26 October 2026
2Two functions, one name: look-alikes ruled out
zod ships two copies of addIssueToContext (src/ and deno/lib/). A text search returns 143 lines from both, mixed together. LLMGRAPH separates them:
llmgraph · who_calls addIssueToContext (src/helpers/parseUtil.ts:72): 71 in a set
⚠ type checker starting: answers use our own reading for now; 71 calls unchecked
◇ within_these 71 calls -> one of 1 (closed: repo only) [c] w1
⚠ plus 7 dynamic calls nearby that could reach anything w2
– ruled out: 71 same-name calls (proven: other target) [c] w3
assumes [c]: our own reading, not confirmed by the checker
(lines trimmed)Note the second line: the type checker hadn't confirmed yet, and the answer says so.
Raw: https://github.com/brainfoods-studio/llmgraph-agent-plugin/blob/main/benchmarks/blind-test/answers/zod_who_calls_addIssueToContext.txt · zod v3.23.8
3It names what it can't see
Asked what it can't see in requests, LLMGRAPH counts its blind spots by kind and by file instead of hiding them:
llmgraph · what_is_unknown (whole repo): 617 blind spots
⚠ dynamic call 174: tests/test_requests.py (161), tests/test_utils.py (6), +6 files w11
⚠ type unknown 443: tests/test_requests.py (286), src/requests/cookies.py (21), +17 files w12And when it can prove callers, it says how far the proof reaches:
llmgraph · what_breaks_if_changed super_len (depth 3): 22 places depend on it
✓ certain src/requests/models.py:526 PreparedRequest.prepare_body w3
✓ certain src/requests/models.py:575 PreparedRequest.prepare_content_length w4
+12 more certain in 1 files w5
⚠ plus 9 dynamic calls nearby that could reach anything w6
depth 2, each as strong as its weakest step:
◇ +2 more places at depth 2, as weak as within_these [a][c] w7
depth 3, each as strong as its weakest step:
◇ +6 more places at depth 3, as weak as within_these [a][c] w8
⚠ 7 more deeper calls we can't see: not followed w9
⚠ 2 places beyond depth 3 not followed w10
[a] is not confirmed for this repo: ask the user whether every subclass lives in this repo, then repeat with family yes, no or unsure
assumes [a]: all subclasses are in this repo (project setting)
assumes [c]: our own reading, not confirmed by the checker
(lines trimmed)Raw: https://github.com/brainfoods-studio/llmgraph-agent-plugin/blob/main/benchmarks/privacy/run2-answers.txt · requests v2.32.3, the released npm 0.4.3
4Where it loses: use ripgrep for unique names
On names that appear only once in a repo, a plain text search finds the same callers for fewer tokens. From our own benchmark on requests:
| Symbol | True callers | ripgrep: found, tokens | LLMGRAPH: found, tokens (with expansions) |
|---|---|---|---|
rebuild_proxies | 3 | 3, 76 | 3, 310 |
get_netrc_auth | 5 | 5, 115 | 5, 297 |
Use ripgrep there. LLMGRAPH earns its place when names collide, before you change something others depend on, and after an edit.
Raw: https://github.com/brainfoods-studio/llmgraph-agent-plugin/blob/main/benchmarks/noisy-names/data/score_tables.md · LLMGRAPH 0.4.1
5Blind test: 50 questions, three repos
A tester with no access to the engine's internals asked 50 graded questions on requests, rich and zod. No confident answer was wrong: no line labelled certain, exactly_these or within_these was wrong. The same report lists where answers were misleading or unclear, and what we fixed.
Full report and raw answers: https://github.com/brainfoods-studio/llmgraph-agent-plugin/tree/main/benchmarks/blind-test · all results: https://github.com/brainfoods-studio/llmgraph-agent-plugin/blob/main/BENCHMARKS.md
Want to see it on your own code? Request an invite: invites go out within minutes; 7-day trial, no card. Windows x64; Python and TypeScript/JavaScript.