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

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.

I got the same issue. It worked yesterday, but today the widget doesn’t show up in my Samsung Android S22 ChatGPT App (Android version 16). It works in desktop and Android Chrome.

I run my App in developer mode. So I changed to a previous working branch to test, got same issue.

Do you think it is an issue related ChatGPT Android App upgrade? When did it upgrade? In my case, it worked one day ago, but fails now.

same here. so I’m exploring but I can’t see issue on my end

Not just Android, iOS doing this also.