github / github/copilot-cli

Frequent websocket_error: Duplicate item found (fc_call_* replay from session-state)

Open
#3,559 3 comments 0 reactions 0 assignees View on GitHub
area:context-memory area:sessions
Dominant language
Shell
Stars
11.2k
Forks
1.9k
Avg merge
14h 16m
Merged PRs (30d)
6

Description

## Summary
I am repeatedly hitting this failure in Copilot CLI:

```
Execution failed: CAPIError: 400 {"error":{"code":"bad_request","type":"websocket_error","message":"Duplicate item found with id fc_call_<...>. Remove duplicate items from your input and try again."}}
```

This appears to be session-state replay/corruption of prior `fc_call_*` items. Once it starts in a session, subsequent prompts in that same session fail quickly with the same duplicate-id error.

## Frequency (from local `~/.copilot/session-state/*/events.jsonl`)
- Sessions affected: **10**
- Duplicate-item error events: **29**
- Time window observed: **2026-05-28 ~18:46Z to ~19:43Z**
- Worst session: `3604526b-3b17-4790-b5f5-9d4359783706` with **15** events in ~4.5 minutes

Additional affected sessions:
- `893105c9-9726-497f-a54c-c384bd5b51b3` (3)
- `6257b848-6652-450c-b949-b8d0477d3b56` (2)
- `63d34bda-bddd-4246-aca5-5258e94d88dd` (2)
- `ce4e9dd9-bca8-4181-ac70-7c398be8e204` (2)
- plus 5 more sessions with single occurrences

## Repro pattern
1. Normal interaction with tool calls.
2. A turn fails with duplicate `fc_call_*` id.
3. Retrying in the same session keeps failing with duplicate-id style websocket 400s.
4. Only workaround is deleting the bad session directory or resetting session-state.

## Impact
This happens frequently enough to materially disrupt use; repeated manual session resets are not productive.

## Environment
- Copilot CLI version: 1.0.54
- OS: macOS (Darwin)

Please advise on mitigation and whether a client-side de-dup guard can be added before sending websocket payload items.

Contributor guide

Open the contributing guide

Research direction

Start by examining the session data under ~/.copilot/session-state/*/events.jsonl and reproduce the duplicate fc_call_* failure with Copilot CLI 1.0.54 on macOS. Trace how session-state items are replayed into websocket payloads; done means affected sessions no longer resend duplicate IDs and the existing recovery or reset behavior is covered by verification.

Written by the indexing model from the issue text.

Assessment

Tech stack
macos
Domain
cli
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.