Post Mortem - Skybridge apps infinite loader in ChatGPT June 24 #890
fredericbarthelet
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
What happened
All ChatGPT apps built on Skybridge experienced an outage from June 24, 7:24AM GMT to June 25, 2:40AM GMT. During that period of time, views displayed in conversation for those apps stayed in a loading state and never displayed data.
All affected conversations will keep on displaying loading views, even now that the issue is patched, if the user navigates back in its conversation history.
Root cause
A ChatGPT sandbox release introduced a regression that incorrectly rejected host-context messages for Apps SDK flows. As a result, views could no longer hydrate window.openai.toolInput, toolOutput and toolResponseMetadata, even though the tool call succeeded and was injected into the conversation context. Views stayed stuck loading.
The regression only triggered when a tool's metadata referenced two different resource URIs across the two protocols the sandbox supports: openai/outputTemplate (Apps SDK, the historical OpenAI protocol) and ui.resourceUri (MCP Apps, the official MCP extension for UI in conversation). Skybridge produces one resource per protocol for cross-compatibility, so its default metadata hit exactly this case. A debug app deployed during the incident confirmed the trigger was the URI string mismatch, not the resource content (identical content under two different URIs failed too).
Since changing published metadata requires resubmitting each app, it was decided with OpenAI support team not to launch a mass resubmission for all affected apps. OpenAI instead traced and fixed the regression on their side in the next deploy train. No Skybridge or app redeployment was required to restore service.
Total incident duration
19 hours
Impact
All Skybridge apps in ChatGPT were unable to render views, which stayed stuck in a loading state.
Conversations created during the incident permanently retain broken loading views in history, even after the fix (host-side limitation). New conversations are unaffected.
Remediations
SKY-414: collapse host adaptors into single HostAdaptor with per-method routing #833 Remove openai/outputTemplate from tools metadata so apps progressively migrate to a single ui.resourceUri, eliminating the dual-protocol / mismatched-URI surface that triggered this regression
feat: add conformance app #889 Introduces a Skybridge conformance test, that can be run like any other MCP App on all compatible hosts. It test Skybridge API one-by-one on the receiving host and behave like an E2E test, both for the host and for Skybridge developpment team.
Related documents
OpenAI Community Forum thread: https://community.openai.com/t/window-openai-toolinput-tooloutput-toolresponsemetadata-not-hydrated-anymore/1384582
All reactions