Update task
update_taskUpdate existing tasks in Vibeflow by modifying status, title, description, and task links. Use this tool to add comments or provide a verification verdict to manage the task lifecycle.
Instructions
Update an existing task. Supports status changes, title/description updates, adding comments, and changing the task's links (parent/relates/blocks). Pass fields (e.g. ["id","status"]) for a compact answer instead of the full task object; pass dryRun to preview the edit without writing anything, and branch to record the work branch (required on the review transition when the project sets createBranch). REVIEW GATE (same rules as vibeflow tasks --edit, same codes): status "review" REQUIRES comment (refused REVIEW_COMMENT_REQUIRED); an ANNOTATED task (url + selector) additionally REQUIRES a verdict (setVerify pass/fail/cannot — refused VERIFY_REQUIRED); commitMessage is REQUIRED when auto-commit is ON (refused COMMIT_MESSAGE_REQUIRED); a Research task must NOT carry a verdict (refused RESEARCH_VERIFY_NOT_ALLOWED — submit Research with its .md report, no verdict). 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. Use it to change a task you already hold; use add_comment to discuss without changing fields, and verify_task to actually RUN visual verification (a verdict here records an assessment, it runs nothing).
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 | Replacement title. Omit to keep the current one. | |
| branch | No | Branch for this task's work. REQUIRED on the review transition when the project sets createBranch (refused BRANCH_REQUIRED); stored as branchName. | |
| dryRun | No | Preview only: validate the edit and report what WOULD change without writing the task file. | |
| fields | No | Return only these task fields (e.g. ["id","status"]) instead of the full task object — a status flip need not cost a full ticket dump. Omit for the full object. | |
| parent | No | Set/replace the parent task link (full id or unique prefix; same as the CLI's --set-parent). Empty string clears the parent (same as --no-parent). Applied after clearLinks/links/addLinks/removeLinks. | |
| status | No | New status. Moving to review triggers the review gate (comment, and for annotated tasks a verdict, may be required). | |
| comment | No | Comment to attach (same as the CLI's --comment). REQUIRED when status is "review" — the review transition is refused with REVIEW_COMMENT_REQUIRED without one. | |
| 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 | Replacement task body. Omit to keep the current one. | |
| 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 | Commit message for the review auto-commit (same as the CLI's --commit-message). REQUIRED when status is "review" and auto-commit is ON (refused with COMMIT_MESSAGE_REQUIRED); ignored when auto-commit is off. |