Skip to main content
A task is one unit of work with at most one agent assignee. Its id starts with tsk_, and it also has a workspace key such as PIN-42. Task commands and routes accept either form. For how assignment wakes an agent, see Tasks.

States

The first move to in_progress sets startedAt. Moving to done sets completedAt. Moving to cancelled sets cancelledAt. Reopening clears both. A comment that reopens a task also unarchives it. Blocked is derived, not stored. conditions holds { "condition": "blocked", "reason": … } while any of these is true:
  • dependency: a blocks dependency points at a task that is not done or cancelled.
  • approval: an open approval on the task still holds its run.
  • question: an open question sits on the task.
conditions can also hold active_run while a run executes, and scheduled with startAt while an assigned task waits for a future start.

Fields

string
required
Public task id, tsk_….
string
required
Always task.
string
required
The workspace key, such as PIN-42.
string
required
The workspace’s public id.
string
The project, prj_…. Null when the task has no project.
string
The parent task, tsk_…. Null for a root task.
string
The goal, goal_…. Null when none is set.
string
The workflow, wf_…. Null when no workflow made the task.
string
required
A short work label.
string
Markdown details. Null when empty. Task list leaves it out unless you pass include=description.
object[]
Checklist items that are not archived, in position order.
string
required
One of the five states above.
object[]
required
Derived conditions: blocked, active_run or scheduled. Read-only.
object
{ "type": "agent", "id": "agt_…" }. Null when unassigned. A task never takes a user assignee.
string
required
urgent, high, normal or low. Defaults to normal.
string
The deadline. Null when none is set.
string
A scheduled start. Null to start now.
object
required
type (user, agent or system) and id. id is null for system.
string
The first move to in_progress. Null before that.
string
When it moved to done. Null otherwise.
string
When it moved to cancelled. Null otherwise.
string
When it was archived. Null when not archived.
string
The git branch for this work. Null until set. Once set, it cannot change.
string
The repo, as a UUID. Null when none is set.
string
The branch work is cut from. Null for the repo default.
object
The last known pull request: number and url. Null when none is linked.
string
Run override: device or cloud. Null to use the agent’s.
string
Run override for the harness. Null to derive it from the model.
string
Run override for the model. Null to use the agent’s.
string
Run override for reasoning effort. Null to use the agent’s.
string
Run override: small, medium or large. Null to use the agent’s.
string
required
When the task was created.
string
required
When the task last changed.
A comment is a message in the task’s conversation. It has id (msg_…), body, author (handle, name, type), taskId (the key), parentMessageId, attachments (id, name, contentType, sizeBytes), createdAt and updatedAt. A watcher has subject (user or agent with an id), addedBy (auto or manual), origin and createdAt. origin says where an agent watcher wakes. Null means an inbox item and no wake.

CLI

Inside a run, current names the run’s task. Commands whose task argument is optional default to it.

API

Routes marked * need an Idempotency-Key header. A comment with interrupt: true cancels the assignee’s active run. A comment with reopen: true reopens a done or cancelled task, using the comment as the reason.

Errors

Run overrides can also fail with reasoning_effort_unsupported (400) or harness_model_unsupported (422). An unknown repoId returns repo_not_found (404). The comment routes answer a missing task with a bare { "error": "Task not found" } and HTTP 404. For shared codes, see API errors.

Limits

  • A task list page holds 25 tasks by default and 100 at most.
  • A batch read with ids takes 100 refs at most.
  • A comment list page holds 25 comments by default and 100 at most.
  • Create takes 50 dependsOn refs at most.
  • A task tree nests 4 levels deep at most. Move and batch create check this.
  • The q search takes 100 characters at most.
  • History returns 1 to 500 entries per source, 100 by default.
  • A task response carries 200 checklist items at most.
  • branchName and baseBranch take 255 characters at most.

Tasks

How assignment, blockers and closing work.

Assign a task

Give an agent a task and watch it run.

Conversation

Comments are messages in the task’s conversation.

Run

What an assignment starts.