autoUpdate: false in settings.json is ignored — CLI re-execs a cached prerelease build over the stable version installed via npm
Nessuno ha ancora preso questa issue.
- Lingua principale
- Shell
- Stelle
- 11.2k
- Fork
- 1.9k
- Merge medio
- 14h 16m
- PR unite (30g)
- 6
Descrizione
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.
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Inizia tracciando l'avvio della CLI e il percorso di riesecuzione che seleziona ~/.copilot/pkg// prima della lettura di settings.json, quindi esamina la gestione di copilot update e il confronto delle versioni. Riproduci il problema con un prerelease memorizzato nella cache, un pacchetto npm stabile e autoUpdate false; il lavoro sarà completato quando una configurazione documentata impedirà la riesecuzione involontaria oppure funzionerà il cambio esplicito del canale.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- node.js
- Ambito
- cli, release
- Tipo di issue
- Bug
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Attiva
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 48/100