Skip to content

Config file race condition when running multiple CLI sessions simultaneously #1307

@lindz0

Description

@lindz0

When running multiple Copilot CLI sessions concurrently, changes to ~/.copilot/config.json made by one session are
overwritten by other sessions, resulting in loss of configuration changes.

Steps to reproduce:

  1. Start Copilot CLI session 1 in terminal window A
  2. Start Copilot CLI session 2 in terminal window B
  3. In session 1, make a configuration change (e.g., add a trusted folder with /add-dir)
  4. In session 2, make a different configuration change (e.g., add an allowed URL)
  5. Check ~/.copilot/config.json - only the last change persists, the first change is lost

Expected behavior:

Configuration changes from all sessions should be merged or preserved. Ideally:

  • Use file locking to prevent concurrent writes
  • Watch the config file for external changes and reload when modified
  • Merge changes from multiple sessions intelligently

Actual behavior:

Each CLI session reads config.json on startup, holds it in memory, and writes the entire file back on changes,
overwriting any modifications made by other sessions.

Environment:

  • Copilot CLI version:
    0.0.402
  • OS: Windows (but likely affects all platforms)

Suggested solutions:

  1. Implement file locking (flock/LockFile) during config writes
  2. Add file watching to detect external changes and prompt user to reload
  3. Use atomic read-modify-write operations with retry logic on conflicts
  4. Store session-specific settings separately from global config

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions