Shabash
Blog · Claude Code guides

Why did Claude Code's todo list stop showing up?

Short answer

Claude Code provides the task-tracking tools that write the todo list by default only on Opus 4.7, Sonnet 4.6, Haiku 4.5 and earlier models, so on Opus 4.8, Sonnet 5 and newer the list stays empty. Start Claude with CLAUDE_CODE_ENABLE_TODO_TOOLS=1 claude to get them back.

By Robin Mehta · October 29, 2026

Press Ctrl+T on Opus 4.8, Sonnet 5 or anything newer and nothing appears. Claude Code gives those models no task tools at all: no TaskCreate, no TodoWrite, and so no todo list for Claude to write.

Nothing in the session tells you. Claude works through the same multi-step job it always did, but the checklist you used to watch it tick off is gone. Anthropic took it out on purpose.

Opus 4.7, Sonnet 4.6 and Haiku 4.5 still have a list

Straight from the tools reference:

The task-tracking tools, TaskCreate, TaskGet, TaskUpdate, TaskList, and TodoWrite, are available by default only on Opus 4.7, Sonnet 4.6, Haiku 4.5, and earlier models.

That list is the default in Claude Code v2.1.268 and later. Every other model gets the tools only if you ask, and the docs say what that costs you: "without the tools, Claude adds nothing to the task list while it works."

An unrecognised model ID counts as every other model too, so a team whose gateway renames the model loses the list whatever sits behind it.

Two kinds of session ignore all of this: in background sessions and in cloud sessions, Claude Code provides the same tools on every model, listed or not.

CLAUDE_CODE_ENABLE_TODO_TOOLS=1 brings the tools back

For one session:

CLAUDE_CODE_ENABLE_TODO_TOOLS=1 claude

The variable needs Claude Code v2.1.233 or later. On an older build it does nothing, so run claude --version first if you aren't sure.

To stop typing it, put it in the env block of ~/.claude/settings.json:

{
  "env": {
    "CLAUDE_CODE_ENABLE_TODO_TOOLS": "1"
  }
}

Claude Code then "provides the same tools on every model and every provider". The same block in a repo's .claude/settings.json reaches your teammates, with one catch from the settings docs: most env values from a committed file "apply only after each teammate trusts the folder".

The docs give three narrower ways in:

TodoWrite stays gone when you set CLAUDE_CODE_ENABLE_TASKS=0

The two variable names look alike and do different things.

CLAUDE_CODE_ENABLE_TASKS chooses which tools you get in a session that already has them: the four Task tools by default, or the older single TodoWrite when you set it to 0. Set it to 0 on a model that has neither and you still get neither.

People tried it first, because it's the documented fallback. In July it had its own bug report, filed on the 14th on v2.1.209: "CLAUDE_CODE_ENABLE_TASKS=0 does not restore TodoWrite on Opus 4.8 / Sonnet 5 / Fable 5 (no task/todo tool available at all)". One flag removed the Task tools and TodoWrite together, so there was nothing to fall back to.

Subagents inherit the fix, split-pane teammates don't

A subagent has the task tools only when your session has them, whatever model the subagent itself runs on. So the fix above covers your subagents for free.

A teammate in a split pane is a separate Claude Code process, and Claude Code passes it a fixed set of environment variables that leaves out whatever you exported in your shell. Start the session this way and the teammate gets it too:

claude --settings '{"env":{"CLAUDE_CODE_ENABLE_TODO_TOOLS":"1"}}'

Naming the tools in --tools works as well, because a split-pane teammate inherits that list and your deny rules. Without the task tools, the docs say, "an agent coordinates with its team through messages instead of the shared task list", so the agents still divide the work and you read it in their messages instead of one list. If you run several at once, how to manage multiple Claude Code sessions covers keeping their work apart.

Skills that name TodoWrite fail outright

If a skill of yours tells Claude to call TodoWrite, it hits this:

No such tool available: TodoWrite. TodoWrite exists but is not enabled in this context.

That error has been around longer than the model gate. It opened superpowers #1518 on 11 May 2026, when TaskCreate and friends replaced TodoWrite as the default and several skills in that pack still called for it by name. The fix, shipped on 1 June, was to stop naming the tool: ask for the work in plain words ("create todos", "mark it complete") and let the session use whichever tool it has. That holds up better today, when a newer model has neither name available.

Check your own skills and memory files for the word:

grep -rn TodoWrite ~/.claude/skills ~/.claude/CLAUDE.md .claude/

Check your model, then your tool list

Everything above turns on which model you're on, and /model answers that inside the session. For the tools, ask Claude:

What tools do you have access to?

For a yes-or-no answer from outside a session, the tips site wmedia gives a one-liner. A stream-json run opens with a system/init event, which reports "session metadata including the model, tools, MCP servers, and loaded plugins", so check whether that event names them:

claude -p --output-format stream-json --verbose "hi" | grep -c TaskCreate

0 means the tools aren't there and 1 means they are. It answers for your default model, so add --model opus or another name to ask about that one.

Do that before you look for a stranger cause. One report of the tools vanishing with no model change never got an answer: on v2.1.237, someone deleted ~/.claude/.credentials.json, signed in with a second account on the same plan, and found the task tools gone from the tool set rather than just the view (#88119). It never says which model, and v2.1.237 already shipped the model gate, so a newer model is the likely answer. The inactivity bot closed it on 9 October.

Why the tools went away in July

This arrived as a server-side switch, not a release. On 8 July 2026, on v2.1.204, issue #75577 reported the Task tools silently gone on Opus 4.8, Sonnet 5 and Fable 5: no error, no warning, and no way to turn them back on. The switch had a name, the experiment flag tengu_vellum_ash, and it was rolled back on 24 July.

It came back as the documented default in v2.1.233. Anthropic closed the reports with the changelog line, quoted here:

Todo/task-tracking tools (TaskCreate/Get/Update/List, TodoWrite) are no longer available on Opus 4.8, Sonnet 5, Fable 5, Mythos 5, and newer models; set CLAUDE_CODE_ENABLE_TODO_TOOLS=1 to bring them back

The reason is in the tools reference: "On newer models, Claude keeps track of multi-step work without a written checklist, and the tools' definitions and reminders take up context." The SDK docs go further and say not to turn them on unless something reads the tool calls, "whether to log task activity or to render its own progress display". Turn them on if you read the list while Claude works, and leave them off if you never pressed Ctrl+T before today.

Keep one list across sessions

Tasks survive a context compaction. Leave the panel expanded and Claude Code restores the expanded view the next time you open a session that still has tasks, with --resume or --continue. When the list is empty it starts collapsed instead. Both flags are in how to resume a Claude Code session.

To point several sessions at the same list, name it:

CLAUDE_CODE_TASK_LIST_ID=my-project claude

Claude Code then keeps that list in its own folder under ~/.claude/tasks/, as the task list docs describe, and every session you start with that name reads and writes it.

A named list still only covers the job in front of you. The work you left half-done in your other sessions this week is a separate problem, and tracking your Claude Code work across projects has the skills that read it back out of your own history.

Shabash, the Mac app I'm building, writes each piece of work its own checklist, and your agent ticks the steps off as it goes. To try it, book a 30-minute call.

Questions

Why is my Claude Code todo list empty?

Your model doesn't have the tools that write it. Claude Code provides TaskCreate, TaskGet, TaskUpdate, TaskList and TodoWrite by default only on Opus 4.7, Sonnet 4.6, Haiku 4.5 and earlier models. On anything newer, including a model name Claude Code doesn't recognise, it leaves them out and the list has nothing to show.

Does CLAUDE_CODE_ENABLE_TASKS=0 bring the todo list back?

No. That variable picks which tools you get in a session that already has them: the four Task tools by default, or the older TodoWrite when you set it to 0. In a session whose model has neither, setting it to 0 changes nothing. CLAUDE_CODE_ENABLE_TODO_TOOLS=1 is the one that turns them on, on Claude Code v2.1.233 or later.

Which models have Claude Code's task tools?

Opus 4.7, Sonnet 4.6, Haiku 4.5 and earlier, as of Claude Code v2.1.268. Opus 4.8, Sonnet 5, Fable 5, Mythos 5 and later models get them only when you opt in, and so does any model ID Claude Code doesn't recognise, such as a custom name served through a company gateway.

Why did Anthropic turn the todo tools off?

Two reasons, from Claude Code's own docs: newer models keep track of multi-step work without writing a checklist, and the tools' definitions and reminders take up context. Claude still works through the same multi-step job without writing down where it is.