Safeguard
Security Guides•

Why does an EPSS score history jump when the model changes?

EPSS has had five model versions since 2021. A score history that crosses a version date shows a method change, not a change in the CVE. How to spot it.

Safeguard Security Team
4 min read

An EPSS score history can jump because the model was replaced, not because the vulnerability changed. FIRST says each model version shifted scores on the day it started publishing. If your chart crosses one of those dates, treat the step as a methodology break and compare only within a version.

What the version dates are

The EPSS data page lists the version history and the first publishing date of each. Here is the table, taken from that page.

VersionStarted publishingHow to spot it in the file
v12021-04-14No comment line at the top
v2 (v2022.01.01)2022-02-04Header comment with model version and date
v3 (v2023.03.01)2023-03-07Header comment
v4 (v2025.03.14)2025-03-17Header comment
v5 (v2026.06.15)2026-06-15Header comment

The page notes that daily files from v2 onward start with a line beginning with a hash sign that names the model and publish date. That is the cheapest way to detect a boundary: read the first line of each daily file before you parse the rest.

Why a retrain shifts scores

EPSS is a calibrated probability. When the model is retrained, the features, the training window and the calibration are refit, so the same CVE can land at a different probability the next morning even if nothing happened in the world. FIRST's FAQ says retraining is driven by evidence of performance drift, and that in practice it has happened about once a year. So expect a step roughly annually, not a smooth drift.

Do not confuse this with the daily movement you see inside one version. Within a version the model is fixed, and scores move because new inputs arrive, such as exploit code or discussion. A retrain is a different cause with a different pattern: many CVEs shift at once on one date.

How to protect your analysis

  1. Pull the daily files from the public archive, which goes back to 2021-04-14.
  2. Record the model version from the header line next to each date in your table.
  3. Draw a vertical marker on any chart at each version start date.
  4. When you compare two dates, compare within the same version. If you must cross a boundary, say so in the caption.
  5. For alert rules such as "score rose by more than a set amount", suppress the alert on version start dates, or you will page someone for a methodology change.

A cheap sanity check helps. On a version start date, look at how many CVEs moved by a large amount. If it is a large share of the whole file, you are looking at a model change.

What this means for thresholds

If you set a fixed threshold, such as a probability you act on, a retrain can move the number of CVEs above it. Your queue can grow or shrink with no change in your estate. FIRST says there is no universal threshold and recommends tuning against your remediation capacity, so re-check the count above your line after each version change and adjust if your capacity has not changed. The percentile is relative to the whole scored population, so it can be steadier across a version boundary than a raw probability, but verify that on your own data instead of assuming it.

Safeguard's reachability analysis, SBOM and dependency scanning show which CVEs are present and reachable in your code, which keeps your queue grounded when an external score shifts. You can try a free scan at gold.safeguard.sh/scan.

Try it yourself

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

Click into a finding and look at which signals sit beside it, then note which of them are external scores that can shift under you.

Quick check

How often does the EPSS model change?

FIRST says updates are triggered by evidence of performance drift rather than a calendar, and that in practice retraining has happened about once a year. The data page lists five versions, the latest starting 2026-06-15.

Is a score jump after a version date a real change in risk?

Not on its own. It is a change in method. Check whether many CVEs moved on the same date. If so, compare within a version and do not alert on the step.

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.