Safeguard
Supply Chain•

Why is my SBOM missing components? A troubleshooting checklist

Missing SBOM components usually trace to the input source, scope settings, vendored code, or the build stage scanned. Use this checklist to find which.

Safeguard Security Team
3 min read

An SBOM misses components when the tool looked at the wrong thing: a manifest instead of a lockfile, one build stage instead of all, source instead of the built artifact, or a scope that filtered them out. Work through the causes below in order, from cheapest check to most expensive.

The checklist

CheckSymptomFix
Input is a manifest, not a lock or environmentNo transitive packagesUse the lockfile or installed environment
Scope filterTest or dev packages absentDecide if they belong, then change the option
Build constraintsPackages for another OS or architecture absentGenerate per target
Wrong stageBuild tools missing from a container SBOMScan the stage you mean
Vendored or copied codeLibraries with no package recordAdd them by hand or scan the artifact
Shaded or bundled jarsRelocated classes not listedCompare against the jar contents
Offline or private registryResolution fails or is skippedFix access, then regenerate
Tool versionNewer ecosystem features unsupportedUpdate, and pin the version

Steps

  1. Count. Compare the number of components with what a package manager reports for the same project. A big gap points to input source.
  2. Check one known transitive dependency. Search the SBOM for a package you know is pulled in.
  3. Check the environment. Run the tool where the release build runs.
  4. Check scope settings and filters.
  5. Scan the final artifact and compare to the source based SBOM. Differences show what the build adds or drops.
  6. Validate the file. A malformed file may be partly ignored by consumers.

Examples from tool documentation

  • The Go tool in app mode excludes modules needed only by tests or by packages the program does not import, and applies build constraints from the environment.
  • A Docker build SBOM scans only the final stage by default. Earlier stages and the build context are left out unless you set the scan options.
  • A directory scan by the .NET tool only finds packages.config files. Modern project files need to be passed in directly.
  • Vendoring in Go produces SBOMs without hashes and can break license detection.

When missing means copied

Code copied into your repository has no package manager record. No lockfile scan will find it. Track it as a component by hand, with its source and version, or accept that source and binary analysis will find only some of it.

Try it yourself

Click through it at your own pace, or open it full screen.

Check how many components appear beneath each direct dependency, then use that count as your sanity test on your own file.

Quick check

How do I know the SBOM is complete?

You cannot prove it. Compare against the package manager, a second tool and the built artifact, and record what you checked.

Should I add missing items by hand?

For copied code, yes, with source and version. For package manager items, fix the generator instead.

Safeguard's SBOM and dependency scanning covers manifests, lockfiles and containers, and a free scan is available at gold.safeguard.sh/scan.

Sources

Last reviewed: 19 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.