Your Browser Agent Isn't Broken. It Opened a Chrome Where You're Nobody.
Hacker News had three open-source browser agents on the front page this morning. An autoscaling agent that spins up browser workers on demand, Yamak, and yet another agent leaderboard. I read all three READMEs looking for the interesting part, and all three had the same section about a third of the way down, phrased almost identically: pick your browser mode.
Managed, relay, or remote CDP. And then a shell command, and then, for a lot of people, a week of confusion about why the agent claims it can’t find their inbox.
Managed means a Chrome that has never met you
Managed is the default, because it’s the only mode that works without asking the user to do anything. The agent bundles Playwright or Puppeteer, downloads its own Chromium build, and launches it against a fresh user-data-dir in a temp folder.
That browser is clean. Pristine. No extensions, no password manager, no saved payment methods, and none of your damn cookies.
So when you ask it to triage your email and it hands back a screenshot of a Google sign-in page, nothing failed. It did precisely what you configured. It just did it inside a browser where you are a stranger.
Relay is what people were actually reaching for
OpenClaw’s Browser Relay, Claude Code’s Chrome extension, the various CDP bridges people have written on top of both: architecturally these are the same move. Something sits inside the Chrome you already have open and forwards instructions into it from outside. Your profile. Your session. The tab you left on the internal admin dashboard.
But relay comes with a joint that can snap. You install an extension or a helper binary, approve a connection, and now a socket has to survive navigations, tab closures, service worker sleep, and Chrome deciding to reclaim memory at an inconvenient moment. We dug into why Claude Code’s extension keeps disconnecting a while back and the failure was mostly this: the relay is fine, the thing holding the relay is not.
Remote CDP, and the flag that lies to you
This is the mode that generates the most GitHub issues per user.
You’re told to launch Chrome yourself with --remote-debugging-port=9222, then point the agent at it. Seems clean. Except Chrome has refused to expose the debugging port against your default profile directory for a couple of years now, for reasons that are entirely defensible. So the tutorial quietly adds --user-data-dir=/tmp/chrome-agent to make the flag work again.
And there it is. New profile. Logged out of everything. The exact problem you picked remote CDP to avoid, reintroduced by the workaround for a security control.
Which mode, then
Relay, if the tool has one. Managed, if you’re reading public pages and being nobody is fine. Remote CDP if you genuinely enjoy this category of problem.
The profile was the whole point
Because the thing you want from a browser agent isn’t a browser, it’s the accumulated evidence that you are you: the session cookie Gmail set months ago, the SSO grant your identity provider issued this morning, the device fingerprint that made Okta stop challenging you sometime last spring. That bundle took years to build and it lives in one directory on your disk.
Every mode that starts a fresh profile is asking you to rebuild it. In a browser you’ll throw away.
So people do the thing you’d expect, which is to sign into their real accounts inside the agent’s disposable Chromium, typing a password into a window that a script is driving and that will get wiped the next time the tool auto-updates. Then they approve a 2FA push, and now a temp folder is a trusted device. Then they do it again next week, because the folder is gone.
Some of them notice this feels wrong and stop. Most keep going, because the alternative is admitting the setup doesn’t work. We wrote more about that gap in why your agent can’t see that you’re logged in, and the responses were mostly people describing their own version of the same evening.
No mode to choose
Dassi doesn’t have this setting. Not because we solved a hard engineering problem, but because we skipped the question. It’s a Chrome extension in the side panel of the browser you’re already using, so there’s no second profile, no port, no socket to a separate process, no decision about which Chrome is the real Chrome. The page you’re looking at is the page it reads.
You log in with your ChatGPT account or drop in your own API key for Claude, Gemini, whatever you prefer, and the browser part is already done. It’s on the Chrome Web Store if you want to skip the setup step entirely. If you’d rather compare the architectures first, the three ways agents connect to your browser covers the tradeoffs with less griping than this post.
The managed-versus-relay section will still be in those READMEs tomorrow. Someone will spend Saturday on user-data-dir and win, and honestly, good for them. I’d just rather open a side panel.