OpenCapture › Blog › Extension permissions
PrivacyWhat permissions a screenshot extension asks for, and what they actually let it do
“Read and change all your data on all websites” is the scariest sentence in the Chrome Web Store, and most screenshot extensions trigger it. It is worth knowing what it means, because it is avoidable — and an extension that avoided it is telling you something.
The short version. A full-page screenshot tool has to run code inside the
page in order to scroll it and measure it. There are two ways to get that ability:
activeTab, which grants access to one tab, only when you click
the toolbar button, and only until you navigate away; or a broad host
permission such as <all_urls>, which grants standing access to
every page you ever visit. Both produce a working screenshot tool. Only one of them requires
you to trust the developer indefinitely.
The permissions you will see, in plain terms
| Permission | What it allows | Scope |
|---|---|---|
activeTab | Read and script the current tab | Only after you click the extension, only that tab, only until you navigate |
<all_urls> / host_permissions | Read and script pages | Every matching site, all the time, without any click |
scripting | Inject the code that does the scrolling and measuring | Only where the extension already has access |
downloads | Write the finished file to your downloads folder | Files the extension creates |
storage | Remember your settings | Local to the extension |
tabs | See the URL and title of every open tab | All tabs, all the time |
The two rows that matter are the broad host permission and tabs. Everything else
on that list is narrow and boring. Those two are what turn “a tool that photographs a
page when I ask it to” into “a program with a standing view of my browsing”.
Why so many screenshot extensions ask for everything
Rarely malice; usually convenience. Building on activeTab means the extension has
no access until the user clicks, which rules out anything that wants to act before the click
— preloading a content script on every page, watching for navigation, showing a badge
that reflects page state. A broad host permission makes all of that trivial, and it is one
line in the manifest.
It also makes analytics and monetisation easier later, which is the part worth being alert about. The permission is requested once, at install; what it is used for can change with any update, and updates install silently. Several widely-installed extensions have been sold to new owners and quietly repurposed exactly this way — the users never re-approved anything, because nothing new was asked for.
This is why the permission list matters more than the privacy policy. The policy describes intent today; the permission describes capability for as long as the extension is installed.
How to check a listing before installing
- On the store page, open the Privacy practices section and read the permission list, not just the summary sentence.
- Look for a broad host permission. “on all sites” or “on every website you visit” is the phrase to notice.
- Check whether it asks for
tabs. A screenshot tool does not need to know what else is open. - After installing, open the extension’s details page and set site access to On click if the option is available. Most extensions still work.
- If the source is public, read the manifest yourself — it is a short file and the permission list is at the top.
What OpenCapture requests
Four permissions, and no broad host permission at all:
activeTab— access to the tab you are on, granted by your click and dropped when you leave.scripting— to inject the capture routine into that tab.downloads— to save the finished image or PDF.storage— to remember your settings.
There is no <all_urls> and no tabs. The only host permissions
in the manifest are optional and limited to two OpenCapture domains, requested only
if you choose to buy credits for the optional tiled-watermark feature; decline them and the capture, editing and
export features are unaffected, because none of them involve a network at all — the
stitching and image processing run locally in a Rust/WebAssembly core.
You do not have to take that on trust. The manifest is in the public repository, the extension is AGPL-3.0, and the permission list on the store page is the same four entries.
What the permissions cannot tell you
Being honest about the limits: a narrow permission set constrains what an extension is able to
do, but it does not prove what it does with the access it has. activeTab still
means that on the tab you clicked, at that moment, the extension can read the page. The
guarantees worth looking for are cumulative — narrow permissions, public source, a
verifiable build, and no network calls in the capture path. Any one of them alone is weaker
than it sounds.
Common questions
Why does a screenshot extension need to read all my data on all websites?
It usually does not. Capturing a full page requires running code in the page, but
activeTab grants that for the current tab on click. A broad host permission is
a convenience for the developer, not a requirement of the feature.
What does activeTab actually allow?
Reading and scripting the tab you are on, granted when you click the extension and revoked when you navigate away. It gives no access to other tabs and no access before the click.
Can I restrict an extension that already asks for everything?
Yes. On the extension’s details page, set site access to “On click”. Many extensions keep working; the ones that break were relying on background access.
What permissions does OpenCapture request?
activeTab, scripting, downloads and storage — no broad host permission and no tabs permission. Two optional host permissions cover the paid credit purchase only.