Built-in Task tools (TaskCreate/TaskGet/TaskList/TaskUpdate) intermittently unregistered, and can vanish mid-session — breaks the live task display

3 min read Original article ↗

Environment

  • Claude Code: 2.1.217, then auto-updated to 2.1.218 (npm install, macOS arm64, Darwin 25.5.0)
  • Model: claude-fable-5[1m]
  • Terminal: cmux 0.64.15 (ghostty-based). Ruled out as the cause — it only injects hook config via --settings, and the issue reproduced with tools that had already been loaded successfully in the same session.

Summary

Since the TodoWrite → Task tools migration, the deferred built-in Task tools are sometimes not registered at all (ToolSearch returns no matches), and in one session they were withdrawn mid-session minutes after working. When that happens there is no user-visible explanation, and the real-time task checklist display is silently unavailable.

Timeline (JST, 2026-07-22/23)

  1. Jul 22 ~07:37: auto-update to 2.1.217.
  2. Jul 22 evening – Jul 23 early morning (2.1.217): in multiple sessions, ToolSearch for TaskList, TaskCreate, TaskUpdate, TaskGet returned an empty matches array while 189 other deferred tools were available. TodoWrite was also absent. No task display possible.
  3. Jul 23 08:33: auto-update to 2.1.218.
  4. Jul 23 09:56 (2.1.218): new session. All six Task tools present in the deferred tools list; loaded via ToolSearch; TaskCreate/TaskUpdate worked and the live task list rendered correctly.
  5. Jul 23 ~10:15, same session: a system notice reported TaskCreate, TaskGet, TaskList, TaskUpdate as no longer available ("their MCP server disconnected"), while TaskStop/TaskOutput remained. This coincided with a separate transient failure: the auto permission-mode classifier reported "claude-sonnet-5[1m] is temporarily unavailable". The four tools did not come back for the rest of the session.

Investigation done

  • Extracted the 2.1.217 binary from the npm cache and compared with 2.1.218: the Task tool gating code is identical in both (enabled unless CLAUDE_CODE_ENABLE_TASKS === false, and not disabled by the remote model-matched kill-switch flag tengu_vellum_ash). So the outage does not track the client version.
  • Local state showed nothing that disables tasks: CLAUDE_CODE_ENABLE_TASKS unset, and the cached tengu_vellum_ash value in ~/.claude.json was [] at the refresh timestamps around the mid-session drop.
  • The dropped subset (exactly the four tools sharing the tasks-enabled gate, with TaskStop/TaskOutput untouched) points at server-side flag/registry flapping rather than anything local.

Expected

  • If tasks are remotely disabled (kill-switch or registry issue), show a visible notice instead of the tools silently disappearing.
  • Deferred Task tools should re-register when the transient condition clears, without requiring a session restart.

Actual

Tools vanish with no user-facing explanation; the model can no longer create or update tasks; users lose the live task checklist for hours and have no way to tell whether the cause is local or remote.