Codex CLI, 자체 업데이트 백그라운드 데몬 자동 실행을 기본값에서 뺀다
OpenAI의 Codex CLI가 대화형 세션을 시작할 때마다 백그라운드 데몬을 자동으로 띄우던 동작을 기본값에서 제거했다. GitHub 이슈 #48195로 제기된 요청이 반영된 것으로, 2026년 9월 28일 관련 커밋이 올라왔다. 사용자가 명시적으로 켜지 않는 한 백엔드 프로세스가 따라붙지 않는 쪽으로 기본 동작이 바뀐 셈이다.
문제가 된 동작은 0.157.0부터 나타났다. codex를 대화형으로 실행하기만 해도 `codex app-server --managed-daemon` 형태의 데몬이 TTY 없는 별도 세션에서 뜨고, Codex 창을 모두 닫아도 PID 1로 재부모화되어 살아남았다. `codex app-server daemon stop`을 호출하거나 재부팅하기 전까지 계속 실행되는 구조였다.
이 데몬은 설치된 패키지를 그대로 쓰지 않는다. 플랫폼 패키지 약 374MB(codex, codex-code-mode-host, 번들된 bwrap·zsh·rg 포함)를 `~/.codex/packages/app-server-daemon/releases/<version>/` 경로로 복사한 뒤, 그 사본에서 백엔드를 구동한다. 복사본은 npm이 방금 설치한 파일과 바이트 단위로 같지만, 이후 백엔드 버전은 패키지 관리자가 관리하는 CLI 버전과 별개로 움직이게 된다.
여기에 분리된 업데이터도 붙는다. 데몬은 시작 5분 뒤 한 번, 이후에는 매시간 새 릴리스를 확인하는 `pid-update-loop` 프로세스를 띄우고, 새 버전을 내려받아 백엔드를 재시작한다. 이 재시작이 진행 중인 턴을 강제로 종료시킬 수 있다는 점은 별도 이슈(#40969)로도 보고돼 있다.
환경 변수도 데몬을 처음 띄운 세션에 고정된다. 호출마다 HTTPS_PROXY를 다르게 지정하는 래퍼로 Codex를 실행하면, 이후 세션이 어떤 프록시 설정으로 시작되든 데몬은 첫 세션의 값을 그대로 사용해 외부 연결을 보낸다. `--remote` 모드의 훅이 세션이 아니라 데몬의 작업 디렉터리를 받는 문제(#42457, #37537)도 같은 뿌리에서 나온 것으로 보인다.
리포트 작성자는 npm으로 전역 설치한 0.157.0을 Linux WSL2에서 쓰던 사용자였다. Windows 10 LTSC 환경에서도 같은 증상이 확인됐고, config.toml에 `daemon_auto_start = false`를 넣으면 해결된다는 보고가 이어졌다. Arch Linux 패키지에서는 `--no-daemon` 없이는 실행되지 않는 문제(#48050), npm으로 CLI를 업데이트해도 app-server가 구버전에 머무는 문제(#46468)까지 겹치면서 불만이 커졌다. 일부 참여자는 이런 동작이 악성코드의 특징과 닮았다고 비판하기도 했다.
실무적으로 중요한 지점은 설치한 CLI의 정체성과 실제로 요청을 처리하는 데몬의 정체성이 갈라진다는 것이다. 한 참여자는 클라이언트가 붙을 때 CLI 버전, 데몬 바이너리 다이제스트, 데몬 세대, 업데이터 상태, 상속된 환경 세대를 함께 확인할 수 있는 '실행 영수증'을 데몬이 노출해야 한다고 제안했다. 당장은 설정 파일로 자동 실행을 끄거나 `codex features disable daemon_auto_start`를 쓰고, 남아 있는 업데이터 프로세스를 정리한 뒤 `~/.codex/packages/app-server-daemon` 디렉터리를 지우는 방식이 쓰인다.
주의할 점도 있다. `codex app-server daemon stop`은 app-server만 멈추고 `pid-update-loop` 업데이터는 그대로 남긴다. 리포트 작성자는 중지 후 70초가 지나도 살아 있어 직접 종료해야 했다고 적었다. 데몬 자체가 불필요한 것은 아니라는 시각도 있다. Remote Control이나 데스크톱 앱처럼 공유 백엔드가 자연스러운 환경에서는 켜두는 편이 낫다는 것이다. 기본값은 꺼졌지만 관련 이슈들이 모두 정리된 것은 아니어서, 패키지 관리자로 설치한 바이너리를 그대로 쓰는 경로가 언제 정비될지는 지켜봐야 한다.