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:
-
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
-
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
-
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? -
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? -
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)? -
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.