◉CLAUDE LABJP
●2.1.285 — Claude Code 2.1.285 (Sep 29): set CLAUDE_CODE_DISABLE_WEB_FETCH to turn off WebFetch, and run claude --desktop to open the current directory in the desktop app●SONNET5.5 — With 2.1.284, claude-sonnet-5-5 is the default Sonnet on the API: 1M context, $2 / $10 per Mtok, $0.20 cache reads●10/07 — 7 days left until the old spellings of Claude Desktop / Cowork managed-config keys stop being accepted. After the cutoff they fail closed●WINDOWS — Two Windows questions keep coming up in Issues: the desktop app won't relaunch, and it stays on top of every other window. Check for an orphaned process before touching settings●NEW — The stable Claude Code channel still hasn't received two default-model changes●BING — 1,055 Bing sessions in 28 days, up four weeks running. Readers land on billing errors, the Academic plan, Figma MCP and PowerShell●2.1.285 — Claude Code 2.1.285 (Sep 29): set CLAUDE_CODE_DISABLE_WEB_FETCH to turn off WebFetch, and run claude --desktop to open the current directory in the desktop app●SONNET5.5 — With 2.1.284, claude-sonnet-5-5 is the default Sonnet on the API: 1M context, $2 / $10 per Mtok, $0.20 cache reads●10/07 — 7 days left until the old spellings of Claude Desktop / Cowork managed-config keys stop being accepted. After the cutoff they fail closed●WINDOWS — Two Windows questions keep coming up in Issues: the desktop app won't relaunch, and it stays on top of every other window. Check for an orphaned process before touching settings●NEW — The stable Claude Code channel still hasn't received two default-model changes●BING — 1,055 Bing sessions in 28 days, up four weeks running. Readers land on billing errors, the Academic plan, Figma MCP and PowerShell
Articles/Claude Code
⟐ Claude Code/2026-08-16Intermediate

Tracking Multi-Step Work in Claude Code Now That the Todo Tools Are Off by Default

Since Claude Code v2.1.233, TodoWrite and the Task tools are left out on the newer models. Here are the three branches to check before you set the opt-in variable, the PostToolUse ledger I put in their place, and the measured point where that ledger quietly corrupts under parallel agents.

Claude Code258hooks19task trackingsubagents11operations30

✦ Premium Article

I handed Claude Code my usual morning routine. As an indie developer running several apps and sites on my own, the pre-release checks and the recurring site maintenance all go out as fixed multi-step sequences.

That morning the screen looked different. The work was moving along, but the progress checklist that normally stacks up on the left stayed empty the whole way through.

What made it strange was that the same sequence, running on a schedule, still showed its tasks exactly as before. If something had broken, it should have broken in both places. When only one side goes quiet, the cause is usually a changed assumption rather than a changed setting.

What v2.1.233 changed was whether the tools get loaded at all

The cause was not on my side. As of Claude Code v2.1.233, five tools — TodoWrite, TaskCreate, TaskGet, TaskUpdate, and TaskList — are not loaded on Opus 4.8, Sonnet 5, Fable 5, Mythos 5, or later members of those families unless you opt in.

The reasoning is spelled out in the tools reference: those models keep track of multi-step work without a written checklist, and the tool definitions plus their reminders take up context, so Claude Code leaves them out. With the tools absent, nothing gets added to the task list while the work runs.

So it was never a case of tasks failing to appear. The instrument for adding them simply was not in the room. Miss that distinction and you will spend the morning suspecting your prompt or the model's reasoning.

The confusing part is that the same goal — "I want the checklist back" — points at opposite settings depending on the model.

Session modelLoaded by defaultVariable to change it
Opus 4.8 / Sonnet 5 / Fable 5 / Mythos 5 and laterNone of the fiveCLAUDE_CODE_ENABLE_TODO_TOOLS=1 to add them
Anything else, such as Opus 4.7The four Task toolsCLAUDE_CODE_ENABLE_TASKS=0 to fall back to TodoWrite

One is addition, the other is subtraction. Carry a config file over from an older setup and the two will not line up.

Three branches to check before you set the variable

Setting CLAUDE_CODE_ENABLE_TODO_TOOLS=1 brings all five back on every model and every provider. But if you set it before isolating the cause, you can end up either fixing nothing or papering over a mismatch that resurfaces somewhere else. Here is the order I worked through.

1. Is the model even in scope? If you see the same symptom on a model outside that list, this change is not your cause. Checking /model first takes seconds.

2. Which surface are you looking at? This is where I lost the most time. Background sessions and Claude Code on the web provide all five regardless of model. That is exactly why my interactive session had gone quiet while the scheduled run kept listing tasks. Trying to reproduce the behavior in a local terminal will never match what the web surface does.

3. Are you looking from inside a subagent? Whether a subagent gets these tools depends not on the subagent's own model but on whether your session has them. Point a child at Opus 4.7 and it still comes up empty if the parent runs Sonnet 5 without the tools loaded.

That third point has a tail. With agent teams, an in-process teammate follows your session, but a teammate in its own split pane runs as a separate Claude Code process, so its own model decides. Which means one team can contain members who see the shared task list and members who do not. Agents without the Task tools coordinate through messages instead.

If one member of a team keeps failing to pick up work, look at this boundary before you rewrite the instructions. I spent the better part of an hour on the instructions first.

There is a cheaper way to settle all three questions than reasoning about them: ask the session what it is holding. Typing "what tools do you have access to?" gets you a plain answer about the current set, which is faster than inferring the answer from the model name and the surface. I now do this first and reason second, because the three branches interact — a background run of the same subagent on the same model behaves differently from the interactive one, and no amount of reading the config tells you which case you are in.

One caveat on that check: --tools restricts a session to exactly the built-in tools you name. If you reach for it to bring back TaskCreate and forget to list Edit and Bash alongside it, you get the checklist and lose the ability to do the work. --allowedTools is the safer of the two when all you want is one tool back.

✦

Thank you for reading this far.

Continue Reading

What follows includes implementation code, benchmarks, and practical content we hope you'll find useful. This site runs without ads — server and development costs are supported entirely by members like you. If it's been helpful, we'd be truly grateful for your support.

WHAT YOU'LL LEARN
✦You will be able to narrow a missing task list down to configuration, surface, or subagent scope within a few minutes of noticing it
✦You will be able to close the gap where a shared append-only log silently corrupts before parallel agents ever hit it
✦You will be able to decide, from the shape of your own work, whether to restore the checklist or move to an external ledger
Secure payment via Stripe · Cancel anytime
✦

Unlock This Article

Get full access to the rest of this article. Buy once, read anytime. This site is ad-free — your support goes directly toward keeping it running.

or
Unlock all articles with Membership →
Share

Thank You for Reading

Claude Lab is ad-free, supported entirely by members like you. We publish practical guides daily with implementation code, benchmarks, and production-ready patterns. If you've found it useful, we'd love to have you on board.

  • ✦Copy-paste ready implementation code
  • ✦New advanced guides published daily
  • ✦$5/mo or $15 for lifetime access
View Membership →

Related Articles

⟐ Claude Code2026-09-22
Taking Inventory of Worktrees That Were Supposed to Be Gone
Isolated worktrees my subagents created were never folded away. Here is what I measured in git 2.34.1 about when remove succeeds, the branches that outlive the trees, the 12 MB per-tree difference, and how I decide who owns cleanup.
⟐ Claude Code2026-09-25
The Week Opus 5.5 Became the Default, I Counted the Places I'd Left as Aliases
Claude Code 2.1.280 made Opus 5.5 the default Opus and moved Pro's default from Sonnet to Opus. Before touching a single setting, I checked three things: what the alias resolves to, whether a saved /effort carries over, and what $0.20 cache reads do to a monthly estimate. Scripts included.
⟐ Claude Code2026-09-02
Two hooks that record every model switch and stop the ones you never agreed to
Build a PostModelSwitch hook that logs every model change and a PreModelSwitch hook that blocks unapproved switches during unattended runs. Complete scripts, measured timings, and the reason the two jobs must stay separate.
📚RECOMMENDED BOOKS
Build a Large Language Model (From Scratch)
Sebastian Raschka
LLM Dev
Prompt Engineering for LLMs
Berryman & Ziegler
Prompting
AI Engineering
Chip Huyen
AI Eng
* Contains affiliate links