update_task
Update an existing Vibeflow task's status, title, description, links, or verification verdict to keep your kanban board accurate.
Instructions
Update an existing task. Supports status changes, title/description updates, adding comments, and changing the task's links (parent/relates/blocks). Pass setVerify to record your verification verdict: "pass" attests the task IS implemented correctly (verified=true, green badge — required for annotated tasks at the review transition, which vibeflow verify never sets itself), "fail" records that it is NOT implemented correctly (verified=false, amber badge, the review gate rejects it), and "cannot" clears the verdict back to absent (no badge) for a task that cannot be assessed here — "cannot" REQUIRES verifyReason, which is recorded in the task's activity.
LINKS — everything merges, and clearLinks is the only destructive path. links and addLinks both MERGE: a link you do not name is PRESERVED, and re-sending a link that is already there is a no-op, so neither of them can destroy a link by being incomplete. removeLinks removes exactly the taskId+type pairs you name and leaves every other link alone. clearLinks: true is the ONLY way to remove links wholesale — to drop a single link, name that taskId+type in removeLinks rather than editing links. Omitting all four fields leaves links untouched. The CLI's --set-parent/--relates/--blocks/--unrelates/--unblocks behave the same way (each is surgical and preserves every link it does not name), so the CLI and MCP surfaces now agree on link semantics.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Task id — a full id, or any unique prefix of one, of the task to update. An id that matches nothing is refused with TASK_NOT_FOUND and changes nothing. | |
| links | No | ADD the listed links without touching the rest (merge, same as the CLI's --relates/--blocks). A pair already present is a no-op. `links: []` is REFUSED — use clearLinks:true to clear. Combining `links` with `addLinks` merges their union once. | |
| title | No | ||
| branch | No | ||
| dryRun | No | ||
| status | No | ||
| comment | No | ||
| addLinks | No | ADD links without touching the rest (merge). Same semantics as `links` — sending both merges their union once. Use clearLinks:true to drop the whole set. | |
| setVerify | No | Your verification verdict: "pass" = the task IS implemented correctly (required for an annotated task at review), "fail" = it is NOT (the review gate blocks it), "cannot" = unverifiable here, which REQUIRES verifyReason. Omit to leave any stored verdict untouched. | |
| clearLinks | No | Remove EVERY link from the task. Applied BEFORE the merge: clearLinks -> (links + addLinks) -> removeLinks. `true` clears; `false` or absent is a no-op. | |
| description | No | ||
| removeLinks | No | REMOVE the listed links without touching the rest. Applied after clearLinks and after the links/addLinks merge. | |
| verifyReason | No | Why the task cannot be verified. REQUIRED with setVerify:"cannot", and refused as E_USAGE on its own — a reason belongs to a "cannot" verdict. | |
| commitMessage | No |