Dynamically Resolve Dependencies for a Full Picture of Your Inventory

Semgrep Supply Chain now includes Dynamic Dependency Resolution to provide a complete inventory of dependencies when lockfiles are absent, using a combination of manifest parsing and package manager integration. Now in public beta.

May 7th, 2026

You can’t secure what you can’t see

Even in the age of LLMs, the most fundamental problem in software composition analysis (SCA) has been elusive to solve at scale: producing an accurate inventory of dependencies with their versions and tree structure across an entire codebase. 

Scale and velocity of modern applications mean constantly shifting dependency versions. Codebases sprawl across multiple languages and ecosystems. Transitive dependencies are notoriously difficult to inventory correctly, especially when imported via private packages. Because of these challenges, the inventory of dependencies in an organization’s codebase is often incorrect in frustrating and subtle ways that reveal themselves over time. 

This meant many customers have had to get by with only a partial picture of the packages they use. But in a world where malicious dependencies downloaded from trusted package managers can compromise your entire org, having a comprehensive and up-to-date dependency inventory can be the difference between being impacted by a zero day attack and being unaffected. Besides, an accurate inventory is the foundational basis of finding vulnerabilities, handling compliance, and answering customer questions.

At Semgrep, we've long recommended developers adopt lockfiles, where possible, for the security benefits of pinned versions. But our customers are accountable for securing vast codebases built on package managers that don't rely on lockfiles — and the majority of enterprise Semgrep customers have critical code in exactly those ecosystems.

Resolve dependencies at scan time

Today, we’re covering that gap. With Dynamic Dependency Resolution, Semgrep Supply Chain can now accurately inventory dependencies without lockfiles—resolving full dependency trees using a combination of manifest parsing and repository integration with package managers and private registries.

Wherever Semgrep detects a project with missing or incomplete lockfiles, it invokes the appropriate package manager commands to resolve dependencies at scan time. This includes transitives that aren't declared in the manifest. For example, for Maven projects, Semgrep reads your pom.xml and resolves the dependency tree with Maven's own resolution logic. 

Any dependencies that exist but aren’t stated in a lockfile or manifest file are still counted in the inventory, giving you the complete picture — direct dependencies, transitive dependencies, and full tree structure — without changing build processes, maintaining extra CI steps, or limping by with partial coverage.

Here's what's supported in the beta program today:

  • In your CI infrastructure: public beta for Java (Maven), Kotlin (Gradle), C# (NuGet), and Python (setup.py); private beta for Scala (SBT) 

  • In Semgrep’s managed infrastructure: public beta for Java and Kotlin (Maven and Gradle).

  • Private package manager integration: public beta for Artifactory and Nexus Cloud; private beta for on-prem registries

Complete visibility with private registry integration

Complete dependency resolution also requires access to a private package registry. For any internal packages hosted in Artifactory or Nexus, resolving those packages and their transitive dependencies requires connecting to that registry. 

It’s not always obvious to an AppSec team that hasn’t connected a registry that they only have partial coverage without this kind of integration. In such cases, dependency resolution is silently incomplete, or can even fail in the case of gradle, leading to blind spots in the SBOM that are not obvious, and can be very painful in the event of a malware incident.

Dynamic Dependency Resolution allows private registry integration directly from the Semgrep App Platform. Simply connect and authenticate to any supported registries, and Semgrep Supply Chain will resolve the full dependency tree, including any transitive dependencies of private packages which cannot be covered any other way.

Dynamic resolution supports intergation with private registries.

Fast rollout with Semgrep Managed Scans

For teams using Semgrep Managed Scans, this capability lets you connect repos and start getting Supply Chain results without self-hosting infrastructure or wiring up CI configuration for each project — Semgrep's infrastructure handles rule selection, policy enforcement, and product coordination in the cloud.

Extending that same model to the Java and Kotlin ecosystems means you no longer need to generate lockfiles or build projects in CI to get a complete dependency inventory. Connect the repos, and Semgrep resolves the rest — in a sandboxed environment, so customer builds stay isolated.

“We scaled scans across thousands of repos without burdening teams. That's what stood out.”

ENGINEER AT SQUARESPACE, ON SCALING SEMGREP MANAGED SCANS ACROSS THEIR REPOSITORIES

Close the lockfile gap today

A comprehensive inventory of dependencies is essential for supply chain security, yet coverage for many enterprises has remained incomplete due to the lockfile gap. The addition of Package Discovery allows semgrep customers to inventory every dependency — quickly and accurately, at scale. Get a full picture of your dependency tree today by contacting support, or check out a live demo to see Semgrep in action.

We're actively expanding language and ecosystem coverage and would love feedback from customers and prospects as we work toward general availability.