Browser
One browser — you drive it, the agent drives it, same page. (Pro)
The Browser is a managed Chromium inside the Desktop side panel. The page you see is the exact page the agent drives: same tabs, same URL, same live DOM. No extension, no second window, no MCP to paste. (Pro feature — $10/mo flat, model keys separate.)
#Shared surface
- One set of tabs. Every authorized Desktop conversation works on the same pages, across projects. File paths and permissions still belong to the project that called the tool.
- Eight tabs maximum. Open a new one with
newTabwhen starting unrelated work. - The panel is a window, not a session. Opening the browser never creates a chat session; closing the panel does not close the browser.
#Open it
#From the launcher
Open the panel launcher in the side panel and pick Browser — or press 5 while the launcher has focus.
#It opens itself
When an agent starts browsing, the panel opens on its own and streams the page as the agent moves through it. You watch, take over, or let it finish.
#First run
The browser needs a Chromium runtime. Codey asks once — Install browser runtime — downloads a pinned Playwright Chromium, and shows its progress instead of hanging on a silent spawn.
#Drive it
Your keyboard and mouse are your own: typing, scrolling, and clicking in the panel travel a separate path from AI-driven actions.
| Action | Keys |
|---|---|
| Address bar | Cmd/Ctrl+L |
| New tab | Cmd/Ctrl+T |
| Reload | Cmd/Ctrl+R |
| Back / forward | Cmd/Ctrl+[ and Cmd/Ctrl+] |
| Find in page | Cmd/Ctrl+F |
| Zoom in / out / reset | Cmd/Ctrl+= · Cmd/Ctrl+- · Cmd/Ctrl+0 |
- Zoom ladder — 50% to 200% in eleven steps, from the toolbar, the keys above, or Ctrl/Cmd+wheel.
- Page tools — history, downloads, uploads, dialog handling, page text, and a page brief that returns headings, links, assets, fonts, and colors.
#Fit the page to the panel
| Preset | Viewport |
|---|---|
| Fit panel | The panel's measured size, 1:1 — no letterbox |
| Desktop | 1440 × 900 |
| Tablet | 820 × 1180 |
| Mobile | 390 × 844 |
| Custom | 240–2560 × 200–1920 |
Fit panel drives the real page viewport to the panel's size, so what you review is what the device renders. Pointer input maps proportionally against the laid-out viewport — clicks, inspects, and region drags land where you aimed even while a resize is still settling.
#Select and send
#Inspect the component, not the pixel
Inspect mode picks the meaningful thing under the cursor — button, card, section — through shadow DOM and iframes. Toggle Smart component against Raw element, and walk the ancestor chain with expand and shrink without re-aiming your cursor.
#The selection rides with your next message
Every confirmed selection lands in the prompt dock on its own. No card, no confirm button — select it and it travels with what you type next. Region drag captures any rectangle; a page screenshot captures the whole document, including the scrolled edges.
| Send mode | What the model receives |
|---|---|
| Automatic | One crop image plus its data on vision models; a readable code snippet on text-only models |
| Image | The crop alone |
| Code | The selector, text, key styles, and capture geometry — no image bytes |
| Image + code | The crop, its page context, and the snippet |
- One selection, one image. Automatic never drags in a page background, so two selections mean two images, not four.
- The dock shows the crop. Click the thumbnail for the full-size preview; it never substitutes a text dump.
#Preview what you build
The same panel opens a project's HTML and SVG files straight off disk, with fit-to-panel, zoom, inspect, and region selection intact — an artifact gets reviewed in the browser it was made for, not in an external app.
- Inside the project only. Every navigation is re-resolved through the real path and confined to the registered preview roots.
- Desktop only. Only the Desktop panel registers preview roots — the AI tool, the TUI, and the web app keep rejecting
file://. - No duplicate tabs. Reopening a file focuses the tab that already holds it, even when the path is spelled through a symlink or a
/tmpalias.
#What the agent can do
| Group | Actions | Notes |
|---|---|---|
| Read | state, snapshot, brief, history, find | The accessibility snapshot is the agent's map; element refs come from it |
| Navigate | open, back, forward, reload, stop, select, close | Tabs are addressed by id |
| Act | input, dialog, upload, control | Move, click, wheel, key, and text input at page coordinates |
| Capture | screenshot, inspect, region | Viewport, full page, element, or rectangle |
| Restyle | viewport, zoom, preview, undo | Live text and style edits, reversible |
| Playwright | tools, mcp | Discovers and runs the full Playwright MCP tool set |
| Files | files, export | List downloads, save one into the project |
Playwright is not a server you configure. The agent asks tools once, gets every supported tool with its real input schema — click, fill, drag, keys, waits, dialogs, network, console, PDF, assertions — and calls them through mcp against the same Chromium you are looking at.
- Ceilings — 24,000 characters of page text, 8 MB per image, 16 megapixels per capture, ten upload paths per call.
#Hand the page back and forth
The panel states who is driving: You have control, AI ready, AI is browsing. Take control stops the agent — its actions are refused while you hold the page, not queued up behind you. Resume AI gives it back.
- Stop — cancels the agent's current work and keeps every page open.
- Close — one tab with a tab id; every tab and the browsing data without one.
#Guardrails
- Permission per action. Every AI-driven action goes through your permission rules, keyed by action name — the same allow / ask / deny system as every other tool.
- http and https only for the agent. URLs carrying credentials are refused, and infrastructure, loopback, and metadata addresses are blocked — the browser cannot reach Codey's own control server.
- No host escape. Host-side code execution is unavailable by design; page work goes through structured Playwright operations or code that runs inside the page.
- Uploads stay inside the project and export filenames cannot carry directories.
- Pages are data, not instructions. Text, console, and network output never grant the agent a new permission or change its task.
#The stream keeps up by itself
There is nothing to tune. The frame stream runs on a measured pixel budget with nine steps: the first five give up JPEG quality only — 92 down to 68, at native resolution — and only after that does it start trading pixels, from 3.1 million down to 700 thousand. A calm page recovers to near-lossless; a storm sheds load in the order that costs the least to the eye. Frames are captured at the panel's real device pixel ratio, so a Retina display streams sharp instead of soft.
The Browser is Desktop-only and Pro. Free-tier users see the launcher card and the upgrade gate; the panel and the server each enforce the entitlement independently.