Manage cooldown for package dependencies to avoid zero-day supply chain vulnerabilities
Project description
chill-out
Have your dependencies chill out a bit while you make sure they are safe.
chill-out audits your lockfile for packages that are too fresh to trust. The lockfile is what actually gets installed,
so that's what matters: a requests declared in pyproject.toml is only a real risk once it shows up in uv.lock.
Maintainer tokens get stolen, typosquatters grab package names, and plenty of releases are just broken. Cooldown is
the practice of refusing any version that has been public for less than some grace period, long enough for the
community to spot trouble and react.
Supply chain attacks (compromised maintainer accounts, hijacked publishing tokens) typically surface as a brand-new
release of a package. If your cooldown window is 14 days and you run chill-out before every deploy, a malicious
release has to survive 14 days of public scrutiny before it can land in production. Transitives matter as much as
direct dependencies, sometimes more, because you can't vet them by hand.
GitHub's Dependabot supports cooldown windows natively, but Dependabot only runs on the schedule you give it.
chill-out runs on demand from your terminal, your CI, or your editor: it reads your lockfile, asks the registry when
each package was published, and tells you which entries (principals and transitives alike) are still inside the
cooldown window. When it can, it suggests an older version that is safely past its cooldown, or fixes your locked
dependencies outright to eliminate the threat.
Super-quick start
Requires: Python 3.12+
pip install chill-out
In any npm or Python project:
chill-out check
To rewrite your manifest with safe pins:
chill-out fix
Documentation
The complete documentation lives at the chill-out home page.
Demo
To check out the features, run the demo directly via uvx without installing it!
uvx --from "chill-out[demo]" chill-out-demo
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file chill_out-0.1.0.tar.gz.
File metadata
- Download URL: chill_out-0.1.0.tar.gz
- Upload date:
- Size: 78.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.8 {"installer":{"name":"uv","version":"0.11.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a52a1566c1d3917bfbeec7eba723323de399a7dad6d17d63ffe9aa5e4377382f
|
|
| MD5 |
eed513f2991f9ddb190be20e2c732ee2
|
|
| BLAKE2b-256 |
8fabd0e9490b5a4402283903279870efd9f0df1e3ea70c33c53b0d571e640c29
|
File details
Details for the file chill_out-0.1.0-py3-none-any.whl.
File metadata
- Download URL: chill_out-0.1.0-py3-none-any.whl
- Upload date:
- Size: 95.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.8 {"installer":{"name":"uv","version":"0.11.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5d786117f40fa525749a45223e69accf2291f1caf0e1068ed981a45a5a3ef2f4
|
|
| MD5 |
3636ab68e299fb4f2039d7bc42d411b1
|
|
| BLAKE2b-256 |
d6df5e3e0480501e4b487a38812971974c5fc0724f3eb560a07ba24f95b6cd5a
|