Skip to content

Dependabot: add cooldown period - #2780

Merged
rodrigoprimo merged 1 commit into
developfrom
feature/dependabot-introduce-cooldown-period
Oct 23, 2026
Merged

rodrigoprimo merged 1 commit into
developfrom
feature/dependabot-introduce-cooldown-period

Conversation

@jrfnl

@jrfnl jrfnl commented Oct 7, 2026

Copy link
Copy Markdown
Member

Description

Updating all dependencies immediately after release carries risks as the package may have been compromised. The package may also still have "teething problems", especially for new features. Aside from known security releases, waiting a few days/weeks is often the less risky option, in hopes that someone else find a potential problems before we update the package. This is called a "cooldown" period.

Or as Zizmor describes it:

Performing updates without an appropriate cooldown presents both stability and supply-chain security risks:

  • Stability: updating to the newest version of a dependency immediately after its release increases the risk of breakage, since new releases may contain regressions or other issues that other users have not yet discovered.
  • Supply-chain security: package compromises are frequently opportunistic, meaning that the attacker expects to have their compromised version taken down by the packaging ecosystem relatively quickly. Updating immediately to a newly released version increases the risk of automatically pulling in a compromised version before it can be taken down.

Of course, for frequently released packages, this cooldown period shouldn't be too long, as otherwise the package will never update, as the "latest" release will always be too young.

Since July 2025, the Dependabot config offers the possibility to add a cooldown period to delay the creation of dependency update PRs based on the number days since the release came out. Depending on the ecosystem, this cooldown period can be configured with more or less flexibility (only default-days or semver based differentiation). Unfortunately, the github-actions ecosystem only allows the default-days option.

Since then (July 2026), GitHub, in their wisdom, has introduced a standard "cooldown" period for all packages of three days. This is counter-productive as that means that the chances of a compromise being found within the first three days have decreased significantly.

The Zizmor tool recommends a cooldown of seven days, which, with increased adoption of zizmor, again decreases the likelihood of a compromise being found before it reaches this package.

With all this in mind, I propose setting a cooldown period of 10 days.

Refs:

Suggested changelog entry

N/A

Updating all dependencies immediately after release carries risks as the package may have been compromised. The package may also still have "teething problems", especially for new features.
Aside from known security releases, waiting a few days/weeks is often the less risky option, in hopes that someone else find a potential problems before we update the package.
This is called a "cooldown" period.

Or as Zizmor describes it:
> Performing updates without an appropriate cooldown presents both stability and supply-chain security risks:
> * **Stability**: updating to the newest version of a dependency immediately after its release increases the risk of breakage, since new releases may contain regressions or other issues that other users have not yet discovered.
> * **Supply-chain security**: package compromises are frequently _opportunistic_, meaning that the attacker expects to have their compromised version taken down by the packaging ecosystem relatively quickly. Updating immediately to a newly released version increases the risk of automatically pulling in a compromised version before it can be taken down.

Of course, for frequently released packages, this `cooldown` period shouldn't be too long, as otherwise the package will never update, as the "latest" release will always be too young.

Since July 2025, the Dependabot config offers the possibility to add a `cooldown` period to delay the creation of dependency update PRs based on the number days since the release came out.
Depending on the ecosystem, this `cooldown` period can be configured with more or less flexibility (only `default-days` or semver based differentiation). _Unfortunately, the `github-actions` ecosystem only allows the `default-days` option._

Since then (July 2026), GitHub, in their wisdom, has introduced a standard "cooldown" period for all packages of three days.
This is counter-productive as that means that the chances of a compromise being found within the first three days have decreased significantly.

The Zizmor tool recommends a `cooldown` of seven days, which, with increased adoption of zizmor, again decreases the likelihood of a compromise being found before it reaches this package.

With all this in mind, I propose setting a `cooldown` period of 10 days.

Refs:
* https://github.blog/changelog/2025-07-01-dependabot-supports-configuration-of-a-minimum-package-age/
* https://github.blog/changelog/2026-07-14-dependabot-version-updates-introduce-default-package-cooldown/
* https://docs.github.com/en/code-security/reference/supply-chain-security/dependabot-options-reference#cooldown-
* https://docs.github.com/en/code-security/tutorials/secure-your-dependencies/optimizing-pr-creation-version-updates
* https://docs.zizmor.sh/audits/#dependabot-cooldown
@jrfnl jrfnl added this to the 3.4.x milestone Oct 7, 2026

@rodrigoprimo rodrigoprimo left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the PR, Juliette.

I have a question about the cooldown period. As far as I can tell, Dependabot runs only twice a month in this repo (on the 5th and the 20th), and the cooldown is checked during those runs. Does this mean an update could take up to about 25 days to be proposed, not 10? For example, a release published on the 11th would be only 9 days old on the 20th, so it wouldn't be picked up until the 5th of the following month.

I don't think this is necessarily a problem. I just wanted to check whether this was considered when choosing the 10-day period.

@jrfnl

jrfnl commented Oct 22, 2026

Copy link
Copy Markdown
Member Author

@rodrigoprimo

As far as I can tell, Dependabot runs only twice a month in this repo (on the 5th and the 20th), and the cooldown is checked during those runs. Does this mean an update could take up to about 25 days to be proposed, not 10?

Correct.

I don't think this is necessarily a problem. I just wanted to check whether this was considered when choosing the 10-day period.

It was not, as that's a different decision/consideration. The cooldown is about security, while the "twice a month" runs are about maintainer fatigue.

Having said that, yes, it could mean that a release is picked up later than we'd like, but if there is something truly important/something we are waiting for in an action runner release, we can always manually trigger a Dependabot run in the interim and get a PR, as long as the release is 10 days old. We could even update the workflows manually if needs be.

In the future, we could add an exclude to the cooldown for "trusted" action runners, like ones within our own control and which already have their own 10-day cooldown window for what they use under the hood, however, for now, this feature appears to be buggy, which is why I haven't done so yet. See: dependabot/dependabot-core#16502

@rodrigoprimo
rodrigoprimo self-requested a review October 23, 2026 13:51

@rodrigoprimo rodrigoprimo left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sounds good to me. Thanks for the additional details.

@rodrigoprimo
rodrigoprimo merged commit 6423a44 into develop Oct 23, 2026
48 of 49 checks passed
@rodrigoprimo
rodrigoprimo deleted the feature/dependabot-introduce-cooldown-period branch October 23, 2026 13:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants