All pages
On this page

ask_user

When an agent needs a decision from you, it asks with a question card: the question, a button per choice, and room for a free-text answer. You answer with one tap, from any device, and the agent continues with your answer.

Behind the card is a tool the agent calls. Which tool depends on the provider: some bring their own question tool, which OAR turns into a card; for the others OAR supplies one called ask_user. This is the one agent tool where the providers differ in more than the name.

What you see #

  • A card in the conversation with the question and its choices. A choice answers with one click.
  • A question that allows several answers shows checkmarks and one Reply with selection button. The reply lists every ticked choice, plus anything you typed.
  • A request for several values at once shows as a form with one field each.
  • A push notification, if you have switched them on for questions.
  • The turn waits while the card is open. A turn that waits on a card is never treated as stuck.

By provider #

Provider The tool behind the card Several answers Several questions in one call
Claude, Claude Cloud Claude's own AskUserQuestion yes yes, one card after another
DeepSeek Added in 0.9.17 Claude Code's AskUserQuestion, as on Claude yes yes, one card after another
GitHub Copilot and OpenAI, SDK engine OAR's ask_user, in place of the built-in one yes, with multi_select Added in 0.9.3, or when the question says "select all that apply" no
GitHub Copilot and OpenAI, extension engine Copilot's own ask_user no; only a form field that takes a list forms with several fields
Cursor OAR's ask_user yes, with multiSelect yes, 1 to 4, one card after another
Grok none

Grok has no question cards. Its agent protocol has no way to ask the user, so a Grok agent can only ask in its reply text and wait for your next message.

On Copilot's SDK engine, every card with two or more choices also has a Select several switch, so you can give more than one answer even when the agent did not ask for that.

How long a card waits #

A card waits 8 hours for an answer; on Copilot's extension engine, 2 hours. After that the agent is told that nobody answered and continues according to the conversation's relay mode.

What agents are told #

  • To ask through the question tool, never as plain text in a reply. A question in plain text shows no buttons and ends the turn.
  • To give a short list of choices, and to leave them out only when the answer has to be free text.
  • To ask even in autopilot (relay mode) when your input is truly needed.

Parameters #

OAR's ask_user on Copilot's SDK engine #

Parameter Type
question text, required the question
choices list of texts a button per choice; the relay keeps the first 8 and drops the rest
multi_select true | false you may pick several; the answer lists every pick, separated by ,
{
  "question": "Which database should the new service use?",
  "choices": ["PostgreSQL", "SQLite", "Keep the current one"]
}

The agent gets back User selected: PostgreSQL, or User responded: … for a free-text answer.

OAR's ask_user on Cursor #

Parameter Type
questions list of 1 to 4 questions, required
questions[].question text, required the question
questions[].header text a short label above the question
questions[].options list of 2 to 6, required each with a label (required) and a description
questions[].multiSelect true | false, default false you may pick several
{
  "questions": [
    {
      "header": "Database",
      "question": "Which database should the new service use?",
      "options": [
        { "label": "PostgreSQL", "description": "What the other services use" },
        { "label": "SQLite", "description": "No server to run" }
      ]
    }
  ]
}

You can always answer in free text instead of picking an option. The agent gets each question back with its answer.

The providers' own tools #

Claude's AskUserQuestion (also used by DeepSeek chats, which run Claude Code) and Copilot's built-in ask_user belong to those providers; their parameters are theirs to define and can change with a provider update. OAR takes the question as the provider hands it over, shows the card, and returns your answer in the form the provider expects.

Questions from other sessions #

A question card can also be answered by another agent, when you let agents work with other sessions: relay_tool's answer_question. Agents are told to ask you first unless you told them to decide. A relay's own approval cards (for starting sessions, for watching them, and the ask and plan approvals) can only be answered by you.