Built-in Task tools (TaskCreate/TaskGet/TaskList/TaskUpdate) intermittently unregistered, and can vanish mid-session — breaks the live task display
Status Open
Reported on v2.1.217
Maintainer reply None cached
Workaround ✓ Mentioned in thread ↓
Activity 9 comments · opened Jul 23, 2026
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)
- Jul 22 ~07:37: auto-update to 2.1.217.
- Jul 22 evening – Jul 23 early morning (2.1.217): in multiple sessions,
ToolSearchforTaskList, TaskCreate, TaskUpdate, TaskGetreturned an empty matches array while 189 other deferred tools were available. TodoWrite was also absent. No task display possible. - Jul 23 08:33: auto-update to 2.1.218.
- Jul 23 09:56 (2.1.218): new session. All six Task tools present in the deferred tools list; loaded via ToolSearch;
TaskCreate/TaskUpdateworked and the live task list rendered correctly. - Jul 23 ~10:15, same session: a system notice reported
TaskCreate, TaskGet, TaskList, TaskUpdateas no longer available ("their MCP server disconnected"), whileTaskStop/TaskOutputremained. 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 flagtengu_vellum_ash). So the outage does not track the client version. - Local state showed nothing that disables tasks:
CLAUDE_CODE_ENABLE_TASKSunset, and the cachedtengu_vellum_ashvalue in~/.claude.jsonwas[]at the refresh timestamps around the mid-session drop. - The dropped subset (exactly the four tools sharing the tasks-enabled gate, with
TaskStop/TaskOutputuntouched) 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.
Showing cached comments. Read the full discussion on GitHub ↗
6 Comments
Confirming this on a separate session today: a
ToolSearchforselect:TaskCreate,TaskGet,TaskList,TaskUpdatereturns no matches at all, whileTaskStopandTaskOutputare both present in the deferred-tools listing. Same subset as reported here — the four tools sharing the tasks-enabled gate are missing,TaskStop/TaskOutputare untouched. No local config (CLAUDE_CODE_ENABLE_TASKSetc.) involved on my end either; just observed the same split from a fresh session start, not a mid-session drop.Confirming also. My Ctrl+T session todo list is now frozen and claude has no understanding of it and cannot change it. Restarting sessions, new sessions, latest claude, nothing fixes it. Was working fine yesterday.
Additional data point — reproducible on demand via account switch, on Linux, 2.1.218 (bridged/Remote-Control session)
I hit this same issue and was able to turn the "intermittent" disappearance into a deterministic repro: switching claude.ai accounts with
/login(no app restart) toggles the four Task tools in/out reliably. I also reverse-engineered the gating in the 2.1.218 bundle and ran controlledclaude -ptests. Sharing everything in case it helps narrow it down.---
Environment
CLAUDE_CODE_CHILD_SESSION=1CLAUDE_CODE_BRIDGE_SESSION_ID=<redacted>CLAUDE_CODE_ENTRYPOINT=cli---
The key observation: Task tools ride the
claude.aiMCP connector channelIn this bridged session,
TaskCreate/TaskGet/TaskList/TaskUpdateare surfaced as deferred tools (viaToolSearch), and they arrive and depart bundled with themcp__claude_ai_*cloud connector tools (Canva, Gmail, Calendar, Drive, JIRA, Sentry). The disappearance notice is literally an MCP disconnect:This strongly implies that in bridged/Remote-Control sessions the Task tools are delivered over the claude.ai account MCP bridge and share that channel's lifecycle — so when the account bridge drops, the Task tools drop with it and do not re-register for the remainder of the session.
---
Deterministic repro (no restart required)
Same running app, same binary (2.1.218), same machine, same shell env — only the logged-in account changes:
/login→ Account ASystem reminder fires:
> The following deferred tools are now available via ToolSearch:
TaskCreate,TaskGet,TaskList,TaskUpdate,mcp__claude_ai_Canva__*,mcp__claude_ai_Gmail__*, …ToolSearch("select:TaskCreate,TaskGet,TaskList,TaskUpdate")loads all four. They work:TaskList→No tasks foundTaskCreate→Task #1 created successfully,Task #2 created successfully/login→ Account B (no restart)System reminder fires:
> 43 deferred tools are no longer available (MCP server disconnected):
mcp__claude_ai_Canva__* (39),TaskCreate,TaskGet,TaskList,TaskUpdate.ToolSearch("select:TaskCreate,TaskGet,TaskList,TaskUpdate")→No matching deferred tools found. Tools never return for the rest of the session.Switching back reverses it. So the disconnect is account-scoped and on-demand reproducible, not random flapping.
---
Native CLI path is unaffected (rules out the binary gate as the cause here)
On the same machine and account, a plain non-bridged
claude -pgets the tools natively:So the native
KL()env gate works correctly. The failure is specific to the bridged deferred-tool delivery, not the local tool registry.---
Reverse-engineered gating (2.1.218 bundle)
For maintainers, the relevant minified symbols:
tengu_lantern_prism/CLAUDE_CODE_LANTERN_PRISM(function Yat(){ return Xe("tengu_lantern_prism",!1) || Z.CLAUDE_CODE_LANTERN_PRISM }) is textually adjacent tobj="TodoWrite"in the bundle but its call sites gate a plugin "Usage" panel, not the Task tools. Not related.---
Ruled out locally
~/.claude/settings.json: valid JSON.todoFeatureEnabled: trueis present but is UI-panel only — it does not affect tool registration./etc/claude-code/managed-settings.json,~/.claude/managed-settings.jsonall absent.CLAUDE_CODE_ENABLE_TASKSunset,CLAUDE_CODE_TASK_LIST_IDunset, notengu_*overrides.qee()only trips whentengu_vellum_ashis a non-empty array matching identity — consistent with it being empty[]here (matches the OP).---
What's new vs. the original report
/loginaccount switch, no restart.mcp__claude_ai_*connector channel and reported as an explicit "MCP server disconnected", not a silent unregister — suggests the bridged-session delivery path binds Task-tool availability to the claude.ai account MCP bridge lifecycle.claude -pis unaffected → isolates the fault to the bridge deferred-tool registration, not the client gate.---
Asks
/login(or any bridge blip) silently kills the live task display for the rest of the session.Happy to provide full
ToolSearchtranscripts or the byte offsets from the 2.1.218 bundle if useful.Another data point: v2.1.218, claude-fable-5, Linux (WSL2). The four Task tools (TaskCreate/TaskGet/TaskList/TaskUpdate) were absent from session start — not in the active toolset and not discoverable as deferred tools via ToolSearch (
select:TaskCreate,TaskUpdate,TaskList,TaskGetreturns no matches) — while TaskStop and TaskOutput were present. TodoWrite is also absent. No relevant local config:CLAUDE_CODE_ENABLE_TASKSunset, no disabledTools entries, settings otherwise vanilla. In this session the tools never registered at all (the never-appeared variant rather than the vanished-mid-session one).I essentially used an entire weeks worth of my 20x subscription with Fable yesterday doing nothing but trying to fix this. #1 most frustrating experience with claude. They're just blindsiding random users with zero explanation and its a major problem:
Root cause (verified, not inferred)
Claude Code gates the task-tool family on a remote GrowthBook feature flag
tengu_vellum_ash— a per-model kill list. Each of the four Task tools carries (verbatim from the 2.1.217 binary; identical logic verified in 2.1.206 and 2.1.218):On 2026-07-21, shortly before 13:50:45Z, the served value of
tengu_vellum_ashchanged from[]to["claude-opus-4-8","claude-sonnet-5","claude-fable-5"]— i.e., every current default model. Local flag-cache history (restic snapshots of~/.claude.json): cache refreshed 2026-07-20T05:08Z →[]; cache refreshed 2026-07-21T15:17Z → the 3-model list.TodoWriteis disabled by the same feature gate (observed runtime error:"TodoWrite exists but is not enabled in this context").TaskOutput/TaskStopsurvive only because they are renamed KillShell/AgentOutput tools outside the gated feature — which is what made this look like a session-classification bug and cost days of misdirected debugging.---
But what makes it even more annoying is you instantly lose other tools enabling CLAUDE_CODE_ENABLE_TASKS=1, so there is literally nothing you can do.
+1 confirming on WSL2 (Ubuntu-22.04, plain terminal — not VSCode, not headless).
Same symptom today (2026-07-23):
TaskCreate,TaskUpdate,TaskList,TaskGetintermittently absent from the toolset, whileTaskStopandTaskOutputstay present. It happens mid-session in interactive sessions that had the tools earlier — so theCLAUDE_CODE_ENABLE_TASKS=trueworkaround from #20463 (headless) doesn't cover it, and it's not the isTTY/VSCode case from #23874.Confirmed via
ToolSearch("select:TaskCreate,TaskUpdate,TaskList,TaskGet")returning them as unavailable in the same session where they had worked minutes before.Measurable downstream impact worth flagging: the missing tools also break tooling that depends on them being present. On our side, a PreToolUse hook that reminds/blocks when a multi-step action runs without a task fired ~4.8× its 30-day baseline in a single day (367 vs ~77/day) — it kept demanding a
TaskCreatethe platform had removed. We had to temporarily silence those hooks until this is resolved.Happy to share version/env/session logs if useful for repro.