[BUG] Task Tools Do Not Load
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
What's Wrong?
Bug report: Task tools (TaskCreate/TaskGet/TaskList/TaskUpdate + TodoWrite) silently removed from all interactive sessions by an undocumented server-side feature flag
Reporter: Claude Code Max subscriber (2 machines: Windows 11 native install, Ubuntu EC2)
Date of report: 2026-07-22
Onset: 2026-07-21T13:50:45Z (exact, from transcript deferred_tools_delta events)
Status at time of writing: flag observed actively flapping on Anthropic's side (values below); no changelog entry, no GitHub acknowledgment, no documentation
Impact — why I am filing this angrily
- Task/todo tooling vanished from every interactive session on every model I use (Opus 4.8, Sonnet 5, Fable 5), on two machines, with zero announcement, zero changelog entry, zero client-side indication of why. The tools are simply absent from the registry;
ToolSearchreturns "No matching deferred tools found." - Because the removal was silent and looked exactly like local corruption (the surviving
TaskOutput/TaskStoppair mimics the subagent tool profile), I spent two full days debugging my own machines, config, and sync tooling — including a six-hour investigation that produced five wrong hypotheses — before binary reverse-engineering proved the cause was a remote kill switch. - I burned approximately 84% of my weekly usage limit debugging a problem Anthropic created and never disclosed. That usage is gone, on a paid Max plan, chasing a phantom local bug.
- Sessions running when the flag flipped lost the tools mid-flight (
deferred_tools_deltawithremovedNames: ["TaskCreate","TaskGet","TaskList","TaskUpdate"]), breaking in-progress multi-agent work.
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):
isEnabled(){return wD()&&!xZ()}
function wD(){if(Z.CLAUDE_CODE_ENABLE_TASKS===!1)return!1;return!0}
function xZ(){try{let e=Ke("tengu_vellum_ash",[]);if(!Array.isArray(e)||e.length===0)return!1;
let t=Ii();return e.some((r)=>r.length>0&&t.includes(r))}catch{return!1}}
On 2026-07-21, shortly before 13:50:45Z, the served value of tengu_vellum_ash changed 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. TodoWrite is disabled by the same feature gate (observed runtime error: "TodoWrite exists but is not enabled in this context"). TaskOutput/TaskStop survive 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.
Evidence
- Exact onset, cross-project: exactly 4 removal events exist in 8,492
deferred_tools_deltaevents across 7,968 local transcripts (2026-05-10 → 2026-07-22): 13:50:45Z, 13:52:36Z, 14:09:37Z, 14:17:25Z on 2026-07-21, in three unrelated sessions/projects, each at its next turn. Zero removal events before that window; the tools never returned to affected sessions. - Version-independent: reproduced on 2.1.206, 2.1.214, 2.1.215, 2.1.216, 2.1.217; the identical gate is present in the 2.1.218 binary (function
qee()). - Model-dependence proven by controlled A/B: two fresh interactive sessions on the same EC2 box, same binary (2.1.217), same config, one minute apart:
--model haiku(not on the list) received all four tools (raw transcripttool_referenceresults);--model sonnetreceived none. Session IDs 94962d89 / 3714b3c2, 2026-07-22. - Headless inconsistency:
claude -p --model claude-sonnet-5retains all task tools. Cause (also verbatim in the binary): the flag readerKe()is fully synchronous and silently falls back to the safe default[]when neither the GrowthBook fetch nor the config bootstrap has completed — an unsynchronized hydration race, meaning tool availability depends on startup timing, not policy. - Not local: independent users report the same regression in the same window: anthropics/claude-code #80151, #79949, #78769, among others opened 2026-07-21/22. All local hypotheses (config, sync tooling, env vars, teams flags, task-store state) were exhaustively eliminated; three adversarial review passes and 7 falsified alternative explanations are documented.
- The flag is flapping right now (all 2026-07-22, same machine/account): 21:07Z →
[]; 21:37Z → the 3-model list; ~22:05Z →[]again (a long-running session's registry re-added the four tools mid-conversation). Whatever is being done server-side is being done live, silently, against paying users.
Workaround currently deployed locally
"DISABLE_GROWTHBOOK": "1" in ~/.claude/settings.json env block (both machines). Verified restoring all four tools in fresh interactive sessions on listed models. Known cost: Remote Control refuses to start while set. Will be removed once the server flag is stably rolled back.
What Should Happen?
Claude should load the built in task tools.
Error Messages/Logs
Steps to Reproduce
Open a claude code session in the CLI, try to use any task tool.
Claude Model
Not sure / Multiple models
Is this a regression?
Yes, this worked in a previous version
Last Working Version
NA: I've reinstalled past 20+ versions trying to fix
Claude Code Version
v2.1.218
Platform
Anthropic API
Operating System
Windows
Terminal/Shell
PowerShell
Additional Information
_No response_
Showing cached comments. Read the full discussion on GitHub ↗
3 Comments
Broken for 2 days now!
TaskCreate is not available in this session. The search loaded some similarly named tools, but none of them is it:
These are for managing background processes, not task lists. TaskCreate, TaskUpdate, and TaskList — the task-list tools that the framework rules reference (e.g., the /work execution rule's two-phase task creation and compaction-recovery pattern) — don't exist in this harness build, and no equivalent todo-list tool (like TodoWrite) is present either.
EDIT / RESOLVED for my case. This turned out to be my own misconfiguration, not the bug tracked in this issue. I am leaving the original report below because the failure mode looks identical from the inside, and the diagnostic step that actually found it may help others.
Root cause
My Desktop session was running as a custom agent that came from a plugin I had uploaded to the app. An agent definition carries a
tools:frontmatter field, and that field acts as an allowlist for the entire main thread:Agent(andTask) are not in that list, so the session genuinely had no subagent tool and correctly said so. Disabling the plugin fixed it immediately: asking "can you create subagents in this session?" now answers "yes, via the Agent tool."Corrections to my report below
DISABLE_GROWTHBOOK=1,CLAUDE_CODE_ENABLE_TASKSandCLAUDE_CODE_ENABLE_TODO_TOOLSwere all irrelevant to my problem. Two notes on those anyway, since they came up in this thread:CLAUDE_CODE_ENABLE_TASKSis only ever tested againstfalse, so setting it totrueis a no-op, andDISABLE_GROWTHBOOKsilently disables Remote Control.Tip for anyone on macOS Desktop who "cannot use subagents"
Before chasing feature flags or env vars, check whether your session is running as an agent with a restricted tool list.
tools:allowlist, not a feature flag. A normal session exposes Agent, ToolSearch, Workflow, Artifact and many more.tools:line from its agent definition so the agent inherits all tools, then re-upload it.Note that the app's copies of the plugin under
~/Library/Application Support/Claude/local-agent-mode-sessions/...are per-session and get regenerated, so edit the plugin you uploaded rather than those caches.---
<details>
<summary>Original report, kept for context</summary>
Still reproducible, and also affects the Claude Desktop app (macOS, bundled Claude Code 2.1.234, Code tab).
Symptoms
Task/Agenttool at all.ToolSearchis also absent, so the "tool is deferred, load it via ToolSearch" explanation does not apply: there is nothing to load it with.What I ruled out
DISABLE_GROWTHBOOK=1(the workaround reported earlier in this thread) does not fix it in the desktop app. I set it via theenvblock in~/.claude/settings.json, restarted the app, and verified inside the session that the variable was active (echo $DISABLE_GROWTHBOOK->1). The Task tool was still missing..../Application Support/Claude/claude-code/2.1.234/claude.app/Contents/MacOS/claude --output-format stream-json --input-format stream-json ...) has no--disallowedToolsand no tool-restricting flags, so the tool is being withheld inside the harness or server-side, not by local configuration.Side note for others trying the workaround: the CLI binary contains the string "Remote Control requires feature-flag evaluation, which is disabled because DISABLE_GROWTHBOOK is set", so this env var silently breaks Remote Control. Not a safe workaround if you rely on remote triggers.
Would appreciate a status update. If subagents are intentionally unavailable in the desktop app for now, it would help to have that stated in the desktop docs.
</details>
These work for me. You need these (the 2nd setting likely being the most important):
"env": {
"CLAUDE_CODE_ENABLE_TASKS": "true",
"CLAUDE_CODE_ENABLE_TODO_TOOLS": "true"
},
From Claude desktop:
Task list: empty — no tasks currently tracked.
ToolSearch
ToolSearch needs a query — what should I look for? (e.g. select:TaskCreate,TaskUpdate to load specific tools by name, or keywords like "web fetch" to search.)
If you're probing which deferred tools actually work in this session, say so and I'll load and smoke-test a set.
Loaded now (callable immediately)
Tool Purpose
Bash Run shell commands (Git Bash)
Read / Write / Edit File I/O
Glob / Grep File and content search
Agent Spawn subagents
Skill Invoke a skill / slash command
Workflow Multi-agent orchestration (opt-in only)
Artifact Publish HTML/MD to claude.ai
SendUserFile Surface a file to you
AskUserQuestion Structured clarifying question
ReportFindings Code-review finding output
ScheduleWakeup /loop dynamic pacing
SuggestSkills Recommend uninstalled skills
ToolSearch Load deferred tool schemas
TaskList Loaded this session — returned empty
MCP servers (loaded)
mcp__ccd_session__* — mark_chapter, spawn_task, dismiss_task, read_widget_context
mcp__Claude_Browser__ — in-app browser: navigate, computer, read_page, find, form_input, get_page_text, javascript_tool, read_console_messages, read_network_requests, resize_window, tabs_, preview_start/stop/list/logs
mcp__visualize__* — read_me, show_widget
Deferred (name only — need ToolSearch to load)
Tasks: TaskCreate, TaskGet, TaskUpdate, TaskOutput, TaskStop
Planning: EnterPlanMode, ExitPlanMode, EnterWorktree, ExitWorktree
Scheduling: CronCreate, CronList, CronDelete, Monitor, PushNotification, RemoteTrigger
Web: WebFetch, WebSearch
Skills/plugins: ListSkills, SearchSkills, ListPlugins, SearchPlugins, SuggestPluginInstall
Misc: NotebookEdit, SendMessage, DesignSync
MCP (deferred): claude-in-chrome__ (real Chrome), ccd_session_mgmt__, ccd_directory__, mcp-registry__, scheduled-tasks__*, terminal__read_terminal
Note on the task tools: per your memory notes, TaskCreate/TaskGet/TaskUpdate are gated by remote flag tengu_rosy_wren with local override CLAUDE_CODE_ENABLE_TODO_TOOLS=true. TaskList loaded and ran fine here, so the gate is open this session.