Browser extension
The extension lets a model work inside your own browser: your tabs, your cookies, your sessions. It is how you get help with things that live behind a login and have no API: a webmail account, a supplier portal, an admin panel, a booking system.
Installing and pairing
Chrome and Firefox, plus the Chromium browsers that take the Chrome build: Edge, Brave, Opera.
Chrome build
It drives the page over the remote-debugging protocol. Edge, Brave and Opera run this same build.
Firefox build
Firefox does not expose that protocol to extensions, so this build reimplements every tool on standard WebExtension APIs. Firefox 140 or newer. Mozilla signs it for direct install, and it is deliberately not listed in the public add-ons directory.
The tool names and their results are identical, so nothing below this line changes between the two.
- Install it from the extension page.
- The page shows a one-time code.
- Paste that code into the extension.
From then on the extension holds a token. Your password never goes into the extension.
What it can see and do
Thirteen tools, and that is the whole list. There is no general "run anything" escape hatch. The one distinction worth reading the list for is the one the extension itself uses when it decides whether to ask you first.
13 tools · 8 read-only
-
browser_tabsList open tabs, switch which one is being worked on -
browser_navigateOpen a URL in the target tab -
browser_ax_treeRead the page as an accessibility tree, the same structure a screen reader sees (read-only) -
browser_findLocate elements by text or selector (read-only) -
browser_screenshotCapture the tab, optionally the full page (read-only) -
browser_clickClick a specific element it has already located -
browser_typeType into a field -
browser_keyPress a key (Enter, Tab, Escape…) -
browser_scrollScroll the page (read-only) -
browser_wait_forWait for something to appear (read-only) -
browser_read_consoleRead the page's console output (read-only) -
browser_list_browsersList your connected browsers and which one is being driven, answered by the server, which sees every socket (read-only) -
browser_select_browserSwitch which connected browser the actions drive, by family ("firefox") or pairing label (read-only)
It reads before it acts.
A click is never a guess at coordinates. The model first pulls the accessibility tree, picks an element from it, and clicks that. Every call and its arguments are printed in the side panel as it happens.
Which sites it may touch
Two modes, in Settings → Extension. They differ in what the default is, not in what you can reach.
Open (the default)
Every site, minus what you block
It may work on any site, and you block the ones you want to keep it out of. Fewer interruptions, which is what most people want.
Strict
No site, plus what you allow
It may work on nothing until you allow that site. Every new origin asks first.
You can switch between them at any time. The lists are kept separately, so going to strict and back does not lose your blocklist.
How much it asks
Three approval tiers, also in Settings → Extension. Smart, the default, draws exactly the line the list above draws.
| Tier | Read-only tools | Anything that changes something |
|---|---|---|
| Manual | Asks | Asks |
| Smart default | Goes through | Asks |
| Always | Goes through | Goes through |
On Smart, navigation goes through as well, because it is visible and reversible. On Always it runs the whole task and you watch the log.
You can also switch off individual tools. Turning off
browser_type, for example, leaves a model that can read and click but never fills
anything in.
Rules that are not configurable
Refused at every tier
-
It never types into a password, payment-card, or one-time-code field.
Recognised by the field's type and autocomplete attributes, and by its name, id, label and placeholder, so a card box built out of a plain text input is still refused. The check errs toward refusing.
-
It never touches browser-internal pages.
chrome://,about:,file://, devtools, and the extension gallery. -
Nothing is uploaded anywhere but here.
Page content goes to the model to answer your question and follows the same retention rules as the rest of your chats (see Zero data retention).
No tier and no setting relaxes these three.
More than one browser
Chrome and Firefox can be paired and connected at the same time, and each
runs its own copy of the extension. The model is told which browsers are online at the start
of every panel turn, and actions go to the most recently active one by default. So "do that in
Firefox" is a switch (browser_select_browser), not a shrug.
If the browser being driven closes mid-task, actions fall back to the one still open.
Sending images and files
The panel takes uploads: the + file button, or drop a file anywhere on the panel. Images go to the model as images (pick a vision-capable model for those), text files as their content, and other files by name.
Same limits as the web chat: 8 files and 24 MB per message. Everything lands in the same chat you can open in the web app.
Chats, not a separate assistant
The side panel is your ZeroLog chats. Open an existing conversation and keep going, or start a new one. Either way it is the same chat you see on the website, synced both directions. So the model driving the browser already knows what you are working on, and what it did in the browser is in the chat you read later.
Downloads a page starts are listed in the panel, so a file the model fetched is something you can find rather than something that vanished into the downloads folder.