Skip to content

How to Track Todo Progress in Claude Code with Claude HUD Statusline

When Claude Code works on complex tasks, it uses the TodoWrite tool to track progress. But checking the conversation to see what’s happening gets tedious quickly. I wanted a way to see task progress at a glance without scrolling through transcript logs.

That’s where Claude HUD’s todo progress display comes in — it shows the current in-progress task and completion count right in the statusline.

The Problem: Hidden Progress

I’ve been using Claude Code for multi-step implementations. When Claude breaks down a feature into tasks, it writes them to TodoWrite. But that information lives in the conversation. To see progress, I had to:

  1. Scroll back through the transcript
  2. Find the last TodoWrite call
  3. Parse the todo list mentally

Not ideal when Claude is running autonomously and I just want to check status.

Enabling Todo Progress

I found the setting in Claude HUD’s configuration. Run the configure command:

terminal
/claude-hud:configure

Then select “Agents & Todos” to enable the display. Alternatively, edit the config directly:

claude-hud-config.json
{
"display": {
"showTodos": true
}
}

Once enabled, the statusline shows progress in real-time.

What It Looks Like

When a task is in progress, I see something like:

statusline display
▸ Fix authentication bug (2/5)

The arrow () marks the current in-progress task. The numbers show completed count over total count. As tasks complete, the count updates automatically.

Another example:

statusline display
▸ Implement user registration (3/8)

The display updates as Claude works through tasks — when it completes one, the count increments and the next task becomes the active one.

How It Works Under the Hood

Claude HUD parses the transcript JSONL file for TodoWrite tool calls. The todo items have three possible statuses:

types.ts
export interface TodoItem {
content: string;
status: 'pending' | 'in_progress' | 'completed';
}

The HUD extracts these items, counts completed vs total, and finds whichever task has in_progress status to display as the current item.

Why This Matters

Complex tasks often involve 5, 10, or more steps. Without visibility, I had no quick way to know:

  • Is Claude still working or waiting for input?
  • How far along is the task?
  • What’s the current step?

The todo progress display answers all three questions in a single line. I can glance at the statusline and know exactly where things stand.

Using TodoWrite Effectively

Claude uses TodoWrite for structured task tracking. Here’s what a typical call looks like:

TodoWrite example
TodoWrite({
todos: [
{ content: "Fix authentication bug", status: "completed" },
{ content: "Add unit tests", status: "in_progress" },
{ content: "Update documentation", status: "pending" }
]
})

When I prompt Claude to break down complex work, it creates these structured todo lists. The HUD then surfaces this information in the statusline.

Quick Summary

Todo progress in Claude HUD gives me visibility into multi-step task completion without leaving the conversation. Enable it via /claude-hud:configure and selecting “Agents & Todos”. The display shows the current in-progress task with a completion count, updating in real-time as work progresses.

Final Words + More Resources

My intention with this article was to help others share my knowledge and experience. If you want to contact me, you can contact by email: Email me

Here are also the most important links from this article along with some further resources that will help you in this scope:

Oh, and if you found these resources useful, don’t forget to support me by starring the repo on GitHub!

Comments