<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Jake Marsh</title>
    <description>The latest articles on DEV Community by Jake Marsh (@jakemarsh).</description>
    <link>https://dev.to/jakemarsh</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4216276%2F4206e642-ecf9-4f36-9fc4-bfab46c328a5.png</url>
      <title>DEV Community: Jake Marsh</title>
      <link>https://dev.to/jakemarsh</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jakemarsh"/>
    <language>en</language>
    <item>
      <title>How to see what your coding agents are doing</title>
      <dc:creator>Jake Marsh</dc:creator>
      <pubDate>Fri, 30 Oct 2026 02:45:33 +0000</pubDate>
      <link>https://dev.to/jakemarsh/how-to-see-what-your-coding-agents-are-doing-42fc</link>
      <guid>https://dev.to/jakemarsh/how-to-see-what-your-coding-agents-are-doing-42fc</guid>
      <description>&lt;p&gt;I usually have a few coding agents going at once: Claude Code on one repo, Codex on another, sometimes Cursor on a third. The hard part now is knowing, at a glance, which one is halfway through, which one finished, and which one has been sitting on a question for me.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt; have each agent write its plan as steps, report "step N of M" as it goes, and block with a question when it needs you. Put all of that on one board that updates live. I built this into Taskhold, a task list I share with my agents, but the habits work with any tool your agent can call.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why not just watch the terminals?
&lt;/h3&gt;

&lt;p&gt;Because there are several of them, they scroll, and a question an agent asked twenty minutes ago looks exactly like the output around it. A per-session todo list helps inside one session, but it ends with the session and lives on one machine. I wanted one view across agents, repos and machines, that I could also check from my phone.&lt;/p&gt;

&lt;h3&gt;
  
  
  What should an agent report?
&lt;/h3&gt;

&lt;p&gt;Four things, and only four:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;A plan as ordered steps&lt;/strong&gt; before it starts. In Taskhold that's one MCP call, &lt;code&gt;taskhold_plan&lt;/code&gt;, which turns the task into steps.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Progress as it goes&lt;/strong&gt;: either a percent or "N of M", plus one short line about what it's doing right now (&lt;code&gt;taskhold_progress&lt;/code&gt;). Steps beat percentages; agents are much better at "finished step 3 of 5" than at guessing 60%.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Blocked, with a question&lt;/strong&gt; when it needs a decision, access or information (&lt;code&gt;taskhold_block&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Done, with a summary&lt;/strong&gt; of what changed (&lt;code&gt;taskhold_complete&lt;/code&gt;).&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  What does the board show?
&lt;/h3&gt;

&lt;p&gt;One card per task in progress: a progress bar split by step, which agent is on it, how long it has run, an estimate of time left, and the current step's message. Blocked tasks go to the top with the agent's question and a reply box. Finished tasks drop into a "recently done" list, and there are optional desktop notifications for blocked and finished.&lt;/p&gt;

&lt;h3&gt;
  
  
  How does the agent get my reply?
&lt;/h3&gt;

&lt;p&gt;It asks "what changed since my last check?" with &lt;code&gt;taskhold_updates&lt;/code&gt;, which takes a cursor and returns only what the person changed: replies, new tasks, priority changes. The agent calls it between steps, so I can steer it mid-task without stopping the session.&lt;/p&gt;

&lt;h3&gt;
  
  
  How accurate is the time-left estimate?
&lt;/h3&gt;

&lt;p&gt;It's deliberately simple: time elapsed divided by the fraction done. It stays hidden until the agent is at least 5% in and 30 seconds have passed, because before that it's a guess, and a wrong number is worse than none.&lt;/p&gt;

&lt;h3&gt;
  
  
  How do you know an agent died?
&lt;/h3&gt;

&lt;p&gt;Liveness, not the bar. Each card shows whether the agent is live (reported in the last 2 minutes), quiet, or stale (nothing for 15 minutes). A stale card at 90% usually means the session ended and the task needs someone to pick it back up.&lt;/p&gt;

&lt;h3&gt;
  
  
  How is it built?
&lt;/h3&gt;

&lt;p&gt;Every change an agent or person makes (create, status, progress, note, edit) writes a row to an events table, and the row id is the cursor for everything. The board streams new rows over server-sent events with an in-process wake for instant updates, a 3 second poll as a backstop and a 15 second ping so proxies keep the connection open. One gotcha if you do SSE from Next.js: its compression buffers the stream unless you send &lt;code&gt;Cache-Control: no-transform&lt;/code&gt;; &lt;code&gt;X-Accel-Buffering: no&lt;/code&gt; handles nginx.&lt;/p&gt;

&lt;h3&gt;
  
  
  How do I set it up?
&lt;/h3&gt;

&lt;p&gt;In Taskhold you create a setup URL in Settings and paste it to your agent with "set this up". The markdown it fetches contains a fresh API key, the MCP config for that client (Claude Code, Cursor, Codex, Windsurf, VS Code, Gemini CLI) and a short rules snippet telling the agent to plan, report progress and block with questions. It's $12 a month with a 7-day trial.&lt;/p&gt;

&lt;p&gt;If you don't want another tool, add this to your CLAUDE.md or rules file and you'll get most of the habit inside a single session:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Before starting a task, write your plan as 3 to 7 numbered steps.
After each step, say "Step N of M done: &amp;lt;one line&amp;gt;".
If you need a decision from me, stop and ask one specific question.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;What do you use to keep track of agents running in parallel? I'd like to hear what works for you.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://taskhold.com/guides/monitor-coding-agent-progress?ref=devto" rel="noopener noreferrer"&gt;taskhold.com&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>claude</category>
      <category>mcp</category>
    </item>
    <item>
      <title>Why Claude Code's task list is empty, and how to get it back</title>
      <dc:creator>Jake Marsh</dc:creator>
      <pubDate>Fri, 30 Oct 2026 02:45:10 +0000</pubDate>
      <link>https://dev.to/jakemarsh/why-claude-codes-task-list-is-empty-and-how-to-get-it-back-22lk</link>
      <guid>https://dev.to/jakemarsh/why-claude-codes-task-list-is-empty-and-how-to-get-it-back-22lk</guid>
      <description>&lt;p&gt;&lt;strong&gt;Short answer:&lt;/strong&gt; Since Claude Code v2.1.268 the task tools (TaskCreate, TaskGet, TaskList, TaskUpdate) are on by default only on Opus 4.7, Sonnet 4.6, Haiku 4.5 and earlier models. On newer models Claude adds nothing to the list, so Ctrl+T shows nothing. Start Claude Code with CLAUDE_CODE_ENABLE_TODO_TOOLS=1 to bring the list back.&lt;/p&gt;

&lt;p&gt;If Claude used to show a checklist while it worked and now doesn't, nothing is broken. The list is filled by Claude calling task tools, and on newer models Claude Code no longer gives it those tools unless you ask. If you want progress you can see from outside the terminal, Taskhold's live board shows each task's steps as the agent reports them. More in &lt;a href="https://taskhold.com/vs/claude-code-tasks" rel="noopener noreferrer"&gt;Claude Code's tasks compared&lt;/a&gt;, &lt;a href="https://taskhold.com/for/claude-code" rel="noopener noreferrer"&gt;Taskhold for Claude Code&lt;/a&gt; and &lt;a href="https://taskhold.com/guides/monitor-coding-agent-progress" rel="noopener noreferrer"&gt;seeing what your agent is doing&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The fix
&lt;/h2&gt;

&lt;p&gt;Set the variable when you start Claude Code. The docs say this provides the task tools on every model and every provider:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;CLAUDE_CODE_ENABLE_TODO_TOOLS&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;1 claude

&lt;span class="c"&gt;# or for every session, in ~/.zshrc or ~/.bashrc&lt;/span&gt;
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;CLAUDE_CODE_ENABLE_TODO_TOOLS&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Naming one of the tools also turns them on for that session, for example claude --allowedTools TaskCreate, or listing them in --tools. Background sessions started from agent view and cloud sessions get the tools on every model without any setting.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why the default changed
&lt;/h2&gt;

&lt;p&gt;Claude Code's tools reference gives the reason: newer models keep track of multi-step work without a written checklist, and the tools' definitions and reminders take up context on every turn. So the list is off where it adds the least, and you can opt back in when you want to see the plan.&lt;/p&gt;

&lt;h2&gt;
  
  
  Other reasons the list looks empty
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Claude hasn't made a checklist yet. Ctrl+T toggles the view, and with nothing in the list the toggle has no visible effect.&lt;/li&gt;
&lt;li&gt;The view shows up to five tasks at a time, so a long plan looks shorter than it is.&lt;/li&gt;
&lt;li&gt;You're looking at /tasks. That lists background shells and subagents, not Claude's checklist.&lt;/li&gt;
&lt;li&gt;A model ID Claude Code doesn't recognize, such as a custom name behind an LLM gateway, is treated like a newer model: no tools unless you opt in.&lt;/li&gt;
&lt;li&gt;Sharing a list across sessions with CLAUDE_CODE_TASK_LIST_ID still needs the tools in each session.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  When you want the plan outside the terminal
&lt;/h2&gt;

&lt;p&gt;The built-in list is a good checklist for the session in front of you. It lives in ~/.claude/tasks/ on one machine and in one terminal. If you want to see the plan from a browser or your phone, across Claude Code and other agents, the agent has to report it somewhere shared.&lt;/p&gt;

&lt;p&gt;Taskhold is built for that: Claude Code plans each task into steps with taskhold_plan and reports progress with taskhold_progress, and you watch it on a live board, on any model, alongside Codex or Cursor. Both can run at once: the built-in list for Claude's own short checklist, Taskhold for the tasks you queue and follow.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Does turning the task tools back on cost anything?
&lt;/h3&gt;

&lt;p&gt;The tool definitions and their reminders use some context on every turn, which is the reason they're off by default on newer models. Nothing else changes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is TodoWrite coming back?
&lt;/h3&gt;

&lt;p&gt;TodoWrite is disabled by default in favor of the four Task tools. Where the task tools are available, setting CLAUDE_CODE_ENABLE_TASKS=0 gives you TodoWrite instead.&lt;/p&gt;

&lt;h3&gt;
  
  
  Which Claude Code version changed this?
&lt;/h3&gt;

&lt;p&gt;The tools reference says the default set applies in Claude Code v2.1.268 and later. Run claude --version to check yours.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://code.claude.com/docs/en/tools-reference#task-tool-availability" rel="noopener noreferrer"&gt;Claude Code docs: task tool availability&lt;/a&gt;, checked 2026-10-26&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://code.claude.com/docs/en/interactive-mode#task-list" rel="noopener noreferrer"&gt;Claude Code docs: task list&lt;/a&gt;, checked 2026-10-26&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Related
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://taskhold.com/vs/claude-code-tasks.md" rel="noopener noreferrer"&gt;Taskhold vs Claude Code's built-in task list&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://taskhold.com/guides/monitor-coding-agent-progress.md" rel="noopener noreferrer"&gt;See what your coding agent is doing right now&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://taskhold.com/for/claude-code.md" rel="noopener noreferrer"&gt;Task list MCP server for Claude Code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://taskhold.com/vs/claude-code-agent-view.md" rel="noopener noreferrer"&gt;Taskhold vs Claude Code agent view&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  About Taskhold
&lt;/h2&gt;

&lt;p&gt;Taskhold is a hosted task list shared by a person and their AI coding agents over MCP. Agents break tasks into steps and report progress, and the person watches a live board. $12/month or $120/year per person, 7-day trial with a card, no free plan. Made by Great Work LLC.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pricing: &lt;a href="https://taskhold.com/pricing.md" rel="noopener noreferrer"&gt;https://taskhold.com/pricing.md&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Agent index: &lt;a href="https://taskhold.com/llms.txt" rel="noopener noreferrer"&gt;https://taskhold.com/llms.txt&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;I make Taskhold, a task list shared by you and your coding agents. Originally published at &lt;a href="https://taskhold.com/guides/claude-code-task-list-empty?ref=devto" rel="noopener noreferrer"&gt;taskhold.com&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>claude</category>
      <category>ai</category>
      <category>productivity</category>
      <category>devtools</category>
    </item>
  </channel>
</rss>
