ExtVet BETA
Beta / experimental. Free while in beta. Feedback welcome. No guarantee of revenue or results.
Vet your browser extension's manifest before you ship — over-broad permissions, all-sites host access, and remote code.
Get the free beta by email Get a launch audit Send feedback How it works
What it does
Runs a deterministic, local-first, read-only scan over your browser extension's manifest.json (Manifest V2 or V3) and returns a verdict (EXTENSION-SAFE / NEEDS REVIEW / RISKY), a 0-100 score, severity counts, evidence for every finding, and a Claude-ready fix prompt per issue, in JSON, Markdown, and HTML. It catches the manifest problems AI-built extensions ship with — a <all_urls> / *://*/* host grant (the broadest possible access, and the top store-review rejection), a dangerous API permission (debugger, proxy, nativeMessaging, management, webRequestBlocking), a content script injected into every page, a CSP weakened with unsafe-eval, remote-hosted code (a script ref that is an http(s) URL, or a CSP that allows a remote script host), an externally_connectable wildcard, web_accessible_resources exposed to every page, a self-hosted update_url, a hardcoded OAuth client_secret, deprecated Manifest V2, a persistent background page, and missing store-required fields. Runs entirely on your machine with zero runtime dependencies: it never loads or runs the extension, never executes a background or content script, never networks. No cloud, no account, no telemetry.
Who it's for
Indie founders, AI-app builders, and small agencies who scaffold a Chrome, Edge, or Firefox extension and want a fast, honest check that the manifest is least-privilege, MV3, free of remote code, and Web-Store-safe — before they submit it for review.
What it does NOT do
Reports browser-extension manifest hygiene signals, not guarantees. It is NOT a full extension security audit, NOT a guarantee, and NOT a substitute for a human security review or the Chrome, Edge, or Firefox store's own review. It reads only manifest.json with heuristic checks: it does not scan your background, content, or page script source, follow message or data flow, expand wildcard match patterns against real sites, or judge whether a bundled library is itself malicious. It never loads or runs the extension, never executes a script, never reaches the network, never deploys, never submits to a store, never changes your project, never reads or transmits real secrets (secret-looking values are redacted to [REDACTED]), and never crosses an owner manual gate. No guaranteed results, approval, or revenue.
How to try it
Request free beta access via the feedback form, then run it locally on Node: scan a bundled demo (node src/scan.mjs --demo bad or --demo good), point it at your own extension folder, or open the local-only dashboard at 127.0.0.1 — no account or payment required.
What ExtVet checks
- A <all_urls> / *://*/* host grant (the broadest possible access, and the top store-review rejection)
- A high-risk API permission: debugger, proxy, nativeMessaging, management, or webRequestBlocking
- A sensitive permission (tabs, cookies, history, webRequest...) that often has a narrower alternative, and an optional permission that asks for <all_urls>
- A content script injected into every page (<all_urls>), and one that runs in every sub-frame (all_frames: true)
- Remote-hosted code: a script reference that is an http(s) URL, or a CSP that allows a remote script host (banned in MV3)
- A content_security_policy weakened with unsafe-eval
- An externally_connectable wildcard (any website can message the extension)
- web_accessible_resources exposed to every page (MV2 flat array, or an MV3 <all_urls> match)
- A self-hosted update_url (sideload / supply-chain vector, not used by store listings)
- A hardcoded OAuth client_secret / API key / private key (value redacted to [REDACTED])
- Deprecated Manifest V2, a persistent background page, and missing store-required fields (description / icons)
How it works
- Point ExtVet at your extension folder (or a bundled demo). It reads manifest.json read-only and parses it as JSON — your project never leaves your machine, and nothing is loaded or executed.
- A deterministic check engine runs 15 heuristic checks across Permissions, Host access, Remote code, CSP, Exposure, Supply chain, Secrets, and Manifest, and scores the result into EXTENSION-SAFE / NEEDS REVIEW / RISKY with a 0-100 score and severity counts, with all evidence redacted.
- Every finding includes evidence, its area, and a copy-ready Claude fix prompt that tells a Claude Code session exactly what to fix — and what not to do (do not add new permissions, do not add or print secrets, do not load remote code, do not submit to a store, stop at any owner manual gate).
Known limitations
- Experimental beta — checks and scoring may change or miss things.
- Browser-extension manifest hygiene signals only — NOT a full extension security audit, a guarantee, or store approval, and no guaranteed results.
- Reads only manifest.json with heuristic checks: no background/content script source scanning, no data-flow analysis, no wildcard expansion against real sites; not yet reviewed for production use.
Changelog
- 2026-06-25 — Beta candidate created: local-first browser-extension manifest.json hygiene audit engine (15 heuristic checks), CLI scan, JSON/MD/HTML reports, local-only dashboard, risky (MV2) / clean (MV3) demo fixtures, and 16 unit tests. Owner review required before promotion.
Frequently asked questions
Does ExtVet load or run my extension?
No. ExtVet only reads your manifest.json as text, parses it as JSON, and runs deterministic checks. It never loads or runs the extension, never executes a background or content script, and never reaches the network. Everything runs locally on your machine.
Will a clean result get my extension approved by the Chrome Web Store?
No. ExtVet reports manifest hygiene signals, not approval. A clean result means these heuristic checks found no over-broad permissions, remote code, or risky exposure in the manifest — it is not a full security audit, a guarantee, or a substitute for the store's own review and a human code review of your scripts.
Does it support Manifest V2 and V3?
Yes. ExtVet reads both. It flags Manifest V2 as deprecated (the Web Store no longer accepts new MV2 extensions) and checks MV2- and MV3-specific shapes for host permissions, content security policy, web_accessible_resources, and background.
Is it really free, and does it send my data anywhere?
It is free while in beta and runs entirely offline. No account, no payment, no telemetry. Secret-looking values in your manifest are redacted to [REDACTED] before they ever enter a finding, and nothing leaves your machine.
Try ExtVet free while it's in beta
ExtVet is free while in beta. Run it on your own extension, then tell us whether the EXTENSION-SAFE / NEEDS REVIEW / RISKY verdict matched reality and what it missed — no account, no payment, and no guarantee of results.
Built by Everstead Labs LLC. Live on Shopify: LaunchLock and CatalogCare.