Frequent websocket_error: Duplicate item found (fc_call_* replay from session-state)
- 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
Assessment
This issue has not been assessed yet.