[FEATURE] Let me mark an agent session as completed / dismiss it from the agents view

Status Fixed / completed
Maintainer reply ✓ Yes — bcherny
Activity 7 comments · opened Jun 8, 2026 · closed Aug 17, 2026
💡 Likely answer: A maintainer (bcherny, collaborator) responded on this thread — see the highlighted reply below.

What I'm running into

When I have several background agents going, some of them end up stuck on "Ready for review" or "Needs input" that I'm simply done with. I don't want to answer them or review them anymore — I no longer need that session.

Right now there's no way to just mark one as completed or dismiss it. So they pile up in the agents view and I can't tell the sessions I still care about apart from the ones I've already abandoned. The list keeps growing with things I'll never come back to.

What would fix it

A simple action to mark an agent session as done / dismiss it from the view — without having to respond to it or interact with it further. Ideally:

  • A "mark as completed" or "dismiss" action on a session
  • Dismissed sessions drop out of the active list (archived, not necessarily deleted)
  • Bonus: being able to dismiss several at once

Why it matters

The agents view is only useful if it reflects what I actually still need to deal with. A way to clear out abandoned sessions would keep it readable and let me focus on the agents that genuinely need my attention.

View original on GitHub ↗

5 Comments

awreccan · 2 months ago

+1. The "mark as completed / dismiss" framing here covers the most common case (sessions stuck in "Needs input" / "Working" forever), and the underlying ask shows up across many issues under different framings:

  • #58966 — inverse-of-bg / non-destructive archive (closed today by inactivity-bot, 7 reactions, no maintainer comment ever)
  • #61978 — archive Claude Agents sessions (auto-collapsed as a dupe of #58966)
  • #63745 — FleetView: archive completed agents into a collapsed group
  • #64468 — manually override session status + Closed/Archived state
  • #65615 — /archive and /delete conversation commands (cites Codex CLI parity)
  • #66941 — non-interactive claude agents attach <id|name>

Each is closed-without-fix or open-without-engagement, and the inactivity-bot has now started reaping them (#58966 hit it 2026-06-15). Meanwhile the community has improvised: the Agent Sessions Mac app, claude-picker, the ~/.claude/projects/<encoded-cwd>/<uuid>.jsonl file-move trick, the mcp__ccd_session_mgmt__archive_session MCP tool that exists in Claude Code Desktop but not the CLI, and at least one user-built /foreground skill (gist) — but the CLI Agents view itself still has only Ctrl+X Ctrl+X, which destroys the worktree, jobs dir, and session metadata.

@bogini — could one of these (this issue or another) be picked as the canonical tracking issue, the rest close-linked into it, and locked against the inactivity-bot? Each closure scatters the signal across new dupe filings instead of consolidating it. Happy to consolidate language across the open ones if it helps.

ajeenkya · 1 month ago

Still reproduces on 2.1.218. Adding a root-cause detail I don't think has been stated on any of the linked threads, because it rules out the obvious workaround.

There is no user-side way to clear these, and there can't be: no hook event fires when you open or read a session.

The hooks reference documents 30 events. The only session-lifecycle ones are SessionStart (begins or resumes) and SessionEnd (terminates). There is no SessionView / SessionRead / transcript-opened / focus event. Every event that can move a session out of "Needs input" implies a new turn: UserPromptSubmit, Stop / StopFailure, PermissionRequest / PermissionDenied, Elicitation / ElicitationResult.

Consequence: opening a session, reading it, and deciding you have nothing to say is invisible to the runtime. The indicator clears only if you send a message. So "just open the stale ones to reconcile them" is not a workaround, and neither is a hook-based one. That is why every improvised fix in the ecosystem (the .jsonl file-move trick, third-party session managers, Desktop's mcp__ccd_session_mgmt__archive_session) reaches around the CLI rather than through it.

Where this bites hardest: long-lived background slots. A persistent bg agent that finishes a turn and parks awaiting input is by design idle-awaiting-input. Its steady resting state is the attention indicator. It re-lights after every use and never clears until the next prompt, so the signal is permanently on for exactly the sessions you keep around longest.

Two newer threads for @awreccan's consolidation list, both filed after that comment:

  • #75092 proposes the affordance by name: "A 'Mark all as read / reconcile statuses' affordance would also let users clear accumulated zombies without opening each session one by one."
  • #77683 completed bg sessions can't be removed from the claude agents fleet view (stop / close / rm don't clear them); confirmed on 2.1.210.

Flagging that this is labeled stale while still reproducing.

RavenHursT · 1 month ago

This has got to be THE most aggravating problem in Claude Code!

Even when I yell at the agent to "be done", "complete", "there's effing nothing left to review! Exit!" the darn things remain in the "ready to review" section of Claude Code. The only way to clear them is to CTRL+X them out. I do not want to do this. Some agents I want to reopen and engage w/ again.

kcarriedo · 17 days ago

The root cause ajeenkya identified is the crux of why improvised solutions keep falling short. There is no hook that fires when you read a session and decide you have nothing to say -- so every external tool has to reach around the CLI rather than through it.

The practical consequence is that the "stale sessions pile up" problem is not solvable from outside. The file-move trick, third-party session managers, Desktop's archive MCP -- they all work around a missing affordance rather than filling it cleanly. The only path that does not require hacks is a first-party "dismiss / archive" action exposed at the CLI level.

One thing worth noting for the implementation: the two most common cases where sessions pile up are (1) long-lived background agents that park after every turn by design, and (2) abandoned sessions where the task is done but the session was never explicitly closed. These have different remedies -- case 1 needs a "I saw this, nothing to do" acknowledgment that does not end the session; case 2 needs a soft close that archives without destroying the session data. A single "mark as done" action that differs from Ctrl+X Ctrl+X would cover both if it archives rather than destroys.

The stale label is still on this while it reproduces on 2.1.228 -- flagging that so the bot does not close it again before there is a fix.

bcherny collaborator · 13 days ago

You can already clear these out of the agents view: select the session and press Ctrl+X twice (within two seconds) to stop it and remove it from the list. Pressing Ctrl+X on a group header (e.g. Ready for review) removes every session in that group after a confirmation, and claude rm <id> does the same from the shell.

Removing a session doesn't delete the conversation — the transcript stays on your machine and you can bring it back with /resume in the dispatch input or claude --resume. Docs: https://code.claude.com/docs/en/agent-view#organize-the-list

Closing since this covers the request; if you're seeing something different, let us know.

🤖 Generated with Claude Code

Showing cached comments. Read the full discussion on GitHub ↗