Task/Todo tools (TaskCreate/TodoWrite) not exposed despite `todoFeatureEnabled: true` — regressed ~2026-07-21, appears account-gated
Summary
The task-tracking tools (TaskCreate, TaskUpdate, TaskList, and TodoWrite) stopped being exposed to the model in every new session on my machine at some point after 2026-07-21 ~14:00 UTC. They were working earlier that same day. todoFeatureEnabled is true in my settings and CLAUDE_CODE_ENABLE_TASKS is unset, so per the documented behavior the Task tools should be enabled.
I have ruled out CLI version, model, terminal emulator, and local config as the cause (evidence below), which points to a server-side / account-level feature gate as the remaining explanation. Filing in case this is an unintended enrollment change or a regression.
Environment
- Claude Code: reproduced on 2.1.216 and 2.1.217 (both present at
~/.local/share/claude/versions/) - Install: native (
installMethod: native), channellatest, auto-updates on - OS: macOS (Darwin 25.5.0)
- Account: Claude Max
- Reproduced under: cmux.app terminal, Warp, and macOS Terminal.app
- Reproduced with: Opus 4.8 (1M context) and Sonnet 5
Expected
With todoFeatureEnabled: true and CLAUDE_CODE_ENABLE_TASKS unset, the TaskCreate/TaskUpdate/TaskList tools should be available to the model, as they were on 2026-07-21.
Actual
None of TaskCreate, TaskUpdate, TaskList, or TodoWrite are exposed to the model in any new session. ToolSearch({query: "select:TaskCreate,TaskUpdate,TaskList,TodoWrite"}) returns "No matching deferred tools found". TaskOutput/TaskStop (background-process management) are present and unaffected.
This is aggravated by a user UserPromptSubmit hook that instructs the model to "call TaskCreate before starting" every task — the model is told to use a tool that no longer exists in its toolset.
Timeline (from local transcripts)
- 2026-07-21 07:57:53Z — first of a run of successful
TaskCreatecalls (v2.1.215) - 2026-07-21 13:57:01Z — last successful
TaskCreatecall (v2.1.216); 20 successful calls total in that session - after ~14:00Z 2026-07-21 — every subsequent new session lacks the tool
- Across all local transcripts,
TaskCreatewas used successfully on versions from 2.1.168 through 2.1.216; zero successful uses after this cutoff on any version
What I ruled out (single-variable checks)
| Hypothesis | Evidence against |
|---|---|
| CLI version (e.g. 2.1.217 removed it) | 2.1.216 exposed it at 13:57 on 07-21 and does not now — identical version, opposite result |
| Model | Fails on both Opus 4.8 and Sonnet 5; the 07-21 working calls were mostly Sonnet 5 |
| Terminal / wrapper | Fails identically under cmux, Warp, and Terminal.app |
| todoFeatureEnabled off | It is true; the binary describes it as "Enable the todo / task tracking panel" |
| CLAUDE_CODE_ENABLE_TASKS=0 | Unset. The gate in the bundle is function TH(){if(Z.CLAUDE_CODE_ENABLE_TASKS===false)return false;return true} → returns enabled |
| Experimental Agent Teams (CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1, teammateMode: auto) | Set since 2026-05-11 — i.e. present the whole time the tool worked; constant, not a delta |
| Child session (CLAUDE_CODE_CHILD_SESSION) | Set only under cmux; Warp/Terminal.app (no child var) still fail |
The only remaining variable that differs between "worked at 14:00 on 07-21" and "fails now" — given identical CLI version, model, and local config — is something resolved outside this machine, i.e. an account-scoped feature gate.
Questions for maintainers
- Is there a server-side feature gate / Statsig experiment controlling exposure of the Task/Todo tools, and did its enrollment change around 2026-07-21?
- If Task tools are being gated behind Agent Teams (folded to team-level task management), is that intended, and is it documented? If so, what is the supported way to keep per-session Task tools while Agent Teams is enabled?
- Is there a client-side override to force the Task tools back on for an account where the gate has turned them off?
Repro
todoFeatureEnabled: true,CLAUDE_CODE_ENABLE_TASKSunset.- Start a fresh session (any terminal, any model).
- Ask the model to list its tools, or
ToolSearch({query: "select:TaskCreate,TodoWrite"}). - Observe the Task/Todo tools are absent despite the setting.
Showing cached comments. Read the full discussion on GitHub ↗
8 Comments
Additional info for duplicate #80213 - I have a Max subscription.
Additionally - tried the downgrade option, and that did not resolve the issue.
Follow-up: I directly tested the Agent Teams hypothesis from the original report and can now rule it out by experiment, not just by inference.
Test (2026-07-23): removed
CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMSfrom both scopes where it was set —~/.claude/settings.jsonand the project.claude/settings.json— then started a fresh session.Note for anyone reproducing: the settings
.envblock re-asserts this variable over a shell-levelCLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=0, so a shell override is not sufficient. It has to be removed from every settings scope.Result, in one session (v2.1.218):
Agent Teams off,
todoFeatureEnabled: true,CLAUDE_CODE_ENABLE_TASKSunset — and the Task/Todo tools are still not exposed. The setting has since been restored.Also reproduced on 2.1.218, so the version list is now 2.1.216 / 2.1.217 / 2.1.218.
Updated status of every hypothesis:
| Hypothesis | Status |
|---|---|
| CLI version | Ruled out — 2.1.216 exposed the tool on 07-21 and does not now |
| Model | Ruled out — Opus 4.8 and Sonnet 5 both affected |
| Terminal / wrapper | Ruled out — cmux, Warp, Terminal.app all affected |
|
todoFeatureEnabled| Ruled out — it istrue||
CLAUDE_CODE_ENABLE_TASKS| Ruled out — unset; gate returns enabled ||
CLAUDE_CODE_CHILD_SESSION| Ruled out — non-child terminals affected too || Agent Teams | Ruled out — directly tested above |
Every local variable I can control has now been eliminated. Unless I'm missing a client-side gate that isn't in settings or env, this looks account-scoped and server-resolved. Happy to run any specific diagnostic or provide transcript excerpts if that would help narrow it.
I see multiple people reporting this issue how. Great. It came out of nowhere. They need to fix this.
Ths remains, SHAMEFULLY, broken today in the latest build:
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.
I just discovered this and it worked for me:
Try this (or equivalent for your environment):
"env": {
"CLAUDE_CODE_ENABLE_TASKS": "true",
"ENABLE_TOOL_SEARCH": "false"
},
Task tracking
TaskCreate, TaskList, TaskGet, TaskUpdate — present and verified working this session
For me it just started working again. WTH.
Update from my side: the tools started working again on their own, mid-session, without applying any workaround.
Full sequence observed inside a single session:
TaskCreate/TaskUpdate/TaskList/TaskGetpresent, but only in the deferred tool pool (i.e. loadable on demand viaToolSearch, not in the main tool list).ToolSearchforselect:TaskCreate,TaskUpdatereturned "No matching deferred tools found".TaskCreate/TaskUpdateworked normally from then on.Closing this. The tools have been working consistently since 27 July, without applying any workaround.
Confirmed again today:
ToolSearch("select:TaskCreate,TaskUpdate")returns both schemas and real calls succeed. Worth noting for anyone who lands here, they're exposed as deferred tools rather than top level, so they don't show up in the tool list until you search for them. That looks identical to "missing" if you don't know to look.