Skip to content

Feature Request: Selective per-file accept/revert for Copilot CLI agent changes like git add -p #3640

@abhinavkaurav

Description

@abhinavkaurav

Describe the feature or problem you'd like to solve

After Copilot CLI applies file changes in a turn, the only recovery option is /rewind which reverts everything in that turn. There is no way to selectively keep some file changes while discarding others.

Proposed solution

  1. post-apply interactive review: After a turn completes, offer a /review-changes command that lists modified files and lets you revert selected ones
  2. /rewind --file <path>: Extend /rewind to accept a file path argument
  3. Plan mode enhancement: In plan mode, show actual code diffs (not just natural language descriptions) before execution, with per-file approval
  4. VS Code /ide integration: When connected via /ide, route file-level accept/discard through VS Code's native diff editor

Any of these would be a significant improvement over the current all or nothing model

Example prompts or workflows

After a turn applies file changes, users should be able to selectively accept or revert on a per-file basis and ideally per chunk within a file similar to git add -p.

Something like:

Copilot modified 5 files. Review changes?
[1] src/auth.ts - 12 lines changed [keep/revert]
[2] src/config.ts - 4 lines changed [keep/revert]
[3] tests/auth.test.ts - 28 lines changed [keep/revert]

Additional context

Problems

Mechanism Granularity Limitation
Write permission prompt Per write-call Binary yes/no; one call can touch many files
/diff Read-only, post-apply Shows changes but cannot act on them
/rewind Entire turn All-or-nothing cannot keep partial changes

/rewind is a blunt instrument - it treats a multi-file turn as atomic. Real-world agent tasks often span several files, and it's common for most changes to be correct while one file went in an unintended direction. Forcing an all-or-nothing revert actively works against iterative, confident use of the agent.

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:sessionsSession management, resume, history, session picker, and session statearea:toolsBuilt-in tools: file editing, shell, search, LSP, git, and tool call behavior
    No fields configured for Feature.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions