GHAS flags patterns.
Snyk checks deps.
Arbor proves paths.
The question every other tool leaves unanswered: does this specific PR — this diff — actually reach your payment API, your auth system, your secrets store? Arbor walks the call graph and shows you the path. Or tells you honestly when it can't.
Doesn't model your application call graph.
Reachability limited to SCA, not your code.
Can't walk the actual graph. Guesses at reachability.
GHAS flags patterns. Snyk checks deps. Arbor proves paths.
GitHub Advanced Security is great for known CVEs and CodeQL rules. Snyk catches vulnerable packages. LLMs write PR comments. None of them can tell you whether a changed function is reachable from your checkout API into your payment sink. Arbor can.
Keep GHAS for CVE alerts and CodeQL rules. Add Arbor for reachability proof on your own application code. They answer different questions. Together they cover the full surface.
See it on your own repo
Install takes 2 minutes. Arbor posts on the next PR — no config required for public repos. If the call graph shows nothing of interest, you'll know that too.