How steering works
A steering message is injected into the agent’s conversation as a user-role message. The agent sees it on its next LLM turn — after the current tool call finishes — and can adjust its approach immediately. The delivery flow:- You send a
POST /runs/{id}/steerrequest with your guidance text - The message is queued on the agent session’s steering queue
- Before the next LLM call, Fabro drains the queue and injects each message as a
Steeringturn in the conversation history - The LLM sees the guidance alongside its existing context and adjusts accordingly
202 Accepted immediately. The agent picks up the message at its next natural pause point (between tool calls), not mid-execution.
See the Steer Run API reference for the full request and response schema.
When steering is delivered
Steering messages are drained from the queue at two points during the agent loop:- Before the first LLM call — any messages queued before the agent starts its first turn
- After each tool execution round — between tool results being collected and the next LLM call
Steering vs. human gates
Steering and human gates serve different purposes:| Steering | Human gates | |
|---|---|---|
| When | Any time during an agent stage | At a defined point in the workflow graph |
| Blocks execution | No — agent continues working | Yes — workflow pauses until a choice is made |
| Defined in the graph | No — sent ad hoc via the API | Yes — hexagon nodes with edge options |
| Use case | Course corrections, hints, focus changes | Approval decisions, strategy selection, go/no-go |
