Skip to main content

Manage cooldown for package dependencies to avoid zero-day supply chain vulnerabilities

Project description

Latest Version Python Versions Build Status Documentation Status

chill-out

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

chill_out-0.1.0.tar.gz (78.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

chill_out-0.1.0-py3-none-any.whl (95.9 kB view details)

Uploaded Python 3

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

Hashes for chill_out-0.1.0.tar.gz
Algorithm Hash digest
SHA256 a52a1566c1d3917bfbeec7eba723323de399a7dad6d17d63ffe9aa5e4377382f
MD5 eed513f2991f9ddb190be20e2c732ee2
BLAKE2b-256 8fabd0e9490b5a4402283903279870efd9f0df1e3ea70c33c53b0d571e640c29

See more details on using hashes here.

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

Hashes for chill_out-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5d786117f40fa525749a45223e69accf2291f1caf0e1068ed981a45a5a3ef2f4
MD5 3636ab68e299fb4f2039d7bc42d411b1
BLAKE2b-256 d6df5e3e0480501e4b487a38812971974c5fc0724f3eb560a07ba24f95b6cd5a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page