config.json trustedFolders (and other managed state) lost when concurrent sessions overwrite the file on exit
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 52/100
Hướng nghiên cứu
Start by tracing the /add-dir flow and the exit-time write to ~/.copilot/config.json, then reproduce the two-session scenario described in the issue. Done means concurrent exits no longer discard trustedFolders or other managed changes, including the related permissions-config.json state.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Bug
~/.copilot/config.json (marked // This file is managed automatically.) is not merged/reconciled when written — each running Copilot CLI session appears to hold its own in-memory copy of the file's managed state (e.g. trustedFolders) and rewrites the entire file on exit using that stale snapshot. If a directory is added via /add-dir in one session while other sessions are still open, the addition is silently lost as soon as any of those other sessions closes and overwrites config.json with its older list.
This makes /add-dir (intended to persist trusted directories globally, per its own help text: "Allow file access to a directory and load its .github skills and agents as trusted configuration") effectively non-persistent whenever more than one CLI session/window is used at a time — which is a common workflow.
Steps to Reproduce
- Open two Copilot CLI sessions (session A and session B) in different terminals.
- In session A, run
/add-dir /path/to/new-dir. Confirm~/.copilot/config.json'strustedFoldersnow includes the new path. - Without closing session A, exit session B (
ctrl+dor normal exit). - Inspect
~/.copilot/config.jsonagain — the directory added in step 2 is gone, because session B rewrote the file from its own (older) in-memory state.
Expected Behavior
Writes to config.json (and similar "managed automatically" files, e.g. permissions-config.json) should be done as a read-modify-write with file locking, or by merging the specific keys being changed into the on-disk state, rather than replacing the whole file with a long-lived in-memory snapshot. At minimum, list-valued fields like trustedFolders should be unioned rather than overwritten.
Additional Context
- Copilot CLI version: 1.0.86
- Linux
- This looks like the same underlying root cause as #3403 ("Hooks in config.json are not preserved across session starts") and is likely contributing to the repeated reports in #2284 / #3050 / #4398 that
/add-dir/trusted-directory persistence "doesn't work" — in our case the user had run/add-diron the same path "numerous times" and it kept reverting. - Workaround: close all other Copilot CLI sessions before adding a directory, or edit
~/.copilot/config.jsondirectly while no other sessions are running.
- Ngôn ngữ chính
- Shell
- Star
- 11.2k
- Fork
- 1.9k
- Merge trung bình
- 14 giờ 16 phút
- Pull request đã merge (30 ngày)
- 6
Hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của github/copilot-cli
-
triage
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
github/copilot-cli#4932 ·
-
triage
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
github/copilot-cli#4909 ·
-
triage
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
github/copilot-cli#4906 ·
-
triage
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
github/copilot-cli#4848 ·
-
area:agents area:mcp
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
github/copilot-cli#4729 ·
Tất cả issue của github/copilot-cli
Issue tương tự
-
Issue-Enhancement Needs-Triage
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 86/100
PowerShell/PowerShell#28061 · 2 reaction ·
-
Feature Request: Add ability to load custom environment variables in linux-exec-server-installer.sh Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
microsoft/vscode-remote-release#11867 ·
-
AuTest Bug Tests
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
apache/trafficserver#13714 ·
-
Update to NCCL 2.32 Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
conda-forge/nccl-feedstock#166 ·
-
Fix codex-seed-model-cache.sh Đang mởbug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 86/100
vllm-project/agentic-api#358 · 1 bình luận ·