# alineo steer
URL: /docs/alineo/commands/steer

Redirect a running session without restarting it — typically a parent redirecting a child it forked.



```bash
bunx alineo-cli steer <sandbox-id> <message> [--spec <path>]
```

## Arguments [#arguments]

| Argument     | Description                                                                    |
| ------------ | ------------------------------------------------------------------------------ |
| `sandbox-id` | The target's sandbox ID, as printed by `alineo spawn`/`alineo fork`. Required. |
| `message`    | The steering instruction. Required.                                            |

## Flags [#flags]

| Flag            | Description                                                                      |
| --------------- | -------------------------------------------------------------------------------- |
| `--spec <path>` | The target's agent spec, if you have it locally. Optional — see [Notes](#notes). |

## What it does [#what-it-does]

Connects to the target with [`Alineo.reattach()`](/docs/agent/api-reference/agent#alineoreattach) and calls
[`agent.steer(message)`](/docs/agent/api-reference/agent#agentsteer).

`reattach()` binds to the bridge already running in the target sandbox **without restarting it** — unlike
[`alineo prompt`](/docs/alineo/commands/prompt), which uses `Alineo.resume()` and would abort a turn in progress.
That's what makes steer safe to use on an agent that's busy.

## When the message lands [#when-the-message-lands]

The message is delivered **after the tool calls in the target's current turn finish, and before its next model
call**. It does not interrupt a tool call that is already running. To stop an agent immediately regardless of what
it's doing, use [`alineo kill`](/docs/alineo/commands/kill).

## Example [#example]

A parent session that forked a child can redirect it from its own bash tool, using the `sandboxId` from
`alineo fork --json`:

```bash
bunx alineo-cli fork my-session ./agents/worker.json \
  --prompt "Audit src/ for security and performance issues" --json
# {"name":"fork-my-session-a1b2c3","sandboxId":"6a69afcb-7a00-437a-9819-e032022cc736","reply":null}

bunx alineo-cli steer 6a69afcb-7a00-437a-9819-e032022cc736 \
  "Security only — drop the performance review."
```

```
[alineo] steered fork-my-session-a1b2c3 (6a69afcb-7a00-437a-9819-e032022cc736)
```

## Steering children well [#steering-children-well]

When a parent is redirected, it's usually better for the parent to decide what each child should now do than to
send every child the same instruction. A child working on one slice of the task needs a message about **its**
slice — and some children may be better stopped with `alineo kill`, or replaced with a fresh `alineo fork`.

The [Pi extension](/docs/alineo/commands#pi-extension) includes this guidance in the system prompt of sessions
running inside a sandbox.

## Notes [#notes]

* No spec is required. The target's name is looked up from the sandbox list for the log line; pass `--spec` only if
  the target's real spec is on hand.
* Sandboxes are addressed by ID, not name, for the same reasons as [alineo prompt](/docs/alineo/commands/prompt#why-sandbox-id-not-name).
* For steering agents managed by the [alineod](/docs/alineod) daemon, use its
  [`POST /agents/:id/steer`](/docs/alineod/api-reference/http-api#post-agentsagentidsteer) route instead.
