Safeguard
Developer Tools•

What should a per-package scan report show in a monorepo?

A useful monorepo scan report names the package, owner, lockfile, scope and scan time, not just a finding list. Use this checklist to review one.

Safeguard Security Team
3 min read

It should show the package path, its owner, the ecosystem, the lockfile used, the scan time, the in scope flag, and the findings with the dependency chain. A flat list of vulnerabilities cannot tell you what was covered, and coverage is what makes a clean result believable.

Coverage comes before findings

A clean report only means something if you know what was checked. For each package, record what the scan actually read.

FieldWhy it matters
Package pathRoutes the result and proves the package was seen
EcosystemA folder can hold more than one
Input fileWhich lockfile or manifest was read
Input statusLockfile found, manifest only, or nothing found
Scan timeOld results mislead
Scope flagIn scope, excluded, or unknown
OwnerWho acts on it

An input status of nothing found should not render as zero findings. It should render as not scanned.

Finding level fields

For each finding, include enough to act on it.

  1. Advisory identifier and severity.
  2. Library, resolved version and fixed version if one exists.
  3. The dependency chain from the package to the library, including internal hops.
  4. Whether it is a direct or transitive dependency.
  5. Reachability status, with unknown kept separate from not reachable.
  6. Whether the library is in a runtime or a development context.
  7. Known exploitation signals, if your tool provides them.

Summary level fields

At the top of the report, show the numbers that make the rest trustworthy.

If packages failed to scan, say so loudly. A silent failure is worse than a finding.

Design traps

  1. Rolling up to a single score. It hides which package is the problem.
  2. Sorting only by severity. A medium that is reachable and has a fix may deserve attention before a high that is not reachable.
  3. Dropping history. Keep the previous report so new findings are distinguishable from old.
  4. No machine readable output. If you cannot export it, you cannot route it.

Use the report to test a tool

When evaluating tools, ask to see a report for your own repository. Check that the package count matches your inventory, and see how they show failures. SCA monorepo and container coverage checks covers more tests.

Where Safeguard fits

Safeguard generates SBOMs and scan results per project, with reachability analysis and policy checks. Try one project with the free scan at https://gold.safeguard.sh/scan.

Try it yourself

Open the demo and look at which fields appear for each finding. Compare them with the list above.

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

Quick check

Is a package with no lockfile a clean package?

No. It should show as not scanned or manifest only, never as zero findings.

Why keep reachability unknown separate from not reachable?

Unknown means the tool could not decide, and treating it as safe hides real exposure.

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.