Task Goals

Task Goals let you give a task a persistent objective that OpenVibely works toward across multiple execution turns. Instead of sending follow-up messages manually until a long-running task is done, you describe the end state once and the Goal Agent evaluates progress after each turn, queuing continuation work automatically until the goal is achieved, blocked, or cleared.

How It Works

When a task has an active goal, the built-in System: Goal Agent runs an after_complete lifecycle hook called evaluate_task_goal after every task turn. That hook reads the stored goal, inspects the latest task transcript and tool evidence, then takes one of three actions:

DecisionWhat Happens
Not yet achievedQueues a concrete continuation follow-up so the task keeps making progress.
AchievedMarks the goal achieved with an evidence-based reason and stops queuing.
BlockedRecords a blocker key and reason; after the same blocker repeats, transitions the goal to blocked and stops queuing.

Goal continuation is injected as a normal queued follow-up, so it respects worker capacity, lifecycle hooks, worktree state, and all other existing task behaviors.

Goal Panel

When a goal is set, a Goal panel appears on the task detail page above the tab row.

Panel FieldWhat It Shows
ObjectiveThe stored goal text.
Status badgeCurrent goal status: active, paused, achieved, blocked, cleared, or failed.
ReasonThe agent's evidence summary when the goal was last evaluated.
Last checkedTimestamp of the most recent evaluation.

Setting And Editing A Goal

Open the task edit dialog from any task detail page. The dialog includes a Goal section with:

To remove a goal, clear the objective text and save.

Goal Statuses

StatusMeaning
activeEvaluation is running; the Goal Agent will queue continuations when needed.
pausedGoal is stored but evaluation is suspended until you resume it.
achievedThe Goal Agent confirmed the full objective is complete.
blockedThe same blocker was reported repeatedly; user input or an external change is needed.
clearedThe goal was explicitly removed.
failedA terminal failure prevented goal evaluation from completing.

When To Use Goals

Task Goals are most useful for tasks that require iterative work toward a well-defined end state:

Avoid using goals for vague or open-ended objectives that do not have a clear completion signal, because the Goal Agent can only mark achieved when current transcript evidence proves every requirement is met.

Do not use a persisted goal as the recurrence engine for scheduled inbox, finder, or maintenance loops. Let the schedule repeat the loop task, and put a goal on a distinct implementation task only when that work needs autonomous continuation.

Setting Goals From Chat

In Orchestrate mode, Chat has the full set of goal tools available alongside its task-creation tools. This means you can describe a piece of work once and Chat will both create the task and set the goal on it in the same turn — the Goal Agent then drives that task autonomously from that point on without you sending follow-ups.

Chat ToolWhat It DoesMode
set_task_goalSet or replace the stored goal for a task (by task ID or title).Orchestrate
clear_task_goalRemove the goal from a task entirely.Orchestrate
get_task_goalRead the current goal text and status.Plan + Orchestrate
pause_task_goalSuspend automatic evaluation without deleting the goal.Orchestrate
resume_task_goalRe-activate evaluation on a paused goal.Orchestrate

A typical Chat-driven goal workflow:

1. In Orchestrate mode, describe the end state — e.g. *"all tests in the auth package should pass cleanly."*

2. Chat creates the task and calls set_task_goal with that objective.

3. The task runs; after each turn the Goal Agent evaluates whether the objective is met.

4. If not yet achieved, a continuation follow-up is queued automatically.

5. When evidence proves completion, the goal is marked achieved and queuing stops.

6. Back in Chat you can ask for a status update (get_task_goal) or adjust the goal at any point.

You can also manage goals on already-existing tasks from Chat — just reference the task by its title or ID.

Channels

Tasks created or managed through Slack, Telegram, Discord, and Email support Goals the same way web-created tasks do. The goal panel and edit controls are reflected in the web app regardless of which channel originated the task.

System: Goal Agent

System: Goal Agent is a protected built-in system agent. It is not user-selectable as a primary task agent and does not edit repository files or run shell commands. It acts only through goal tools (get_task_goal, mark_task_goal_achieved, report_task_goal_blocked) and send_to_task.

PageWhy It Matters
ChatOrchestrate mode can create tasks and set goals on them in a single turn.
TasksTask detail screen where the Goal panel and edit controls live.
Task Threads & Follow-UpsGoal continuations are queued as normal task-thread follow-ups.
Task LifecycleGoal evaluation runs as an after_complete lifecycle hook.
AgentsSystem: Goal Agent is listed in the System Curators table.
Worker Capacity & DispatchGoal continuations respect task worker capacity.