Update Task
vault_update_taskUpdate a task's status, priority, or Kanban lane in one atomic call. Multiple changes apply together for efficient task management.
Instructions
Update a task's status, priority, or Kanban lane in a single atomic call. Multiple mutations compose — status + priority + lane move all apply in one write cycle.
Example: vault_update_task({ path: "TASKS.md", block_id: "my-task", status: "done" }) — complete a task; on a Kanban board, auto-moves to the done lane Example: vault_update_task({ path: "TASKS.md", line: 42, priority: "high" }) — set priority Example: vault_update_task({ path: "TASKS.md", block_id: "my-task", status: "in_progress", lane: "Active" }) — start working and move to Active Example: vault_update_task({ path: "TASKS.md", block_id: "my-task", lane: "Up Next" }) — lane move without status change Example: vault_update_task({ path: "TASKS.md", line: 15, priority: "none" }) — remove priority
When to use: Any task state change — completing, starting, re-prioritizing, or moving between Kanban lanes. Use vault_list_tasks first to get identification fields (path + block_id or line). For Kanban boards with multiple done lanes, check done_lanes from vault_list_tasks to know which to pass.
Parameters:
Exactly one of block_id or line is required to identify the task.
At least one of status, priority, or lane is required (the mutation).
status changes the checkbox and manages dates: "done" appends ✅ date, "cancelled" appends ❌ date, "todo"/"in_progress" removes completion dates. On a Kanban board, "done" without an explicit lane auto-detects the done lane (via Complete marker, falling back to "Done" heading).
lane is only valid on notes with kanban-plugin frontmatter (is_kanban_task in vault_list_tasks).
format overrides the auto-detected Tasks plugin write format ("emoji" or "dataview"). When omitted, reads the Tasks plugin config from .obsidian/; defaults to emoji if .obsidian/ is not synced to the server. Both formats are always recognized for reading — only the write format is configurable.
Errors:
"note not found" — path does not exist
"no task at line N" — line doesn't contain a task checkbox
"block_id not found" — no task line ends with ^block_id
"at least one mutation required" — none of status, priority, or lane provided
"lane requires a Kanban board" — lane on a note without kanban-plugin frontmatter
"heading not found" — target lane doesn't exist; lists available headings
"multiple done lanes detected" — pass lane explicitly; check done_lanes from vault_list_tasks
"no done lane detected" — no Complete marker and no "Done" heading; pass lane explicitly
Returns: JSON { path, line, description, changes } — line is the final 1-based position (may shift after a lane move), description is a short excerpt, changes lists what was applied.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| lane | No | Target Kanban lane heading for a lane move. Only valid on Kanban boards. | |
| line | No | 1-based line number from vault_list_tasks. Fragile if the file changed since the query. | |
| path | Yes | Vault-relative path to the note containing the task (must end in ".md") | |
| format | No | Field format for new metadata (done dates, priority). Overrides the auto-detected Tasks plugin config. Default: auto-detected from .obsidian/ config, falling back to emoji. | |
| status | No | Target status. "done" appends ✅ date and auto-moves to done lane on Kanban boards. "cancelled" appends ❌ date. | |
| block_id | No | Stable task identifier — the ^block-id at the end of the task line, without the ^. Preferred over line. | |
| priority | No | Target priority. "none" removes the priority emoji. |