[FEATURE] Conversation anchors: re-enter an approved plan per item, keep the code, get a ledger of finished items

Status Open
Reported on v2.1.283
Maintainer reply None cached
Activity 2 comments · opened Sep 28, 2026

Re-filing #81695. The inactivity bot closed it after it had been triaged as area:core, and its message asks for a new issue if the request is still relevant. This version is shorter and updated for 2.1.283. #81695 has the full spec.

Problem Statement

A plan-mode session ends with a plan of, say, ten mostly independent items. The plan message is the most valuable point in the session, because it carries the discussion behind the plan: constraints, rejected options, dependencies between items. To execute each item, you need the conversation as it was at the plan and the code as it is now.

/rewind → Restore conversation already does the rewind half: it goes back to a message and keeps the current code. Used once per item, it is close to the right workflow, but three gaps break it:

  1. The model is not told what was done. After the rewind, the conversation ends at the approved plan, but the working tree already contains items 1–3. Nothing says which items are finished, so the model re-reads, re-plans or redoes work.
  2. The plan cannot be addressed by name. Every re-entry means finding the plan message in the rewind list again. By item 7 it is dozens of prompts back.
  3. The previous item's thread is lost. Rewinding discards it instead of keeping it as a branch you can reopen.

Proposed Solution

A minimal version built on Restore conversation:

  • /anchor <name> marks a message. Approving a plan in plan mode creates the anchor plan automatically. Anchors stay usable after compaction.
  • /from <name> restores the conversation to the anchor and leaves the code as it is. The prefix up to the anchor does not change, so re-entry can reuse the prompt cache.
  • A ledger on re-entry. A short generated note lists what happened since the anchor, built from the item threads and the files they changed:

``
[From anchor "plan": 3 of 10 items done]
[done] 1. Extract config loader -> src/config.rs, src/main.rs
[done] 2. Add retry middleware -> src/http/retry.rs (+ tests)
[done] 3. Replace panic with Result -> 6 files
``

  • Kept threads. Each re-entry keeps the previous item's thread as a branch that /resume can reopen.

#81695 also covered alternatives with isolated code. /fork now creates its own worktree, which covers most of that, so this version leaves it out.

Alternative Solutions

  • Plan file + /clear. Keeps the item list but loses the reasoning behind it, and the file has to be updated by hand.
  • Summarize from here / /compact. The plan discussion survives only as a summary.
  • A fork subagent per item. It inherits the plan context and the cache, and it fits delegable items well. But the item runs as a background delegate, so the back-and-forth of an interactive item happens one step removed from the session.

Additional Context

Related: #32631 (branching spec), #94786 (anchoring to specific messages), #80678 (prompt anchors for navigating history).

View original on GitHub ↗

This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗