Interface: AgentElicitationRequest
Defined in: packages/sdk/src/agents-service.ts:1522
Beta
The agent is blocked on the user: it is asking a structured question and the turn will not proceed until one of respond, decline or cancel is called. Delivered to AgentSessionHandle.onElicitation (RFC 0062).
This is the richer sibling of AgentPermissionRequest — several questions in one ask, multi-select answers, per-question free text — and it is what Claude's AskUserQuestion tool becomes. The surface is the parsed questions, not the raw JSON Schema, so a chat UI never has to reimplement the schema subset; raw is there for one that wants more.
Auto-accept behavior is deliberately not extended to questions (RFC 0047 is permission-only): there is no safe answer to invent, and guessing would put words in the user's mouth and record them as the tool's answer.
If no onElicitation listener is registered, Silo answers cancel on the extension's behalf so the agent is never left hanging.
Properties
id
readonly id: string;Defined in: packages/sdk/src/agents-service.ts:1529
Beta
Identifies this request within its session — the id the matching AgentElicitationRecord is journaled under. A UI that renders both the live card and the transcript row joins them on this, so one question is never drawn twice.
message
readonly message: string;Defined in: packages/sdk/src/agents-service.ts:1532
Beta
The human-readable ask. For a single-question form this is the question, and the question's prompt repeats it.
questions
readonly questions: readonly AgentElicitationQuestion[];Defined in: packages/sdk/src/agents-service.ts:1534
Beta
The questions to put to the user, in the agent's order.
acknowledgeOnly
readonly acknowledgeOnly: boolean;Defined in: packages/sdk/src/agents-service.ts:1540
Beta
True when the agent's schema named no fields: show message with accept / decline / cancel and no input. Not a parse failure — with no field to answer, an empty answer is the complete and correct reply.
toolCallId?
readonly optional toolCallId?: string;Defined in: packages/sdk/src/agents-service.ts:1543
Beta
The tool call this question belongs to, when the agent sent one — the same id as the matching AgentToolCall.toolCallId.
raw
readonly raw: Readonly<Record<string, unknown>>;Defined in: packages/sdk/src/agents-service.ts:1546
Beta
The raw Agent Client Protocol elicitation/create params, including anything the parsed model above does not name.
Methods
respond()
respond(answers): void;Defined in: packages/sdk/src/agents-service.ts:1555
Beta
Accept with the collected answers, keyed by AgentElicitationQuestion.id. Silo coerces each answer to the type the agent declared and routes custom answers to their own field.
Idempotent, and mutually exclusive with decline / cancel — the first call wins and later ones are ignored.
Parameters
answers
Readonly<Record<string, AgentElicitationAnswer>>
Returns
void
decline()
decline(): void;Defined in: packages/sdk/src/agents-service.ts:1561
Beta
The user chose to skip. The agent is told so and the turn continues — claude-agent-acp hands the model empty answers. This is the user's decision, never Silo's.
Returns
void
cancel()
cancel(): void;Defined in: packages/sdk/src/agents-service.ts:1567
Beta
Abort the tool call the question belongs to. Stronger than decline: the agent gives up on the call rather than continuing without an answer.
Returns
void