Run long-horizon goals
A goal is a standing objective the agent keeps making progress on across idle periods, instead of stopping once the current message is answered.
/goal Migrate the internal API client from v1 to v2 across all call sites/goal edit # adjust the current goal's objective/goal pause # stop idle continuation without losing the goal/goal resume # pick the continuation loop back up/goal clear # drop the current goal/goal replace # force-replace a goal that isn't finished (a finished one: just /goal <new objective>)When a session goes idle with an active goal, octo continues working toward it on its own —
the same machinery behind /loop, applied to a single durable objective
instead of a recurring prompt. The underlying tools (get_goal, create_goal, update_goal) are
also available to the model directly, so a goal can be created or refined mid-conversation, not
just via the slash command.
Each of those self-started turns announces itself in the transcript — Goal starts for a new
objective, Goal continues for each turn after — and so does every status change: Goal complete
with the final usage, Goal blocked, Goal budget reached, Goal usage limited. The prompt that
drives a continuation turn stays hidden, so the line is what tells you the output came from the
goal rather than from something you asked. The TUI prints these to its scrollback and the Web UI
renders them inline in the conversation; the /goal reply itself lands the same way. IM channels
are quieter by design — a chat gets the /goal reply and the notices that end or stall a goal, not
a line per continuation turn.
Turning it off
Section titled “Turning it off”Goals are opt-in per session and can be disabled entirely:
goal: enabled: falseWith goals disabled, /goal reports itself as unavailable rather than silently no-op-ing.
Next: goals compose with channels — start one from your phone, let it run,
and check back later. For a recurring prompt rather than a single durable objective, see
/loop.