Skip to content

Mobile omits Codex request_user_input_async decision cards #20073

Closed

Description

@jakeparkcolde

When Codex asks a question with request_user_input_async, Orca mobile does not show its choice card. This concerns the decision UI, not an entirely blank transcript.

Both Orca desktop 1.4.188 and main at fab78c766952404a1296d519a1dd76df6ed8d12e (also reproduced on the original b6e44575 base) decode the question's assistant prose, but the mobile prompt projection does not recognize this async question as a decision card.

Codex CLI 0.153.4 uses this shape (synthetic example):

{"questions":[{"title":"Which color?","options":["Red (Recommended)","Blue"]},{"title":"Any constraints?"}]}

Its rollout records a function_call with serialized arguments, an event_msg/item_completed containing an AgentMessage with delivery: "async" and the call id, then a function_call_output of {"accepted":true}. That result acknowledges display; it is not a user's answer. Codex continues working and receives an answer as a later user message. See the versioned Codex handler.

Reproduction with synthetic fixtures:

  1. Feed these call/completion/result records through the Codex transcript decoder and mobile RPC sanitizer.
  2. Resolve mobile prompts with a settled transcript and no blocking status.
  3. The existing mobile prompt projection returns no card, including for title-only questions.

Expected: show titles, suggested choices and free-text input, with a reply path appropriate for an async question. Do not assign a fake blocking state or send the digit/Escape sequences used by blocking request_user_input.

Proposed bounded improvement: show a card for confirmed async questions in the loaded transcript; Add to message appends the selected answers and their questions to the existing draft for review and ordinary composer submission. Dismiss is local. This is not an async provider-response RPC.

Known boundary: mobile initially loads 40 messages. A question outside the loaded window cannot become a card until earlier history is loaded. A subsequent user message ends the local outstanding-question projection.

Evidence: synthetic unit/component regressions and headless React Native Web before/after screenshots are prepared. Actual iOS/Android, paired-host/SSH and Codex TUI reply delivery have not been exercised for this change. No private conversation content is included.

Before After
Before After

Selected answers appended to the existing draft

Activity

  1. added theissue type on Sep 19, 2026
  2. miguel93041 commented on Oct 17, 2026

    @miguel93041

    I've opened #30062 to address this issue on mobile and desktop, for both structured chat and chat backed by a terminal. It adds suggested answers and an Other field using the existing question controls.

    The host reconstructs pending questions from history, so they remain available after reopening a chat even when the original question is outside the loaded page. A delivered reply updates the pending set for the other clients too. Async acknowledgements and turn completion do not count as answers.

    The PR has 384 passing focused tests and a passing build. Fork CI still needs maintainer approval; physical-phone and live SSH validation remain pending. Mobile screenshots and the validation details are in the PR.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions