autoUpdate: false in settings.json is ignored — CLI re-execs a cached prerelease build over the stable version installed via npm
Chưa có ai nhận issue này.
- 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
Mô tả
Summary
Once a prerelease build has been cached under ~/.copilot/pkg/<platform>/, the
CLI keeps re-execing it on every launch, even when:
- a stable version is installed via npm, and
"autoUpdate": falseis set in~/.copilot/settings.json.
The documented setting has no effect, because the re-exec into the newer cached
build happens before settings are read. Only the COPILOT_AUTO_UPDATE=false
environment variable changes the behaviour.
The practical result: a user who tries the prerelease channel once cannot get
back to stable through any documented mechanism, and cannot tell they are still
on a prerelease unless they check --version.
Environment
- Cached prerelease build:
1.0.81-5 - Stable installed via npm:
1.0.80 - Node.js v22.21.1, Linux x64
Steps to reproduce
- Be on a prerelease build (so it is cached under
~/.copilot/pkg/<platform>/). npm install -g @github/copilot— installs the current stable release.
Confirmnode_modules/@github/copilot-<platform>/package.jsonreports the
stable version.- Set
"autoUpdate": falsein~/.copilot/settings.json. - Run
copilot --version.
Expected: the stable version, since that is what is installed and
auto-update is disabled.
Actual: the cached prerelease version.
$ copilot --version
GitHub Copilot CLI 1.0.81-5.
The env var behaves differently from the setting
Running the npm-installed platform binary directly:
$ ./copilot --version
GitHub Copilot CLI 1.0.81-5. # re-execs the cached prerelease
$ COPILOT_AUTO_UPDATE=false ./copilot --version
Package extraction took 7995ms
GitHub Copilot CLI 1.0.80. # runs the installed stable build
Same binary, same settings file, opposite results — so autoUpdate in
settings.json and COPILOT_AUTO_UPDATE are not equivalent, though
copilot update --help presents them as alternatives:
Use
--no-auto-updateor setCOPILOT_AUTO_UPDATE=falseto disable it manually.
and copilot help config documents:
autoUpdate: whether to automatically download updated CLI versions; defaults totrue.
There is no documented way back to stable
copilot update stable refuses, because it only compares version ordering and
will not move backwards:
$ copilot update stable
Checking for updates...
Checking GitHub for the latest release...
No update needed, current version is 1.0.81-5, fetched latest release is v1.0.80
Since prerelease versions sort above the current stable release, anyone on
a prerelease is pinned there until a higher stable ships. Combined with the
ignored autoUpdate setting, the only working escape routes are undocumented:
set COPILOT_AUTO_UPDATE=false, or manually delete the cached build
directories.
Also, COPILOT_PKG_CACHE_HOME pointed at an empty directory did not change
resolution — the cached prerelease was still selected.
Suggested fixes
- Make
"autoUpdate": falseinsettings.jsonhonoured by the re-exec path,
or document that it does not cover it. - Give
copilot update <channel>a way to switch channels downward
(e.g.--allow-downgrade, or treat an explicit channel argument as
authoritative over version ordering). - Surface the channel in
--versionoutput, so it is obvious when a
prerelease is being used.
Found while trying to move off the prerelease channel after hitting #4533 (a
separate defect). This report is only about being unable to leave the
prerelease channel.
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.
Hướng nghiên cứu
Bắt đầu bằng cách lần theo quá trình khởi chạy CLI và đường dẫn re-exec chọn ~/.copilot/pkg// trước khi settings.json được đọc, sau đó kiểm tra cách xử lý copilot update và việc so sánh phiên bản. Tái hiện với một prerelease được lưu trong cache, một gói npm ổn định và autoUpdate false; hoàn tất khi cấu hình được ghi lại ngăn re-exec ngoài ý muốn hoặc việc chuyển kênh rõ ràng hoạt động.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- node.js
- Lĩnh vực
- cli, release
- Loại issue
- Lỗi
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức độ hoạt động
- Sôi nổi
- Độ rõ ràng
- Khá rõ ràng
- Mức phù hợp với người mới
- 48/100