Skip to main content

sketchydeps

Is anything sketchy installed? One command checks your project's node_modules and Python environment for known malware, typosquats of popular packages, brand-new packages, install scripts that download things, and .pth files that run code every time Python starts.

uvx sketchydeps          # in your project folder

sketchydeps demo

Demo: a real Next.js app's node_modules with four entries planted for the demo (just a package.json each, no code). The malware verdicts come live from OSV.

npm audit and pip-audit tell you about bugs. They don't tell you that the package you installed is loadsh, not lodash. sketchydeps looks at what's actually on disk and asks the questions that matter after every npm worm and PyPI malware wave:

Check Flags Data
Known malware Installed versions reported as malicious (MAL- entries from the OpenSSF malicious-packages feed, GitHub malware advisories) OSV.dev
Typosquats Names one keystroke from a top-5,000 package (reqeusts, loadsh), or the same name with look-alike characters (djang0, py-yaml) Download rankings for PyPI and npm
Brand-new packages Packages that first appeared on the registry in the last 30 days deps.dev
Install scripts preinstall / install / postinstall hooks that fetch URLs, pipe to a shell, eval or decode base64. Ordinary ones (node-gyp rebuild, prebuild-install, husky) are counted, not flagged package.json in node_modules
Start-up code .pth files in site-packages that run code every time Python starts, a trick used by real PyPI malware. setuptools' own shim and namespace packages are ignored site-packages
Not on the registry Installed packages the public registry has never heard of: private, local, or removed (removals are often malware takedowns). Shown with --all deps.dev

It also lists packages on releases from the last week (where hijacked releases show up first) and counts ordinary vulnerabilities, so you know to run npm audit or pip-audit.

Where it looks

  • npm: ./node_modules, including nested and pnpm (.pnpm) layouts. Add --global for globally installed packages.
  • Python: ./.venv (or venv, env), else the active $VIRTUAL_ENV, else your python3. Point it elsewhere with --python path/to/venv or --python /usr/bin/python3.12. It reads package metadata from disk and never imports anything.

Options

sketchydeps                      # current folder
sketchydeps path/to/project
sketchydeps --python .venv-ci    # a specific environment
sketchydeps --no-npm             # Python only (or --no-python)
sketchydeps --days 3             # "fresh release" window (default 7)
sketchydeps --all                # include informational findings
sketchydeps --json               # machine-readable
sketchydeps --offline            # install scripts and .pth checks only

Exits with status 1 when it finds malware or a high-severity issue, so you can drop it into CI.

Privacy

Only package names and versions leave your machine: to OSV (malware advisories) and deps.dev (publish dates). The popularity lists are downloaded once and cached for 30 days.

Install

uvx sketchydeps          # run without installing
pipx install sketchydeps # or install it

Requires Python 3.9+. The only dependency is rich.

License

MIT. Popularity data from npm-high-impact (MIT) and top-pypi-packages, fetched at run time.

Metadata

Release files for sketchydeps 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for sketchydeps 0.1.0
File Size Uploaded Provenance Actions
sketchydeps-0.1.0.tar.gz 17.2 kB With provenance Details for sketchydeps-0.1.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for sketchydeps 0.1.0
File Interpreter ABI Platform Actions
sketchydeps-0.1.0-py3-none-any.whl Python 3 none any Details for sketchydeps-0.1.0-py3-none-any.whl

Total release size: 34.6 kB

Release files / sketchydeps-0.1.0.tar.gz

Download URL sketchydeps-0.1.0.tar.gz
Size 17.2 kB
Tags Source
SHA-256 checksum
How to use checksums
73b857911e0f7c1d81f88df21c02ef6cf1a0fb1402da46086ccf0e4273e64e68
BLAKE2b-256 checksum
How to use checksums
399ba80a6fe99c1e05ac4f940a9fff8d2a219d1463141124b0f94a04a2105a91
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 5, 2026.

Transparency log

Release files / sketchydeps-0.1.0-py3-none-any.whl

Download URL sketchydeps-0.1.0-py3-none-any.whl
Size 17.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
916b2af7278abef4aec73c54537f1551a394c3f144624f262b59814989461f64
BLAKE2b-256 checksum
How to use checksums
353d249dc5b7672098572a00f949f2f3b7942c3e12256ff23e4f74eed1cc25d1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 5, 2026.

Transparency log

Security for sketchydeps 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

Both files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for sketchydeps-0.1.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 5, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page