Plan Mode: warn on duplicate plans, disable Build for superseded plans, and support archiving completed plans

Feature request for product/service

Cursor IDE

Describe the request

Problem

The same plan can exist in multiple places with different IDs and conflicting state:

  • User-level: ~/.cursor/plans/_.plan.md
  • Workspace: .cursor/plans/_.plan.md

There is no warning when saving or duplicating, and no link between the current plan and an older or superseded copy.

Impact

  1. Build stays active on obsolete copies after the scope was replaced or already implemented elsewhere.
  2. Conflicting todo status — the same scope can be completed in one file and pending in another.
  3. No safe “do not run” state — only pending / completed in YAML; no documented cancelled / superseded status that disables Build.
  4. The workspace .cursor/plans/ folder grows indefinitely — completed plans stay alongside active ones with no supported way to archive them after Build.
  5. User-level plans (~/.cursor/plans/) mix work from many repos with no origin metadata — you cannot tell which project a plan belongs to until you open it.

Example workflow that breaks

  1. Plan created in the user-level folder during Plan Mode.
  2. “Save to workspace” → a copy under .cursor/plans/.
  3. The plan evolves or is superseded; the older copy remains with Build enabled.
  4. Agent or user runs Build on the wrong file → duplicate or conflicting work.

What we need

  • Duplicate detection on save: same name, overview, or obvious overlap → warn and link to the existing plan.
  • status: superseded / cancelled (or equivalent): disables Build; optional link to the replacement plan.
  • Canonical active plan per workspace: clear which file is the one to build from.
  • Archive completed plans: after Build is fulfilled, support moving the plan to a subfolder (e.g. .cursor/plans/completed/) so the root plans folder does not grow without bound. Subfolders appear to work today; making this a first-class workflow (move/archive action + UI) would help.
  • Explicit supersession metadata in frontmatter (e.g. replaces:, replacedBy:).
  • Origin metadata for user-level plans (~/.cursor/plans/): on plan creation, store the source workspace/repo in frontmatter and UI (e.g. workspacePath, repoRoot, or projectName). There is no explicit field today — only indirect hints in the overview or file paths in the body.

Environment

  • Cursor Plan Mode, “Save to workspace”
  • Windows 11

Operating System (if it applies)

Windows 10/11

Hey, thanks for such a detailed and well structured request. It’s rare to see a lifecycle issue described this clearly.

Confirmed: as of today, Plan Mode doesn’t have any of this. Plan status (pending/in_progress/complete) is derived from the Build state and todo, you can’t set it manually. There’s no superseded or cancelled, no dedupe on save, no first class archiving, and no supersession or origin metadata in frontmatter. So these are all valid gaps.

I logged this as a feature request and I’ll pass it to the Plan Mode team. I can’t share a timeline or make any promises, but this scenario (multiple copies of the same plan with conflicting state, Build running on an outdated version) is already on our radar. We’re seeing the same core pain in other reports too.

On workarounds: archiving into a subfolder like .cursor/plans/completed/ isn’t supported right now. Plans need to live directly in .cursor/plans/ to be visible in the Plans panel and runnable from the UI. So the reliable way to make a superseded plan unavailable to Build is to delete the file.

If you hit a specific case where Build actually ran on an outdated plan and did duplicate work, send the Request ID and the steps to reproduce. I’ll take a closer look since that’s closer to a bug than a feature request.