<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Jake Marsh]]></title><description><![CDATA[Jake Marsh]]></description><link>https://jakemarsh.hashnode.dev</link><generator>RSS for Node</generator><lastBuildDate>Tue, 03 Nov 2026 11:41:24 GMT</lastBuildDate><atom:link href="https://jakemarsh.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[How to see what your coding agents are doing]]></title><description><![CDATA[How to get Claude Code, Cursor or Codex to plan steps, report progress and ask you questions, and watch it all on one live board.]]></description><link>https://jakemarsh.hashnode.dev/how-to-see-what-your-coding-agents-are-doing</link><guid isPermaLink="true">https://jakemarsh.hashnode.dev/how-to-see-what-your-coding-agents-are-doing</guid><category><![CDATA[AI]]></category><category><![CDATA[Productivity]]></category><category><![CDATA[claude]]></category><category><![CDATA[mcp]]></category><dc:creator><![CDATA[Jake Marsh]]></dc:creator><pubDate>Fri, 30 Oct 2026 04:03:41 GMT</pubDate><content:encoded><![CDATA[<p>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.</p>
<p><strong>TL;DR:</strong> 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.</p>
<h3>Why not just watch the terminals?</h3>
<p>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.</p>
<h3>What should an agent report?</h3>
<p>Four things, and only four:</p>
<ol>
<li><strong>A plan as ordered steps</strong> before it starts. In Taskhold that's one MCP call, <code>taskhold_plan</code>, which turns the task into steps.</li>
<li><strong>Progress as it goes</strong>: either a percent or "N of M", plus one short line about what it's doing right now (<code>taskhold_progress</code>). Steps beat percentages; agents are much better at "finished step 3 of 5" than at guessing 60%.</li>
<li><strong>Blocked, with a question</strong> when it needs a decision, access or information (<code>taskhold_block</code>).</li>
<li><strong>Done, with a summary</strong> of what changed (<code>taskhold_complete</code>).</li>
</ol>
<h3>What does the board show?</h3>
<p>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.</p>
<h3>How does the agent get my reply?</h3>
<p>It asks "what changed since my last check?" with <code>taskhold_updates</code>, 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.</p>
<h3>How accurate is the time-left estimate?</h3>
<p>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.</p>
<h3>How do you know an agent died?</h3>
<p>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.</p>
<h3>How is it built?</h3>
<p>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 <code>Cache-Control: no-transform</code>; <code>X-Accel-Buffering: no</code> handles nginx.</p>
<h3>How do I set it up?</h3>
<p>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.</p>
<p>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:</p>
<pre><code class="language-plaintext">Before starting a task, write your plan as 3 to 7 numbered steps.
After each step, say "Step N of M done: &lt;one line&gt;".
If you need a decision from me, stop and ask one specific question.
</code></pre>
<p>What do you use to keep track of agents running in parallel? I'd like to hear what works for you.</p>
<p><em>Originally published at</em> <a href="https://taskhold.com/guides/monitor-coding-agent-progress?ref=hashnode"><em>taskhold.com</em></a><em>.</em></p>
]]></content:encoded></item><item><title><![CDATA[Why Claude Code's task list is empty, and how to get it back]]></title><description><![CDATA[Ctrl+T shows nothing on newer Claude models because the task tools are off by default. The environment variable that brings them back.]]></description><link>https://jakemarsh.hashnode.dev/why-claude-code-s-task-list-is-empty-and-how-to-get-it-back</link><guid isPermaLink="true">https://jakemarsh.hashnode.dev/why-claude-code-s-task-list-is-empty-and-how-to-get-it-back</guid><category><![CDATA[claude]]></category><category><![CDATA[AI]]></category><category><![CDATA[Productivity]]></category><category><![CDATA[devtools]]></category><dc:creator><![CDATA[Jake Marsh]]></dc:creator><pubDate>Fri, 30 Oct 2026 03:54:48 GMT</pubDate><content:encoded><![CDATA[<p><strong>Short answer:</strong> 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.</p>
<p>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 <a href="https://taskhold.com/vs/claude-code-tasks">Claude Code's tasks compared</a>, <a href="https://taskhold.com/for/claude-code">Taskhold for Claude Code</a> and <a href="https://taskhold.com/guides/monitor-coding-agent-progress">seeing what your agent is doing</a>.</p>
<h2>The fix</h2>
<p>Set the variable when you start Claude Code. The docs say this provides the task tools on every model and every provider:</p>
<pre><code class="language-bash">CLAUDE_CODE_ENABLE_TODO_TOOLS=1 claude

# or for every session, in ~/.zshrc or ~/.bashrc
export CLAUDE_CODE_ENABLE_TODO_TOOLS=1
</code></pre>
<p>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.</p>
<h2>Why the default changed</h2>
<p>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.</p>
<h2>Other reasons the list looks empty</h2>
<ul>
<li>Claude hasn't made a checklist yet. Ctrl+T toggles the view, and with nothing in the list the toggle has no visible effect.</li>
<li>The view shows up to five tasks at a time, so a long plan looks shorter than it is.</li>
<li>You're looking at /tasks. That lists background shells and subagents, not Claude's checklist.</li>
<li>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.</li>
<li>Sharing a list across sessions with CLAUDE_CODE_TASK_LIST_ID still needs the tools in each session.</li>
</ul>
<h2>When you want the plan outside the terminal</h2>
<p>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.</p>
<p>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.</p>
<h2>FAQ</h2>
<h3>Does turning the task tools back on cost anything?</h3>
<p>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.</p>
<h3>Is TodoWrite coming back?</h3>
<p>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.</p>
<h3>Which Claude Code version changed this?</h3>
<p>The tools reference says the default set applies in Claude Code v2.1.268 and later. Run claude --version to check yours.</p>
<h2>Sources</h2>
<ul>
<li><a href="https://code.claude.com/docs/en/tools-reference#task-tool-availability">Claude Code docs: task tool availability</a>, checked 2026-10-26</li>
<li><a href="https://code.claude.com/docs/en/interactive-mode#task-list">Claude Code docs: task list</a>, checked 2026-10-26</li>
</ul>
<h2>Related</h2>
<ul>
<li><a href="https://taskhold.com/vs/claude-code-tasks.md">Taskhold vs Claude Code's built-in task list</a></li>
<li><a href="https://taskhold.com/guides/monitor-coding-agent-progress.md">See what your coding agent is doing right now</a></li>
<li><a href="https://taskhold.com/for/claude-code.md">Task list MCP server for Claude Code</a></li>
<li><a href="https://taskhold.com/vs/claude-code-agent-view.md">Taskhold vs Claude Code agent view</a></li>
</ul>
<h2>About Taskhold</h2>
<p>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.</p>
<ul>
<li>Pricing: <a href="https://taskhold.com/pricing.md">https://taskhold.com/pricing.md</a></li>
<li>Agent index: <a href="https://taskhold.com/llms.txt">https://taskhold.com/llms.txt</a></li>
</ul>
<p><em>I make Taskhold, a task list shared by you and your coding agents. Originally published at</em> <a href="https://taskhold.com/guides/claude-code-task-list-empty?ref=hashnode"><em>taskhold.com</em></a><em>.</em></p>
]]></content:encoded></item></channel></rss>