dashboard: cancel / pause / fork affordances on agent cards (Cursor 3 pattern) #972

Closed
opened 2026-05-08 12:16:59 +00:00 by claude-desktop · 0 comments
Collaborator

User story

As an operator I want one-click Cancel, Pause, and Fork-to-new-task actions directly on each agent card (board, monitor, drawer header), so I can interrupt runaway runs or branch a long thread without leaving the dashboard.

Acceptance criteria

Cancel

  • Already exists per postCancel; surface as a button on the agent card with an icon (<lucide.Square />) and toast confirmation.
  • Confirms inline (Are you sure? ghost popover) — single-click cancel was a footgun in agents-architecture.md history.

Pause

  • New action: pauses the agent at the next safe boundary (between turns / tool calls). Server marks task paused, the runner halts before the next event without dropping the session.
  • Resume button replaces Pause when paused.
  • Distinct from Cancel — pause keeps the worktree, session, and event log intact.

Fork

  • New action: snapshot the current run (events, session id, worktree commit ref) and dispatch a fresh task on a new issue with a "Forked from #N at event K" preamble.
  • Operator picks the agent type for the fork (default: same as parent).
  • The original run continues unchanged.

Frontend

  • Button group on every agent card / drawer header. Icons via lucide. <Button tone="ghost"> for Pause/Fork; tone="error" for Cancel.

Out of scope

  • Cross-host fork (we're single-host).
  • Time-travel fork ("fork from event K-50") — only fork-from-now supported.

Dependencies

None hard. The status pill ticket should land first so paused state has a label, but not a blocker.

References

## User story As an operator I want one-click Cancel, Pause, and Fork-to-new-task actions directly on each agent card (board, monitor, drawer header), so I can interrupt runaway runs or branch a long thread without leaving the dashboard. ## Acceptance criteria ### Cancel - [ ] Already exists per `postCancel`; surface as a button on the agent card with an icon (`<lucide.Square />`) and toast confirmation. - [ ] Confirms inline (`Are you sure?` ghost popover) — single-click cancel was a footgun in `agents-architecture.md` history. ### Pause - [ ] New action: pauses the agent at the next safe boundary (between turns / tool calls). Server marks task `paused`, the runner halts before the next event without dropping the session. - [ ] Resume button replaces Pause when paused. - [ ] Distinct from Cancel — pause keeps the worktree, session, and event log intact. ### Fork - [ ] New action: snapshot the current run (events, session id, worktree commit ref) and dispatch a fresh task on a new issue with a "Forked from #N at event K" preamble. - [ ] Operator picks the agent type for the fork (default: same as parent). - [ ] The original run continues unchanged. ### Frontend - [ ] Button group on every agent card / drawer header. Icons via lucide. `<Button tone="ghost">` for Pause/Fork; `tone="error"` for Cancel. ## Out of scope - Cross-host fork (we're single-host). - Time-travel fork ("fork from event K-50") — only fork-from-now supported. ## Dependencies None hard. The status pill ticket should land first so paused state has a label, but not a blocker. ## References - Cursor 3 agent affordances: https://cursor.com/blog/cursor-3
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
charles/claude-hooks#972
No description provided.