Category: ChatGPT Apps SDK
Suggested tags: apps-sdk, mcp, ui-message, widget, bug
Summary
ui/message and window.openai.sendFollowUpMessage are presented as ways for a widget to send a follow-up message into the ChatGPT conversation flow.
However, they behave differently in an important way:
-
window.openai.sendFollowUpMessage— the text sent by the widget is not rendered as a user message in the visible conversation. -
ui/message— the text sent by the widget is rendered verbatim as a user message.
This means that migrating a widget from the ChatGPT compatibility API to the standard ui/message path can unexpectedly expose app-to-model control or procedure text directly in the user’s transcript.
Environment
Observed on:
-
ChatGPT web — free account, late July 2026
-
ChatGPT Android app — paid account, August 13, 2026
The visibility difference was observed on both.
Steps to reproduce
-
Attach an MCP / Apps SDK connector that renders an inline card using an
@mention. -
Add a button to the widget that sends a sentence through
ui/message. -
Press the button.
-
Observe that the sentence appears directly in the conversation as though the user typed it.
-
Send the same sentence using
window.openai.sendFollowUpMessage. -
Observe that the sentence is not rendered as a visible user message.
Expected behavior
Either:
-
ui/messageandwindow.openai.sendFollowUpMessageshould behave consistently with respect to transcript visibility, or -
the documentation should explicitly state that content sent through
ui/messageis rendered as a visible user message.
Actual behavior
The visibility behavior is different:
-
ui/message→ visible in the user transcript -
sendFollowUpMessage→ not visible in the user transcript
Impact
Our widget sends short per-step instructions to continue an app workflow.
When using ui/message, those app-to-model control sentences are rendered directly in the user’s visible conversation transcript.
We migrated to ui/message twice because it appeared to be the preferred standard interface, and reverted both times after observing this behavior.
This makes it difficult to migrate from the compatibility API without changing the visible UX or exposing implementation-oriented procedure text to users.
Relevant documentation
Last reproduced
August 20, 2026
KST / UTC+9
Request
Could OpenAI clarify whether this difference is intentional?
If intentional, please document that ui/message content is rendered visibly in the transcript.
If not intentional, it would be helpful for the two follow-up messaging paths to behave consistently.