01Point npm at the proxy
One command on your machine or in CI. npm, yarn, pnpm and bun all respect it — lockfiles included.
npm config set registry https://r.installsafe.ioOne config line, and every npm install skips packages with known vulnerabilities and malware. Your package.json, lockfiles and CI stay exactly as they are.
$ npm config set registry https://r.installsafe.iofree plan · no credit card required · advisory data from OSV.dev
Rather talk it through? Book a 30-minute call
Three vulnerable versions hidden from the metadata; npm resolved the range to the last clean release. Nothing to read, bump or obey.
The “mini Shai-Hulud” attack pushed malicious versions of 314 widely used packages onto npm, stealing cloud credentials, tokens and SSH keys from every machine that installed them — and some of those versions stayed live on the public registry for weeks.
compromised packages filtered for our users — every one, with nothing for them to do
vulnerable and malicious versions kept out of builds to date
clean installs served through the proxy
Within hours the advisories reached OSV.dev, and every compromised version disappeared from the metadata our users receive. No update to apply. No patch to chase. Nothing to do.
Weeks later, four of those versions were still live on the public registry. Behind Install Safe, they never existed.
This is the difference between a scanner and a filter: a scanner tells you the malware is on your disk. We make sure it never arrives.
$ npm install jest-canvas-mock@2.5.3 npm error code ETARGET npm error notarget No matching version found └─ malicious version · MAL-2026-4136 · filtered $ npm install jest-canvas-mock@^2 added 1 package in 380ms └─ resolved to 2.5.2 — last clean release
verified 11 Jun 2026 · advisory MAL-2026-4136
Every other tool in this category reports on what you installed. Install Safe changes what is installable — the bad version is gone from the metadata before your package manager ever picks a candidate.
| Criterion | npm audit | Dependabot alerts | Install Safe |
|---|---|---|---|
| When you find out | After the package is on disk | Hours to days after merge | Before resolution — the unsafe version isn’t offered |
| What you have to do | Read the report, bump, re-test | Review and merge a PR | Nothing. The range resolves to the nearest clean release |
| Malicious packages | Covered only once an advisory lands, and only as a warning | Alerts, no enforcement | Every version removed — the package does not exist for you |
| Malicious postinstall scripts | Already ran | Already ran | Never downloaded — for any version OSV flags |
| When an AI agent installs | Only if the agent reads the output | After the fact | Enforced below the agent — nothing to read or obey |
| Setup | Built in | Repo configuration | One registry URL |
Install Safe uses the same advisory data as npm audit (GitHub Advisory Database via OSV.dev), plus the OpenSSF malicious-packages feed. Same intelligence, enforced earlier.
One command on your machine or in CI. npm, yarn, pnpm and bun all respect it — lockfiles included.
npm config set registry https://r.installsafe.ioEvery request is matched against live advisory data. Vulnerable and malicious versions are removed before npm sees them.
lodash@4.17.11 4.17.11removedRanges resolve to the nearest clean release automatically. A pinned bad version fails loudly, with the advisory ID.
lodash@^4 4.17.21cleanCoding agents run npm install on their own, at a pace no human reviews. They choose packages by pattern, not by provenance.
Attackers know it. They register the names models tend to hallucinate (“slopsquatting”), publish typosquats, and hijack abandoned libraries. To a model predicting tokens, malware looks fine.
Point your agent at Install Safe and that surface disappears. Hallucinated, typosquatted and compromised packages simply don’t exist behind the proxy — so the agent can’t install them, whatever it was told.
agent: adding dependencies… $ npm install express helmet lodahs npm error 404 'lodahs' is not in this registry └─ typosquat — flagged as malware, filtered agent: correcting… $ npm install express helmet lodash added 64 packages in 2.1s └─ every version checked against live advisories
works with any agent that shells out to npm
The proxy refuses a bad version at install time. An agent that asks first never produces the failed install at all — it picks a clean version instead.
Point Claude Code, Cursor, or any MCP client at installsafe.io/mcp. No account, no API key, nothing to install — one URL and three tools: check_packages for advisories on exact versions, suggest_safe_version for the highest version without them, and scan_manifest for a whole lockfile.
It is optional. The proxy protects agents that have never heard of MCP, using the same config line as everything else.
agent: checking before install… check_packages lodash@4.17.11 blocked by the default policy · 7 advisories └─ GHSA-jf85-cpcp-j695 (critical) — fixed in 4.17.12 suggest_safe_version lodash 4.17.11 lodash@4.18.0 — no known advisories in OSV └─ agent installs this one instead
advisory data from OSV.dev, live, as of 2026-09-22
So here is exactly what it does and does not do.
Tarballs are served byte-for-byte from registry.npmjs.org, so lockfile integrity hashes keep matching. We only filter which versions are visible.
If advisory data is unreachable, installs pass through and the event is logged. Teams that prefer strict blocking can fail closed instead.
OSV.dev aggregates the GitHub Advisory Database — the data behind npm audit — with the OpenSSF malicious-packages feed. You can check every ID we act on.
Set the registry back to npmjs.org and everything works as before. No lockfile rewrite, no migration, nothing to unpick.
Block every advisory or only high and critical. Quarantine releases younger than N days. Allow or ban any package down to a semver range.
Every version served to you and every one kept out, with the advisory IDs that triggered them — attributed per registry token.
Filtering is automatic. Everything around it — policy, visibility, team control — lives in one dashboard.
Install Safe · now
jest-canvas-mock@2.5.3 download denied for dev@acme.io — MAL-2026-4136
A single credential-stealer that reaches a developer machine costs days of rotation, review and explaining. Start free and stay free if that is all you need.
Everything you need to stop installing known-bad versions.
free forever · no card required
For working engineers who want the policy under their own control.
7-day free trial · cancel anytime
One policy every engineer inherits, with no per-developer drift.
starts at 2 seats · add more any time
Something else on your mind? support@installsafe.io
No. You set the registry once with npm config (or in a project .npmrc) and everything else stays the same — same commands, same lockfiles, same CI.
If your range allows a safe release, npm resolves to it automatically and you usually won’t notice. If you pin an exactly-vulnerable version, the install fails with a clear error naming the advisory. That’s the point.
Never. Tarballs are served byte-for-byte from registry.npmjs.org, so lockfile integrity hashes keep matching. We only filter which versions appear in the metadata.
The proxy fails open: installs pass through and the event is logged, so an outage on our side never stops your build. Teams that prefer strict blocking can fail closed instead.
OSV.dev — the open-source aggregator that combines the GitHub Advisory Database (the data behind npm audit) with the OpenSSF malicious-packages feed. CVEs and confirmed malware, updated continuously.
Yes. Anything that respects the npm registry setting works, including yarn, pnpm, bun, and CI bots like Renovate.
Especially then. Agents install packages without vetting them, and attackers target exactly that with typosquats and hallucinated package names. Behind the proxy those packages don’t exist, so an agent can’t install them no matter what it was told. Works with any agent that runs npm — and if you would rather the agent asked before installing than be refused during it, there is an MCP server at installsafe.io/mcp that answers whether a package has known advisories.
Set your registry back to registry.npmjs.org. Nothing in your project changed, so there is nothing to migrate back.
Thirty minutes, screen share optional. Book one whether you are evaluating this for fifty developers or you just want someone to walk you through it.
30 minutes · no sales team
Two minutes from now, every npm install on your machine can be immune to known vulnerabilities and malware.