Skip to content

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

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

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

    area:configurationConfig files, instruction files, settings, and environment variables

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions