Summary
Multiple MCP agents on one Chrome hit TAB_NOT_OWNED and can contend on the same compose tab. The ownership model exists in product; operators need a first-class protocol doc (who owns which tab, how to yield, how to recover).
Repro
- Context: Two MCP clients registered as agents against one FSB extension.
- Steps:
- Agent A navigates / focuses a tab.
- Agent B calls navigate/click on the same tab.
- Observed:
TAB_NOT_OWNED (and related codes in mcp README); compose UI can be disrupted if ownership is ignored.
Code pointers (verified against /workspace/FSB)
mcp/README.md — tab-ownership enforcement; TAB_NOT_OWNED, TAB_INCOGNITO_NOT_SUPPORTED, TAB_OUT_OF_SCOPE (~L67, ~L421).
extension/utils/agent-tab-resolver.js — ownership reject (~L106).
extension/ai/tool-definitions.js — multi-agent notes on tools.
Proposed fix
Document soft-lock protocol: one writer per tab; claim via normal ownership; do not click compose on unowned tabs; recovery steps when TAB_NOT_OWNED is returned.
Acceptance / regression
- Docs section linked from mcp README.
- Matches actual error codes (no invented APIs).
Owner
docs
Priority: P2 · Owner: docs
Summary
Multiple MCP agents on one Chrome hit
TAB_NOT_OWNEDand can contend on the same compose tab. The ownership model exists in product; operators need a first-class protocol doc (who owns which tab, how to yield, how to recover).Repro
TAB_NOT_OWNED(and related codes in mcp README); compose UI can be disrupted if ownership is ignored.Code pointers (verified against /workspace/FSB)
mcp/README.md— tab-ownership enforcement;TAB_NOT_OWNED,TAB_INCOGNITO_NOT_SUPPORTED,TAB_OUT_OF_SCOPE(~L67, ~L421).extension/utils/agent-tab-resolver.js— ownership reject (~L106).extension/ai/tool-definitions.js— multi-agent notes on tools.Proposed fix
Document soft-lock protocol: one writer per tab; claim via normal ownership; do not click compose on unowned tabs; recovery steps when
TAB_NOT_OWNEDis returned.Acceptance / regression
Owner
docs
Priority: P2 · Owner: docs