External Publication
Visit Post

ChatGPT Android skips resources/read for MCP widgets — text renders, widget stays blank

OpenAI Developer Community April 24, 2026
Source

Hi everyone,

We maintain a published ChatGPT App (approved, live on the store, Apps SDK /MCP protocol). After the recent GPT-5.5 / Android app rollout we’re observing a very specific regression scoped to the native ChatGPT Android app. Sharing server-side evidence in case other developers can confirm.

ENVIRONMENTS

  • Desktop ChatGPT (macOS/Windows app + web) Full flow works, widget renders correctly.

  • Mobile browser (Android Chrome → chatgpt.com) Full flow works, widget renders correctly.

  • Native ChatGPT app on Android Build: ChatGPT/1.2026.104 Widget area stays blank / black. Text content (structuredContent) of the tool response is displayed correctly, so the user gets a reply — but no UI card.

WHAT THE SERVER SEES

Our backend is a standard MCP server (JSON-RPC 2.0 over HTTP) with full request logging.

When a user prompts from the Android app:

  1. POST /mcp → tools/call arrives correctly, with: _meta.openai/userAgent = “ChatGPT/1.2026.104 (Android 16; …)” Tool handler runs. 200 OK returned. Response body contains the full payload, including:

    • content (text block, rendered in the chat)
    • structuredContent
    • _meta.openai/outputTemplate = ui://widget/.html
  2. No follow-up resources/read request arrives for the ui://widget/… URI referenced in outputTemplate.

Compared to the same user flow from desktop or mobile browser, which do hit resources/read immediately after tools/call, the Android app silently skips this step.

The pattern

tools/call  -> text ok
resources/read -> never sent

is consistent across every invocation we’ve observed from Android over the last hour.

Same user, same OAuth session, same MCP server, same tool descriptors, same outputTemplate URI as what works on desktop — only the Android client refuses to fetch the widget resource.

WHAT RULES OUT SERVER-SIDE CAUSE

  • Desktop client and mobile browser successfully resources/read the same ui://widget/… URI in the same time window. Widget resource is served fine, MIME text/html;profile=“mcp-app”, CSP/CORS headers consistent with what has been approved and in production for weeks.

  • The Android request for tools/call lands on the exact same backend and returns a valid response. Nothing in CORS, sandbox, or auth would selectively block only a follow-up resources/read (it would use the same session/origin).

  • Behavior is present on both our approved production app and our dev build, on two completely separate backends with different hostnames. The only common factor is the Android client build.

QUESTIONS

  1. Is anyone else with a published MCP app observing this on Android 1.2026.104? Specifically: does your chat text render from tools/call but the widget stay blank?

  2. Is there a known feature flag on the Android client that gates the resources/read / widget renderer path? Any early reports of a change in how outputTemplate is consumed on mobile after GPT-5.5?

  3. Any server-side signal the Android client passes that we could correlate with the missing fetch (e.g. a header indicating Apps SDK renderer version)?

  4. A workaround beyond “use chatgpt.com in Chrome” would be very appreciated if any dev has found one.

Happy to share anonymized request traces or manifest details privately with an OpenAI Apps SDK engineer for triage.

Thanks.

Discussion in the ATmosphere

Loading comments...