{
"$type": "site.standard.document",
"bskyPostRef": {
"cid": "bafyreidvpnd35thtvgjtf22wdrmtxgollmpxrgaqyh3t7zj7ebq23pobeu",
"uri": "at://did:plc:lk3jfj3zq4k4wxnk474axylu/app.bsky.feed.post/3mf2r6sdng5g2"
},
"path": "/t/mcp-apps-open-standard-migration-still-needing-openai-extensions-for-csp-and-widget-state-expected/1374446#post_1",
"publishedAt": "2026-02-17T13:04:08.000Z",
"site": "https://community.openai.com",
"textContent": "Hello everyone,\n\nI recently migrated from an Apps SDK implementation to the MCP Apps open standard (Docs > MCP Apps compatibility in ChatGPT).\n\nMy goal is to avoid any extra OpenAI extensions and stick purely to the MCP Apps spec, but I ran into two cases where that wasn’t possible:\n\n* * *\n\n**Issue 1 – Resources not shown after publishing**\n\nI had to add the OpenAI-specific `openai/widgetCSP` declaration on top of the standard `ui.csp` block:\n\n\n \"openai/widgetCSP\": {\n // For ChatGPT's built-in widget hosting\n resource_domains: [\"https://*.domain.com\"]\n }\n\n\n…in addition to:\n\n\n ui: {\n csp: {\n resourceDomains: [\"https://*.domain.com\"]\n }\n }\n\n\nWithout the `openai/widgetCSP` declaration, my resources were not displayed after publishing.\n\n* * *\n\n**Issue 2 – Widget loses state on page reload**\n\nMy widget did not render previously fetched results after a page reload. To fix this, I had to use the OpenAI `setState` extension:\n\n\n if (hasOpenAIExtensions()) {\n getOpenAIExtensions()?.setWidgetState({ toolOutput: data });\n }\n\n\n* * *\n\n**Questions:**\n\n(A) Is there a better way to solve these two issues without relying on OpenAI-specific extensions?\n\n(B) Has anyone else noticed misalignments between the Apps SDK and the MCP Apps open standard?",
"title": "MCP Apps open standard migration: still needing OpenAI extensions for CSP and widget state — expected?"
}