Tool approvals sometimes silently lost when copilot CLI is used in parallel sessions
- Dominant language
- Shell
- Stars
- 11.2k
- Forks
- 1.9k
- Avg merge
- 14h 16m
- Merged PRs (30d)
- 6
Description
### Describe the bug
When two or more `copilot` CLI sessions run simultaneously and each persists a tool approval (the "Always allow" prompt), one session's approval seems to sometimes silently overwrite the other's in `~/.copilot/permissions-config.json`. The loss is not limited to the same directory — approvals for *other* directories in the file can also be dropped, because the entire `locations` object appears to be replaced rather than merged.
This makes "Always allow" feel unreliable: user repeatedly re-approves the same commands, MCP tools, and extensions after seemingly random sessions.
The same read-modify-write pattern appears to be reused for other config files, so we suspect (but did not isolate repros for) related races affecting:
- `config.json` → `trustedFolders` (re-prompted to trust folders that were previously trusted)
Filing this against the most reproducible case; if the team confirms a shared root cause, fixing the underlying config store should resolve the others.
### Affected version
1.0.55-7
### Steps to reproduce the behavior
Seems intermittent but, variations of:
1. Open two terminals.
2. In Terminal A: `cd `, run `copilot`, trigger a tool that prompts for approval (e.g., any shell command), choose **Always allow**. Leave the session running.
3. In Terminal B: `cd ` (a *different* directory), run `copilot`, trigger a tool that prompts for approval, choose **Always allow**. Exit the session.
4. Back in Terminal A: trigger another tool that prompts for approval, choose **Always allow**. Exit the session.
5. Inspect `~/.copilot/permissions-config.json`.
Observed: `locations[]` is missing entirely. Only Terminal A's view of the world survives, because Terminal A's final write replaced the on-disk `locations` object with its in-memory copy — which never knew about ``.
### Expected behavior
`locations` in `permissions-config.json` should contain entries for both `` and ``, with the approvals granted in each session preserved. Concurrent sessions should merge their changes, not overwrite each other.
### Additional context
## Environment
- OS: Windows 11
- CPU architecture: x86_64
- Terminal emulator: Windows Terminal
- Shell: PowerShell 7
- Multiple parallel CLI sessions across different cwds (worktrees, separate projects) is the normal workflow that triggers this.
Contributor guide
Assessment
This issue has not been assessed yet.