Goals & autonomy
Normal turns wait for you. Goal mode doesn't: you give a bot an outcome, and it works toward it across consecutive turns — planning, acting, checking its own progress — until it reports done or its turn budget runs out. Autonomy that's bounded, visible, and one click to stop.
Setting a goal
Open a bot conversation and look at the composer. The target icon toggles goal mode: armed, it means the next message starts an autonomous loop instead of a single turn. Type the outcome — "reconcile the invoices against the bank feed and report mismatches" — and send. The send button becomes the target; press it to start the goal loop.
The loop starts immediately: the goal text appears in the transcript as your message, and the bot gets a work order telling it to make real progress every turn and to end its reply with a marker (GOAL COMPLETE when fully achieved, GOAL IN PROGRESS when there's still meaningful work to do).
A few ground rules the server enforces:
- Empty goals are rejected. You have to say what the goal is.
- One active goal per bot. Starting a second while one runs fails — stop the first, or wait.
- Busy bots can't start goals. If the bot is mid-turn, stop it before arming a goal.
What the loop does
Goal mode is a plan → act → verify cycle run by the harness, not the model grading itself:
- Act — the bot works one round on the goal, streaming its reply like any turn.
- Verify — when the turn settles, the harness reads the reply for the outcome marker. Case doesn't matter; if both markers appear,
GOAL COMPLETEwins. A reply with no marker counts as still-in-progress, never as done. - Continue — still in progress? The harness dispatches the next round itself: a continuation prompt restates the goal, names the round ("this is round 2 of 5"), and tells the bot to pick up where it left off, not restart. Continuations are control-plane text only the model sees — the transcript stays the human's record of what happened, not a pile of internal nudges.
# the loop, from your point of view:
you: reconcile the invoices against the bank feed
bot: round 1 — pulls the two lists, finds 3 mismatches… GOAL IN PROGRESS
bot: round 2 — checks each mismatch against receipts… GOAL IN PROGRESS
bot: round 3 — writes up the report with evidence… GOAL COMPLETE
# goal ends as "done" — the bot reported the goal complete
Your own messages still work mid-loop. A plain message sent between rounds queues and runs like a normal turn — it doesn't consume the goal's budget or confuse the loop, which only counts rounds it dispatched itself. If the bot is busy when a continuation is due, the continuation waits (the harness retries every few seconds) and fires when the bot is idle.
The budget is the safety property
Autonomy is bounded. Each goal carries a round budget — 5 by default, 20 at the cap — and the loop stops itself the moment it's exhausted, reporting round limit reached (N). A goal cannot spin unattended past its cap, and any turn failure or server restart ends the loop visibly rather than leaving a zombie behind. If the bot disappears mid-goal, the goal fails with an outcome saying so.
Stopping a run
While a goal runs on the conversation, the goal banner sits above the composer: Goal · round N/M, the goal text, and a Stop button. Stop ends the loop immediately, no further rounds dispatch, and the run records that it was stopped by the user — you get the honest status, not a pretend completion. The banner plus the usage chip beside it always show what the goal is and what it's spending.
Goal outcomes
| Status | What it means |
|---|---|
active | Looping. The banner shows the round and the Stop button. |
done | The bot reported GOAL COMPLETE. |
stopped | You pressed Stop, the round budget ran out, the turn failed, or a restart interrupted it — the recorded outcome tells you which. |
failed | The turn never started (bot gone, dispatch error) — the outcome carries the reason. |
Goal mode or normal turns?
- Normal turn — one question, one task, one reply. You steer every step. Most conversation lives here.
- Goal mode — the destination is clear but the path takes several rounds of real work: audits, migrations, "set this up and verify it works." You're delegating an outcome, not supervising a turn.
If the work is recurring instead of once, that's not a goal — that's a routine. Approvals still apply during goal runs: whatever the bot's permissions allow surfaces as approval cards exactly as in normal turns (see Approvals & privacy).
Provenance on every turn
Every reply in a goal loop — every round, not just the first — carries the same via chip as any other bot message: hover to see which engine instance and model produced that turn. If you changed the bot's model mid-goal, the transcript shows exactly where the handoff happened.