A multi-agent npm install guardrail that detonates dependencies before they touch your workspace.
Project description
🛡️ Quarantine
A multi-agent guardrail that detonates every new dependency in an isolated sandbox before it touches your code.
Built at Multi-Agent Orchestration Build Day — May 31, 2026, The Engine, Cambridge MA (AGI House × W&B × TNT × SundAI Club × E14).
The problem
Modern supply-chain attacks fire their payload at install/runtime, not in source code you read. In the March 2026 LiteLLM hijack, a malicious release dumped environment variables, scraped ~/.aws and ~/.ssh, and exfiltrated them to an attacker server the moment it was installed. Static CVE scanners miss this because the malicious version is a zero-day — nothing looks wrong until the code runs.
AI coding agents make it worse: they install packages blindly and fall for typosquatted / hallucinated package names that attackers pre-register as traps.
What Quarantine does
Quarantine intercepts every npm install, detonates the package in an isolated honeypot sandbox seeded with fake credentials, and lets a team of agents watch what the package actually does. If it reads the honeytokens or tries to phone home, Quarantine blocks the install before it ever runs in your real workspace — and hands you (or your AI agent) a safe remediation.
We are not the attacker. The package is the attacker. We're the victim and the security camera.
How it works
npm install <pkg>
└─ Interceptor pauses the install (real workspace untouched)
└─ Orchestrator (dynamic routing, not a linear pipeline)
├─ Intel Agent → OSV/CVE, npm metadata, typosquat check
│ (clearly malicious? stop here)
└─ Sandbox Agent → detonate in Docker w/ honeytokens,
behind an egress proxy + syscall monitor
└─ the package itself tries to steal creds / call out
└─ Reasoning Agent → verdict + human-readable evidence
└─ Verdict: safe → allow │ malicious → BLOCK + Fix Agent suggests alternative
└─ every step traced in W&B Weave
The agents
| Agent | Role |
|---|---|
| Interceptor | Catches npm install, pauses it, enforces the final verdict |
| Orchestrator | Routes dynamically, decides when to escalate to detonation, compiles the report |
| Intel Agent | OSV/CVE lookup, npm registry metadata, typosquat distance |
| Sandbox / Detonation Agent | Spins an isolated container, seeds honeytokens, runs the install behind network + filesystem monitoring |
| Reasoning Agent | Turns raw telemetry into a verdict with evidence (Claude) |
| Fix Agent | Proposes a safe alternative + remediation (Claude) |
How we detect malice (at the OS boundary)
- Honeytokens: fake
~/.aws/credentials,.env,~/.ssh/id_rsa, and env vars — each carrying a unique canary string. - Egress monitoring: all container traffic routes through a default-deny logging proxy. If a canary string leaves the box → caught red-handed.
- Syscall / file monitoring:
strace/inotifyflag any package that reads sensitive paths during install. - A benign install makes zero outbound calls and touches none of these — so any such behavior is the signal.
We detect at the OS boundary, not by monkey-patching the JS runtime — because
postinstallhooks run as separate child processes (bash/python/binary) that in-process JS hooks never see.
Sponsor tools
- W&B Weave — every agent op is wrapped in
@weave.op()for a full nested trace of the orchestration (routing → intel → detonation → verdict). We also ship aweave.Evaluationharness scoring the system on a labeled dataset of malicious vs. benign packages (precision / recall / F1). - Claude API — powers the Reasoning Agent and Fix Agent.
- OSV.dev / npm registry — threat intelligence for the Intel Agent.
Demo
The demo uses a harmless "evil" test package (evil-demo-pkg) whose postinstall reads the seeded honeytokens and tries to exfiltrate them — against fake credentials, with egress blocked. It trips every detector exactly like real malware, making the demo deterministic and safe to run.
⚠️ No real-world malware is ever installed. The evil test package only ever sees fake credentials and its network egress is blocked.
Getting started
TODO: fill in once the build lands.
# install deps
# start the orchestrator + Weave
# run the demo: npm install evil-demo-pkg (gets caught)
# npm install lodash (clean pass)
Tech stack
Node/TypeScript · Docker · Claude API · OSV.dev + npm registry · W&B Weave · (optional) Ink / Next.js UI
Team
TODO: names, emails, X / LinkedIn handles.
License
Code is the team's own per event eligibility rules.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file quarantine_guard-0.1.0.tar.gz.
File metadata
- Download URL: quarantine_guard-0.1.0.tar.gz
- Upload date:
- Size: 26.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
10db884aa7e3d0cb196080dddbab437765d6b3bac9b8bd6867383413c0220c24
|
|
| MD5 |
114cbfab21461b35b001a6abbfd9f1c2
|
|
| BLAKE2b-256 |
19acf804061c78f222b9495ef824e57287c466740657f0c42df4973f0af1ca9e
|
File details
Details for the file quarantine_guard-0.1.0-py3-none-any.whl.
File metadata
- Download URL: quarantine_guard-0.1.0-py3-none-any.whl
- Upload date:
- Size: 28.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
224e0c91cb5a75de94ede785ae89ea4b9b59a24eee341d637313eb7dd035e133
|
|
| MD5 |
935b99f6d4e83c94e91f815cf5f6b131
|
|
| BLAKE2b-256 |
2f37bc1c17e1df0a8d74bfb19b6458339e7971fdb586a0bfe42c140541988058
|