Feature request: minimum release age (cooldown) for resolved pins
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 35/100
Línea de trabajo
Start by tracing the entry points for gh actions-lock, --relock, --verify, and --no-fix, focusing on how actions.lock references are resolved and checked. Compare the proposed --min-age behavior across initial pinning, relocking, ref narrowing, and verification, then clarify the fallback and configuration semantics before implementation.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Summary
Add an option to exclude releases published less than N days ago when resolving action references into lockfile pins — the same "cooldown" concept as pinact's -min-age, Dependabot's cooldown, or the npm ecosystem's minimumReleaseAge settings, applied to actions.lock.
Motivation
- Avoiding freshly-published releases is one of the cheapest supply-chain defenses. Recent research found that most compromised packages are detected and removed within about a week of publication (see https://nesbitt.io/2026/03/04/package-managers-need-to-cool-down.html), so simply not adopting versions younger than a few days moves consumers out of the blast window.
- Automated update paths already have workarounds: tools like Renovate (
minimumReleaseAge) and Dependabot (cooldown) can gate their own update proposals. - But when a maintainer runs
gh actions-lockorgh actions-lock --relockmanually, the tool always resolves the current latest SHA. There is no substitute on this path — unless the tool itself offers an age gate, manual relocking can pull in a release published minutes ago.
Prior art
- Dependabot
cooldown(default-days,semver-*-days): version updates wait out a cooldown by default (3 days); security updates bypass it. Same vendor, same problem space. - npm ecosystem: npm CLI
min-release-age, pnpmminimumReleaseAge(on by default since pnpm 11), YarnnpmMinimalAgeGate, Buninstall.minimumReleaseAge. - pinact
-min-age/--verify-min-age: the direct predecessor for pinning GitHub Actions; filters candidate versions by tag commit date / release publish date, and can verify existing pins against the same floor. - action-locker
--min-age-days: a third-party lockfile tool with the same feature, including a fallback mode that walks back to the newest release that clears the age floor instead of hard-failing. - Renovate
minimumReleaseAge: feasible here because GitHub tag/release lookups expose release timestamps — the same data sourcesactions.lockresolution already touches.
Proposed semantics (strawman)
- A
--min-age <duration>flag and/or a lockfile/config field. - Applied wherever a version is selected: initial pinning,
--relock, and ref narrowing (e.g.@v4resolves to the newestv4.x.ytag that clears the age floor). - When no version satisfies the window: either fail-closed with a clear error, or fall back to the newest release that does (action-locker style) — open to maintainer preference.
--verify/--no-fixcould additionally flag pins younger than the window (the pinact--verify-min-ageequivalent), so CI can enforce the policy without restricting manual runs.
Notes
- Checked
gh actions-lock --help(v0.1.6): no age-related option exists. - I couldn't find an existing issue or discussion covering this (searched this repo's issues,
github/actions-lockfile,cli/cliRFC #13314, andgithub/roadmap).
- Lenguaje dominante
- Go
- Estrellas
- 253
- Forks
- 15
- Merge medio
- 19 h 30 min
- PR fusionados (30 d)
- 60
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de github/gh-actions-lock
-
Fix mode unpins a reusable workflow call when the same repository is also used as a step actionAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
github/gh-actions-lock#261 ·
Los mantenedores suelen responder en 1 día
-
Dependabot drops an unchanged transitive dependency when bumping a composite actionPosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abierto
Dificultad 4/5 3-5 días Aptitud para principiantes 30/100
github/gh-actions-lock#257 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
--migrate-local-actions rewrites action files in nested worktrees and submodulesPosiblemente ocupada @aksestok la tomó hace 1 día. Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 20/100
github/gh-actions-lock#253 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 3/5 1-2 días Aptitud para principiantes 52/100
github/gh-actions-lock#252 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
github/gh-actions-lock#247 · 1 comentario ·
Los mantenedores suelen responder en 1 día
Todos los issues de github/gh-actions-lock
Issues similares
-
agent-butler-finding chore
Dificultad 1/5 Menos de una hora Aptitud para principiantes 78/100
jordansmall/spindrift#6318 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Eyevinn/moqlivemock#166 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
JakeChampion/lang#14091 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
hyperledger/fabric-x-orderer#1409 ·
Los mantenedores suelen responder en 3 días
-
get actions doesn't show the approval flag, and describe action shows it unformattedPosiblemente ocupada @kenokech la tomó hoy. Abiertobug
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
Los mantenedores suelen responder en 1 día