Skip to content

Add 14 day cooldown before Renovate proposes updates - #302

Merged
nikobockerman merged 1 commit into
mainfrom
renovate-minimum-release-age
Aug 9, 2026
Merged

Add 14 day cooldown before Renovate proposes updates#302
nikobockerman merged 1 commit into
mainfrom
renovate-minimum-release-age

Conversation

@nikobockerman

Copy link
Copy Markdown
Owner

Registries serve newly published versions to dependency resolution immediately. The 2026 attack pattern is consistent: a publish token is stolen, a malicious version is published under a genuine package name, the payload runs at install time and harvests credentials from the installing machine, and the registry pulls the version within hours. An automated consumer fetches it before detection happens, so the delay has to be implemented on the consumer side. The exposure here is CI's own secrets - GITHUB_TOKEN, repository secrets, and release.yaml's packages: write - regardless of the fact that the published features are pure shell with no third party implementation.

Cost of the delay is close to zero here: no automerge, no deadlines, no SLA, and releases are triggered manually. Security fixes are unaffected

  • vulnerabilityAlerts defaults to minimumReleaseAge: null and prCreation: "immediate", so they bypass both this and schedule:monthly.

Drop the per-package jdx/mise rule: at 1 day it would have been a hole in the global value rather than a delay, and its stated purpose (avoid errors installing a very fresh version) is served better by 14 days.

Before this, only @devcontainers/cli was gated at all. prettier and shellcheck resolve through the mise registry to github-releases, not npm, so security:minimumReleaseAgeNpm never covered them.

Registries serve newly published versions to dependency resolution
immediately. The 2026 attack pattern is consistent: a publish token is
stolen, a malicious version is published under a genuine package name,
the payload runs at install time and harvests credentials from the
installing machine, and the registry pulls the version within hours.
An automated consumer fetches it before detection happens, so the delay
has to be implemented on the consumer side. The exposure here is CI's
own secrets - GITHUB_TOKEN, repository secrets, and release.yaml's
packages: write - regardless of the fact that the published features
are pure shell with no third party implementation.

Cost of the delay is close to zero here: no automerge, no deadlines, no
SLA, and releases are triggered manually. Security fixes are unaffected
- vulnerabilityAlerts defaults to minimumReleaseAge: null and
prCreation: "immediate", so they bypass both this and schedule:monthly.

Drop the per-package jdx/mise rule: at 1 day it would have been a hole
in the global value rather than a delay, and its stated purpose (avoid
errors installing a very fresh version) is served better by 14 days.

Before this, only @devcontainers/cli was gated at all. prettier and
shellcheck resolve through the mise registry to github-releases, not
npm, so security:minimumReleaseAgeNpm never covered them.
Copilot AI lite review requested due to automatic review settings August 9, 2026 13:45

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull request overview

This PR hardens Renovate dependency update proposals by introducing a 14‑day minimum release age, reducing exposure to short-lived malicious releases that may be published and then pulled within hours.

Changes:

  • Removes the security:minimumReleaseAgeNpm preset and explicitly ignores it (to avoid nested preset rules overriding the intended global setting).
  • Sets a global minimumReleaseAge: "14 days" for Renovate update proposals.
  • Adds package rules to exempt update types and datasources that don’t provide usable release timestamps for aging.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread .github/renovate.json5
@nikobockerman
nikobockerman merged commit 6a45967 into main Aug 9, 2026
21 checks passed
@nikobockerman
nikobockerman deleted the renovate-minimum-release-age branch August 9, 2026 13:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants