fix(relay): don't adopt foreign tabs/pop-ups on click — completes multi-agent isolation (#last hole)
After strict isolation (v1.5.16) a session's tracked set is only its OWN tabs, so in `adopt_newly_opened` (run after every click to follow a pop-up) EVERY foreign tab looks "new" relative to the session's `before` set and got adopted — a click-heavy flow on a busy shared Chrome pulled other agents'/the user's tabs (github, Lark, iphone-use) into the session mid-flow. A pop-up the agent itself opened can't be told apart from a foreign tab over the relay (the synthesized targetInfo carries no opener/window/group), so on the relay `adopt_newly_opened` now adopts nothing: the agent drives only tabs it explicitly created; pop-ups (OAuth/login windows) are the user's. Launched browsers (every tab ours) still follow pop-ups. Verified live: a fresh click-heavy relay session stays clean (only its own tabs), and 5 concurrent agents churning tabs show zero cross-agent drift.
This commit is contained in:
@@ -134,14 +134,14 @@ drives the page without moving the user's mouse/keyboard, so it doesn't fight
|
||||
them for control.
|
||||
|
||||
**Strict multi-agent isolation.** A session over the relay tracks and drives
|
||||
**only the tabs it created** (its own group) plus pop-ups its own clicks open. It
|
||||
does **not** adopt the user's existing tabs or other agents' tabs, so several
|
||||
agents (and other tools opening tabs) can work in the same real Chrome
|
||||
concurrently without ever dropping or stealing each other's tabs — another
|
||||
agent's tab churn can't make your bound tab vanish or drift your commands onto the
|
||||
wrong page. Consequence: `tab list` shows only *your* session's tabs; to drive a
|
||||
specific pre-existing tab, navigate to it in your own tab instead of expecting it
|
||||
in the list. **Anti-detection ranking: this real logged-in Chrome (extension
|
||||
**only the tabs it created** (its own group). It does **not** adopt the user's
|
||||
existing tabs, other agents' tabs, or pop-ups (e.g. an OAuth/login window — that's
|
||||
the user's), so several agents (and other tools opening tabs) can work in the same
|
||||
real Chrome concurrently without ever dropping or stealing each other's tabs —
|
||||
another agent's tab churn can't make your bound tab vanish or drift your commands
|
||||
onto the wrong page. Consequence: `tab list` shows only *your* session's tabs; to
|
||||
drive a specific page, navigate to it in your own tab instead of expecting a
|
||||
pre-existing or popped-up tab to appear in the list. **Anti-detection ranking: this real logged-in Chrome (extension
|
||||
connect) > a headed launched browser > headless (forbidden).** A genuine human
|
||||
browser has no headless/automation tells at all, so prefer it for anything
|
||||
anti-bot-sensitive.
|
||||
|
||||
Reference in New Issue
Block a user