Skip to main content

Agent questions

GET /v1/agent/sessions/{sessionId} now lists pending questions beside permission requests in pendingInteractions. A question has type: "question" and a form response contract: ordered steps, each with a prompt, a header (null when the agent gave none), multiple, allowCustom, and options whose value is what you send back. Answer with POST /v1/agent/sessions/{sessionId}/interactions/{interactionId}/resolve and a body of { "type": "question", "answers": [...] }: one array per step, in order, holding the chosen option values, or the user’s own text where that step has allowCustom: true. An empty array skips a step. Each value is at most 16,000 characters, and a step takes at most 100 values. The response is the refreshed session status. Answers that do not fit the form return 400. A question the agent is no longer waiting on returns 409. POST /v1/agent/sessions/{sessionId}/messages returns 409 while a question is pending, as it already did for permission requests, and the error message says how to answer it. The public MCP exposes the same flow: get_agent_session lists the question, and resolve_agent_interaction now takes type: "question" with answers as well as permission decisions.

Migration

Requests pinned to 2026-09-08 or earlier keep receiving permission-only pendingInteractions, and latestTool behaves as before. They never list a question, but the resolve endpoint accepts a question answer on every version, so a client can answer a question id it got elsewhere (for example from the dashboard) without upgrading. Two behaviors change on every version:
  • POST /v1/agent/sessions/{sessionId}/messages returns 409 while the agent waits on a question. Before, the message was accepted but never ran; it waited behind the question until the turn was stopped. To continue, move to 2026-10-05 and answer the question, answer it at the session’s dashboardUrl, or abort the session.
  • POST /v1/agent/sessions/{sessionId}/interactions/{interactionId}/resolve with type: "permission" returns 409 when that permission is no longer pending, for example because someone already decided it in the dashboard. Before, it returned 200 with the refreshed status, so a client could report a decision that never reached the agent. Fetch the session again to see what is pending.