Dependency reachability
Keep only the dependency advisories your application can actually reach.
A dependency scan reports every advisory that touches your lock files, and most of them are not worth acting on: the vulnerable function is never called, or the advisory does not apply to the installed version. Dependency reachability keeps only the advisories that matter. It looks at the critical and high advisories with known real-world exploitation, checks that each one applies to the version you install, and then checks whether your code actually uses the vulnerable part of the library. Advisories that fail are left out of the AI report and out of Vulnerabilities.
It works on the results of Dependency Check (SCA), so it adds nothing when that scanner is off.
Before you start
| Prerequisite | How to check |
|---|---|
| Dependency Check (SCA) is on | Static Code Analysis → AI Featured Code Analysis: the Dependency Check (SCA) switch is on (the default). |
| The team has AI | Teams → AI tab → AI provider: Use is set to the system AI or the team's own models, not No AI. See AI providers and cost. |
| AI budget is left | Teams → AI tab → Monthly token budget: the meter is below the limit. When the budget is used up, AI features pause. |
| The exploitable vulnerabilities database is filled | Vuln DB in the sidebar lists entries. See Exploitable Vulnerabilities Database. |
| The repository has manifest or lock files | For example package-lock.json, poetry.lock, pom.xml or go.sum. Without them there is nothing to check. |
Turn it on
- 01Open Static Code Analysis in the sidebar
- 02Find Dependency Check (SCA) under AI Featured Code Analysis
Its switch must be on.
- 03Switch on Verify findings reachability under it
It is on by default until you change it; the form then remembers your choice for the team.
- 04Set the rest of the form and click Start Analysis
See Static Code Analysis for the other fields.
| Option | What it does | Default | When to change it |
|---|---|---|---|
| Verify findings reachability (under Dependency Check) | Checks the critical and high advisories with known exploitation and keeps only those your code can reach. | On | Switch it off to get the plain dependency report only, with no AI cost. |
From a pipeline, the standard-ai (default) and full-ai bundles of scansuite-ci include dependency checks with reachability, and --no-ai-verification drops it. See CI/CD and automation.
What you get
The reachable advisories appear in the scan's AI report, next to the AI Native SAST findings of the same scan. Each one carries its severity, the package, the installed and fixed versions, where the dependency is declared and any exploit references; the mitigation names the version to upgrade to, and the last column holds the Reachable verdict:

- Every reachable advisory has a flowchart from the application's entry point, through the place the library is imported, to the vulnerable part of the library. It is drawn inline in the HTML report.
- Exploit references are clickable links in the HTML report and one per line in the XLSX export.
- A package with a public exploit is still reported as not reachable if your code never uses it.
- An advisory judged not reachable is remembered for that revision of the repository, so a rescan of the same commit neither checks nor reports it again.
Where the results go
| Advisory | Verify findings reachability on | Verify findings reachability off |
|---|---|---|
| Reachable | AI report, the dependency report and Vulnerabilities (scan type dependency) | The dependency report. Also stored on Vulnerabilities while Teams → Scanning → Store scanner findings is On (the default), from the severity set there (Medium by default). |
| Checked and not reachable | Removed from the dependency report as well, so the two reports agree | |
| Medium or lower, or no known exploitation | Not checked; stays in the dependency report only |
The dependency report is the spreadsheet in the scan's report ZIP (Download report on the scan page). Dependency Check results are not exported to DefectDojo, with or without reachability.
When it does not run
The scan still finishes and the dependency report is still produced, but no advisory is checked. When the analysis did not complete, for example without AI or with an AI service that does not answer, the log also says Dependency reachability analysis did not complete; the scanner's dependency findings are stored without reachability verification., and the dependency findings are stored on Vulnerabilities as with Verify findings reachability off. The scan log on the scan page says which case it was:
| Scan log says | What to do |
|---|---|
| Dependency reachability analysis was skipped because an AI provider is not configured. | Give the team AI on the Teams page, AI tab, then scan again. |
| The AI service does not answer | Check the connection with Test connection on the Teams page, AI tab, or ask your system administrator about the system AI. |
| Dependency reachability analysis was stopped because the known-exploited vulnerability database could not be queried | Ask your operator to check the exploitable vulnerabilities database, then scan again. |
| No critical/high dependency finding has a known exploit, so there is nothing to verify for reachability. | Nothing to do: no advisory needed checking. |
Cost
Each advisory that is checked uses AI tokens. Scans of large operating-system package sets can report hundreds of CVEs, so they take longer and cost more. What a scan spent is shown on its page and in Scan History.
If a scan reports many high-severity OS package CVEs and you only care about the application's own dependencies, scan the application's source rather than a tree that includes the OS packages. See AI providers and cost for how token spend is tracked and capped.
Last reviewed 2026-10-19