- › GitHub and PyPI added a time-based cooldown to Dependabot that holds a newly published package version back before it flows automatically into your build.
- › It works because most malicious package versions are discovered and pulled within hours of publication, so a short quarantine lets the community find the poison before it reaches you.
- › The deeper shift is treating recency as a risk signal. The newest version of a dependency is the one that has been reviewed by the fewest eyes for the least time.
- › You do not have to wait for the platform. Pin versions, stage a cooldown window on non-urgent updates, and tier your dependencies by blast radius today.
- › A delay is one layer, not a cure. It defangs the smash-and-grab attacks that dominate the numbers and does little against a patient, targeted one, so pair it with provenance and monitoring.
There is a habit baked into modern software development that we rarely question: newer is better. Update to the latest version. Keep your dependencies current. A stale lockfile is a liability, a red mark in the audit. The whole culture of dependency management pushes toward the front edge, toward pulling in the newest release as soon as it lands.
For security, that instinct is backwards, and this week two of the largest software registries in the world admitted as much in the most practical way possible. GitHub and PyPI added a time-based mechanism to Dependabot that holds a newly published package version at arm’s length before it flows automatically into your build. A cooldown. A deliberate pause between the moment a dependency is published and the moment your pipeline is allowed to trust it. It is a small change, and it quietly rewrites one of the assumptions the software supply chain has been running on.
Why a Delay Works
Start with the mechanic, because it is almost embarrassingly simple and that is the point.
The dominant supply-chain attack of the past few years is not a subtle, patient infiltration. It is a smash-and-grab. An attacker compromises a maintainer account or typosquats a popular package name, publishes a malicious version, and races to get it pulled into as many builds as possible before anyone notices. The window that matters to them is the first few hours after publication, when the package is live, automated tools are hungrily pulling the latest version, and the wider community has not yet looked at it.
Here is the part that makes the cooldown work: most of these malicious versions are caught fast. Security researchers, automated scanners, and the registries themselves find and yank the majority of poisoned packages within hours of publication. The detection machine is actually pretty good. The problem has always been that your build pipeline moves faster than the detection machine, pulling the bad version into production before the community has finished vetting it.
A cooldown closes that gap by refusing to be first. If your pipeline waits, say, a couple of days before it trusts a newly published version, then in the overwhelming majority of cases the malicious release has already been identified and removed before it was ever eligible to reach you. You did not need a smarter scanner or a threat feed. You just needed to stop volunteering to be the canary.
The Real Shift: Recency Is a Risk Signal
The cooldown is useful on its own, and the idea underneath it is the thing worth internalizing, because it applies well beyond one Dependabot setting.
The newest version of a dependency is, by definition, the one that has been reviewed by the fewest eyes for the least amount of time. It has the least community exposure, the least real-world runtime, and the shortest track record. In every other part of security we treat “brand new and unvetted” as a risk state. A brand-new certificate, a newly registered domain, a first-seen executable, a fresh email sender all raise suspicion precisely because they lack history. Software dependencies are the strange exception where we have trained ourselves to treat newest as safest, and to feel behind if we are not on it.
Flipping that intuition is the whole game. Recency is not a virtue to chase blindly. It is a property to weigh. A version that has been in the wild for two weeks with heavy adoption and no reported issues is, from a supply-chain perspective, safer than the one published twenty minutes ago, even though the older one is technically more out of date. This does not mean freezing your dependencies forever, because unpatched known vulnerabilities are their own serious problem and a stale dependency is a real liability. It means being deliberate about the difference between a security update you need urgently and a routine version bump you are taking simply because it exists.
What You Can Do Now
You do not have to wait for a platform to hand you a toggle. The discipline is available today, and most of it is configuration and judgment rather than new tooling.
Turn on the cooldown if you have it, and tune it. If you use Dependabot, enable the time-based delay and pick a window that fits your risk tolerance. A day or two of cooldown on non-urgent updates costs you almost nothing and takes you out of the blast radius of a freshly poisoned release. If your ecosystem does not offer it natively, you can approximate it with a policy that says routine dependency bumps wait N days after publication before they are merged.
Pin your versions and update on purpose. Lockfiles and pinned versions exist so that your build is reproducible and so that a new upstream release does not silently flow into production the moment it publishes. Pinning turns every update into a decision rather than an accident. That is the foundation the cooldown sits on, and if you are still floating on unpinned version ranges, that is the first thing to fix.
Separate the urgent from the routine. The one case where you do not want to wait is a security patch for a vulnerability you are actually exposed to. Build a fast lane for those and a slow lane for everything else. This is exactly the reachability-and-exploitability triage we have written about before, and the same logic that runs through a mature cyber supply chain security program: not every update carries the same weight, and treating them all as equally urgent is how you end up rushing a poisoned package into production to fix a bug that never threatened you.
Tier your dependencies by blast radius. A logging utility that runs in your build tooling and a library that handles authentication in production are not the same risk. The dependencies with the deepest access and the widest reach deserve the longest cooldown, the closest review, and the most scrutiny on provenance. Map which of your dependencies could actually hurt you if they turned malicious, and spend your attention there.
Where a Delay Is Not Enough
I want to be honest about the limits, because a cooldown is a layer, not a cure, and selling it as a cure is how good ideas get discredited.
A time delay defangs the smash-and-grab attacks that dominate the statistics. It does much less against a patient, targeted adversary. If an attacker compromises a legitimate, widely trusted package and plants something subtle enough to survive the first days of community review, a cooldown will happily wait out the window and then hand you the compromised version with full confidence. The delay filters out the noisy, fast-moving majority. The quiet, deliberate attack is a different problem.
That is why the cooldown belongs inside a fuller supply-chain program rather than standing alone. You still need to know what is in your software, which is the job of a software bill of materials. You still need provenance, a verifiable record of where a package came from and who built it. You still need to monitor your dependencies for newly disclosed vulnerabilities and for the behavioral signs of a compromised component at runtime. The DevSecOps governance work that ties SBOMs and exploitability data into your pipeline is what catches the threats a simple delay cannot, and the cooldown makes that deeper work cheaper by clearing the flood of opportunistic attacks off your plate first.
The Quiet Lesson
The reason this small change is worth an article is the mindset it represents. For years the software industry optimized dependency management almost entirely for speed and freshness, and treated the security cost of being first as somebody else’s problem. GitHub and PyPI adding a deliberate pause is an admission that the cost was real and that a little friction, in the right place, buys a great deal of safety.
The organizations that handle their supply chain well in the next few years will be the ones that stop treating the newest version as the safest by default, that build a boring, deliberate cadence into how they adopt code, and that spend their scarce review attention on the dependencies that could actually hurt them. Being a little slower to trust is not a weakness in a supply chain. It is the whole defense.
If you want to understand which of your dependencies could actually hurt you, how fast a poisoned package would reach your production build, and where a cooldown would buy you the most, that is the work we do. Start with our free Human Attack Surface Score, or contact Grab The Axe and we will map your software supply chain the way an attacker would probe it.
Operating on the philosophy that 'you can't build a secure system if you don't know how to break it,' Chris leads our engineering division. A top 1% National Cyber League competitor, he hardens our digital infrastructure against the very exploits he has mastered.
View Author Page →