Repository navigation
CLI: make daemon_auto_start opt-in — a persistent, self-updating background daemon shouldn't be the default #48195
Description
What variant of Codex are you using?
CLI — 0.157.0, installed via npm install -g @openai/codex, Linux (WSL2)
What feature would you like to see?
Please make daemon_auto_start opt-in (default false) for the CLI, or at least ask once before turning it on.
Since 0.157.0, just opening an interactive codex session:
- Starts a persistent background daemon (
codex app-server --managed-daemon). It runs in its own session with no TTY and keeps running after every Codex window is closed (reparented to PID 1) untilcodex app-server daemon stopor a reboot. - Copies the whole platform package (~374 MB:
codex,codex-code-mode-host, bundledbwrap/zsh/rg) into~/.codex/packages/app-server-daemon/releases/<version>/— byte-identical to what npm had just installed — and runs the daemon from that copy. From then on the backend's version is decoupled from the CLI version I installed with my package manager. - Starts a detached updater (
codex app-server daemon pid-update-loop) that checks for updates 5 minutes after start and then hourly, downloads new releases and restarts the backend (which can kill active turns, see app-server daemon: auto-update force-kills active turns after a 60s drain budget, and cannot be disabled #40969). - Pins the environment of whichever session happened to start it. I launch Codex through a wrapper that sets
HTTPS_PROXYper invocation; the daemon keeps the first session's proxy variables and its outbound connections go through that proxy, whatever later sessions are launched with. Hooks in --remote mode receive the daemon's cwd, not the session's #42457 and Hooks spawned by the app-server daemon cannot identify the client terminal, breaking terminal-targeting hooks #37537 (daemon cwd / terminal instead of the session's) look like the same root cause.
For a CLI, the least surprising default is that the backend lives and dies with the window, runs the binary I installed, and doesn't update itself in the background. A shared, self-updating daemon makes sense for Remote Control / the desktop app, so it would be fine to enable it there, or when the user explicitly runs codex app-server daemon start / bootstrap.
If it stays on by default, please at least:
- exit an auto-started daemon when its last client disconnects;
- not copy/self-update when the CLI was installed by a package manager (npm/brew/pacman) — run the installed binary instead (Support externally managed app-server daemon executables #41188, npm update leaves app-server on old version, but daemon update/restart refuse recovery #46468, Codex 0.157.0 no longer starts with the Arch Linux package unless --no-daemon is used #48050).
Additional information
Bug found while turning it off: codex app-server daemon stop stops the app-server but leaves the pid-update-loop updater running (still alive 70 s later, had to kill it manually).
Workaround I'm using:
codex features disable daemon_auto_start
codex app-server daemon stop
pkill -f 'app-server daemon pid-update-loop' # not stopped by `daemon stop`
rm -rf ~/.codex/packages/app-server-daemonWith the flag off, a new TUI session no longer spawns a daemon.
Activity
megahall commentedon Sep 25, 2026
@Yihua-Liu-1997 thanks for reporting this, I hit it myself... stuff should not be creating mystery servers and processes all of a sudden on small version number bumps without giving people a heads-up...
kr8vka0z commentedon Sep 25, 2026
agreed. the CLI is unusable until this is fixed.
tagorr commentedon Sep 25, 2026
I can confirm this on Windows 10 LTSC with Codex CLI 0.157.0
Setting
daemon_auto_start = falseinconfig.tomlresolves the issueTwo improvements would help:
--no-daemon.This would preserve the security restrictions without disrupting the normal CLI workflow.
Yihua-Liu-1997 commentedon Sep 26, 2026
@tagorr Indeed — both 1 and 2 would work~
codex: disable daemon auto-start by default
felipeelopes commentedon Sep 29, 2026
The Codex CLI is unusable due to this bug on Windows.
zdd commentedon Sep 30, 2026
This is terrible. I can't input anything on the CLI at all. You should fix this problem as soon as possible and give us 100 banked reset!
aetherxeg-source commentedon Oct 3, 2026
There is a useful provenance boundary behind this request:
installed CLI identity != daemon execution identityOnce the CLI copies itself into a managed release directory and a background updater can replace that copy, the process that services a later turn is no longer necessarily the artifact the user explicitly installed or invoked.
I would make the daemon expose a small execution receipt for each client attachment containing at least:
client_cli_version + daemon_binary_digest + daemon_generation + updater_state + inherited_environment_generationThen a client can distinguish:
A strong regression would start the daemon under environment A, attach from environment B, update the installed CLI, and verify that the client can see exactly which daemon generation/binary/environment is authoritative for the turn rather than inferring it from the foreground CLI version.
Related runtime behavioral-integrity work: https://github.com/AETHERXGLOBAL/execsurface
Update codex to 0.160.1 with a sandbox patch for nix-user-chroot
feat(codex): package Codex CLI from official release binaries
Add Oct 12 tech news (incremental scan window 18:00-19:00 UTC Oct 12 …
laurynas-karvelis commentedon Oct 12, 2026
Basically - a trait of malware. TBF I don't even think this was done by accident
skhaz commentedon Oct 12, 2026
+1 for disabling this
tagorr commentedon Oct 12, 2026
Honestly, that's exactly what it feels like.
st396gt commentedon Oct 12, 2026
The part in the docs about wanting full read/write access to the entire host filesystem is why I'm running codex-cli in a hardened Raspberry Pi and ssh'ing into it.
No daemons running that I can see, v0.160.0 from last week.
Logarithmus commentedon Oct 12, 2026
So codex is a virus at this point? Won't be surprised if they use it to create a botnet of those sweet residential IPs for web scrapping
mateolafalce commentedon Oct 12, 2026
agree, good move