Browser extension
See the verdict the gate would return on npm and PyPI package pages, and on install commands you find anywhere. It reports; it does not block.
Install from the Chrome Web Store. Free, open source, and it works without the CLI — though the two together are the point.
A browser extension sits beside a page you are reading. It has no position in the
install path, so there is nothing for it to stop. The badge says what the gate
would return; the PATH shims from depwall init are what actually
stop an install. If you only install the extension, nothing is gated.
What it does
| Surface | What you get |
|---|---|
| Package page | A verdict card on any npmjs.com/package/… or pypi.org/project/… page. |
| Toolbar icon | The tier as a letter as well as a colour — B, ?, OK — so it survives colour blindness. |
| Right-click | Check a selected package name, a whole install command, or a link to a package page. Works on any site. |
| Popup | Type or paste anything: express, @types/[email protected], npm install -D @scope/[email protected], requests==2.31.0. Pre-filled from the page you are on. Alt+Shift+D opens it. |
| Page scan | Optional, per site. Underlines npm install … lines in READMEs and answers, with the verdict beside them. |
The confidence meter
Every ASK and BLOCK carries a number, a band word, and one line naming what the call rests on. It rates the evidence, not the package: a byte-for-byte match to a published advisory and a package that was uploaded last Tuesday both stop an install, and they are not the same claim.
The bar wears the verdict's own colour and strength is how much of it is filled, so it can never look like a second opinion. ALLOW draws no meter at all — a confidence bar next to a clean result reads as a safety score, and "no signals fired" is the absence of a measurement rather than one.
There is a longer write-up in Two BLOCKs are not the same claim.
What leaves your browser
An ecosystem, a package name, and a version. That is the entire payload.
- No page content, no URLs, no query strings, no fragments, no browsing history.
- No cookies or credentials — the lookup is
credentials: "omit". - Permissions are
storage,contextMenus,activeTab,scripting, and one host: the verdict endpoint. Nottabs, which would be standing access to every URL in every window.
Full detail in the privacy policy.
Page scanning is off until you grant it
Scanning a page means reading it, which is a different thing from checking a
package you are already looking at. So the wildcard host lives in
optional_host_permissions and is requested by a switch in the popup, per site.
Installing the extension grants nothing.
Detection only looks inside <pre>, <code> and
highlighted blocks. Prose is where false positives live — "you should install express" is a
sentence, not a command. ALLOW hits are unwrapped rather than marked, because decorating
every install command with "checked, fine" is noise that hides the real ones.
Pointing it at your own service
The options page takes one setting: the base URL of a verdict service you run. It must be
https:// and it refuses to save anything else. Whatever it points at, the
request carries the same three things.
If the lookup times out or fails, the badge says so in those words. It never shows anything that could be read as "fine" — the same fail-mode rule the CLI holds, applied to a surface that cannot enforce it.