web_fetch isn’t enough: pages that need JavaScript, sites you have to sign in to, multi-step forms, or anything where the agent has to click through.
The browser doesn’t try to pass as a person. It reports itself as Chrome rather than HeadlessChrome in its user agent, but otherwise leaves the browser’s automation signals — such as
navigator.webdriver — in place, and makes no attempt to get around bot checks. When a site asks for a CAPTCHA or a 2FA code, a person solves it through the live view — see Hand off a CAPTCHA or 2FA prompt.Get a browser
The HQ looks for a browser in this order and uses the first one that actually starts:- The path in
BROWSER_EXECUTABLE_PATH, if you set one and it exists (see Configuration). - Google Chrome, then Microsoft Edge, installed in the usual place:
- macOS —
/Applicationsor~/Applications - Windows — the standard Chrome and Edge install folders under
%LOCALAPPDATA%and Program Files - Linux —
google-chrome,google-chrome-stable,chromium,chromium-browser, ormicrosoft-edgeon yourPATH
- macOS —
- A managed browser that DashSquad downloaded for you.
The managed browser
If you have neither Chrome nor Edge, Desktop can download a browser for your agents. It’s about 190 MB to download and about 370 MB on disk, and DashSquad only downloads it when you ask. You’ll be offered it in two places:- The install card. When you turn the browser on for an agent and no browser is found, a card titled Your agent needs a browser appears on the agent’s page. Click Download browser (about 190 MB) to download it, or I’ll install Chrome myself to open the Chrome download page instead. When the download finishes and the browser passes a test launch, the card shows Browser ready.
- Settings → Browser. Click Download browser. The page shows a progress bar, then Checking that it starts… while the HQ launches the new browser once to make sure it works.
Settings → Browser
Open Settings → Browser in Desktop to see which browser your agents use — Google Chrome, Microsoft Edge, or the managed browser — with its full path, and Browsers open right now with a count. Click Check again after installing or removing a browser.Turn it on for an agent
In Desktop, open the agent’s Configuration tab, open the Tools card, tick the Web group, and click Save. The Web group turns onweb_search, web_fetch, and the browser together — it’s one checkbox for the whole group. You can also pick it when you create an agent in the Deploy wizard.
Once the browser is on, the agent’s page gets a Browser tab for managing its profiles.
The browser tools
Turning on the browser gives the agent these tools. Each browser belongs to one conversation: two conversations with the same agent get two separate browsers.
A few things to know:
browser_screenshotis only offered to image-capable models. If the agent’s model can’t read images, it doesn’t get this tool and works from snapshots instead.- Sub-agents get fresh sessions only. A sub-agent with the browser gets its own browser, separate from its parent’s. It can’t open a named profile — its
browser_openhas only theurlparameter and reads “Open a browser session for this conversation. Returns a snapshot.” — and it doesn’t getbrowser_profiles. - Web pages are untrusted. Everything the browser returns is marked to the agent as web page content, not instructions.
- Downloads go to a
downloadsfolder in the agent’s working directory. Uploads (browser_actwithupload) accept only files inside the agent’s working directory. - Only
httpandhttpsaddresses can be opened. - Site permissions are denied. Requests for things like your location, camera, or notifications are refused.
Profiles
When the agent opens a browser, it chooses one of two kinds of session:- A fresh session — a throwaway browser with no cookies or history. It’s deleted when the browser closes. This is what the agent gets when it doesn’t name a profile.
- A named profile — a persistent browser profile with a name the agent picks (for example
shoppingorwork-email). Cookies, logins, and site data survive between conversations, so you only sign in once. A profile that doesn’t exist yet is created the first time the agent opens it.
-, up to 32 characters. Each agent has its own profiles; one agent can’t open another’s.
One conversation at a time. A profile can only be open in one conversation at a time. If another conversation already has it open, the agent gets:
<conversation> is that conversation’s title (or its id if it has no title). Close the browser in the other conversation — ask the agent there to close it — or wait for it to close on its own after 15 minutes of inactivity.
Profiles are stored on the HQ’s machine under ~/.dash/gateway/browser-profiles/, in one folder per agent.
Manage profiles in Desktop
Open the agent’s page in Desktop and click the Browser tab (it appears only when the agent has the browser turned on). Each saved profile shows its name, an In use badge if a conversation has it open, when it was last used, and its size on disk. To delete a profile, click Delete and confirm. Deleting signs the agent out of every site in it. Delete is disabled while the profile is in use — Close the agent’s browser first. An agent with no saved profiles shows: This agent has no saved browser profiles. It creates one when it opens the browser with a profile name. An agent can also list and delete its own profiles withbrowser_profiles.
Live view
The live view shows you the agent’s browser as it runs, and lets you use it yourself between turns. It’s available in Desktop and the web client.Open it
In a chat with an agent that has opened a browser, click View browser — in Desktop it’s a globe icon in the chat’s status bar; in the web client it’s a button in the top bar. In Desktop the view opens as a panel beside the chat; in the web client it’s a column beside the chat, or a full-screen overlay when the window is 768 px wide or narrower. You’ll see Connecting to the browser… for a moment, then the page title, its address, and a live picture of the page. If the conversation has no browser open, the view shows No browser is open in this conversation.Who has control
The top of the view shows who has the browser:- Agent is driving — a turn is running. You can watch, but your clicks and keys don’t reach the page.
- You have control — the agent isn’t working. Click, type, scroll, and use the keyboard in the page picture just as you would in a normal browser.
- Keys go to the page, not to the app.
- Cmd+V (Ctrl+V on Windows and Linux) pastes your clipboard into the page. Pasted text is cut to 4,096 characters.
- If the page opens a dialog, the view shows The page is showing a dialog: ”…” with the dialog’s message.
One viewer at a time
Each browser can have only one live view open. Opening it somewhere else — another Desktop window, or the web client — ends the first one. When a live view ends, it tells you why:
A sub-agent’s browser can’t be viewed yet.
Hand off a CAPTCHA or 2FA prompt
The browser won’t solve CAPTCHAs or sign-in challenges on its own. Tell your agent in its instructions — or in the chat — to stop and ask you when it hits one, then:1
The agent stops and asks
The agent says it’s stuck — for example, a CAPTCHA or a code prompt on a sign-in page — and ends its turn.
2
You open the live view and solve it
Click View browser. Once it shows You have control, solve the CAPTCHA or type the code into the page.
3
You reply
Tell the agent you’re done, in the same conversation.
4
The agent continues
The agent picks up from the page you left it on. If it used a named profile, the sign-in is saved for next time.
Screenshots in chat
When an agent callsbrowser_screenshot, the tool row in chat shows a thumbnail of the capture. Click it to enlarge it; click again to shrink it. The thumbnail is kept with the conversation.
Limits
Privacy and security
- The browser can’t reach the HQ itself. Pages can’t load the HQ’s own ports on the HQ’s machine — whether addressed as
localhost,127.0.0.1, the machine’s own network address, or its hostname — so a web page can’t drive the agent’s browser into your HQ’s management or chat APIs. Other local addresses stay open, so an agent can still test a web app you run locally. If the agent tries to open one, it getsport <port> on this machine is not allowed; if a page tries to load one itself, the request is blocked. - What you see and type in the live view stays out of the logs. The HQ doesn’t write live-view frames or your input to its logs — only the kind of input (a click, a key) is recorded, never what you typed. The agent never sees the live view or your input.
- Profiles hold real sign-ins. A profile’s cookies stay signed in to the sites the agent used. On macOS and Linux, the profile folders under
~/.dash/gateway/browser-profiles/are readable only by the user account the HQ runs as, but anyone signed in as that user can read them. Delete profiles you no longer need.
Configuration
Two environment variables, set where the HQ runs, change how the browser works. When Desktop manages the HQ for you, set them in the environment you launch Desktop from — the HQ inherits them. Restart the HQ (or Desktop) to apply a change.
See Troubleshooting → Browser if something goes wrong.