You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Stop the eager groupNew(["agent"]) call in the WS bridge's SESSION_START handler. The connection-default lane (the Chrome tab group with one about:blank tab, titled π agent) that's currently auto-created on every MCP initialize should not exist. Isolation should happen only when the agent explicitly requests it via group_id="new".
Why this is the right fix
A QA-UX integrator team reported that orphan agent tab groups accumulate across connection cycles β unattributable to which client created them, never reaped on disconnect, and visually cluttering the operator's Chrome with about:blank placeholders. The memo (docs/handovers/MEMO-connection-default-lane-naming-and-lifecycle-20260619.md) traces it back to the eager groupNew in SESSION_START.
The memo proposes 5 fixes: name the lane from clientInfo.name, reap on disconnect, auto-close never-navigated lanes, expose lane metadata + group gc, lazy creation. All 5 collapse into one structural change: don't create the lane eagerly. Nothing to reap if it never gets created.
Walking through their asks against the proposed change:
Memo ask
Status under this fix
Name from clientInfo.name
Lane doesn't exist to be named. β
Reap on disconnect
Nothing to reap. β
Auto-close never-navigated lanes
No about:blank placeholder lanes exist. β
Lane metadata / group gc
Lanes that DO exist (explicit group_id="new") are already attributable by name + id. Their integrators sweep them today.
Lazy creation
This is exactly that, taken to the logical conclusion. β
if(msg.type==="SESSION_START"){awaitrunSerialized(async()=>{awaitswapToSession(mcpSid);groupMode="shared";sessionGroupId=null;sessionGroupName=null;sessionGroupDisrupted=false;awaitgroupNew(["agent"]);// β DELETE THIS LINEmcpSessionActive=true;});return;}
That's it. Delete the one line.
Effects:
windows/tabs/here/group list β returns the user's actual browser state (currently returns just the agent's 1 about:blank tab)
group_id="new" β still creates an isolated lane (createAgentLane() unchanged)
group_id="<numeric-id>" β still attaches to that lane (swapToAgentLane() unchanged)
group_id="shared" / omitted β runs in true shared mode against the user's browser, no Chrome tab group created
No about:blank tab created on connect. No agent group. No accumulation.
Semantic shift summary
This is a deliberate behavior change for callers using group_id="shared" or omitted-group_id. The two paths that DO change:
works exactly as today β creates a named isolated lane with the URL loaded
domshell_execute({..., group_id:"<numeric id>"})
works exactly as today β joins that lane
Migration story
Already partially deployed:
Deprecation cycle started in 2.0.2 (2026-05-31): omitted group_id emits a [DEPRECATION] warning. Integrators have been seeing this for ~3 weeks.
2.0.6 (just shipped, 2026-06-19): the deprecation reply text now telegraphs BOTH the upcoming hard-error AND this semantic shift, with an explicit migration directive ("pass group_id="new" on every call that needs an isolated lane"). The MCP_INSTRUCTIONS LANES section similarly elevates "new" to recommended and adds an IMPORTANT SEMANTIC NOTE on "shared".
Extension 1.3.2 (this issue): kernel change ships. The advance notice integrators have been receiving becomes the actual behavior.
DOMShell 3.0.0 (future): omitted group_id becomes a hard error per the existing deprecation plan.
Integrator impact survey
CLI-Anything (HKUDS PR #308 integrator) β unaffected. Their _call_execute always sets an explicit group_id ("new" or a captured numeric id) and never uses "shared" or omitted. Verified at domshell_backend.py:548-552. Their test suite stays green; no coordinated release required.
QA-UX integrator (the memo's author) β explicitly benefits. Their cleanup janitor's "self-reap on exit" becomes unnecessary because the lane it was reaping no longer exists. They can simplify integrator-side code in their next sprint.
Claude Desktop and ad-hoc agents β these are the integrators that may currently be using group_id="shared" or omitted. The 2.0.6 deprecation messaging is their advance notice; the [DEPRECATION] warning has been firing for them since 2.0.2.
Bundling
Queued for the next CWS-justifying extension release alongside:
Goal
Stop the eager
groupNew(["agent"])call in the WS bridge'sSESSION_STARThandler. The connection-default lane (the Chrome tab group with oneabout:blanktab, titledπ agent) that's currently auto-created on every MCPinitializeshould not exist. Isolation should happen only when the agent explicitly requests it viagroup_id="new".Why this is the right fix
A QA-UX integrator team reported that orphan
agenttab groups accumulate across connection cycles β unattributable to which client created them, never reaped on disconnect, and visually cluttering the operator's Chrome withabout:blankplaceholders. The memo (docs/handovers/MEMO-connection-default-lane-naming-and-lifecycle-20260619.md) traces it back to the eagergroupNewinSESSION_START.The memo proposes 5 fixes: name the lane from
clientInfo.name, reap on disconnect, auto-close never-navigated lanes, expose lane metadata +group gc, lazy creation. All 5 collapse into one structural change: don't create the lane eagerly. Nothing to reap if it never gets created.Walking through their asks against the proposed change:
clientInfo.namegroup gcgroup_id="new") are already attributable by name + id. Their integrators sweep them today.The change
src/background/index.ts:544-562β the SESSION_START handler currently does:That's it. Delete the one line.
Effects:
windows/tabs/here/group listβ returns the user's actual browser state (currently returns just the agent's 1about:blanktab)group_id="new"β still creates an isolated lane (createAgentLane()unchanged)group_id="<numeric-id>"β still attaches to that lane (swapToAgentLane()unchanged)group_id="shared"/ omitted β runs in true shared mode against the user's browser, no Chrome tab group createdabout:blanktab created on connect. Noagentgroup. No accumulation.Semantic shift summary
This is a deliberate behavior change for callers using
group_id="shared"or omitted-group_id. The two paths that DO change:domshell_execute({command:"windows"})(omitted)domshell_execute({command:"click submit_btn", group_id:"shared"})submit_btnin whatever tab the user is currently on β real side effects on the userThe two paths that DON'T change (and cover every well-behaved integrator we know of):
domshell_execute({..., group_id:"new", initial_url:"...", group_name:"qa-ux"})domshell_execute({..., group_id:"<numeric id>"})Migration story
Already partially deployed:
group_idemits a[DEPRECATION]warning. Integrators have been seeing this for ~3 weeks.group_id="new"on every call that needs an isolated lane"). TheMCP_INSTRUCTIONSLANES section similarly elevates"new"to recommended and adds anIMPORTANT SEMANTIC NOTEon"shared".group_idbecomes a hard error per the existing deprecation plan.Integrator impact survey
_call_executealways sets an explicitgroup_id("new"or a captured numeric id) and never uses"shared"or omitted. Verified at domshell_backend.py:548-552. Their test suite stays green; no coordinated release required.group_id="shared"or omitted. The 2.0.6 deprecation messaging is their advance notice; the[DEPRECATION]warning has been firing for them since 2.0.2.Bundling
Queued for the next CWS-justifying extension release alongside:
createAgentLanesilently swallowsgroupNewfailure--end-of-options separator (and consider-e <pattern>for grep)Β #49 βparseArgs --end-of-options supportinitial_urlfor group_id="new" β eliminate about:blank placeholder on lane creationΒ #52 β--urlflag forgroupNew+groupNameplumb-through6 kernel fixes in one CWS submission. This issue is the smallest of the six (one-line delete) but arguably the highest user-visible impact.
Tests
domshell_execute({command:"windows"})with nogroup_idreturns the user's actual windows (not 1agent)domshell_execute({command:"ls", group_id:"new", group_name:"x", initial_url:"https://example.com"})creates a single Chrome tab group titledxwith example.com loaded (existing feat(extension): honorinitial_urlfor group_id="new" β eliminate about:blank placeholder on lane creationΒ #52 behavior β verify nothing here regresses)group_id=<that numeric id>attach to the same group (existing behavior)Related issue / handover
docs/handovers/MEMO-connection-default-lane-naming-and-lifecycle-20260619.mdβ the QA-UX integrator memo that triggered this. Their asks 2β5 are intentionally out of scope; the structural fix here subsumes them all.Server-side advance-notice work shipped as MCP server
2.0.6(commita8b4972).