You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Nix desktop arms the production auto-updater #52122
A desktop installed from Nix has the production auto-updater enabled, so it can be offered a released binary over the package its distribution installed.
The Nix build sets OPENCODE_CHANNEL=prod, and the gate is app.isPackaged && CHANNEL !== "dev" (packages/desktop/src/main/constants.ts). The packaged app-update.yml points at the public feed:
Please use the Bug Report template and include its required Description field with the issue details. The current body uses “What happens” instead, so the required Description field is missing.
Please edit this issue to address the above within 2 hours, or it will be automatically closed.
If you believe this was flagged incorrectly, please let a maintainer know.
Thanks for updating the issue. It still needs to use the Bug Report template's required Description field. The issue has useful reproduction steps and system details, but the current body has no Description field. Please add the details under that required field.
Thanks for the detailed report. I checked this against the source, not with a real nix build (no Nix in this sandbox), and it holds on the latest dev (86ce19d96), with one difference from your setup.
Channel: in upstream nix/, OPENCODE_CHANNEL = "prod" is set only in the CLI derivation (nix/opencode.nix). nix/desktop.nix doesn't inherit or set it, so the upstream desktop build falls back to the dev channel, and its app-update.yml points at https://opencode.ai/update/api/dev/desktop/opencode/. With OPENCODE_CHANNEL=prod, as in your derivation, it gives exactly the public latest feed you quoted. c977050030 isn't in upstream dev history, so your tree may differ there.
Gate on v2.0.19: it was app.isPackaged && CHANNEL !== "dev", so an upstream Nix desktop on the dev channel had the updater off.
Gate on current dev: since refactor(app): move GUI features into built-in extensions #52369 it is just build.packaged (packages/gui-plugins/src/updater/main.ts). The Nix wrapper sets ELECTRON_FORCE_IS_PACKAGED=1, so a Nix-built desktop now checks for updates at startup and every 10 minutes, whichever channel it was built with.
The script below prints the feed the desktop config resolves with and without OPENCODE_CHANNEL=prod, and shows the updater gate.
Activity
github-actions commentedon Sep 29, 2026
This issue doesn't fully meet our contributing guidelines.
What needs to be fixed:
Please edit this issue to address the above within 2 hours, or it will be automatically closed.
If you believe this was flagged incorrectly, please let a maintainer know.
[-]nix: the Nix desktop arms the production auto-updater[/-][+]Nix desktop arms the production auto-updater[/+]github-actions commentedon Sep 29, 2026
Thanks for updating the issue. It still needs to use the Bug Report template's required Description field. The issue has useful reproduction steps and system details, but the current body has no Description field. Please add the details under that required field.
github-actions commentedon Sep 29, 2026
Thanks for updating the issue. The required Description field and useful reproduction details are now included.
fix(nix): stop the Nix desktop build from self-updating
opencodejr commentedon Oct 28, 2026
Thanks for the detailed report. I checked this against the source, not with a real
nix build(no Nix in this sandbox), and it holds on the latestdev(86ce19d96), with one difference from your setup.nix/,OPENCODE_CHANNEL = "prod"is set only in the CLI derivation (nix/opencode.nix).nix/desktop.nixdoesn't inherit or set it, so the upstream desktop build falls back to thedevchannel, and itsapp-update.ymlpoints athttps://opencode.ai/update/api/dev/desktop/opencode/. WithOPENCODE_CHANNEL=prod, as in your derivation, it gives exactly the publiclatestfeed you quoted.c977050030isn't in upstreamdevhistory, so your tree may differ there.app.isPackaged && CHANNEL !== "dev", so an upstream Nix desktop on thedevchannel had the updater off.dev: since refactor(app): move GUI features into built-in extensions #52369 it is justbuild.packaged(packages/gui-plugins/src/updater/main.ts). The Nix wrapper setsELECTRON_FORCE_IS_PACKAGED=1, so a Nix-built desktop now checks for updates at startup and every 10 minutes, whichever channel it was built with.The script below prints the feed the desktop config resolves with and without
OPENCODE_CHANNEL=prod, and shows the updater gate.Related:
OPENCODE_DISABLE_AUTOUPDATEand sets it in the Nix desktop wrapperReproduction script (nix-channel.sh)
Run it:
bash nix-channel.shcarterworks commentedon Oct 29, 2026
Also affects MacOS, such as is done by numtide/llm-agents.nix