Your dependency tree is a trust decision nobody made.
A single npm install can pull in hundreds of packages from maintainers you have never
evaluated, running install scripts on developer machines and build agents. The dangerous moment is
rarely the package somebody chose. It is the version published four hours ago, by an account that
gained publish rights last week.
Citadel treats that moment as the one worth stopping for. Every version is judged before it can be
installed, and the judgement is recorded.
Compromise arrives as an update
event-stream, ua-parser-js and node-ipc were all trusted
packages, right up until a release that was not. Pinning a name does not pin intent.
Scanners report; they do not gate
Most tooling tells you what you already installed. By the time a finding reaches a dashboard, the
install script has run and the credential is gone.
A CVE feed is not a judgement
A brand-new package has no CVEs, which is not the same as being safe. What matters is often
maintainer behaviour, release timing, and what the diff newly permits.