Coverage

What stillrunning blocks, what it doesn't, and why.

Install-time Protection

“Intercepted via wrapper” means stillrunning’s pip/npm command shim (installed on your PATH) scans the package before it installs. Direct OS binaries like /usr/bin/pip run outside that shim, so they show “No” here — the import hook backstops those at runtime (see below).

Attack VectorBlocked?Notes
pip install malicious-pkgYesIntercepted via wrapper
pip3 install malicious-pkgYesIntercepted via wrapper
python3 -m pip installYesIntercepted via python3 alias
pip install -r requirements.txtYesAll packages scanned
pip download malicious-pkgYesIntercepted
pip wheel malicious-pkgYesIntercepted
npm install malicious-pkgYesIntercepted via wrapper (agent v2.13.2+; earlier versions blocked all npm installs without scanning — fail-closed, fixed 2026-06-11)
/usr/bin/pip installNoDirect binary, not intercepted
Virtual env pipPartialRequires manual activation
uv / Poetry / pdm / Pipenv / Conda / pixiYesIntercepted via wrapper (agent v2.4.0+)
bun / pnpmYesIntercepted via wrapper (agent v2.4.0+)
PipxNoNot intercepted (use import hook)
Why can't we intercept everything?
OS-level pip (/usr/bin/pip) runs outside our PATH override. Virtual environments create their own pip binaries. This is why the import hook exists — it catches everything at runtime.

Runtime Protection (Import Hook)

Attack VectorBlocked?Notes
import malicious_pkgYesBlocked before execution
from malicious_pkg import xYesBlocked before execution
__import__('malicious_pkg')Yessys.meta_path catches all
importlib.import_module()Yessys.meta_path catches all
Package already installedYesCaught on first import
Obfuscated importYesAll imports go through meta_path
Defense in depth.
Even if a package bypasses install-time checks (via /usr/bin/pip, venv, or manual copy), the import hook catches it when the code tries to use it.

What We Check

CheckMethodSpeed
Known malicious packagesLocal blocklist + threat feed<1ms
Hash verificationCompare SHA256 against PyPI~200ms
Typosquatting detectionEdit distance from popular packages<1ms
AI analysis (unknown packages)Claude Haiku review2-5s

Limitations

Not blocked:

Recommended Setup

For maximum coverage, use both layers:

  1. stillrunning --setup — Install-time intercept
  2. stillrunning --install-hook — Runtime import protection

Integration guide →