OpenAI Codex CLI 0.157.0 Installs a Self-Updating Background Daemon Without Asking
Starting with version 0.157.0 of OpenAI’s Codex CLI, opening any interactive session silently starts a persistent background daemon that keeps running after every window is closed, bypasses the package manager you used to install it, and updates itself on an hourly schedule regardless of user preference.
The behavior was documented in GitHub issue 48195, filed against the openai/codex repository, and surfaced on Hacker News with nearly 400 points and 217 comments within four hours.
What the Daemon Does
Opening an interactive Codex session in 0.157.0 triggers three things:
1. A persistent process that outlives the terminal. The daemon (codex app-server --managed-daemon) is reparented to PID 1 on startup. It continues running after every Codex window is closed. Stopping it requires codex app-server daemon stop or a reboot, and even that command has a bug: it leaves the updater process alive.
2. A 374 MB self-copy outside the package manager. The full platform package is copied to ~/.codex/packages/app-server-daemon/releases/<version>/. From that point on, the daemon’s binary is decoupled from the version installed via npm or brew. A package manager update does not update the daemon.
3. An hourly self-updater. A detached process (codex app-server daemon pid-update-loop) checks for updates five minutes after daemon start, then hourly. When a new version is available, it downloads and restarts the backend with a 60-second drain budget. Active turns are killed if they do not complete within that window. The updater cannot be disabled through documented settings.
Additional Problems
The daemon pins the environment variables of whichever session first started it. If you use an HTTPS proxy wrapper that sets variables per-invocation, all subsequent outbound connections from the daemon go through that first session’s proxy, regardless of how later sessions are configured. Hooks in remote mode receive the daemon’s working directory, not the session’s.
The Workaround
The daemon sits behind a feature flag that is on by default. Two methods to disable it:
Edit ~/.codex/config.toml:
[features]
daemon_auto_start = false
Or run:
codex features disable daemon_auto_start
Neither option is documented in the CLI’s official help text.
Why It Matters
A CLI tool that installs a persistent, self-updating process running as a background daemon with no TTY, decoupled from the system package manager and incapable of being stopped cleanly, is a significant deviation from expected behavior. The core objection in the issue: for a command-line tool, the least surprising default is that the backend lives and dies with the terminal window and runs exactly the binary that was installed.
The author of the GitHub issue notes the daemon behavior does make sense for Codex Remote Control or the desktop app, where a shared backend is expected. Applying the same default to the CLI is what drew the criticism.