{
"$type": "site.standard.document",
"bskyPostRef": {
"cid": "bafyreidueimnulkdhbctl3z3j3svo7os7dkacgjfhtzwqgi5n33r2cdvnq",
"uri": "at://did:plc:lk3jfj3zq4k4wxnk474axylu/app.bsky.feed.post/3mlwjtkvbkgo2"
},
"path": "/t/browserbase-connector-in-chatgpt-start-succeeds-but-navigate-fails-with-no-active-session/1381004#post_2",
"publishedAt": "2026-05-15T22:28:45.000Z",
"site": "https://community.openai.com",
"textContent": "**Update — Root Cause Confirmed via Controlled Testing**\n\nAfter running three systematic experiments to isolate this issue, I can now report conclusive findings.\n\n* * *\n\n**What was tested:**\n\n**Test 1 — Explicit sessionId workaround (v1)**\n\nHypothesis: If ChatGPT can pass the sessionId returned from `start()` explicitly into `navigate()`, session state can be preserved manually.\n\n**Result: Not possible. The Browserbase connector schema does not expose `sessionId` as an accepted parameter on any downstream tool:**\n\n`navigate({ url })`— no sessionId parameter\n\n`extract({ instruction })`— no sessionId parameter\n\n`observe({ instruction })`— no sessionId parameter\n\n`act({ action })`— no sessionId parameter\n\n`end()`— no sessionId parameter\n\n`start()` returns a sessionId, but there is no mechanism in the schema to pass it forward.\n\n* * *\n\n**Test 2 — Atomic back-to-back execution (v2)**\n\nHypothesis: If ChatGPT loses session state due to latency between calls (timeout), forcing all calls to execute immediately with zero pause might preserve the session.\n\nPrompt used: Instructed the model to call `start()` → `navigate()` → `extract()` → `end()` atomically with no commentary between steps.\n\n**Result: Failed at Step 2. `navigate()` returned “No active session” even when called immediately after `start()`.**\n\nActual output:\n\n_Step 1: start() → success | sessionId: 04123f5d-1291-411c-950d-24446270e11d_\n\n_Step 2: navigate(“a web site link”) → Error: No active session_\n\n_Cleanup end() → Error: No active session_\n\nThis disproves the latency/timeout theory. The session was never accessible to begin with.\n\n* * *\n\n**Test 3 — Same workflow in Claude (control)**\n\nThe 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.\n\n* * *\n\n**Root Cause (confirmed):**\n\nChatGPT 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.\n\nClaude maintains a persistent MCP connection throughout a conversation, which is why the same connector works there.\n\nThis is consistent with the related thread: *“Connector tool calls generating fresh MCP session each invocation”* (829 views, 11 replies).\n\n* * *\n\n**What needs to be fixed:**\n\n**From OpenAI: Persist MCP session state across tool calls within the same conversation turn, or at minimum within the same assistant response generation cycle.**\n\n**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.**\n\nUntil either fix is in place, the Browserbase connector is non-functional in ChatGPT by design — not by configuration error or prompt issue.\n\n* * *\n\nHappy to share screenshots of all three test runs if helpful.\n\nForum supports Markdown — reply akan render bold, code blocks, dan horizontal rules dengan betul.",
"title": "Browserbase connector in ChatGPT: start() succeeds but navigate() fails with “No active session”"
}