Long-running goals
A Goal lets Kodik keep working toward one durable objective after an individual response settles. The Goal belongs to its chat session and can schedule private continuation turns until the work completes, needs you, or reaches a limit.
Start a Goal
Section titled “Start a Goal”Send /goal <objective>:
/goal Migrate the package parser and prove compatibilityKodik starts immediately. The submitted objective remains in chat as a normal user-style message with a Goal badge. The private Goal prompt, continuation turns, built-in Goal tools, and lifecycle notices do not add extra chat rows.
Every non-empty value after /goal is treated as the objective itself and starts a Goal.
For larger work, send bare /goal to open the authoring panel without starting a Goal.
Enter one prose objective, optionally set a token budget, then select Start. Authoring
does not call the model or enter the chat transcript; the Goal attaches to the current
session only when you start it.
If an unfinished Goal already exists, Kodik opens a replacement confirmation instead of discarding it silently.
Follow progress
Section titled “Follow progress”The Goal panel stays above the Todo and File Changes panels whenever a Goal exists. It shows:
- the current status and objective;
- elapsed active duration, updated every second while Kodik pursues the Goal and frozen when it stops;
- the full blocker reason when one exists;
- controls to pause, resume, edit, or clear the Goal.
The panel intentionally does not show a token counter. Kodik still tracks tokens internally when an optional token budget is configured.
While a Goal is active, its Target icon remains visible in the Goal panel, on the Goal’s session card in the sessions sidebar, and on its navbar tab.
Continuation and priority
Section titled “Continuation and priority”An active Goal can continue in its owning session even when that chat is not selected. Before Kodik starts another Goal turn, higher-priority work wins: a user message, queued work, an approval, a question, or recovery from a failed turn.
Goal state and accounting survive conversation compaction and a workbench restart. An active restored Goal can continue automatically once its session is ready.
Goal continuations are Goal-owned in every chat mode. An ordinary user-authored Plan turn is not charged to the Goal.
Pause, resume, edit, and clear
Section titled “Pause, resume, edit, and clear”Use the controls in the Goal panel:
- Pause stops automatic continuation without removing the Goal.
- Resume makes a resumable Goal active again.
- Edit changes the prose objective or optional token budget.
- Clear removes the Goal from the session.
Using Stop while a Goal turn is running cancels that turn and pauses the Goal.
Status and limits
Section titled “Status and limits”A Goal can be active, paused, blocked, usage-limited, budget-limited, or complete. /goal
is the only creation boundary. While the Goal is active, the model receives two internal
tools: get_goal and update_goal. Ordinary, paused, blocked, limited, and completed chats
do not spend context on their schemas. Goals are one objective plus status, not an itemized
checklist. These tools are Goal runtime controls, so they do not appear in Harness settings
or as tool cards in chat.
An optional token budget is a soft safety boundary. Kodik charges fresh input and output, including cache-write input, while excluding cache reads. When the boundary is crossed during a tool turn, Kodik gives the model one opportunity to wrap up before settling the Goal as budget-limited.
A Goal becomes blocked only after the same blocker is reported across repeated consecutive Goal turns. Provider or account rate limits use the separate usage-limited status.