Background guardian
Block malicious packages before they land.
A background guardian for npm install and
pip install. Install once. Protected forever.
Zero security knowledge required.
pip install packshield && shield init
What it does
Checks every install. Blocks what's wrong. Otherwise, silent.
Before any install completes, packshield resolves the full dependency tree and checks every new or changed package against known threats and any policies you've set. If something's wrong, the install is blocked before a single file is extracted. If everything is fine, you see nothing.
Silence is the signal. Most of your installs should look the same as they do today.
When it fires
Clear verdict. Safe version called out. No jargon.
$ npm install axios@1.14.1 shield BLOCKED axios@1.14.1 was published by an account whose credentials appear to have been compromised. The version injects a new dependency that did not exist in any prior axios release. Latest safe version: axios@1.14.0 To install the safe version: npm install axios@1.14.0
How it works
Three steps. All local, all before files hit disk.
packshield wraps your package manager with a lightweight check that runs before anything is written. It ships with a threat database updated in real time from publish-time metadata — the stuff that disappears after attackers get caught.
Resolve the full tree
Every direct and transitive dependency, pinned to the versions your lockfile will actually install.
Check every package
Known threats, compromised publishers, dependency-injection anomalies, and your own opt-in policies.
Block or pass through
A blocked install halts before extraction. A clean install runs exactly as it did before packshield was there.
Policies
Sensible defaults. Tighten when you want.
Out of the box, packshield blocks known malicious versions and blatant
compromise patterns — nothing else. Enable any of these policies in
~/.packshield/config.toml to raise the bar for your own machine.
- min_version_ageBlock versions published less than N hours or days ago.
- require_provenanceBlock packages without a signed build attestation.
- block_preinstall_scriptsBlock packages that run code at install time.
- max_new_deps_per_versionBlock versions that bloat the dependency tree.
- min_weekly_downloadsBlock packages nobody else is using.
Trust
Open source. Public incidents. Runs entirely on your machine.
Free for individual developers. Forever. The CLI is open source, the detection heuristics are open source, and every false positive we produce gets published at packshield.dev/incidents. Checks run 100% locally — the CLI syncs a threat database in the background and matches against it offline. Your install data never leaves your machine.
FAQ
Short answers.
Will it slow my installs down?
No. The check runs in parallel with resolution and finishes before extraction starts. Clean installs feel identical.
Where does the check run?
100% on your machine. The CLI ships with a local threat database it keeps in sync in the background. Nothing about your install leaves your laptop.
Does it work with lockfiles?
Yes. packshield reads package-lock.json, pnpm-lock.yaml, yarn.lock, and poetry.lock/uv.lock to check the exact tree you'd install.
What does it cost?
Free for individual developers, forever. Paid tiers for teams will focus on shared policies and audit history — never on gatekeeping safety.