Exact versions, matched against advisories.
A lockfile says what actually ships. Every pinned version in it is resolved, matched against the public advisory database, and matched again the next day, and the day after, without touching GitHub.
7 ecosystems, one rule: pinned or nothing.
A range is not a version. Only an exact, pinned version is ever queried, so a match is a match and never a guess about what the resolver might have chosen.
The advisory that lands tomorrow.
The inventory is stored, so a new advisory is checked against every connected repository the same day it is published - from what is already known, with no call to GitHub and no re-scan of your code.
- Batched queries
Versions are looked up in batches and cached, so a large monorepo does not become a large bill.
- Targeted refresh
Only the repositories that hold an affected package are re-evaluated, and only for the packages that changed.
- Resolves itself
The finding resolves when the installed version leaves the affected range, on the next push that changes the lockfile.
- Severity from the advisory
The advisory sets the severity; the report adds whether the package is direct or transitive and where it is declared.
next 15.1.0 is in the affected range and the application has a middleware file.
Raised only when you use the thing.
A framework advisory about middleware is noise for an app with no middleware. These three fire only when the lockfile version is affected and the repository shows the feature in use, and they resolve when either stops being true.
- CVE-2025-29927Next.js middleware can be skipped with one request headerOnly when the application has a middleware file.
- CVE-2024-34351Next.js Server Actions follow a crafted Host headerOnly when the application uses Server Actions ("use server").
- CVE-2024-47831Next.js image optimizer can be driven into denial of serviceOnly when the application renders images through next/image.
source.framework.conditioned-advisory
What the page admits to running.
Without a repository, the free scan still reads what the site says about itself: 94 technologies recognised from headers, markup and script URLs, the versions that leak with them, and whether any of those is past its end of life or in an affected range.
- Software in use no longer receives security updatesruntime.technology.end-of-life
- A library the page loads has a published vulnerabilityruntime.technology.known-vulnerable-version
7 rules for what you depend on.
- Dependency with a known vulnerabilitysource.dependencies.known-vulnerability
- Dependency installed from git or a URLsource.dependencies.git-or-url-dependency
- Dependency version left floatingsource.dependencies.floating-range
- Install script downloads or executessource.dependencies.lifecycle-install-script
- No lockfile committedsource.dependencies.lockfile-missing
- Lockfile out of date with the manifestsource.dependencies.lockfile-out-of-date
- Internal package scope without a registry mappingsource.dependencies.internal-scope-without-registry
Connect a lockfile.
One repository per site, on every plan. The inventory is built once, and every advisory after that is checked against it.