MemoryLake
Back to all articles
TutorialNovember 12, 2026·11 min read

Why Is the Claude Code Task List Empty? Which Models Get the Checklist by Default, How Tasks Survive Compaction, and How to Share One List Across Sessions (2026)

You used to see a checklist in Claude Code: a few lines with pending, in-progress, and done markers that filled in as Claude planned a bigger change. Now you press Ctrl+T and nothing happens, or the list never appears at all. Nothing is broken. On newer models, the tools that write that checklist aren't included by default.

Anthropic's documentation says the task list "fills only in sessions that have the task-tracking tools". And it names where those tools are on by default: "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."

This guide covers what the task list is, why it's empty on newer models, how to turn it back on, what Ctrl+T shows, how tasks survive compaction and resume, how to share one list across sessions and teammates, where task lists are stored and when they're deleted, and what a checklist doesn't hold.

What the task list is

Anthropic describes it as "Claude's to-do checklist: items Claude created to plan multi-step work, with indicators showing what's pending, in progress, or complete."

It's easy to confuse with another view. The documentation separates them: the task list is "separate from the background-task view. To see running shells and subagents, use /tasks instead." The /tasks command lists background work in the current session, including subagents that have finished. The task list is Claude's plan.

Claude writes the list using a set of tools. By default those are the four Task tools: TaskCreate, TaskGet, TaskList, and TaskUpdate. An older tool, TodoWrite, is "Disabled by default in favor of" the four Task tools. You can switch back to it with CLAUDE_CODE_ENABLE_TASKS=0, but only in sessions that have task-tracking tools at all.

Why the list is empty on newer models

The tools are left out of newer models on purpose. Anthropic's tools reference explains: "On every other model, Claude Code leaves the tools out unless you opt in."

The reason is in the next sentence: "On newer models, Claude keeps track of multi-step work without a written checklist, and the tools' definitions and reminders take up context. Without the tools, Claude adds nothing to the task list while it works."

So when you run a newer model, Claude still plans multi-step work. It just doesn't write the plan into the checklist, because it doesn't have the tools to do it. The list stays empty.

Two other cases fall into the same rule:

  • Unrecognized models. "The same applies to a model ID Claude Code doesn't recognize, such as a custom model name served through an LLM gateway."
  • Version. "The default set described here applies in Claude Code v2.1.268 and later." If the list disappeared after an update, compare your version with that line.

There's one exception in the other direction. "In background sessions and in cloud sessions, Claude Code provides the same tools on every model, listed or not."

How to turn the task list back on

If you want the checklist on a newer model, Anthropic lists several ways to opt in:

  • An environment variable. Export CLAUDE_CODE_ENABLE_TODO_TOOLS=1 before you start Claude Code. "Claude Code then provides the same tools on every model and every provider". This requires Claude Code v2.1.233 or later.
  • The allowed-tools flag. Name one of the tools in --allowedTools, for example TaskCreate.
  • The tools flag. List the tools in --tools. Anthropic notes that this flag "restricts the session's built-in tools to the ones it names", so include the other built-in tools you use too.
  • The Agent SDK. The allowedTools and tools options work the same way as the two flags.

Before you turn them on, weigh Anthropic's reason for turning them off. The tools' definitions and reminders take up context, and newer models track multi-step work without them. If you want the checklist mostly to watch progress, that's a fair trade. If you're tight on context, leaving it off may suit the session better.

What Ctrl+T shows

In a session that has the tools, the task list is a toggle. Anthropic's interactive mode reference covers how it behaves:

  • "Press Ctrl+T to toggle the task list view. The display shows up to five tasks at a time."
  • "When Claude hasn't created any checklist items yet, the toggle has no visible effect because there's nothing to display".
  • To see every task or clear the list, ask Claude directly, for example to show all tasks or to clear all tasks.

That second point is the usual source of confusion. On a newer model without the tools, Ctrl+T has nothing to show, so pressing it does nothing.

The view also remembers how you left it. "If you leave the list expanded, Claude Code restores the expanded view the next time you launch into a session that still has tasks, such as with --resume or --continue. When the task list is empty, Claude Code starts it collapsed".

Ctrl+T is the task list, not the transcript. For the full record of what happened in a session, Claude Code has a separate transcript view, covered in our guide to what transcript view shows in Claude Code.

How tasks survive compaction

Long sessions get compacted: Claude Code summarizes earlier parts of the conversation to free context. The task list is one of the things that doesn't depend on that summary. Anthropic says: "Tasks persist across context compactions, helping Claude stay organized on larger projects".

The list is also kept outside the conversation. Anthropic's directory reference lists a tasks/ folder under ~/.claude/ holding "Task lists written by the task tools, one directory per list".

Coming back works the same way. When you resume a session that still has tasks with --resume or --continue, Claude Code restores the list view the way you left it.

How to share one list across sessions

By default, each session's list is its own. To use the same list in more than one session, set an ID. Anthropic's example: CLAUDE_CODE_TASK_LIST_ID=my-project claude.

The environment variable reference describes what it does: "Share a task list across sessions. Set the same ID in multiple Claude Code instances to coordinate on a shared task list, in sessions that have the Task tools."

The ID maps to "a named directory in ~/.claude/tasks/". Any session started with the same ID reads and updates the same list.

Keep the model rule in mind. A session on a newer model without the tools can't read or update the shared list. Each session that should take part needs the tools, either by default or through one of the opt-ins above.

Subagents and agent teams

Task tools follow your session. "A subagent has the task-tracking tools only when your session has them, whatever model the subagent runs."

Agent teams use the task list to coordinate. Anthropic's agent teams documentation says: "In agent teams, teammates share a task list, claim work, and communicate directly with each other." It describes how that list works:

  • "Tasks have three states: pending, in progress, and completed."
  • "A task can also depend on other tasks and shows as blocked in the task list until they're completed."
  • "Teammates don't self-claim a blocked task, but you or the lead can still assign it."

Without the tools, teams fall back to messages: "Agents without the Task tools coordinate through messages instead of the shared task list."

A team's list has its own folder, ~/.claude/tasks/{team-name}/, and the documentation notes: "This directory stays on disk after the session ends."

The rules for split-pane teammates are more detailed. A split-pane teammate is a separate Claude Code process, and if you exported CLAUDE_CODE_ENABLE_TODO_TOOLS in your shell, Anthropic says the teammate doesn't get it automatically. Its suggested fix is to pass the setting through --settings when you start your session.

Where task lists live, and when they're deleted

Task lists are files on your machine, and they follow Claude Code's cleanup rules.

Automatic cleanup. The tasks/ folder is in the list of paths Claude Code deletes once they're older than cleanupPeriodDays. "The default is 30 days and the minimum is 1".

Deleting it yourself. In Anthropic's table of what you lose when you delete paths under ~/.claude, the entry for ~/.claude/tasks/ reads: "Your task lists, including any still in use".

Purging a project. claude purge deletes the state Claude Code holds for one project, including "Per-session tasks/, debug/, and file-history/ entries". It prints the plan and asks for confirmation first.

You may also see a todos/ folder. Anthropic lists it among "Legacy directories from older versions. No longer written."

What a checklist doesn't hold

The task list tracks steps and their status. That's its job. Anthropic's documentation describes items Claude created to plan multi-step work, and it doesn't describe them as a place for the reasoning behind the plan, such as why one step comes before another or which approach you already ruled out.

Those parts of a project tend to outlast any single list. A list can be cleared, can age out after the retention period, or can simply be finished. If the reasons matter for the next session, they need to be written somewhere meant for them.

What people try first

Pressing Ctrl+T on a newer model. Without the task tools, there's nothing to display.

Reinstalling Claude Code. Since v2.1.268, an empty list on a newer model is the documented default.

Opening /tasks to find the checklist. That command shows background work, not the plan.

Setting a shared list ID on a session without the tools. The session can't use the list until it has the tools.

Relying on the list for the why. It holds steps and status, not the reasoning behind them.

The Fix: Get the checklist you expect

Step 1: Check which model the session uses

If it's not Opus 4.7, Sonnet 4.6, Haiku 4.5, or earlier, the task tools are off by default.

Step 2: Opt in if you want the list

Export CLAUDE_CODE_ENABLE_TODO_TOOLS=1 before starting Claude Code, or name a Task tool in --allowedTools.

Step 3: Share a list on purpose

Set CLAUDE_CODE_TASK_LIST_ID to the same value in each session that should work from one list.

Step 4: Write down the reasoning

Keep the decisions behind the plan, such as order, constraints, and rejected approaches, outside the checklist.

Setting this up in MemoryLake

A task list is a good record of what's left to do. The decisions behind it, such as why a migration runs before a backfill, are context the next session needs whether or not it has a checklist.

MemoryLake is a memory layer for that kind of project context, such as decisions, constraints, and conventions, kept in one place you maintain and available to the assistants you connect, such as ChatGPT, Claude Code, and Codex.

You write the entries yourself, in your own words. Nothing is read out of, written to, or deleted from your task lists, your ~/.claude folder, your session transcripts, your CLAUDE.md files, your auto memory, or any vendor's store. Task tools, compaction, and cleanup work the way Anthropic describes them.

Step 1: Create an API key

Sign in and generate a key from the dashboard. Store it outside your repositories, like any other credential.

The MemoryLake console showing the API keys screen, where a new key is created and copied for use in an agent
The MemoryLake console showing the API keys screen, where a new key is created and copied for use in an agent

Step 2: Upload your first memories

Start with what you wrote in Step 4 of the fix: the order of the work and why, the constraints, and the approaches you've ruled out. One decision per entry.

The MemoryLake workspace with the first documents uploaded, listing each file as it becomes searchable memory
The MemoryLake workspace with the first documents uploaded, listing each file as it becomes searchable memory

Step 3: Connect your AI & agents

Connect Claude Code and any other assistants you use. A new session, with or without a task list, can draw on the same decisions.

The MemoryLake integrations screen listing the AI clients and agent frameworks that can be connected to the memory layer
The MemoryLake integrations screen listing the AI clients and agent frameworks that can be connected to the memory layer

What this changes in practice

The first difference is a plan that survives its checklist. When the list is finished or cleared, the reasoning is still written down.

The second is less dependence on model defaults. Whether the session has task tools or not, the context is the same.

The third is continuity across tools. Codex or another assistant working on the same repository can use the same entries.

Best practices for the Claude Code task list

Know the default. Task tools are on by default only for Opus 4.7, Sonnet 4.6, Haiku 4.5, and earlier.

Opt in deliberately. The tools cost context, and newer models track work without them.

Use Ctrl+T for the plan and /tasks for background work. They're separate views.

Share lists with an ID. Every participating session needs the task tools.

Remember retention. Task lists are swept after cleanupPeriodDays, 30 days by default.

Check split-pane teammates. An exported variable doesn't pass to them automatically.

Keep the why elsewhere. The list holds steps, not reasons.

Conclusion

If the Claude Code task list is empty, check whether the session's model has the task-tracking tools. Since v2.1.268, they're on by default only for Opus 4.7, Sonnet 4.6, Haiku 4.5, and earlier models. Anthropic says newer models track multi-step work without a written checklist, and the tools take up context. Background and cloud sessions get them on every model.

If you want the list back, set CLAUDE_CODE_ENABLE_TODO_TOOLS=1 or name a Task tool in --allowedTools. Tasks persist across compaction, sessions can share a list through CLAUDE_CODE_TASK_LIST_ID, and task lists are deleted with other data after cleanupPeriodDays. Keep the reasoning behind the plan somewhere the next session can read.

Frequently asked questions

Why is my Claude Code task list empty?

One documented cause is that the session's model doesn't have the task-tracking tools. Anthropic says they're on by default only for Opus 4.7, Sonnet 4.6, Haiku 4.5, and earlier models.

How do I turn the task list back on?

Export CLAUDE_CODE_ENABLE_TODO_TOOLS=1 before starting Claude Code, or name a Task tool in --allowedTools.

Why does Ctrl+T do nothing?

When Claude hasn't created any checklist items, the toggle has no visible effect because there's nothing to display.

Do tasks survive compaction?

Yes. Anthropic says tasks persist across context compactions.

How do I share a task list across sessions?

Set CLAUDE_CODE_TASK_LIST_ID to the same value in each session. Each one needs the task tools.

What's the difference between the task list and /tasks?

The task list is Claude's checklist for multi-step work. /tasks shows background work such as running shells and subagents.

How long does Claude Code keep task lists?

Task lists are deleted with other application data once they're older than cleanupPeriodDays, which defaults to 30 days.