Repository navigation
[Bug]: Unfinished task list disappears from the composer when the turn ends #14327
Description
Before submitting
- I searched existing issues and did not find a duplicate.
- I included enough detail to reproduce or investigate the problem.
Area
apps/web
Steps to reproduce
- Launch T3 Code with
CLAUDE_CODE_ENABLE_TODO_TOOLS=1set.maindoesn't set it for Claude 5 sessions yet ([Bug]: Plan sidebar stays empty on Claude 5 models — Claude Code no longer exposes the Task tools by default #9029), so without it Claude 5 has no task tools. - Start a Claude thread on a Claude 5 model and ask it to create a task list, then stop after the first task.
- Let the turn finish with tasks still pending.
- Send a follow-up that doesn't touch the task list.
Expected behavior
The composer tasks drawer keeps showing the latest task list while any item isn't completed, and hides once every item is completed.
Actual behavior
Screencast.From.2026-09-30.00-13-17.mp4
The drawer shows during the turn and disappears when the turn ends, with items still open. It stays hidden on later turns until the agent updates the list.
The drawer only renders when a turn is running and the plan was written in that same turn:
main:activeComposerTasksProgressinChatView.tsxreturnsnullwhenlatestTurnSettled, or whenactivePlan.turnId !== activeLatestTurn.turnId. This came in with the composer drawer move in feat(web): attach composer state drawers #7150, which doesn't mention hiding tasks between turns.- orchestrator v2 (
t3code/codex-turn-mapping): the same check onrunId, with the comment "deriveActivePlanState falls back to older runs' plans, which must not label fresh work".
deriveActivePlanState keeps the most recent plan across turns on purpose. Its comment says "so that TodoWrite tasks persist across follow-up messages". The drawer check then throws that plan away. The v2 comment is about labeling fresh work, which the drawer doesn't do on main.
Impact
Medium. Claude 5's task tools keep one list for the whole session, so between turns there's nowhere to see where the agent stands, and it looks like the agent dropped its plan.
Version or commit
v0.0.44 (main), and t3code/codex-turn-mapping @ cb64162dee
Environment
Linux, T3 Code web/desktop, Claude provider on a Claude 5 model with CLAUDE_CODE_ENABLE_TODO_TOOLS=1
Possible fix
Separate what the drawer shows from what labels the running turn:
- Drawer: show the latest plan whenever it has an unfinished step, whether or not a turn is running or the plan came from an earlier turn. Hide it once every step is completed.
- On v2, keep the working label and progress text tied to the running turn's own plan. On
mainthe plan only feeds the drawer, so nothing else changes. The server'sThreadPlanProgressindicator stays as is.
One tradeoff to decide: a list the agent abandons, for example after an interrupted turn, stays in the collapsed tasks tab until the agent completes or clears it. I think that's the right call, since the tasks really are unfinished, but it's a product choice.
Mobile has no task list UI on main, so there's nothing to change there.
I already made PRs to fix this, the main branch would receive the web fix in #14341, since all PRs conflicting with the Orchestrator V2 are closed by default i didn't bother fixing that. Orchestrator v2 would need a separate follow-up on t3code/codex-turn-mapping if #14337, the actual fix to the tool list, lands.
Activity
TonybynMp4 commentedon Sep 30, 2026
@juliusmarminge hey can you triage this issue please, it seems the triage didn't run 😅
TonybynMp4 commentedon Oct 3, 2026
@juliusmarminge following up on your notes on #14341 and #14337: could a maintainer pick the drawer behavior here before I touch it again?
Now that orchestrator v2 is on
main, there's only one place to change:activeComposerTasksProgressinChatView.tsx, which hides the list once the run settles or when the plan came from an earlier run.The question is what the composer tasks tab should do with a list that still has open steps after the turn ends:
I'd go with 1, because with Claude 5's task tools the list belongs to the whole session, not one turn. But it's your call. If you approve 1 or 2, I'll open a web-only PR with before/after screenshots.
The adapter fix for #14322 is going up separately with no drawer changes.