Skip to main content
TaskForge 3.0: your AI can read your tasks.
← What's new

Agents can create, move, delete, and now edit your notes

Shipped in version 3.0.0

TaskForge's vault holds more than tasks: it's your notes too. Until now an AI agent pointed at your vault could read and write tasks through the taskforge CLI and MCP server, but for notes it was on its own: to make a new note it had to write a file by hand, and to rename or delete one it had to mv or rm the file directly, which silently breaks every [[wikilink]] and dependency pointing at that note.

This release adds three note verbs to the agent surface, each of which does the safe thing your agent otherwise couldn't.

Create a note

taskforge add-note "Meeting notes" --content "Agenda: ..."

Creates a new markdown file named after the title (illegal filename characters stripped for you) in your configured notes folder, or at the vault root if you haven't set one. Point it somewhere specific with --folder Projects/Q3.

If a note with that name already exists the command stops and tells you, rather than clobbering it. Pass --if-exists append to add to the existing note instead.

In an MCP client (Claude Desktop, Claude Code, Cursor, …) the same thing is the create_note tool.

Append to today's daily note

The one agents will reach for most:

taskforge add-note --daily --content "- Shipped the notes verbs"

--daily resolves today's daily note using your vault's own daily-note date format (including custom formats like Journal/YYYY/YYYY-MM-DD dddd) and appends your content to it. If today's note doesn't exist yet it's created first (seeded from your daily-note template, if you have one configured). You never have to compute the filename or worry about the folder; the agent asks for "today's note" and TaskForge figures out exactly which file that is.

Rename or move a note, safely

taskforge mv-note "Old Name.md" "Projects/New Name.md"

mv-note (MCP move_note) is the safe way to rename or move a note. As well as moving the file, it rewrites every reference that pointed at the old path: dependsOn and projects entries on your tasks, and [[wikilinks]] and [markdown](links) in the body of every other note, so nothing dangles. A raw mv would leave all of those pointing at a file that no longer exists.

Delete a note, safely

taskforge rm-note "Draft.md" --yes

rm-note (MCP delete_note) moves the note into your vault's .trash/ folder (recoverable, not a hard delete) and cleans up every reference to it across the vault. Like the delete-task flow, it asks for confirmation before doing anything irreversible.

Editing a note's body, safely

Creating and deleting notes was the first half. The second half is editing, and doing it without the two things that go wrong when a program edits a file you also have open: clobbering a change you just made, and mangling a task.

Your agent now works in three steps.

1. Read the note. read-note (MCP: read_note) hands back the note as a list of blocks (each heading, paragraph, list item, task line, code fence, callout, and table) with a stable id for each one, plus a fingerprint of the whole file.

2. Edit one block. patch-note (MCP: patch_note_block) changes a single block by its id: replace its text, insert a new block before/after/underneath it, delete it, split it in two, merge it with the next one, or indent/outdent a list item. Everything around that block is left byte-for-byte alone.

3. Or replace the whole file. update-note (MCP: update_note) swaps the entire contents when a wholesale rewrite is genuinely what you want.

It won't overwrite your work

Every write has to quote the file fingerprint from the read it was based on. If the file changed in between, TaskForge works out what changed and reacts accordingly rather than just overwriting:

  • Nothing changed: the edit applies.
  • The file changed, but not the part being edited: say you ticked off a task elsewhere in the note. The edit is held back by default; the agent can choose to apply it, and your change survives either way.
  • The exact block being edited also changed: the edit is refused, and TaskForge hands the agent the current text so it can redo the edit on top of yours instead of throwing it away.
  • The block is gone: the edit is refused and the agent has to look again.

So an agent tidying up a note while you're typing in the same note cannot quietly undo you.

It won't touch your tasks through the back door

A task line inside a note is still a task. If an agent tries to rewrite or delete a - [ ] line through the note tools, TaskForge refuses and points it at the proper task commands instead, so every task change still goes through the same validation, formatting, and recurrence handling as any other. (Restructuring is still allowed: an agent can indent, outdent, split, or reorder a list that happens to contain tasks.)

Similarly, update-note will not rename a task file's title, because the title is part of how TaskForge identifies that task. Title changes go through the task tools.

Notes larger than 5 MB are declined rather than loaded, and every edit command takes a --dry-run flag that shows the result without touching the file.

The rules your agent now follows

Your vault's generated agent guide (agents.md) gained a Notes section that spells out the rules of engagement, so any agent reading the contract knows:

  • Editing a note's body is fine. TaskForge's parser is lossless, so prose, headings, and lists round-trip untouched, and read-note/patch-note give the agent a safe, conflict-aware way to do it.
  • Always read before writing. Every note write has to quote the fingerprint from the read it was based on; the guide tells agents to work that way by default.
  • Task lines are off limits to the note tools: they route to the task commands so validation always applies.
  • Use mv-note to rename and rm-note to delete: never a raw mv/rm, which strands references.
  • settings.json and spaces.json are app-owned: agents leave them alone; you change those through the TaskForge app.
  • Spaces (saved filters) and device-calendar events stay app-only; there is no agent verb for them, by design.

Everything here runs entirely on your machine through the same taskforge binary. No account, no network. See also Your vault ships with its own AI instructions and A local MCP server for your TaskForge vault.