Repository navigation
[macOS][Browser Control] MCP App first launch stalls; deployed render acknowledgment remains absent #55650
Description
OpenAI report: embedded MCP App first launch stalls with Browser Control attached
Updated 2026-10-20 for submission. No private transcript, screenshots, cookies,
headers, OAuth values, signed media links, or raw logs are included.
Latest reproduction with deployed diagnostics
The diagnostic instrumentation is now deployed, not merely tested locally:
- Commit:
3aa5d5cfe3015871e6244c8e1261fe7213ffd0ae. - Serving revision at verification:
figma-animator-r3aa5d5cfe301-0199c16e7c38, 100% traffic. - Clean-checkout CI passed 510 tests, with zero failures; deployment and live health probes passed.
- The existing OAuth connection's Refresh tools operation completed before the test.
- Same app ID and existing BlueChew audience; no permission changes or replacement app.
- Subscription/workspace shown in ChatGPT: BlueChew Business.
- Platform:
Darwin 27.0.0 arm64 arm(uname -mprs).
On 2026-10-20 at 12:29 CDT (17:29 UTC), exactly one fresh read-only
figma_media_browser({}) launch was requested, without a previous uiSessionId.
Browser Control remained attached. No Try again, debugger detachment, forced
continuation, or guard changes were used. The panel stayed blank and ChatGPT
displayed Couldn’t display Figma Animator MCP.
The server recorded mcp.ui.launch.requested at 17:29:25.331 UTC:
{
"launchId": "dd3bc0d6-d68c-4b8d-8bc5-c2529899a909",
"bundleId": "f6ea57a1bac598777b461ba1f3eb6546d605b953b99da722ec8575a80689f2b8"
}The first assistant response did not retain the launch ID. It was supplied from
the correlated server event in a follow-up requesting only the status tool.
animator_get_launch_status completed at 17:30:46.879 UTC, and ChatGPT displayed:
{
"status": "awaiting_render_ack",
"rendered": false,
"evidence": "none",
"launchId": "dd3bc0d6-d68c-4b8d-8bc5-c2529899a909",
"bundleId": "f6ea57a1bac598777b461ba1f3eb6546d605b953b99da722ec8575a80689f2b8"
}No rendering event or acknowledgment-tool invocation appeared in the
revision-scoped log query covering this launch. The viewer was closed only after
saving blank-panel evidence, to read the conversation in the narrow layout. It
was not reopened. The status query did not launch or retry the UI.
The supported debugger cursor was captured before launch. The bounded filtered
trace was not truncated and captured a sandbox-origin Fetch.requestPaused,
resource type Document, HTTP 200, event sequence 504, request
interception-job-15837.0. It also captured an earlier OpenAI CDN Document pause.
This is not a complete network trace and does not expose continuation completion.
The live status verifies the absence of a client acknowledgment for this launch;
it does not by itself identify a bridge root cause. The visible host failure card
is separate evidence of the failed panel launch.
Summary
A fresh ChatGPT web Figma Animator panel launch fails while the official Chrome
Browser Control connection remains attached. A supported debugger event read
captures an HTTP 200 HTML Document response from the ChatGPT web-sandbox origin.
The panel later displays Couldn’t display Figma Animator MCP. A supported
Page.getFrameTree request is refused because Browser Use is resolving a paused
document response. The actual internal continuation outcome is unavailable.
Environment
- macOS; Google Chrome through the official extension-backed Browser Control.
- Desktop app: 26.1013.40934, build 20770, production channel.
- Official desktop updater reported
up_to_dateon 2026-10-20. - Bundled browser plugin: 26.1013.40934.
- Latest backend/UI revision tested:
3aa5d5cfe3015871e6244c8e1261fe7213ffd0ae. - Existing app:
asdk_app_6ad28c02de6c8191a5e5476c13f0edd7. - Endpoint:
https://figma.meds-marketing.dev/mcp; existing BlueChew audience. - Installed Chrome and extension versions were not re-collected for this
reproduction; please collect them in any internal reproduction.
Minimal steps
-
Use an authorized account with the existing Figma Animator MCP connection.
-
Keep official Browser Control attached throughout.
-
In a new ChatGPT chat, request:
Use the existing Figma Animator MCP app to call figma_media_browser with {}
and open its browser UI. This is a read-only fresh-launch test. Do not
generate media, reuse a uiSessionId, or retry a failed UI launch. -
Observe the panel, and use the supported CDP event reader to inspect
Fetch.requestPaused. For a new capture, obtain a cursor before step 3,
page to completion, and record any truncation. -
After the stalled launch, request
Page.getFrameTreethrough the supported
tab CDP capability. Do not force continuation or change interception.
Expected: the panel mounts and displays its Figma browser on the first attempt
while Browser Control remains attached.
Observed: blank panel followed by the host failure card. No Try again,
debugger detach, forced request continuation, or guard changes were used.
Earlier reproduction and guard evidence
Reproduction captured on 2026-10-20, approximately 16:35–16:37 UTC:
- Event sequence 279:
Fetch.requestPaused,resourceType: Document,
responseStatusCode: 200,content-type: text/html,content-encoding: br. - Origin: ChatGPT
web-sandbox.oaiusercontent.com; query/fragment omitted. - Request correlation:
interception-job-12963.0(local debugger identifier). - Filtered event page was not truncated. This is not a complete network trace.
- Supported query returned exactly:
Raw CDP is unavailable while Browser Use is resolving a paused document response. - Screenshot retained privately; not attached because it includes workspace context.
- All 20 current-day desktop log files under the officially documented macOS
log directory were searched. No continuation method, guard, or matching request
entries were found. IAB route warnings do not establish this Chrome failure's cause.
The assistant reported successful display despite the host failure card. Its
text is not rendering evidence. The earlier test used revision
656081dd815fe7e161d827c534cd40a85e7c03c3, before acknowledgment instrumentation.
The latest deployed reproduction above supplies the new evidence.
Investigation requested
Please correlate the active owned-document set at the guard rejection with:
- The exact paused request and frame/target/session ownership.
- Continuation start, completion, rejection, timeout, or a handler that never
reached continuation. - The safe method/error classification and terminal request state.
- The corresponding ownership release or retention decision.
Please provide a supported diagnostic build/API or a fixed release retaining
the document guard. Do not unblock raw CDP around an unresolved document.
Static inspection and an isolated mock show that the bundled handler can suppress
a rejection and retain ownership. They do not establish that this live request
rejected, or prove a common root cause with other reports.
Related upstream report: #55166
Official escalation guidance:
https://developers.openai.com/plugins/deploy/troubleshooting
Deployed application instrumentation
Each UI-producing tool response carries uiLaunch with a random launch ID,
bundle SHA-256 and awaiting_render_ack. An app-only callback can acknowledge a
nonhidden, nonzero app layout after two animation frames. A read-only status tool
returns the receipt or leaves rendering unverified. This distinguishes mounted
app evidence from tool success; it does not prove preview images loaded or replace
independent visual verification. No application code can acknowledge a sandbox
document that never starts the app's JavaScript.
Activity
github-actions commentedon Oct 20, 2026
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
mattastovall commentedon Oct 21, 2026
Fresh reproduction on October 20, 2026 at 19:50 CDT (October 21 at 00:50 UTC), after deploying the app-side source-import/rendering fixes.
up_to_date; installed version26.1013.40934, build20770, prod channel. No fixed/diagnostic build was offered by the updater or posted in this issue.dcc91a4fa3ec5e4717f5a961211fc925755b061d, revisionfigma-animator-rdcc91a4fa3ec-cad845610409.animator_open_workspace({})once with Browser Control attached, without reusing a UI session. The completed deterministic composition was then read without mutation. Both native 9:16 and 16:9 MP4s exist, but neither rendered in this panel.d8f27a2d-8f52-4e23-8150-0f849aa61684; bundle SHA-256aa4d20bc92a4fdfe49977f4b2fc77e8eb1375c50b592ac43e20db7886a1d0275. Independent read-only MCP status remainedawaiting_render_ack,rendered:false,evidence:none.Fetch.requestPausedfor the sandbox HTML Document, HTTP 200, sequence 140, requestinterception-job-10491.0. The subsequent filtered read ended at cursor 149,hasMore:false,truncated:false; no later matching events. This is a bounded filtered event capture, not a complete network trace or a continuation-outcome trace.Page.getFrameTreethrough the supported tab CDP API returned exactly:Raw CDP is unavailable while Browser Use is resolving a paused document response.Couldn’t display Figma Animator MCP; the right-side workspace remained blank.No Try again, debugger detachment, force-continue command, guard bypass, installed bridge patch, new media generation, or app/audience change was used. Private screenshots are retained locally; no transcript, signed media URLs, headers, cookies, or raw logs are attached.
Still need bridge-side diagnostics exposing the owned Document continuation's actual completion/rejection/timeout and terminal ownership state, or an official fixed build retaining the guard. The current evidence confirms the failed launch and blocked inspection boundary; it does not identify the internal continuation error.
mattastovall commentedon Oct 21, 2026
Minimal control experiment now deployed and reproduced on October 20 at ~22:01–22:16 CDT (October21 ~03:01–03:16UTC). This removes the Figma workspace from the reproduction.
Same existing MCP registration and audience throughout. Browser Control stayed attached; no Try again, debugger detachment, forced continuation, installed-runtime patch or guard change.
Couldn’t display Figma Animator MCP@modelcontextprotocol/ext-apps1.1.2, connection status and visible-frame acknowledgment; no Figma, navigation/restoration or generation_meta.ui.resourceUri, standard resource MIME and empty connect/resource CSP listsThe SDK control connects and acknowledges a visible frame in an isolated local browser with the official
AppBridgehost. That is a protocol control, not ChatGPT rendering proof.The standards-only descriptor is deliberately minimal:
Its registered resource returns
mimeType:'text/html;profile=mcp-app'and the inline HTML/bundle. Noopenai/outputTemplate,ui/resourceUri,openai/widgetAccessible, production result shaping, external scripts, client storage, Figma calls, nested frames or media are involved in that control. Authentication remains the existing endpoint's normal boundary. The SDK connection isnew App(..., {}, {autoResize:false})followed byapp.connect(); visible text distinguishes document load, JavaScript start and connection.Final serving commit
cd26c46fcf6112d72331dcbb3a83f3419eeb5ed6, revisionfigma-animator-rcd26c46fcf61-04636eb1efb3; CI521/521passed and deploy probes passed. Actual served resource bytes were independently read and hashed.Standards-only SDK launch
9e105358-0bc0-4819-af74-84df02dd133b, HTML SHA-256ae8b30fd1810c303456f1e19ceaac26004bd02d3adfbbbbfdcc8313ba8490e9f. Server logged launch requested at03:16:26.319UTC and the v2 SDK resource read at03:16:28.358UTC, excluding a stale v1 descriptor/resource. Independent read-only status remainsawaiting_render_ack,rendered:false,evidence:none.Supported pre-launch event cursor captured through final cursor158, not truncated, no more matching events. It includes:
Fetch.requestPaused, Document, HTTP200, sequence151, requestinterception-job-12286.0.waitingForDebugger:false.Page.getFrameTreeis rejected:Raw CDP is unavailable while Browser Use is resolving a paused document response.Earlier static/SDK launch receipts:
2036a01c-a18b-4d2c-94b3-3bc33b12301eandb87ea9e9-8aa7-4208-9308-95cce761aefa. Both have matching pending statuses; the static document has no SDK, so its missing acknowledgment alone is expected and was not used to diagnose failure.This reproduces without Figma workspace logic and without its compatibility registration helper. It narrows the failure to shared ChatGPT sandbox/document delivery under inspection, but does not reveal the internal continuation error or prove that every MCP app is affected. Still need a supported per-owned-document continuation outcome trace or official fixed build retaining the guard.
No private transcripts, screenshots, signed URLs, headers, cookies, credentials or raw logs are attached. No media generation occurred. Private screenshots and bounded filtered evidence retained locally.
jyunhao914 commentedon Oct 23, 2026
Additional reproduction on 2026-10-23 (Asia/Taipei), with an existing packaged HTML visualization in ChatGPT Work. This extends the evidence; it is not a claim that the internal continuation defect has been identified.
Environment
Reproduction and outcome
Evidence limits
Requested engineering diagnosis and acceptance
Please provide a supported per-owned-document lifecycle trace containing stage, owner/session/frame, security decision completion, response-body operation start/result, terminal continuation/fulfillment/failure command start/result, and ownership cleanup. It should distinguish response-body retrieval stalls, continuation rejection, and stale ownership without disclosing headers/cookies.
Chrome's Fetch contract requires a terminal response for a paused request and warns that interfering while getResponseBody is outstanding, or continuing an already-consumed response stream as-is, has invalid/undefined behavior. A repair needs to preserve URL authorization, settle each owned request exactly once through a valid stage transition, clean state on cancellation/detach/navigation, and expose a bounded actionable failure. These are contract-derived review requirements, not a verified patch for the closed implementation.
Acceptance: a fresh original form must mount on its first attempt while the official Browser Control remains attached, then accept changed page count and submit the correct values. Repeat on a new form reference and a fresh chat; no reload, debugger cancellation, source regeneration, or weakened guards.
Sources
https://learn.chatgpt.com/docs/chrome-extension#troubleshooting
https://developers.openai.com/plugins/deploy/troubleshooting
https://github.com/ChromeDevTools/devtools-protocol/blob/master/pdl/domains/Fetch.pdl
#55650
No private chat URLs, account identifiers, document content, headers, cookies, tokens, screenshots or raw logs are included.
Follow-up at 2026-10-23 10:56 UTC: supported network-diagnostic attempt
Network.enablerequest was rejected with:Raw CDP is unavailable while Browser Use is resolving a paused document response.No network instrumentation was enabled by this attempt.Follow-up: connected workflow succeeds with active readiness waits (2026-10-23)
This supersedes the earlier all-failing attached workflow result for the specific invocation pattern below; it does not establish a shipped runtime fix.
After reading #55659, we tested supported CUA locator readiness waits while the browser invocation remained active through iframe mounting. We did not cancel the debugger, reload/Try again, force a Fetch continuation, change security guards, or modify installed runtime files.
Earlier, a fresh target conversation and a 212-byte static HTML control with no JavaScript or external resources also timed out under the ordinary split-call pattern. Its bounded filtered capture contained HTTP 200 Document pauses and about:blank frame navigation. These observations are separate from the successful active-wait cases, not a controlled proof of the precise internal exception.
Read-only inspection of a bundled Document response handler found ownership recorded before continuation, released after successful settlement, and event-handler rejection silently caught. The captured paused responses had only a tabId source, text/html content type, no attachment disposition, and no x-openai-site-instruction header. We have not captured the exact swallowed exception from the live worker or established that the inspected bundle copy is the loaded service. REA semantic analysis was partial; focused text inspection supplied these observations.
The current actionable workaround is to keep the supported invocation active until actual nested-form readiness. The idle-between-invocations defect remains unresolved here. No claim that a package update fixes Browser Control, and no live application of the candidate runtime patches from #55659.
Follow-up: extracted-source RED/GREEN regression and idle-gap failures (2026-10-23 12:15 UTC)
A bounded offline reproduction now calls methods extracted from the installed desktop browser service and the bundled node_repl source. This is stronger than a hand-written model of the client, but host RPC and provider endpoints are mocked, and the loaded live worker path has NOT been established.
3b3fdb19a1f4642898e2bf974f8ff98767d453fd4500cf2e89415720b1e36ad4.c18d0dfd772715d0135b9c86add5cf26978bed7c45851420dfa81755855c6e1b.node_repl exec context not found, dispatches no continuation, and retains the owned response (regression exit 1).Separate live tests used the original packaged form with three source routes (topic, PDF, PPTX). Source routing worked: the topic requested requirements before an outline, and the synthetic three-page PDF/PPTX were read with the correct titles/counts. First form loading failed in all three routes while Browser Control stayed connected. PDF had 94.138 seconds and PPTX 272.223 seconds between browser operations. The PPTX host error dialog explicitly reported
TimeoutError: MCP sandbox RPC timed out. Re-displaying the same packaged form also failed; it was not counted as a first-load test. No manual settings transfer was used. Page-edit/submission acceptance remains unexecuted because those forms did not mount.These observations do not identify the exact swallowed exception in the live worker. They provide a concrete source-level candidate plus the still-failing live acceptance test. Please integrate/review the owner-bound lifecycle fix in the trusted worker/service and validate real provider cleanup. No shipped fix or successful idle-gap runtime acceptance is claimed.
Follow-up: account-free live reproduction after desktop restart (2026-10-23 13:00 UTC)
The existing source-based hypothesis now has a local Chrome reproduction after restarting the desktop app. This adds no ChatGPT generation, plugin call, uploaded document, Drive operation, or external network dependency.
This is consistent with the late-response context failure in the extracted-source regression and isolates the problem from the presentation workflow. It does not establish a shipped fix. Original topic/PDF/PPTX first-load, page-edit and direct-submit acceptance remains closed.