---
title: "Steer Run"
method: POST
path: "/api/v1/runs/{id}/steer"
tags: ["Human-in-the-Loop"]
---

# Steer Run

`POST /api/v1/runs/{id}/steer`

Send a mid-run steering message to the live agent session(s) of a
running run. Set `interrupt=true` to atomically interrupt the active
steerable agent round first, then deliver this message as the next
user turn. Without `interrupt=true`, the message is appended to the
steering queue and may buffer until the next steerable agent session.

## Path parameters

- `id` string, required

## Request body

- SteerRunRequest — Request body for steering a running run mid-execution.
  - `text` string, required — The steering message text to deliver as a user turn.
  - `interrupt` boolean — When true, apply a worker-control interrupt first, then deliver this text as steering in the same control operation. When false (default), append to the steering queue and let the agent pick it up at the next turn boundary.

## Response `202`

Steer accepted and forwarded to the worker

## Other responses

- `400` — Invalid request body
- `404` — Run not found
- `409` — Run is not currently steerable. Returned when the run is in a terminal state, blocked (use the answer endpoint instead), or active agent sessions have no live control channel.
- `503` — Worker control channel unavailable

---

[API](https://skmtc.net/fabro-sh/apis/fabro-run-api.md) · [All operations](https://skmtc.net/fabro-sh/apis/fabro-run-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/fabro-sh/fabro-run-api/versions/bee030053823/schema)
