Real attacks happen. In 2024, published PyPI wheels have been silently replaced after release — same version, different binary, no changelog. pip install trusts the hash it saw last time. Do you?
⚠  Active threat — supply-chain attacks

The package you
installed last week
isn’t the same file anymore.

PyPI allows maintainers to re-upload a wheel after publication. No version bump. No announcement. Just a different SHA256 — and every pip install since then has been running attacker code. PyPI Watch alerts you the moment a hash changes.

Start monitoring — free

How PyPI Watch works

Three steps from registration to alert — no agent to install.

1

Register a package

Enter a package name and your email. PyPI Watch immediately snapshots every .whl file and its SHA256 hash across all published versions.

2

Hourly hash verification

Every hour, PyPI Watch re-fetches the package index and compares each wheel’s current hash against the stored baseline. A mismatch on an existing file is flagged immediately — new releases are tracked separately.

3

AI-powered alert in your inbox

On detection, Claude analyzes the event — CRITICAL / HIGH / MEDIUM / LOW risk — and emails you with the exact diff, a probable cause, and a recommended action. You get signal, not noise.

What an alert looks like

PyPI Watch — Hash Change Detected

RISK      CRITICAL
Package  litellm
File     litellm-1.35.0-py3-none-any.whl
Version  1.35.0
Old SHA256 a3f1c8…d92e (trusted baseline)
New SHA256 09b74f…3a11 (current PyPI)
CRITICAL — A published wheel for an existing version has been silently replaced. This is the primary indicator of a supply-chain compromise or account takeover. Do not run this package in production. Audit your pip cache, rotate secrets on affected systems, and report to the PyPI security team immediately.
🚨

Hash-change detection

Catches silent wheel replacement — the attack vector used in real-world PyPI compromises. Not just new versions, but mutation of existing ones.

🤖

Claude risk analysis

Every alert is analyzed by Claude (Sonnet). You get a CRITICAL–LOW risk rating, probable cause, and a clear action item — not just raw data.

Hourly polling

PyPI Watch checks every 60 minutes. No SDK, no CI plugin, no sidecar process — just an email when something is wrong.

📦

Any public package

Monitor requests, boto3, litellm, your own internal packages mirrored on PyPI — anything with a PyPI JSON API endpoint.