Securing the agentic AI software supply chain
← Academy
Defense Jul 15, 2026 · 7 min

Dependabot cooldown: what the three-day default covers and where attackers still have room

Dependabot now waits three days before opening version update PRs, giving the community time to catch compromised releases. The default applies to all ecosystems on github.com and is configurable per SemVer level. Security updates bypass the cooldown entirely. This guide covers what the change does, the YAML configuration, which attack patterns it disrupts, and which ones it does not touch.

On July 14, 2026, GitHub enabled a default three-day cooldown on Dependabot version updates. When a new release appears on a package registry, Dependabot now waits at least three days before opening a version update PR. The goal is to give the community time to discover and flag compromised or broken releases before they reach your lockfile through automated updates.

The default costs almost nothing (a three-day delay on non-security updates) and blocks a real attack pattern: publishing a malicious version and relying on automated tooling to distribute it before anyone notices. The coverage still has clear boundaries.

What changed

Before this update, Dependabot opened version update PRs as soon as it detected a new release during its scheduled run. A malicious package version published at 2 AM could have a PR waiting for a maintainer by 6 AM.

The new default inserts a three-day gap. Dependabot still checks for updates on its configured schedule (daily, weekly, or monthly), but it skips any version that has been on the registry for fewer than three days. No configuration is required. The default applies to all supported ecosystems on github.com and will ship in GitHub Enterprise Server 3.23.

Security updates are exempt. When a GitHub Advisory flags a vulnerability and a patched version exists, Dependabot opens that PR immediately regardless of how recently the fix was published. The cooldown applies only to routine version bumps.

Configuring the cooldown

The default works without any changes to dependabot.yml. To customize it, add a cooldown block to an update entry:

version: 2
updates:
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "weekly"
    cooldown:
      default-days: 5
      semver-major-days: 7
      semver-minor-days: 4
      semver-patch-days: 2

Available parameters

ParameterWhat it controls
default-daysCooldown for dependencies without a more specific rule
semver-major-daysCooldown for major version bumps (e.g. 2.0.0 to 3.0.0)
semver-minor-daysCooldown for minor version bumps (e.g. 2.1.0 to 2.2.0)
semver-patch-daysCooldown for patch version bumps (e.g. 2.1.0 to 2.1.1)
includeDependencies to apply cooldown to (up to 150, supports * wildcards)
excludeDependencies exempt from cooldown (up to 150, supports * wildcards)

The exclude list always wins. If a dependency appears in both include and exclude, it is excluded from cooldown and updated immediately.

SemVer parameter support

Not every ecosystem supports SemVer-specific cooldowns. All ecosystems support default-days. The SemVer-level parameters (semver-major-days, semver-minor-days, semver-patch-days) are supported by npm/Yarn, Cargo, pip, Composer, Maven, NuGet, Bundler, Go modules, Gradle, Swift, Pub, and others that use semantic versioning natively. Ecosystems like Docker, GitHub Actions, Terraform, and Helm support only default-days.

Opting out

To disable cooldown entirely for an ecosystem:

cooldown:
  default-days: 0

This restores the previous behavior where Dependabot opens PRs as soon as it detects a new version.

What the cooldown disrupts

The three-day window targets a specific phase of supply chain attacks: the period between a malicious version being published and the community detecting it.

Rapid-fire version publishing. The jscrambler compromise saw five malicious versions published in three hours, with the attacker adapting mid-attack. A three-day cooldown would have prevented all five versions from reaching automated PRs before the community response was underway. The first detection came within hours, the maintainer remediation within minutes after that. By day three, the malicious versions were deprecated.

Smash-and-grab account compromise. When an attacker gains access to a maintainer’s publishing token and pushes a single malicious version, the window between publication and detection is the critical variable. Community detection through download monitoring, automated scanning, or user reports typically surfaces compromises within 24 to 72 hours. A three-day cooldown sits right at the edge of that detection window.

Dependency confusion with new packages. If an attacker publishes a new package to a public registry that shadows a private package name, the three-day delay gives security teams more time to notice the unexpected new package before it appears in automated PRs.

What the cooldown does not cover

Security updates bypass the cooldown

The exemption is deliberate: when a known vulnerability has a fix, speed matters more than caution. It does mean an attacker who can get a GitHub Advisory created for a fake vulnerability in their own package could use the security update path to skip the cooldown. Creating a convincing advisory for a package with real users takes real effort, and the exemption still exists.

Malicious versions that survive three days

The cooldown assumes malicious versions get caught within three days. Some do not. The ai-pro-sdk campaign uses encrypted, obfuscated payloads that do not trigger simple static analysis. Packages with low download counts receive less community scrutiny. If a malicious version is still live on day four, the cooldown provides no further protection. Dependabot opens the PR as if nothing is wrong.

Install-time attacks outside Dependabot

The cooldown applies to Dependabot version update PRs. It does not affect:

  • Manual npm install package@latest commands
  • CI pipelines that resolve floating version ranges on every build
  • Lock-free installations where the latest version is always pulled
  • Other update tools (Renovate, custom scripts) unless they implement their own cooldown

Developers who install packages directly are not protected by this change.

Existing dependencies at current versions

Cooldown applies to new version updates. If your lockfile already pins a malicious version, the cooldown does nothing. It prevents Dependabot from moving you to a bad version, not from staying on one.

Tag-based ecosystems

For ecosystems like GitHub Actions and Docker, where versions are tags rather than immutable registry artifacts, the concept of “available on its registry for three days” is less clear-cut. A GitHub Action tag can be force-pushed to point at different code without publishing a new version. The cooldown counts from when the version appeared, not from when the underlying code changed. SHA pinning remains the primary defense for these ecosystems.

Transitive dependencies

Dependabot version updates target your direct dependencies. If a transitive dependency (a dependency of your dependency) publishes a malicious version, the cooldown does not apply unless your direct dependency also publishes a new version that pulls it in.

Time Day 0 Published Day 1 Day 2 Day 3 Cooldown window Without cooldown PR opened on next run With cooldown PR opened Community detection window Aephix
The cooldown delays Dependabot PRs by three days, creating a window for community detection. Without cooldown, a malicious version can reach a PR within hours of publication.

What to do now

Leave the default on. Three days is a reasonable delay for version updates. If your project can tolerate a slightly longer buffer, consider raising default-days to 5 or 7. The cost is minimal for most projects.

Use SemVer-specific days for fine-grained control. Major version bumps deserve more scrutiny and a longer cooldown. Patch updates from trusted, high-traffic packages can safely use a shorter window:

cooldown:
  semver-major-days: 7
  semver-minor-days: 4
  semver-patch-days: 2

Do not disable cooldown for convenience. Setting default-days: 0 restores the old behavior where a malicious version can reach a PR within hours. The three-day delay is not a bottleneck for any reasonable development workflow.

Pair cooldown with lockfile discipline. Cooldown protects the update path, not the install path. Pin exact versions in your lockfile (npm ci, not npm install). Use --ignore-scripts or npm v12’s allowScripts default to block install-time execution. Cooldown and lockfile pinning cover different attack surfaces.

Keep watching transitive dependencies. Cooldown covers your direct dependencies in Dependabot PRs. Your transitive dependency tree is not covered. Use npm audit, npm sbom, or a dedicated SCA tool to monitor the full graph.

Remember that SHA pinning is still necessary for GitHub Actions. The cooldown applies to GitHub Actions version updates via default-days, but the underlying problem with Actions is tag mutability, not release timing. Pin to full commit SHAs and use Dependabot or Renovate to keep the SHAs current. The cooldown adds a small buffer on top, but SHA pinning is the primary control.

Where Aephix fits

The cooldown buys time. Three days for the community to notice that a package version is compromised. The question is what happens during those three days, and what happens when three days is not enough. Some malicious packages survive for weeks or months because they use encrypted payloads, low download counts, or target niche ecosystems where fewer eyes are watching.

Aephix Sleuth links a flagged package to the wider operation behind it, with a confidence level and supporting evidence, across packages, models, skills, MCP servers, extensions, and containers. When Dependabot proposes an update, the version age is only part of the picture. Who published it, and what else have they published, matters more. Aephix Vantage gives you a free, cross-ecosystem view of what is already known to be malicious, so a package that the cooldown let through is something you can still catch before it merges.