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

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

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions