Browserbase connector in ChatGPT: start() succeeds but navigate() fails with “No active session”
Update — Root Cause Confirmed via Controlled Testing
After running three systematic experiments to isolate this issue, I can now report conclusive findings.
What was tested:
Test 1 — Explicit sessionId workaround (v1)
Hypothesis: If ChatGPT can pass the sessionId returned from start() explicitly into navigate(), session state can be preserved manually.
Result: Not possible. The Browserbase connector schema does not expose sessionId as an accepted parameter on any downstream tool:
navigate({ url })— no sessionId parameter
extract({ instruction })— no sessionId parameter
observe({ instruction })— no sessionId parameter
act({ action })— no sessionId parameter
end()— no sessionId parameter
start() returns a sessionId, but there is no mechanism in the schema to pass it forward.
Test 2 — Atomic back-to-back execution (v2)
Hypothesis: If ChatGPT loses session state due to latency between calls (timeout), forcing all calls to execute immediately with zero pause might preserve the session.
Prompt used: Instructed the model to call start() → navigate() → extract() → end() atomically with no commentary between steps.
Result: Failed at Step 2. navigate() returned “No active session” even when called immediately after start().
Actual output:
Step 1: start() → success | sessionId: 04123f5d-1291-411c-950d-24446270e11d
Step 2: navigate(“a web site link”) → Error: No active session
Cleanup end() → Error: No active session
This disproves the latency/timeout theory. The session was never accessible to begin with.
Test 3 — Same workflow in Claude (control)
The identical Browserbase connector, same account, same sequence (start → navigate → extract → end) was run in Claude. It completed successfully across multiple runs including scraping Hacker News and calling the MyCareersFuture API.
Root Cause (confirmed):
ChatGPT spawns a fresh MCP session for each individual tool call. When start() completes in MCP session A, the Browserbase server registers the browser session. When navigate() is called, ChatGPT opens MCP session B — a new connection that has no knowledge of session A. The browser session created by start() is orphaned.
Claude maintains a persistent MCP connection throughout a conversation, which is why the same connector works there.
This is consistent with the related thread: “Connector tool calls generating fresh MCP session each invocation” (829 views, 11 replies).
What needs to be fixed:
From OpenAI: Persist MCP session state across tool calls within the same conversation turn, or at minimum within the same assistant response generation cycle.
From Browserbase (interim fix): Expose sessionId as an optional parameter on all downstream tools (navigate, act, observe, extract, end). This would allow the model to pass the sessionId from context — making the connector runtime-agnostic. Stateful session management should not rely solely on transport-layer persistence.
Until either fix is in place, the Browserbase connector is non-functional in ChatGPT by design — not by configuration error or prompt issue.
Happy to share screenshots of all three test runs if helpful.
Forum supports Markdown — reply akan render bold, code blocks, dan horizontal rules dengan betul.
Discussion in the ATmosphere