How do I see what a PR actually affects?
Last updated September 24, 2026
DiffGuardian draws a dependency graph for every pull request, built straight from the diff. It is a heuristic, not an AI feature: no model call decides what is connected to what; the edges come from the diff's changed files and their imports, plus callers and implicit links found in a local checkout when you give it one.
#What the graph shows from the diff alone
Without a local checkout, the graph is built entirely from the diff: the changed files, and the modules those files import. Nothing beyond the diff itself is used to draw it, and no AI is involved in deciding the edges.
#What a local checkout adds
Point DiffGuardian at a local checkout of the repository and the graph adds three more kinds of edge: upstream callers appear as extra nodes flowing into the edited file; implicit API edges and channel edges are drawn dashed.
- Upstream callers — code that calls into an edited file, added as extra nodes flowing in from elsewhere in the repository.
- Implicit API edges — an endpoint connected to its callers, even where nothing in the diff links them directly. Drawn dashed.
- Channel edges — an emitter connected to its listener. Drawn dashed.
#Reading the graph
Click a node to pin its flow through the graph and open the per-hunk overviews for the changed files inside it.
DiffGuardian is a desktop app for macOS, Windows and Linux, and works with pull requests on GitHub, GitLab and Bitbucket.
#Limits
- The graph is a heuristic built from the diff and, optionally, a local checkout — it is not an AI-generated summary of impact.
- Upstream callers, implicit API edges and channel edges only appear with a local checkout. Without one, the graph shows diff-derived edges only.
FAQ
Is the blast radius graph generated by AI?
No. It is heuristic: built from the diff alone, and, with a local checkout, from callers, API edges and channel edges DiffGuardian can find in the code. No AI model decides the edges.
What does the graph show if I don't give DiffGuardian a local checkout?
Only what the diff itself contains: the changed files and the modules they import.
What extra edges does a local checkout add?
Upstream callers appear as extra nodes flowing into an edited file. Implicit API edges, connecting an endpoint to its callers, and channel edges, connecting an emitter to its listener, are drawn dashed.
What happens when I click a node in the graph?
Clicking a node pins its flow through the graph and shows the per-hunk overviews for the changed files inside it.