fix(relay): strict multi-agent isolation — a session owns only its own tabs
Several agents (and other tools opening tabs) share one real Chrome via the relay. Previously every session adopted ALL tabs from Target.getTargets, so another agent's tab churn polluted the list, dropped the tab being driven, and drifted commands onto the wrong page (the W-8BEN tax tab vanished mid-flow when a concurrent iphone-use agent opened tabs). A tab group belongs to exactly one agent. On the relay a session now tracks and drives ONLY the tabs it created (its own colored group) plus pop-ups its own clicks open — it never adopts the user's or other agents' tabs: - discover_and_attach (relay): create the session's own tab and pin it; do not adopt any existing foreign tab. - resync_targets (relay): never adopt unknown targets; never prune the session's tabs on a single getTargets snapshot (multi-agent churn / cross-process-nav gaps routinely omit live tabs) — prune only after RELAY_PRUNE_MISSES consecutive absent snapshots (debounced), pinned active always protected. - adopt_newly_opened: a tab that appears right after this session's action is a pop-up we opened — record it as owned. Launched browsers (every tab ours) keep adopting all tabs. Adds debounced_prune_ids + unit tests for the churn tolerance.
This commit is contained in:
@@ -131,7 +131,17 @@ Each `--session` that connects gets its **own colored Chrome tab group** (named
|
||||
after the session) and drives only its own tabs — multiple agents share the one
|
||||
real browser without cross-talk, and the user's own tabs are never grouped. CDP
|
||||
drives the page without moving the user's mouse/keyboard, so it doesn't fight
|
||||
them for control. **Anti-detection ranking: this real logged-in Chrome (extension
|
||||
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
|
||||
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