minimumReleaseAge is still creating PRs before the configured age threshold leading to potential vulnerabilities #38324
Replies: 3 comments 11 replies
-
You expect As per the docs, there's no mention that solely Whether branch/PR is created or not can be controlled by users using other available options which gives users the flexibility to customize behavior.
A design choice, we won't be discussing that here
If no branch previously existed for the update .. then by default you won't get a branch because of If an older branch with same name exists, as in your case. You set
If you have found a case where it doesn't create a separate discussion. Now, the actual issue which cannot be handled by Renovate today is the update of an existing branch with updates that haven't met release age, which as you mentioned have potential to propagate attacks via CI pipelines incase those are configured to run when branch is pushed. We can discuss on how this can be tackled. |
Beta Was this translation helpful? Give feedback.
-
|
I've prepared an example repository testing out this behaviour, using a Custom Datasource for more predictable testing. You can see copies of the full debug logs for each scenario being tested, and steps on how to run it in there. So far I've only tested with |
Beta Was this translation helpful? Give feedback.
-
|
Thanks very much @onigoetz for that digging + the detailed info. To expand on what you've said:
{
"currentValue": "11.7.19",
"currentVersion": "11.7.19",
"currentVersionAgeInDays": 10,
"currentVersionTimestamp": "2025-09-16T00:11:49.177Z",
"datasource": "npm",
"depName": "contentful",
"depType": "dependencies",
"fixedVersion": "11.7.19",
"homepage": "https://www.contentful.com/developers/documentation/content-delivery-api/",
"isSingleVersion": true,
"lockedVersion": "11.7.19",
"mostRecentTimestamp": "2025-09-26T17:27:32.574Z",
"packageName": "contentful",
"prettyDepType": "dependency",
"registryUrl": "https://registry.npmjs.org",
"sourceUrl": "https://github.com/contentful/contentful.js",
"versioning": "npm",
"warnings": [],
"updates": [
{
"bucket": "non-major",
"newVersion": "11.8.1",
"newValue": "11.8.1",
"releaseTimestamp": "2025-09-26T17:27:32.574Z",
"newVersionAgeInDays": 0,
"newMajor": 11,
"newMinor": 8,
"newPatch": 1,
"updateType": "minor",
"isBreaking": false,
"pendingChecks": true,
"libYears": 0.029367814466007103,
"branchName": "renovate/all-minor-patch"
}
]
},
{
"depType": "dependencies",
"depName": "contentful",
"currentValue": "11.7.19",
"datasource": "npm",
"prettyDepType": "dependency",
"lockedVersion": "11.7.19",
"updates": [
{
"bucket": "non-major",
"newVersion": "11.8.1",
"newValue": "11.8.1",
"releaseTimestamp": "2025-09-26T17:27:32.574Z",
"newVersionAgeInDays": 0,
"newMajor": 11,
"newMinor": 8,
"newPatch": 1,
"updateType": "minor",
"isBreaking": false,
"pendingChecks": true,
"libYears": 0.029367814466007103,
"branchName": "renovate/all-minor-patch"
}
],
"updates": [
{
"bucket": "non-major",
"newVersion": "11.8.1",
"newValue": "11.8.1",
"releaseTimestamp": "2025-09-26T17:27:32.574Z",
"newVersionAgeInDays": 0,
"newMajor": 11,
"newMinor": 8,
"newPatch": 1,
"updateType": "minor",
"isBreaking": false,
"pendingChecks": true,
"libYears": 0.029367814466007103,
"branchName": "renovate/all-minor-patch"
}
Aside: the
|
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
How are you running Renovate?
A Mend.io-hosted app
If you're self-hosting Renovate, tell us which platform (GitHub, GitLab, etc) and which version of Renovate.
No response
Please tell us more about your question or problem
My project's configuration includes
minimumReleaseAge:https://github.com/onigoetz/renovate-preset/blob/main/base.json#L15-L20
(some other settings that interact with
minimumReleaseAgesuch asinternalChecksFilterorprCreationwere at their default value at the moment of the described facts2025-09-26T16:13:15Zcontentfulversion 11.8.0 released2025-09-26T17:27:32Zcontentfulversion 11.8.1 released2025-09-26T21:27:25ZI checked "Update all non-major dependencies (next,node,yarn)" on the Dependency Dashboard onigoetz/onigoetz.github.io#892025-09-26T21:28:35ZRenovate opened a PR Update all non-major dependencies onigoetz/onigoetz.github.io#3332025-09-26T21:33:41ZI merged the PR2025-09-27T02:22:03ZRenovate opened a PR for contentful 1.8.1: Update all non-major dependencies onigoetz/onigoetz.github.io#334internalChecksFilter=strictis the default but it still created the PRnpmMinimalAgeGate: 4320which strictly prevents installing packages younger than three days2025-10-01T00:09:10.105Zcontentful Released version 11.8.2Why is this a problem?
minimumReleaseAgeto three days, I really expect no PR nor branch to be created under three days.minimumReleaseAgeto do just thatnpmMinimalAgeGatefeaturepackage.jsonyarn installbut fails as Yarn finds no installable candidateWhat I expect
I expect that the
minimumReleaseAgesetting strictly enforces to forbid packages under the specified age to be added to the repository.I opened a PR that introduces a new
allowedMinimumReleaseAgewhich would strictly applyminimumReleaseAgethe same wayallowedVersionsdoes: #38267Additional insights
As you can see in the log below, Renovate finds the update candidate, then proceeds to create the PR as it is within schedule. I think
minimulReleaseAgeis it possible that it doesn't interact well with groups ?Small bug report
The "lock file error" in the log has a clear message on what's wrong with Yarn, but the artifact update error message on the PR does not show that message. I can open a separate discussion just for that aspect
Logs (if relevant)
Logs
Full Log: https://gist.github.com/onigoetz/752b0cb3f4963abf815eaa7a856b09d0
Beta Was this translation helpful? Give feedback.
All reactions