Skip to main content
TaskGraph 0.47 renamed the project from Task Master to TaskGraph and removed the legacy support that went with the old name. Projects created with Task Master or with a release before 0.47 need steps 1 to 4. Step 5 (slash commands now come from the plugin) applies to every existing project, including those set up with 0.47 to 0.52. Step 7 (start and autopilot folded into loop) applies to anyone who used them. Step 8 (stop committing state.json) applies to every project set up before it.

1. Import the project folder

From your project root, import .taskmaster/ into .taskgraph/:
It copies every tag of tasks, the docs, reports and templates, and the settings that still apply, and drops provider and API-key settings. .taskmaster/ is left in place. See Migrating from Task Master for what moves. TaskGraph doesn’t read .taskmaster/ otherwise. Also update any .taskmaster/ paths you reference in CLAUDE.md, .gitignore, scripts or CI.

2. Rename environment variables

Every TASK_MASTER_* and TASKMASTER_* variable is now TASKGRAPH_*. The old names are ignored. Check your shell profile, .env, .mcp.json and CI configuration.

3. Switch the commands and the MCP server

  • The package is taskgraph-ai, and the commands are taskgraph and taskgraph-mcp. Update any scripts or aliases that call the old command name.
  • Register the MCP server as taskgraph-ai and remove any old task-master-ai entry from .mcp.json. See Installation.

4. Removed

  • taskgraph migrate is gone. taskgraph init --from-taskmaster imports a .taskmaster/ folder (see step 1).
  • .taskmasterconfig is no longer read. Configuration lives in .taskgraph/config.json; run taskgraph models --setup to recreate it.
  • Every provider other than Claude Code is removed, along with the flags that selected them. Models are opus, sonnet and haiku. Provider API keys are ignored; only the optional CLAUDE_CODE_API_KEY remains. Remove those flags from any scripts. See Authentication.
  • Support for editors other than Claude Code is removed. taskgraph init --rules accepts claude only.

5. Move slash commands to the plugin

This applies to every project where taskgraph init --rules claude ran before this change, whether it was set up with Task Master, with 0.47 to 0.52, or earlier. init no longer writes slash commands. The Claude Code plugin is the only channel, and it provides the commands as /taskgraph:<name>. Some commands were merged or renamed on the way, so the old names do not all exist (see the table below). The /tm:* files an earlier init wrote into .claude/commands/tm/ stay behind, are never updated, and double the commands you see.
  1. Install or refresh the plugin:
  2. Remove the stale files. Re-running taskgraph init --rules claude in the project does it: it deletes the command files TaskGraph wrote into .claude/commands/tm/ (current names and names from earlier releases), keeps any file you added yourself, and removes the folder if nothing is left. Re-running is the only trigger; nothing prunes them automatically. (init also re-adds its other files, such as the CLAUDE.md import.) Delete by hand instead if you prefer. Check what is there first, because rm -r also removes files you added:
    Task Master-era installs also have older copies elsewhere. Look for the nested .claude/commands/tm/<category>/ folders, .claude/agents/task-orchestrator.md, .claude/agents/task-executor.md, .claude/agents/task-checker.md (the plugin now ships the agents) and .claude/TM_COMMANDS_GUIDE.md, and remove the ones TaskGraph wrote.

Renamed and merged commands

There are no aliases. If you used one of the old names in a script, a note or a prompt, switch to the new form: Updating the plugin itself leaves nothing behind. Claude Code installs each plugin version into its own directory (~/.claude/plugins/cache/<marketplace>/<plugin>/<version>) and points the install path at the active one. On a real update of superpowers from 6.4.2 to 7.0.0, the old directory kept a file the new version dropped and got an .orphaned_at marker, while 7.0.0 did not have the file. A plugin with no version field, like this one, is probably keyed by commit SHA instead. Whether the update arrives automatically or needs /plugin marketplace update taskgraph is not verified, so run it.

6. Remove the deferred MCP loading line (optional)

Earlier taskgraph init --rules claude runs appended this to your shell profile (~/.zshrc, ~/.bashrc or similar):
Claude Code no longer reads that variable: it defers MCP tool definitions by default (MCP tool search, set with ENABLE_TOOL_SEARCH). init doesn’t add the line any more, and you can delete it. init also stopped writing .mcp.json unless you pass --mcp. An .mcp.json you already have is left as it is. The Claude Code integration (the CLAUDE.md import) is now on by default, including under --yes; pass --no-claude to skip it.

7. Run agents with loop

taskgraph loop is now the one way to have Claude Code work the plan. start, autopilot and three plugin commands folded into it or were removed:
  • start is removed. Releases 0.55 to 0.57 kept it as a hidden alias that printed a deprecation notice and ran loop -n 1 --id <id>; now taskgraph start fails as an unknown command, so change scripts to the loop command in the table. loop runs Claude Code non-interactively (claude -p) instead of opening an interactive session. The first run in a project asks you to allow Claude to work without permission prompts; pass --trust in scripts. To see a task without starting it, use taskgraph show <id>.
  • autopilot is removed with its 8 autopilot_* MCP tools. The tdd preset runs the same RED, GREEN, COMMIT cycle for each subtask as a prompt, on a task-<id> branch (see tdd). Nothing checks the test results for Claude any more, and there is no resume or abort: stop with Ctrl-C and run the same command again to continue. The workflow state autopilot kept in ~/.taskgraph/<project>/sessions/ is no longer read; you can delete that folder. With TASKGRAPH_TOOLS=all, the MCP server now loads 40 tools instead of 48.
  • workflow settings in .taskgraph/config.json (enableAutopilot, branchPattern, maxPhaseAttempts and the rest) are no longer read. TaskGraph ignores them, and you can delete the workflow block.
  • Plugin: refresh it (/plugin marketplace update taskgraph) to drop the removed commands and agent.

8. Stop committing state.json and per-machine settings

This applies to every project set up before this change. Earlier init runs didn’t gitignore .taskgraph/state.json, which holds your current tag, so every taskgraph tags use changed a committed file and two people on different tags got conflicts. .taskgraph/config.json could also hold an absolute claudeCode.pathToClaudeCodeExecutable that only works on one machine.
  1. Re-run taskgraph init --yes. It adds .taskgraph/state.json and .taskgraph/config.local.json to .gitignore, and moves pathToClaudeCodeExecutable from config.json to config.local.json. TaskGraph also moves it the next time it saves settings, for example on taskgraph models --set-main.
  2. Stop tracking state.json; .gitignore alone doesn’t untrack a committed file. init reminds you when it’s still tracked:
Each person keeps their own state.json and current tag. Until you upgrade, pathToClaudeCodeExecutable in config.json keeps working. See Shared and per-machine settings.

Credit

TaskGraph is based on Task Master by Eyal Toledano and Ralph Khreish, and keeps the original license and copyright notices. See Licensing.