← Back to Lens

Security

Lens by Vectored · Last updated: August 2026

Threat model in one line. Lens runs on your machine and, as installed, has no network surface of its own, so the risks worth documenting are what it can reach locally and what it is trusted with. Connecting an AI provider adds one outbound path — to a company you chose, holding a key you supplied — covered in section 4.

1. Permissions, and why each one exists

A screen-capture extension necessarily asks for broad permissions. Here is what each is used for, so you can judge whether the trade is one you want to make.

PermissionWhat it is used for
tabCaptureThe video stream a GIF or MP4 recording is made from. Only for the tab you started recording on, and only while recording.
scriptingInjecting the selection overlay and editor into the tab at the moment you start a capture. Nothing is injected before that.
host_permissions for all sitesRequired for the above to work on whichever page you choose to capture. It is not used to read pages in the background, and Lens has no code that does so.
tabsReading the active tab's title and URL to record alongside a capture, and bringing a recording's tab forward when you stop it from the popup.
activeTabCapturing the visible area of the current tab for still screenshots.
downloadsThe fallback path when no project folder is linked or access has lapsed.
storageSettings, the project list and cached thumbnails.
offscreenA hidden document that holds the recording stream, because a Manifest V3 service worker cannot.

Lens requests no permission for native messaging, browsing history, cookies, bookmarks, the clipboard beyond an explicit copy you asked for, or identity.

The all-sites host permission above is what makes an outbound AI request technically possible once you configure a provider. No AI provider is configured by default, and Lens contacts no host on its own initiative — see section 4.

2. File system scope

Lens writes through the File System Access API, which is scoped by design:

3. No remote code

Everything Lens executes ships inside the extension package and is reviewable in the Chrome Web Store listing:

4. AI providers and key handling

AI features are off on install and there is no Vectored model, endpoint or proxy anywhere in the path. The AI features documentation covers setup and what each feature sends. When you enable them you pick who does the work — the browser's built-in model, a model on your own machine, or Claude or OpenAI with a key you supply. The first two keep everything on the device; the last two are an outbound request from your browser straight to that company.

Where the key lives, and why

What is in a prompt

Only what the feature actually needs, and the amount differs by feature. The private-data check is the one that matters most: when a model is allowed to sharpen its results, it receives the type of each flagged region and the page title and heading — never the flagged text. A model is never asked to look at a credential to decide whether it is one.

Suggest name & description is the widest: it sends the text inside the captured region, because describing a screenshot is the task. It is a button you press per capture, never something that happens on save. Write steps from clicks sends only the accessible names of the controls that were clicked, never anything typed into a field, and works with no provider at all. Captured images are not sent to any provider.

Model output can only re-rank and relabel what the local rules already found. It can never add a region, and it can never blur one — blurring stays a click you make. A provider that is slow, unreachable or answers badly leaves the local results exactly as they were.

Model output is treated as untrusted

The page being captured is the same page whose title and headings go into the prompt that examines it. A hostile page can therefore write text aimed at the model — including text intended to talk it out of flagging that page's own credential fields. Lens is built on the assumption that this will be attempted:

The check that finds the regions in the first place runs on the page structure with no model involved, so with no provider configured none of this applies at all.

5. What Lens deliberately cannot capture

Some limits are Chrome's and are worth knowing, because they are security boundaries rather than bugs:

6. Handling sensitive captures

7. Reporting a vulnerability

If you find a security issue, please do not open a public issue or describe it in the support form. Email security@vectored.dev directly.

Useful things to include: the extension version, your Chrome version and platform, what an attacker would gain, and the smallest reproduction you can manage.

8. Related

Lens privacy policy · Vectored site security · Support