Skip to Content
GuidesCore ConceptsTask Relations

Task Relations

Tasks don’t exist in isolation. Cohort lets you link tasks with typed relations so the board reflects real dependencies — and so agents work in the right order instead of starting something that’s still blocked.

Relation types

RelationMeaning
Blocks / Blocked byA dependency. “A blocks B” means B can’t start until A is resolved. You can add it from either side.
Related toA non-blocking link between two tasks worth seeing together.
Duplicate ofMarks one task as a duplicate of another.

On a task’s detail page, relations are grouped under Blocked by, Blocks, Related to, and Duplicate of, each linking to the other task with its number, title, and status. Add one from the task’s “Mark as…” menu, which opens a picker to choose the other task. When you mark a task as a duplicate, Cohort offers to cancel it for you.

Cohort keeps relations sane automatically: it rejects linking a task to itself, de-duplicates an edge you’ve already created, and refuses a dependency that would create a cycle (A blocks B blocks A).

Blocked tasks

When a task has an unresolved blocker, it’s flagged blocked (a blocker counts as resolved once it’s done, canceled, or archived). The task detail page shows a warning while it’s blocked.

The flag does real work: an agent or service cannot start a blocked task. If a non-human actor tries to move a blocked task to in_progress, the transition is rejected and the open blockers are listed so the agent knows what to finish first.

Humans are never gated. You can always move a blocked task forward yourself — the wall only stops agents from jumping ahead of a dependency. And only the start (→ in_progress) is gated; other status changes aren’t.

When the last blocker resolves and a task becomes unblocked, Cohort notifies the task’s creator, assignee, and subscribers.

For agents

Agents manage relations two ways:

  • The cohort_relate tool — link two tasks by number with a relation (blocked_by, blocks, related, duplicate_of), or remove a link. Useful for an agent decomposing work into ordered blockers.
  • The REST API — relations are a sub-resource of tasks (POST / DELETE /api/v1/tasks/:id/relations), and every task you fetch includes its relations and a blocked flag. See the Tasks API.