Steering
Mid-run steering with the steer_run request and steer_queued event.
These messages let the client influence a run that is already underway. Steering nudges a live run without interrupting the current agent turn.
Request: steer_run
Sent by the client to queue a steering message for a run that is currently running or pending. The daemon does not interrupt the in-flight agent turn — the text is merged into the message delivered to the next agent call, so the current turn finishes uninterrupted.
{
"type": "steer_run",
"runId": "run_abc123",
"text": "Focus on the login bug, ignore the styling for now",
"requestId": "steer-1"
}| Field | Type | Required | Description |
|---|---|---|---|
type | "steer_run" | yes | Message type discriminator |
runId | string | yes | The run to steer |
text | string | yes | The steering text to inject before the next agent turn |
requestId | string | no | Echoed on any error response |
On success the daemon broadcasts a steer_queued event to all subscribers. If the run is not found or has already finished, the daemon replies with an error:
{
"type": "error",
"code": "RUN_NOT_STEERABLE",
"message": "Cannot steer run run_abc123: not running",
"ts": "2025-01-15T10:30:02.000Z"
}The queued text is persisted to the run timeline as a user_input event (with source: "human").
Event: steer_queued
Sent by the daemon to all subscribers when a steering message has been accepted. Clients render this as a pending user message in the transcript.
{
"type": "steer_queued",
"runId": "run_abc123",
"text": "Focus on the login bug, ignore the styling for now",
"ts": "2025-01-15T10:30:01.500Z"
}| Field | Type | Description |
|---|---|---|
type | "steer_queued" | Message type discriminator |
runId | string | The run the steering message was queued for |
text | string | The steering text that was queued |
requestId | string? | Echoed from the request |
ts | string | ISO-8601 timestamp |
Sequence Diagram
Client Daemon
| |
| steer_run |
| (text: "focus on the bug") |
|------------------------------>|
| |
| steer_queued |
|<------------------------------|
| |
| (current turn finishes, |
| steering merged into the |
| next agent call) |
| |
| strategy_completed |
|<------------------------------|