Platform

Platform overview How it works Authorization testing Evidence & reports Private scanning Integrations

Solutions

Security agencies Product teams Regulated industries Partner programme

Learn

Blog Knowledge hub Compare

Resources

Pricing Documentation Help centre FAQ Security & data What we haven’t proved

Company

About Contact Careers Sign in to the platform Start a $199 pilot →

Home / Knowledge hub / Transitive dependency

Knowledge hub

Transitive dependency

A library pulled in by another library you chose, which you still ship.

Illustration explaining Transitive dependency

What it means

A transitive dependency is a library your project needs only because one of your direct dependencies needs it. You never chose it, and it may never appear in your own manifest, yet it is installed and runs in your application.

Dependencies nest. You add one package, it depends on five more, and those depend on others. A modest project can end up with hundreds of libraries, most of them transitive.

Why it matters

A flaw in a library three layers down is still a flaw in your product. Many well-known incidents involved a deeply buried library that few teams knew they used, and finding out meant searching every project for it.

Transitive dependencies are also where a malicious package can slip in. You review the libraries you pick, but rarely the libraries they pick. Customers asking for an SBOM expect the whole tree.

How it shows up

You meet them in lockfiles and dependency trees. In npm, npm ls --all prints the full tree. Other ecosystems have similar commands. Software composition analysis reads these and matches versions against known flaws.

The mistakes repeat. Teams only watch direct dependencies. They cannot update a buried library because the parent pins an old version. Fixes need an update to the parent, an override, or a replacement. Commit lockfiles, update regularly, and work out which flaws are actually reachable.

Questions people ask

Transitive dependency, answered

Is a transitive dependency the same as an indirect dependency?

Yes. Both terms describe a library brought in by another library rather than by you directly.

How do we see our transitive dependencies?

Read the lockfile or print the dependency tree with your package manager. An SBOM tool lists them all in one file.

Why can't we just update the vulnerable one?

The parent package may pin a version range that excludes the fix. You can wait for a parent update, use an override feature, or switch libraries.

Do all transitive flaws matter?

No. A flaw matters if your code can reach the vulnerable function. Reachability analysis and testing help separate real risk from noise.

Does a lockfile help?

It makes builds repeatable by recording the exact version of every dependency, including transitive ones, so updates are deliberate.

Cyberlop mark

Do you know what you ship?

Libraries matter when their flaws can be reached. We test the running app and report only what we exploited, with the evidence. Ask us to run it on one of your applications.

Or start with a $199 pilot on one application: thirty days, success criteria agreed before day one, credited against the annual if you convert.