Repository navigation
request_user_input_async question card is auto-dismissed when the turn's final message renders, leaving the question unanswerable #43803
Description
Version / environment
- ChatGPT desktop app 26.901.51231 (Codex bundled runtime; model GPT-6-Astra), macOS
- Subscription: ChatGPT Pro
- Platform:
Darwin 25.5.0 arm64 arm(macOS, Apple Silicon)
What issue are you seeing?
When Codex (GPT-6-Astra) asks a clarification question via the request_user_input_async tool in Default mode, the question card renders correctly while the turn is running. But the moment the assistant's final answer message begins rendering, the card is automatically dismissed — it is not pinned to the thread and is not rendered as a persistent message bubble.
The final message then references the now-invisible question (e.g. "Please answer the platform-scope questions above and I'll continue"), leaving the user with no way to review the question content or answer it.
Reproduced 3/3 times on 2026-09-08. The card is only visible for ~7 seconds before the turn completes (turns end in 16–18s because no work can proceed without the answer).
The rollout JSONL shows the async AgentMessage is delivered with full fallback text (content[]) and questions[] metadata (delivery: "async"), but the desktop client does not persist that message after task_complete.
Steps to reproduce
- In the Codex desktop app (Default mode, not Plan mode), start a task with an up-front clarification need, e.g. send: "Before you start, ask me which platforms this feature should support."
- Codex calls
request_user_input_async; the question card appears in the conversation. - The tool immediately returns
{"accepted":true}(async, non-blocking). With no answer-independent work to do, the model emits its final message ~7 seconds later. - When the final message starts rendering, the question card is dismissed and removed from view. The turn completes (
task_complete, ~18s total). - The final message references "the questions above", but no question remains visible — the user cannot review or answer.
Rollout JSONL evidence (session 2026-09-08, UTC):
11:29:58.7function_callrequest_user_input_async(2 questions)11:29:59.2function_call_output{"accepted":true}- item_completed
AgentMessage:delivery="async", full fallback text incontent[],questions[]metadata present 11:30:06final message +task_complete(duration 18.4s)- No user reply exists after any of the 3 async questions in the session — the cards vanished before they could be answered.
thread_id: 01a080c7-e967-7921-8dcb-9054b86880ac
Expected behavior
An unanswered async question should remain available after the turn ends: either as a persistent, answerable card pinned to the thread, or at minimum rendered as a normal message bubble using the fallback text that is already present in the AgentMessage (content[] / questions[] exist in the rollout data).
The card's lifecycle should be tied to "question is unanswered" rather than "turn is still running". Final messages must not reference question content that is no longer visible.
Additional information
request_user_input_asyncwas introduced in Codex 0.153.0 (PR Add structured asynchronous user input requests #42178); hotfixes [0.153 hotfix] Update Astra async-question guidance #42809 and [0.153 hotfix] Qualify Astra async-question guidance by tool availability #42878 adjusted Astra's guidance around async questions. This report is specifically about the desktop client's rendering lifecycle of the asyncAgentMessage— the question data reaches the client correctly, but the UI unloads the card when the final message renders.- Workaround: forcing the synchronous
request_user_inputtool (via config flagdefault_mode_request_user_input=trueplus AGENTS.md instructions) blocks the turn until answered, which avoids the card being unloaded. - In-app feedback was also submitted from the app (no feedback ID was shown after submission).
Activity
github-actions commentedon Sep 8, 2026
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
ZhangWen-Leo commentedon Sep 8, 2026
Reviewed #43057 — related but not a duplicate, and this report may help isolate the open question in that thread.
#43057 explicitly notes that "whether assistant completion affects this behavior have not yet been isolated" — the reproduction here isolates exactly that: assistant turn completion alone unloads the card, even without tab switching. The shared root cause appears to be that the async question card is scoped to the active turn/view rather than to the unanswered question state (related: #32458, timed auto-dismissal in the VS Code extension).
Happy to consolidate if maintainers prefer tracking these together; otherwise keeping this open as it provides a distinct, no-interaction reproduction path plus rollout evidence.
wadejbeckett commentedon Sep 10, 2026
I'm having the same issue. I have to ask Codex to keep the turn open so that the question picker stays active.
gitFactoryAI commentedon Sep 14, 2026
Additional user report on ChatGPT desktop 26.908.40834, macOS 26.3.1 (Apple Silicon Mac Studio), September 14, 2026.
An unanswered
request_user_input_asyncquestion contained a Terminal command to run on a second computer (a MacBook Pro). The user copied the command, ran it there, and returned to find the question gone, with no apparent way to reopen or answer it. The user frequently steps away while the assistant works, so a transient question card makes this workflow unreliable.This is a user-observed occurrence, not an independently reproduced test. We have not isolated whether turn completion, switching context, or another event caused the disappearance, so it may also relate to #43057.
Requested behavior:
Submitted on the affected user's behalf with their authorization. The report was also provided through the official Help Center chat, which could not supply a case number or email follow-up and pointed to GitHub for a tracked report.
zhang19980518 commentedon Sep 16, 2026
Additional reproduction data point (Codex desktop app, macOS, Default mode, 2026-09-15/16):
request_user_input_asyncwith a single question and 2-3 suggested options. The card renders while the turn is running, then becomes unanswerable once the turn's final message renders - same behavior as described above (the ~7s visibility window matches our experience).<send_user_message_question_reply>user message.request_user_inputin Default mode returnsrequest_user_input is unavailable in Default mode, so there is no blocking/wait-for-reply variant to switch to.Workaround in use: treat the async card as best-effort - if it disappears, repeat the question in the final message and collect the answer as ordinary chat text.
Suggestion (same as OP): persist the async question as a durable, answerable message after
task_complete, or document its lifetime/hide conditions and offer a wait-for-reply mode outside Plan mode.sociaphobia commentedon Sep 23, 2026
补充 Windows 桌面端复现(2026-09-23,桌面应用自报版本
26.917.51856):request_user_input_async后返回{"accepted":true},选项正常出现。此评论不含账号信息、令牌、私有项目内容或原始日志。与本问题原报告的区别是:本机用户能够重新找到选项,主要障碍是入口不常驻、不醒目。
NikTarasov commentedon Sep 23, 2026
Another macOS Codex app user is hitting this repeatedly during a long-running task.
request_user_input_asyncpresents a question or approval-looking choice for a moment, then the card disappears. There is no persistent pending-question indicator or obvious way to find and answer it afterward. The agent can appear to be sitting idle, waiting for input the user cannot see. In this case, the user had to ask repeatedly whether they were blocking the task and where the requested action was.This is a workflow failure, not just a cosmetic one: the question may concern deployment approval or a decision, so losing it leaves the user unable to tell what has been authorized or what is holding up progress. The agent has worked around it by putting required decisions in ordinary chat messages and ending the turn clearly, but the app should preserve unanswered questions and show a durable, actionable "needs your input" state in the task/sidebar until they are answered or dismissed. The UI should also distinguish a question posed from an approval actually granted.
No private task content or logs are included here. This is reported at the affected user's explicit request.
rexsacrorum commentedon Sep 23, 2026
Additional affected-user report from a long-running Codex desktop task (2026-09-23). The user explicitly asked that this be reported.
functions.request_user_input_asyncsometimes disappear from the user's view. The user described the failure as “you asked something and it’s gone.” The trigger was not isolated; I cannot say whether turn completion, navigation, or another event caused it in this occurrence.<send_user_message_question_reply>messages. When no answer appeared, the agent sometimes treated the question as unanswered and asked again.Expected: unanswered question cards remain accessible until resolved; after submission, the UI clearly shows whether the answer is pending or delivered; a submitted answer reaches the active task reliably. If delivery fails, the user and agent should see a recoverable error rather than silently disagreeing about the question state.
Read-only environment check on the reporting Mac: installed
/Applications/ChatGPT.appversion26.917.51856(build10492); macOS26.5.1(Darwin 25.5.0 arm64). The exact app build at the earlier affected moments was not independently recorded. Frequency and exact reproduction steps are unknown. The disappearance and apparent missed-answer symptoms may or may not share a cause. No private task content, logs, or screenshots are included.rafaself commentedon Sep 24, 2026
Same behavior here: the question stays available while the assistant continues working, but when the assistant's turn ends with a question, the card closes. Mid-turn questions don't close this way.
ehcsual commentedon Sep 27, 2026
Additional user-reported occurrence on ChatGPT desktop 26.915.31945 (Codex task), macOS 26.4, Darwin 25.4.0 arm64 arm, September 27, 2026 (America/Denver).
Sequence observed in the task:
request_user_input_asyncwith a free-text request for the user to complete an external sign-in.{"accepted":true}.This is consistent with the lifecycle issue described here, but the disappearance itself was not independently captured on the laptop. The request was a sign-in handoff, not a tool-permission approval, which also caused confusion. The assistant referred to a browser window being open; its availability on the user's laptop was not established.
Please investigate whether unanswered free-text async requests in this app version remain reachable after the final response, and clearly distinguish them from permission approvals. No account details, credentials, project contents, or private logs are included.
hippoley commentedon Sep 28, 2026
I think the lifecycle boundary here is slightly different from a rendering bug:
accepted: trueis admission of the async question, not resolution of the human obligation.That suggests the card should be owned by the unresolved question, not by the assistant turn that happened to create it.
A minimal state machine would be:
and importantly:
So if the turn finishes while the question is still pending, the client should still have an authoritative pending object to render/reopen.
This also helps with the reports above where a user clicks Answer but the agent later behaves as if nothing arrived: the UI can distinguish at least three states instead of one transient card:
If submission fails, the boundary stays recoverable rather than silently disappearing.
This seems closely related to #39426's proposed output-only human-input lifecycle. A core-owned opaque request ID plus a paired clear/resolution event would let the desktop UI, sidebar, and passive observers all converge on the same source of truth without inferring state from whether the turn is still rendering.
I would also keep machine cleanup semantically distinct from a human answer: timeout/cancellation/turn teardown should clear with explicit non-human provenance, not look like the question was answered.
I implemented that last invariant in a small control-plane prototype after seeing the same class of ambiguity in approval flows:
hippoley/HumanQueue#17
The project itself is not the proposed fix here; the useful part is the state-machine constraint: an unanswered human boundary must outlive the turn that created it.
felixlark commentedon Oct 1, 2026
Additional affected-user report, 2026-10-01, macOS. Submitted at the user's explicit request.
Current installed desktop bundle: com.openai.codex, version 26.928.31416, build 12553; macOS 27.0. This is the version checked during this investigation, not proof of the build used for every earlier occurrence.
The user reports that outside Plan mode, an Ask question card disappears shortly after it appears; if they do not click promptly, they cannot find an obvious button to reopen and answer it.
Evidence from two existing tasks:
Please distinguish question persistence from overlay expansion/discoverability. We are not claiming all collapsed questions are deleted, or that a specific timer caused today's occurrence.
Requested behavior:
Evidence limit: the official computer-use tool disallows inspection of the Codex app itself in this session, so the current button location and visual disappearance could not be independently verified. No private task IDs, project contents, transcripts, screenshots, or raw logs are attached. Related: #43057 and #48563.
jasonblack1027 commentedon Oct 1, 2026
I can reproduce what appears to be the same issue on a newer version of Codex Desktop for macOS.
Environment
Reproduction
Observed behavior
The pending user-input card is removed when the assistant finishes the turn, even though the user has not completed the selection.
Expected behavior
The user-input card should remain visible and interactive until one of the following happens:
Finishing the assistant turn should not automatically remove an unanswered input card.
Additional observation
There is a notification sound at almost exactly the same moment the card disappears.
I have not confirmed whether the sound itself is related to the bug. It may simply be the normal macOS/Codex turn-completed notification occurring at the same time.
The behavior strongly suggests that the pending input UI may be tied to the assistant turn lifecycle (
task_complete/ turn completion), rather than to whether the input request has actually been answered.Useful reproduction case
This is still reproducible on Codex Desktop 26.928.31416.
duesentriebsrakete commentedon Oct 1, 2026
Additional user-confirmed occurrence on 2026-10-01 in the Codex desktop app on macOS (Default mode). The user explicitly requested that this UI bug be reported.
Observed sequence:
request_user_input_asyncwith four questions. The tool returned{"accepted":true}.This corroborates the disappearing/unanswerable question-card symptom. The exact client event causing dismissal was not independently instrumented, so this report does not assert that final-message rendering is the sole trigger. Exact app/runtime versions and a clean-session reproduction have not been collected.
Expected: an unanswered question remains visible and answerable after the assistant turn ends, or the question is retained as normal transcript text with a usable fallback.
acceptedmust not be confused with a submitted answer.No private project contents, session transcript, credentials, screenshots, or logs are included.
edercnj-llm commentedon Oct 2, 2026
Additional occurrence reported on 2026-10-02 in the desktop app.
Environment read from the installed application metadata:
Observed conversation sequence:
The user-visible disappearance is reported by the user; its exact timing was not independently observed through UI automation. The tool call, accepted response, final message, and subsequent user report are present in the conversation. No answer to this batch was received.
Expected: unanswered question cards remain readable and answerable after turn completion, or can be reopened from the conversation. Missing input must not be treated as acceptance of the recommended/preselected option.
This appears consistent with this issue and #45646, and occurs on a newer desktop version. No private project content, session transcript, screenshots, or logs are attached.
Cemilcanoz commentedon Oct 7, 2026
Additional Windows reproduction on 2026-10-07, submitted at the affected user's explicit request.
Environment:
Observed comparison in the same troubleshooting conversation:
A preceding conversation also recorded two accepted async question calls followed by final messages, after which the user reported that the options were not available.
This comparison supports an association with turn completion, but we have not instrumented the frontend dismissal event or established its implementation-level cause. We also have not established whether the first question was deleted or merely collapsed into an undiscoverable state. Keeping the turn open worked for the short second test; it does not establish persistence over longer waits.
Expected: an unanswered question should remain visibly answerable after the assistant completes its turn, or have a clearly discoverable persistent reopen/answer control. Preserve the question text/options in the transcript. accepted:true must not be treated as a human answer.
This adds Windows/GPT-6.1 Sol evidence to this existing issue. Screenshots were inspected locally; raw logs, screenshots, private project content, local paths, account information, and conversation identifiers are not attached.