{
  "$type": "site.standard.document",
  "bskyPostRef": {
    "cid": "bafyreibet5ifqh4a5mpojilb3tzh22hlm5f5bj2xw5hfwytx53aq2ghhlq",
    "uri": "at://did:plc:lk3jfj3zq4k4wxnk474axylu/app.bsky.feed.post/3mo4azqvju552"
  },
  "path": "/t/widget-originated-ui-message-now-renders-full-message-text-in-transcript-previously-hidden/1383520#post_1",
  "publishedAt": "2026-06-12T16:45:38.000Z",
  "site": "https://community.openai.com",
  "tags": [
    "silently dropped for live-rendered iframes",
    "ACKs but follow-up turns use stale/missing context",
    "Displaying a message on user’s behalf",
    "@modelcontextprotocol"
  ],
  "textContent": "I have an MCP App (interactive carousel) in ChatGPT, built with `@modelcontextprotocol/ext-apps`. On card click, the widget needs to give the model the selected resource’s full context so it can respond to a follow-up.\n\n**The recommended approach doesn’t work for us.** The documented pattern is `updateModelContext` (offload bulk context) + a short `sendMessage` trigger. But on ChatGPT, `ui/update-model-context` ACKs with `{}` and then silently drops the context on live-rendered iframes — see silently dropped for live-rendered iframes and ACKs but follow-up turns use stale/missing context. The model never sees the context.\n\n**So we worked around it** by packing the full context directly into the `app.sendMessage({ role: \"user\", content: [...] })` (`ui/message`) text, since that path reliably reaches the model.\n\n**Now the workaround broke too.** Widget-originated `ui/message` calls used to be hidden from the transcript (they appeared to carry `is_visually_hidden_from_conversation: true`). A recent ChatGPT frontend change now renders the **full message text** as a visible user bubble, exposing the large context blob to the user. This also seems to contradict prior guidance in Displaying a message on user’s behalf, where staff said you _can’t_ make a widget message appear as user-authored.\n\n**Net effect:** the two paths for getting in-app context to the model are now mutually exclusive on ChatGPT — `updateModelContext` is silently dropped, and the `sendMessage` fallback now leaks its full payload into the visible conversation.\n\n**Questions:**\n\n  1. Is the `ui/message` visibility change documented, and is the new visible rendering intended going forward?\n  2. Given `updateModelContext` is currently unreliable on live iframes, what is the supported way to pass substantial in-app context to the model _without_ it appearing in the transcript?\n  3. Are these two issues related (same iframe context-binding lifecycle), or separate?\n\n\n\n**Environment:** ChatGPT web/desktop, MCP Apps connector, `@modelcontextprotocol/ext-apps`, `ui/message` + `ui/update-model-context`.",
  "title": "Widget-originated ui/message now renders full message text in transcript (previously hidden)"
}