Skip to content

Support choice-based questions from the model (single and multi-select) #42

Description

@dnviti

Problem / Motivation

When working with a coding agent, the model sometimes needs to ask the user a question that has a fixed set of possible answers — for example, choosing between several implementation approaches, picking one file out of several candidates, or selecting which of multiple detected issues to fix. Today the chat only knows how to handle one specific kind of yes/no-style decision (approving or rejecting a tool action). Any other kind of question the model wants to ask with predefined answer choices has no proper way to be displayed — the user either has to answer in free text, guessing at the exact wording the model expects, or the model's question doesn't render as an interactive choice at all.

Goal

Let the model ask the user a question with a set of selectable answer options, and have the chat interface render that question as clickable choices instead of requiring free-text guesswork. This should support both "pick exactly one" and "pick one or more" style questions.

Scope

  • Recognize when the model is asking a choice-based question (as opposed to a normal chat message or a tool-approval request).
  • Render the question and its options inline in the conversation, in a way that's clearly distinct from a regular message.
  • Support single-choice questions (the user picks exactly one option).
  • Support multiple-choice questions (the user can pick more than one option before confirming).
  • Once the user answers, show their selection as part of the conversation history so the exchange reads naturally when scrolling back.
  • Send the user's answer back to the model in a form it can act on immediately, similar to how tool-approval responses work today.

Non-goals

  • Free-text follow-up questions (open-ended questions with no predefined options) are out of scope — this is specifically about choice-based questions.
  • Changing how tool-approval (allow/deny) prompts work today; this is a separate, additional capability alongside that existing flow.
  • Support for questions with dynamically loaded or paginated option lists (e.g., searchable dropdowns) — initial scope is a reasonably small, fixed list of options presented up front.

Acceptance Criteria

  • When the model poses a single-choice question, the user sees the question and a set of options, and can pick exactly one.
  • When the model poses a multiple-choice question, the user can select more than one option and confirm their selection.
  • The conversation view clearly shows the question was asked and what the user answered, even after scrolling away and back.
  • The model receives the user's answer and can continue the conversation based on it, without the user needing to retype their choice as text.
  • If the user closes or navigates away before answering, the pending question is still there (and answerable) when they return, consistent with how other in-progress prompts behave today.

Open Questions

  • Should there be a way for the user to dismiss/skip a choice question without answering, or should every choice question require a response before the conversation can continue?
  • Do we want a per-option "custom/other" free-text fallback for cases where none of the offered choices fit, or is that explicitly out of scope for now?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions