Manifest V3, shipped and reviewed. Three add-ons live on Mozilla Add-ons, each requesting the narrowest set of permissions the feature actually needs.
"manifest_version": 3,
"permissions": ["bookmarks", "menus", "storage", "activeTab"],
"host_permissions": [],
"browser_specific_settings": {
"gecko": {
"data_collection_permissions": { "required": ["none"] }
}
}
No host permissions. No content scripts. Nothing leaves the browser. That install prompt is the difference between a user clicking Add and clicking away.
Every number below is read straight from the published manifest. Check them.
| Add-on | Permissions | Host access | Data collected |
|---|---|---|---|
| QueueMark Read-later queue, stored as bookmarks | 4 | none | none |
| OpenAsGuest Checks a share link opens without sign-in | 2 | 5 named hosts | page content |
| Backstop Recovers text lost from a form or editor | 1 | all sites | none |
Backstop needs every site, because a draft can be lost on any of them — so it asks, plainly, and stores nothing off-device. Scope is a decision to argue for, not a box to tick. I would rather tell you which permission is unavoidable than pretend none is.
Fixed scope where it's knowable, hourly where it isn't.
Background pages to service workers, blocking webRequest to declarativeNetRequest, and the state bugs that appear only after a worker is evicted.
Rejected, or stuck in the queue? Usually it's undeclared data collection, a bundler with no source submission, or a permission you can't justify in writing.
Built, tested, listed, and through review — including the privacy policy and reviewer notes most teams don't know are expected.
What your extension actually asks for, what it could ask for instead, and what that changes about the install prompt users see.
Tell me what you're building or what got rejected, and I'll tell you honestly whether I'm the right person for it. Short questions are welcome and free.
rolf@eriksenlabs.com