drop-in npm registry proxy

npm install,
without the malware.

One config line, and every npm install skips packages with known vulnerabilities and malware. Nothing else about your workflow changes.

14 days free · cancel anytime · advisory data by OSV.dev

r.installsafe.io — live filter scanning
$ npm install react@19.2.0$ npm install lodash@4.17.11$ npm install next@15.3.2$ npm install jest-canvas-mock@2.5.3$ npm install zod@3.24.1$
registry.npmjs.org
your project
✓ SAFE0 known vulnerabilities✗ BLOCKEDGHSA-jf85-cpcp-j695 · prototype pollution✓ SAFE0 known vulnerabilities✗ BLOCKEDMAL-2026-4136 · credential stealer✓ SAFE0 known vulnerabilitiesreact@19.2.0lodash@4.17.11next@15.3.2jest-canvas-mock@2.5.3zod@3.24.1
✓ added 1 package — react@19.2.0 · 0 advisories ✗ blocked lodash@4.17.11 — prototype pollution · CRITICAL · version removed ✓ added 1 package — next@15.3.2 · 0 advisories ✗ blocked jest-canvas-mock@2.5.3 — exfil prevented: aws keys · ssh · npm tokens ✓ added 1 package — zod@3.24.1 · 0 advisories
MAL-2026-4136· jest-canvas-mock · blockedGHSA-jf85-cpcp-j695· lodash · blockedGHSA-35jh-r3h4-6jhm· lodash · blockedGHSA-4xc9-xhrj-v574· lodash · blockedGHSA-p6mc-m468-83gw· lodash · blockedGHSA-3fx5-fwvr-xrjg· ms · blockedGHSA-w9mr-4mfr-499f· ms · blockedGHSA-4328-8hgf-7wjr· npm · blockedGHSA-93f3-23rq-pjfp· npm · blockedGHSA-x5rq-j2xg-h7qm· lodash · blockedGHSA-f23m-r3pf-42rh· lodash · blockedGHSA-xxjr-mmjv-4gpg· lodash · blockedMAL-2026-4136· jest-canvas-mock · blockedGHSA-jf85-cpcp-j695· lodash · blockedGHSA-35jh-r3h4-6jhm· lodash · blockedGHSA-4xc9-xhrj-v574· lodash · blockedGHSA-p6mc-m468-83gw· lodash · blockedGHSA-3fx5-fwvr-xrjg· ms · blockedGHSA-w9mr-4mfr-499f· ms · blockedGHSA-4328-8hgf-7wjr· npm · blockedGHSA-93f3-23rq-pjfp· npm · blockedGHSA-x5rq-j2xg-h7qm· lodash · blockedGHSA-f23m-r3pf-42rh· lodash · blockedGHSA-xxjr-mmjv-4gpg· lodash · blocked
0+

clean installs served

0+

vulnerable & malicious versions filtered

0+

packages in the May 2026 attack — all blocked

case study · may 2026

314 npm packages were compromised.
Our users never saw them.

The “mini Shai-Hulud” attack slipped malicious versions of 314 popular packages onto npm — stealing cloud credentials, tokens and SSH keys from every machine that installed them.

Within hours, the advisories reached OSV.dev — and every compromised version vanished behind Install Safe. No update. No patch. Nothing to do.

Weeks later, four of those versions were still live on the public registry. Behind Install Safe, they never existed.

verified · 11 jun 2026
$ 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

the ai era

Your AI installs dependencies.
Who's checking them?

Coding agents run npm install on their own, at a pace no human reviews. They pick packages by pattern, not by provenance.

Attackers know it. They register the package names LLMs 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 attack surface disappears: hallucinated, typosquatted and compromised packages simply don't exist behind the proxy.

agent session — protected
◆ 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 ✓

how it works

A firewall for your dependency tree

01npm config set registry …

Point npm at the proxy

One command on your machine or CI. npm, yarn and pnpm all respect it — lockfiles included.

02lodash@4.17.11 → ∅

We filter the metadata

Every request is checked against live advisory data. Vulnerable versions are removed before npm sees them.

03lodash@^4 → 4.18.1 ✓

npm picks a safe version

Ranges resolve to the nearest clean release automatically. Known-bad pins fail with a clear error.

what you get

Security that stays out of your way

Always current

Advisories are matched live against OSV.dev. A new threat protects every user within minutes.

Malware erased

When every version of a package is malicious, it simply doesn't exist for you.

Zero workflow change

It's just a registry URL. Your package.json, lockfiles and CI stay untouched.

Full audit trail

See every install — and every vulnerable version that was kept out of your builds.

Your policy

Block everything with an advisory, or only high and critical. You set the threshold.

Never in your way

If advisory data is unreachable, installs pass through — logged, never stuck.

the platform

Your registry, under your command

Filtering is automatic. Everything around it — policy, visibility, team control — lives in one dashboard.

block policies

Decide what “too risky” means

  • Severity thresholdblock every advisory, or only high & critical — your call.
  • Release quarantineignore versions younger than N days; most supply-chain malware is caught within a week of publishing.
  • Allow & block ruleswhitelist or ban any package, down to a semver range. Applied live within a minute.

protection policy

Block everythingany advisory, any severity
High & criticalserious only
Off3 days7 daysquarantine14 days
allow@acme/internal-ui*
blockleft-pad*

activity monitoring

See every install. And every save.

  • Live audit trailevery install, every secured resolution, every blocked download — with the advisory IDs that triggered them.
  • Download analytics14-day activity, data transferred, all attributed per token.
  • Registry tokensone per machine or CI pipeline, stored as hashes, revocable in one click.
1,284
installs
2.1 GB
transferred
115
secured
installreact@19.2.02.4 MB
securedlodash · 115 versions hidden
blockedsize-sensor@1.1.4malware

teams

One policy. Every engineer.

  • Org policy flooryour policy is the team baseline — members can tighten it, never weaken it.
  • Slack alertsevery blocked install posts to your channel, with who, what, and which advisory.
  • Centralized controlinvite by email, see the whole team’s activity, revoke any member’s token instantly.
#security-alerts

Install Safe APP · now
⛔ jest-canvas-mock@2.5.3 download denied for dev@acme.io — MAL-2026-4136

you@acme.ioownersets the baseline
dev@acme.iomember2 tokens
ci@acme.iomember1 token

pricing

Cheaper than one incident response

Pro starts with a 14-day free trial — cancel anytime before it ends and pay nothing. Team is billed from day one.

14-day free trial

Pro

$9per month

For developers who ship to production.

  • Unlimited installs through the proxy
  • Live vulnerability & malware filtering
  • Severity policy & release quarantine
  • Package allow / block rules
  • Activity dashboard & full audit log
  • Unlimited registry tokens
Start 14-day free trial

Team

$29per seat / month

Org-wide protection for engineering teams.

  • Everything in Pro
  • Org-wide policy: severity, quarantine, allow/block rules
  • Slack alerts on blocked installs
  • Centralized member & token management
  • Team-wide audit log
Get started

faq

Questions, answered

Something else on your mind? support@installsafe.io

Do I have to change my workflow?

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.

How does the free trial work?

The Pro plan starts with a 14-day free trial: you enter card details once at checkout and get full access for 14 days, free. Cancel before the trial ends and you pay nothing. Team plans are billed from day one. If your subscription lapses, your tokens stop authenticating — remove the one config line and npm goes back to the public registry. Nothing breaks.

Where does the vulnerability data come from?

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.

What happens when a version I need is vulnerable?

If your version range allows a safe release, npm resolves to it automatically — you usually won’t notice. If you pin an exactly-vulnerable version, the install fails with a clear error. That’s the point.

Are my packages modified?

Never. Tarballs are served byte-for-byte from registry.npmjs.org, so lockfile integrity hashes keep matching. We only filter which versions are visible.

What if Install Safe goes down?

The proxy fails open: installs pass through and the event is logged. Teams that prefer strict blocking can fail closed instead.

Does it work with yarn and pnpm?

Yes — anything that respects the npm registry setting works: yarn, pnpm, bun, and CI bots like Renovate.

I let AI agents write my code. Does this help?

Especially then. Agents install packages without vetting them, and attackers target exactly that — 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.

Ship code, not CVEs.

Two minutes from now, every npm install on your machine can be immune to known vulnerabilities and malware.

Start your 14-day free trial →

14 days free · cancel anytime