Skip to content

New Local-main sessions replace prior conversations, creating high potential data-loss risk #3594

Description

@karelz

Short summary

Creating a new Local-main session replaces the prior resumable conversation, creating high potential data-loss risk

Affected version or release

GitHub Copilot app 1.0.83-5

Installation context

Local Windows workspace in the GitHub Copilot app. The project was karelz/Misc, using the existing checkout at C:\github\copilot-repos\Misc on branch main with the Local-main workspace option. The exact Windows version was not captured.

What happened?

I explicitly selected or created a new session using Local-main three times for the same repository checkout. Three distinct underlying CLI conversation records were created, but the app exposed/reused a single Local-main sidebar/project session rather than preserving three separately resumable discussions.

Later session creation replaced the previously visible discussion and name. The older discussion was no longer visible in the UI, although its underlying record remained in local database history and was recoverable through a separate session used to repair the state. The final exposed session used identity 24b63b59-da8d-463b-92f6-3e2052902143 and was displayed as Service host machines, even though that underlying record had the summary Session "Service host machines" got stuck, can you help?.

It is expected that branch-mode Local-main sessions share one checkout and therefore share its source-control state. The bug is that an explicit new-session action silently reused/replaced the existing resumable conversation instead of creating a distinct conversation or warning that only one session can own that checkout.

This created a high potential data-loss risk. Unrelated work became entangled in the shared checkout: two committed Copilot-instruction changes on local main, 10 staged Service Host/MsrcMonitor files, and temporarily an unmerged index entry in Utils\ServiceHost\src\Program.cs after a rebase. No work was permanently lost, but only because manual recovery happened before the shared checkout changed further.

The behavior occurred on three consecutive explicit Local-main session creation attempts, making accidental user error or a transient sidebar refresh unlikely.

Steps to reproduce

These steps describe the observed incident:

  1. Open a repository project with an existing local checkout on main.
  2. Create a new session using Local-main and begin a discussion or task.
  3. Explicitly create another new session using Local-main for the same repository and checkout.
  4. Give the new session a different task or discussion.
  5. Repeat the new Local-main session action a third time.
  6. Inspect the sidebar/project sessions and try to resume each discussion independently.
  7. Compare the visible project session identity with the underlying CLI conversation records.

Observed result: three underlying conversation records exist, but only one Local-main sidebar/project session is exposed. Later creation replaces the prior visible discussion/name without warning.

Expected behavior

Creating a new Local-main session should never silently replace or reassign an existing resumable conversation.

Either:

  1. Each successful explicit new-session action should create a distinct, stable conversation identity that remains independently visible and resumable, while clearly indicating that repository state is shared with other branch-mode sessions using that checkout; or
  2. If only one Local-main session can own a checkout, the app should block or redirect duplicate creation with a clear warning and offer to resume the existing session or create an isolated worktree session.

Session display names, sidebar entries, project-session IDs, and underlying CLI conversation records should remain consistently mapped. The UI should clearly distinguish conversation isolation from checkout isolation.

Additional context

Incident date: 2026-09-07.

Distinct underlying CLI conversation records:

Record ID Approximate time (UTC) Summary
fa0d8f46-dde2-4dd3-9335-5adf13efb352 07:26 Service host machines
2a157096-be51-43e3-9a44-d69e4cd4a6d4 07:40 Update Copilot instructions
24b63b59-da8d-463b-92f6-3e2052902143 07:59 Session "Service host machines" got stuck, can you help?

All three targeted C:\github\copilot-repos\Misc on branch main.

Recovery required:

  1. Forensic inspection of local session records to reconstruct the three task boundaries.
  2. Exporting staged Service Host/MsrcMonitor changes with git diff --cached --binary.
  3. Verifying the exported 23,267-byte patch.
  4. Creating separate worktree sessions.
  5. Applying and staging the patch in the Service Host session.
  6. Cherry-picking the exact instruction commits into a separate instructions session.

Recovery produced standalone worktrees/branches for Service Host machines, Update Copilot instructions, and stuck-session recovery.

An earlier request on 2026-09-01 described Local-main as an isolation-risk/default-UX concern, but I found no confirmed filed issue. Searches of open and closed github/app issues for Local-main session reuse, conversation replacement, shared checkouts, and related data-loss terms did not surface a duplicate.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions