Skip to content
HomeHome
DE
WhatsAppMailPhone
← All articles
Dependabot now waits three days: setting up dependency cooldowns properly
Coding

Dependabot now waits three days: setting up dependency cooldowns properly

Photo: andylid0 / Unsplash

Since July 2026 GitHub delays Dependabot version updates by three days by default. Why that waiting period protects against supply chain attacks, why security updates still arrive immediately, and how to tune the cooldown in dependabot.yml for your project.

Eric MengeAuthorEric MengeOwner & web developer at EMIT Solution
Published
Reading timeca. 7 min

In short

  • Since July 2026 Dependabot opens pull requests for new package versions only three days after their release by default. The change is active automatically, nobody has to reconfigure anything.
  • The reason is supply chain attacks: malicious package versions are almost always discovered and removed within hours to a few days. GitHub catalogues around 18 newly identified malicious npm packages per day on average. Waiting three days lets most attacks pass you by.
  • Security updates are explicitly exempt from the cooldown and still arrive immediately, because with a publicly known vulnerability waiting is the bigger risk. The Next.js security release of 20 July 2026 with four high-severity flaws shows why that exemption is right.
  • The cooldown block in dependabot.yml adjusts the waiting period per project. An analysis of ten real attacks shows that a seven-day cooldown would have caught eight of them, fourteen days all but one outlier.

In the third week of July 2026, two announcements landed that seem to point in opposite directions. On 20 July the Next.js team published a security release with nine CVEs, four of them high severity, together with the clear instruction to patch immediately. Three days later GitHub announced that Dependabot now lets new package versions sit for three days by default before opening an update PR. Full speed in one message, handbrake in the other.

The contradiction dissolves once you keep the two cases apart, and that distinction is what this post is about. Separating “a known vulnerability is public” from “a new version has shipped” has become the most important fork in any update strategy.

What GitHub changed

Dependabot now applies a three-day waiting period to version updates. When a new version of a package appears, the corresponding pull request is no longer created the same day but 72 hours later at the earliest. This is the new default and active automatically, no configuration changes required.

The crucial exception is stated right alongside it: security updates are exempt from the cooldown and still arrive immediately. As soon as an advisory for one of your dependencies is published, Dependabot does not wait a second, because from that moment attackers know about the flaw too.

Why waiting protects you

GitHub delivers the reasoning with the change, and the numbers are starker than you might expect. The advisory database records around 18 newly catalogued malicious npm packages per day on average. In an analysis of 21 reported incidents from 2018 to 2026, the malicious versions were each pulled within hours of publication. In one case, compromised packages were live for roughly two hours before the community caught them.

Hourglass against a dark background Photo: nate_dumlao / Unsplash

That is the pattern of almost every supply chain attack running through package registries. The malicious code gets injected, gets noticed quickly and gets removed. It is dangerous almost exclusively for the projects that automatically pick it up inside that short window. An independent analysis of ten well-known attacks puts concrete numbers on those windows. The attack on the chalk package was detected in under twelve hours, Nx took four hours, rspack one, tj-actions three days. Eight of the ten attacks had a window of under a week. The big outlier remains xz-utils at around five weeks, a long-game operation that no realistic waiting period would have stopped.

What follows is an unspectacular but effective calculation. If you let new versions sit for three days, you miss nothing except the honour of being first, and you let the majority of attacks run into the void. Seven days would have caught eight of the ten documented cases, fourteen days everything except xz-utils. The protection costs exactly nothing.

The counter-check: the Next.js release

That leaves the question of whether the waiting period tears a hole somewhere else. The Next.js security release of 20 July is the fitting test case. Nine CVEs, four of them high severity, ranging from denial of service to a middleware bypass to server-side request forgery. The patched versions 15.5.21 and 16.2.11 were ready, and every hour of delay after publication was an hour in which attackers could aim the publicly documented flaws at unpatched applications.

This exact case bypasses the cooldown. An advisory exists, so Dependabot creates the update PR immediately, and that PR deserves to be merged and deployed promptly. The handbrake only applies to the normal case without a known security issue. Treating both situations the same gets it wrong in both directions, either you riskily pull fresh versions on day zero, or you leave public vulnerabilities open for days.

Configuring the cooldown

The three-day default can be adjusted per ecosystem in dependabot.yml. An example with a seven-day waiting period for npm packages:

version: 2
updates:
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "weekly"
    cooldown:
      default-days: 7

Source code in an editor on a screen Photo: cdr6934 / Unsplash

If you want finer control, let major versions mature longer than patch releases, since a major brings migration work anyway and benefits most from the community having found the early teething problems first. It is worth knowing what the cooldown does not cover: it only slows Dependabot’s own PRs. A manual npm install still pulls the freshest version. To extend the protection there, the package managers have their own knobs, pnpm calls it minimumReleaseAge, Renovate minimum-release-age, uv the exclude-newer flag.

What I make of it for small teams

I look after a good number of projects where updates run through Dependabot, and from that experience the change is overdue. The reflex of installing every new version on release day comes from a time when the biggest risk was outdated packages. That has flipped. Outdated packages remain a problem, but the most acute danger in the npm ecosystem today is the too-fresh version nobody has looked at yet.

For small teams and solo developers the cooldown is a gift, because it is the one protective measure that creates zero ongoing work. No extra tool, no dashboard, no process. The three-day default is deliberately cautious, and if you have no reason to chase maximum freshness, you can set it to seven days with a clear conscience. The other half of the bargain then needs to be taken seriously though: security alerts belong switched on, and when a real security update lands, it is due now, not eventually.

Bottom line, this is a rare kind of security measure, one that removes work instead of adding it. Three days of patience for routine updates, zero patience for known vulnerabilities. The normal case does not need more strategy than that.

If nobody has installed updates in your project for months, or you are not sure whether Dependabot and security alerts are even active, feel free to get in touch. I will take a look and set up the update process so it runs safely without daily attention.

FAQ

Doesn't the cooldown also delay important security fixes?+

No. The three-day default applies to regular version updates only. Security updates based on a published advisory are still created immediately. The logic is clean, with a published vulnerability the clock runs against you, with an ordinary version bump it runs in your favour.

What cooldown duration makes sense?+

The three-day default is a workable compromise. An analysis of ten documented supply chain attacks shows that eight had an attack window of under a week. Seven days would have caught those eight, fourteen days all but the xz-utils case, which stayed undetected for around five weeks. For projects without release pressure, seven days is a sensible setting, and major versions can wait even longer.

Does the cooldown apply when I install packages manually?+

No, Dependabot only slows down its own update PRs. An npm install still pulls the newest version. If you want the same protection there, configure the package manager itself, pnpm offers minimumReleaseAge, Renovate has minimum-release-age and uv the exclude-newer flag. With those, manual installs also skip versions that are too fresh.

Is a cooldown enough protection against supply chain attacks?+

It is one layer of several, but a remarkably cheap one. A cooldown costs nothing, needs no new tools and filters the majority of documented attacks purely through the waiting period. It does not help against long-game attacks like xz-utils, where the malicious code stayed inconspicuous for weeks. That is why security alerts, lockfiles and a sceptical eye on unusual package changes remain part of the picture.

Want to know more?

In a free intro call we discuss how you can use these topics for your company. Not a sales pitch, but an honest assessment.

Book a free intro call