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: ablocksdependency points at a task that is notdoneorcancelled.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.
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 anIdempotency-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
idstakes 100 refs at most. - A comment list page holds 25 comments by default and 100 at most.
- Create takes 50
dependsOnrefs at most. - A task tree nests 4 levels deep at most. Move and batch create check this.
- The
qsearch 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.
branchNameandbaseBranchtake 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.