Codex CLI 창을 한 번 열었다 닫자 프로세스 두 개와 323MB 복사본이 남았습니다
0.157.0부터 대화형 실행이 상주 데몬을 기본으로 띄웁니다. 0.162.1을 격리 환경에서 실행해 보니 데몬을 멈춘 뒤에도 자동 업데이트 프로세스가 남았고, codex exec와 daemon_auto_start를 끈 대화형 실행에서는 데몬이 생기지 않았습니다
목차
Codex CLI 0.162.1의 대화형 화면을 25초 열었다 닫자, 백그라운드 데몬(54MB)과 자동 업데이트 프로세스(22MB)가 그대로 남았습니다. 실행 파일 복사본 323MB도 새로 생겼습니다. 0.157.0(2026-09-25)부터 기본으로 켜진 동작이고, 이를 기본값에서 빼 달라는 GitHub 이슈 #48195가 2026-10-13 Hacker News에서 약 490점을 받았습니다(2026-10-13 조회).
핵심 요약
데몬 54MB + 자동 업데이트 22MB. 띄운 창이 끝나 운영체제(PID 1)가 넘겨받음
CODEX_HOME/packages에 생긴 복사본npm 설치본과 실행 파일 해시가 같음
codex exec·기능 끈 실행에서 생긴 데몬터미널이 아닌 실행은 데몬을 띄우지 않음
codex features disable daemon_auto_start로 끌 수 있고, 이미 떠 있는 자동 업데이트 프로세스는 daemon stop으로 함께 꺼지지 않으니 따로 끝내야 합니다. codex exec로만 실행하는 자동화는 이 동작과 관계가 없었습니다.
한눈에
- 언제부터: 0.157.0 릴리스 노트 "eligible interactive sessions"에서 백그라운드 서버 자동 시작(PR #47179)
- 기본값: 0.162.1 소스의
daemon_auto_start는 안정(Stable) 단계, 기본 켜짐 - 끄는 법:
codex features disable daemon_auto_start또는 실행마다--no-daemon - 공식 설정 문서: 설정 레퍼런스에
daemon_auto_start0회(2026-10-13 조회)
1. 무엇이 바뀌었나: 대화형 실행이 공용 서버를 띄웁니다
Codex CLI의 대화형 화면(TUI)은 원래 그 창 안에서 에이전트 서버를 함께 실행하고, 창을 닫으면 같이 끝났습니다. 0.157.0부터는 여러 창이 함께 쓰는 공용 백그라운드 서버(codex app-server --managed-daemon, 이하 데몬)를 먼저 띄우고, 각 창이 그 서버에 연결됩니다. 릴리스 노트는 이 변화를 "조건에 맞는(eligible) 대화형 세션에서 백그라운드 서버 자동 시작을 켰다"는 한 문장으로 설명했습니다. 조건은 2절의 소스 코드에 있습니다.
이슈 #48195(2026-09-25, 0.157.0·WSL2)를 올린 사용자는 이렇게 보고했습니다. 데몬은 창을 모두 닫아도 남고, 플랫폼 패키지 약 374MB(그 사용자 환경 기준, 저희 macOS 측정은 323MB)를 ~/.codex/packages로 복사해 그 복사본으로 실행되며, 별도의 자동 업데이트 프로세스가 새 버전을 받아 데몬을 다시 띄웁니다. 처음 띄운 세션의 환경 변수(프록시 설정 등)를 데몬이 그대로 이어받는다는 보고도 있습니다. 3절에서는 창을 닫은 뒤 남는 데몬, 실행 파일 복사본, 정지 뒤에도 남는 자동 업데이트 프로세스를 직접 재현했고, 환경 변수 문제는 재현하지 않았습니다.
codex터미널에서 실행데몬 54MB창을 닫아도 남음, 부모 PID 1자동 업데이트 22MB첫 점검은 5분 뒤, 이후 60분마다(소스 기본값)codex exec·파이프 실행터미널 아님창 안 서버데몬 없음복사본 없음측정codexdaemon_auto_start = false창 안 서버데몬 없음복사본 없음측정2. 소스 코드에 적힌 기본값과 조건
아래는 GitHub openai/codex 저장소의 rust-v0.162.1 태그(2026-10-09)에서 읽은 값입니다.
| 항목 | 소스의 값 | 파일 |
|---|---|---|
| 기능 플래그 | daemon_auto_start, 단계 Stable(실험이 아닌 정식 기능), default_enabled: true. 설명 "자격이 되는 대화형 실행에서 공용 로컬 데몬을 자동으로 시작" | codex-rs/features/src/lib.rs |
| 터미널이 아닐 때 | 표준 입력이나 표준 출력이 터미널이 아니면 데몬을 쓰지 않습니다 | codex-rs/tui/src/startup_orchestration.rs |
| 첫 업데이트 점검 | 시작 5분 뒤(INITIAL_UPDATE_DELAY) | codex-rs/app-server-daemon/src/update_loop.rs |
| 업데이트 주기·종료 유예 | 기본 60분(DEFAULT_UPDATE_INTERVAL_MINUTES), 데몬 교체 때 유예 60초(DEFAULT_SHUTDOWN_GRACE_SECONDS), 자동 업데이트 기본 켜짐 | codex-rs/app-server-daemon/src/settings.rs |
| 건너뛰는 경우 | 관리자 권한 실행, Windows가 마운트한 WSL 홈(0.162.0에서 추가) 등 | codex-rs/tui/src/daemon_startup.rs |
표의 "업데이트 주기·종료 유예" 줄은 이슈 #40969와 관련이 있습니다. 그 이슈는 자동 업데이트가 진행 중인 작업에 60초 유예를 준 뒤 강제로 끝낸다고 보고했고, 2026-10-13 현재 열려 있습니다. 저희는 업데이트가 실제로 일어나는 장면까지는 재현하지 않았습니다.
3. 직접 실행한 결과
2026-10-13에 macOS(Apple Silicon)에서 npm으로 @openai/codex@0.162.1을 별도 폴더에 설치하고, CODEX_HOME(Codex가 설정·로그인 정보·데몬 파일을 두는 폴더, 기본 ~/.codex)도 빈 폴더로 따로 잡았습니다. 평소 쓰는 ~/.codex의 설정·로그인 정보는 쓰지 않았고, 로그인하지 않은 상태로 실행했습니다. 대화형 화면은 Python pty로 가상 터미널을 만들어 열고, 정해진 시간 뒤 Ctrl-C를 두 번 보내 닫았습니다.
| 시험 | 한 일 | 결과 |
|---|---|---|
| A. 대화형 실행 | 가상 터미널에서 codex 25초 실행 후 종료 | 창이 끝난 뒤에도 app-server --managed-daemon(RSS 54MB)과 app-server daemon pid-update-loop(22MB)가 부모 PID 1로 남음(띄운 창이 끝나 운영체제가 넘겨받은 상태). CODEX_HOME/packages 323MB 생성 |
| B. 복사본 대조 | 데몬이 실행 중인 파일과 npm이 설치한 파일의 SHA-256 비교 | 같음(74c6a6d2…). npm 설치 폴더 전체는 329MB |
| C. 데몬 정지 | codex app-server daemon stop 후 75초 대기 | 데몬은 멈춤. 자동 업데이트 프로세스는 그대로 남음(이슈 #48195가 0.157.0에서 보고한 것과 같음) |
| D. 터미널 없는 실행 | 새 CODEX_HOME에서 codex exec "say hi" </dev/null | 데몬·복사본 없음. 로그인하지 않아 종료 코드 1로 끝났으므로, 로그인한 상태의 exec는 소스 조건(2절)에 기대 판단했습니다 |
| E. 기능 끄기 | codex features disable daemon_auto_start 뒤 대화형 20초 | config.toml에 daemon_auto_start = false가 들어가고, 데몬·복사본 모두 생기지 않음 |
A와 C에서 창을 닫아도 데몬과 자동 업데이트 프로세스가 끝나지 않았고, 공식 정지 명령을 실행한 뒤에도 자동 업데이트 프로세스는 남았습니다.
처음 시험은 CODEX_HOME 경로가 길어 자동 업데이트 프로세스가 "path must be shorter than SUN_LEN"(유닉스 소켓 경로 길이 제한)으로 바로 죽었습니다. 짧은 경로로 다시 실행한 값을 표에 적었습니다. 홈 폴더 경로가 아주 긴 환경에서는 자동 업데이트가 이렇게 조용히 실패할 수 있습니다.
저희 맥에서 평소 실행 중이던 프로세스
같은 날 이 맥의 평소 환경도 조회했습니다. Homebrew로 설치한 CLI는 0.154.0이라 데몬도 ~/.codex/packages도 없었습니다(Homebrew cask의 최신판은 0.162.1이라, 업그레이드하면 이 동작의 대상이 됩니다. formulae.brew.sh 조회). 대신 codex app-server 프로세스 9개가 떠 있었습니다. 8개는 VS Code의 OpenAI 확장(확장 버전 세 가지)이 창마다 띄운 것이고, 1개는 ChatGPT Chrome 확장이 띄운 것으로, 모두 부모 프로세스가 살아 있었고 메모리 합계는 171MB였습니다. CLI 데몬과는 다른 것입니다.
4. 내 컴퓨터에서 조회하는 법
macOS·Linux 터미널에서 실행합니다. 첫 명령이 0.157.0 이상을 출력하고 둘째 명령에서 결과 줄이 나오면 데몬이 실행 중인 것입니다.
codex --version
# 떠 있는 데몬과 자동 업데이트 프로세스
ps -axo pid,ppid,rss,command | grep -E -- '--managed-daemon|daemon pid-update-loop' | grep -v grep
# 데몬이 쓰는 복사본 크기와 버전
du -sh ~/.codex/packages/app-server-daemon 2>/dev/null
codex app-server daemon version
끄려면 아래 순서로 실행합니다. 셋째 줄은 daemon stop이 남긴 자동 업데이트 프로세스를 끝내는 것으로, 이슈 #48195가 쓴 방법과 같고 저희 시험(C)에서도 이 단계가 필요했습니다.
codex features disable daemon_auto_start # 다음 실행부터 데몬을 띄우지 않음
codex app-server daemon stop # 지금 떠 있는 데몬 정지
pkill -f 'app-server daemon pid-update-loop'
한 번만 데몬 없이 실행하려면 codex --no-daemon을 씁니다. codex --help는 이 옵션을 "이미 떠 있어도 공용 백그라운드 서버 없이 실행"이라고 설명합니다.
5. 체크리스트
| 상황 | 할 일 |
|---|---|
| Codex CLI를 터미널에서 대화형으로 쓴다 | 버전이 0.157.0 이상이면 4절 명령으로 데몬이 떠 있는지 보고, 원하는 동작인지 정합니다. 여러 창에서 대화를 공유하거나 Remote Control(다른 기기에서 이 컴퓨터의 Codex를 조작하는 기능)을 쓰려면 이 기능을 켜 두는 편이 맞습니다 |
| 실행마다 다른 프록시·환경 변수를 준다 | 이슈 #48195는 데몬이 처음 띄운 세션의 프록시 설정을 계속 쓴다고 보고했습니다. 이런 실행 방식이면 기능을 끄거나 --no-daemon을 씁니다(저희는 재현하지 않았습니다) |
| 패키지 관리자(npm·Homebrew)로 버전을 고정해 쓴다 | 데몬은 복사본으로 실행되고 1시간마다 스스로 새 버전을 찾습니다. 설치한 버전과 실제로 실행되는 버전이 달라질 수 있으니 codex app-server daemon version으로 둘을 비교합니다 |
codex exec로 CI·스크립트를 실행한다 | 소스상 터미널이 아닌 실행은 데몬을 띄우지 않고, 저희 시험(D)에서도 생기지 않았습니다. 따로 할 일은 없습니다 |
| 팀 노트북 설정을 관리한다 | ~/.codex/config.toml의 [features]에 daemon_auto_start = false를 넣어 배포할 수 있습니다. 이 키는 2026-10-13 현재 공식 설정 레퍼런스에 없으니, 버전을 올릴 때 동작을 다시 살펴봅니다 |
6. 아직 결론이 아닌 것
- 로그인한 상태로는 측정하지 않았습니다. 로그인 없이도 데몬이 떴으므로 로그인 뒤에도 뜰 것으로 보지만, 메모리 사용량은 대화가 진행되면 달라질 수 있습니다.
- 업데이트가 실제로 일어나는 장면은 보지 않았습니다. 5분 뒤 첫 점검까지 기다리지 않았습니다. 주기와 유예 시간은 소스의 기본값입니다.
- Homebrew 설치본은 시험하지 않았습니다. npm 설치본만 시험했습니다. 패키지 관리자 설치본을 복사하지 말아 달라는 이슈(#41188, #46468, #48050)는 모두 열려 있습니다.
- Windows·Linux는 시험하지 않았습니다. 이슈 #48195는 WSL2, 첫 댓글은 Windows 10에서 같은 동작을 보고했습니다.
- OpenAI의 답은 아직 없습니다. 2026-10-13 현재 이슈 #48195는 열려 있고, 기본값을 바꾸겠다는 공지는 찾지 못했습니다.
참고자료
원문과 소스는 2026-10-13에 대조했습니다. 이 블로그는 리뷰 작업에 Codex CLI를 쓰지만 OpenAI와 관계(광고·협찬·제공)는 없습니다.
| 출처 | 이 글이 가져온 것 | 구분 |
|---|---|---|
| Codex 0.157.0 릴리스 노트 (2026-09-25) · 0.162.0 · 0.162.1 | 자동 시작 도입 문장, PR #47179, WSL 예외 추가 | 1차(OpenAI) |
| openai/codex 소스 rust-v0.162.1 | 기능 플래그 기본값, 터미널 조건, 업데이트 주기·유예 | 1차(OpenAI) |
| 이슈 #48195 · #40969 · #41188 · #46468 · #48050 | 사용자 보고(복사본 374MB, 프록시 유지, 정지 후 남는 자동 업데이트 프로세스), 열린 관련 이슈 | 사용자 보고 |
| Codex 설정 레퍼런스 · CLI 레퍼런스 | daemon_auto_start 0회, check_for_update_on_startup는 실림 | 1차(OpenAI) |
| Hacker News 토론 | 점수·댓글 수(2026-10-13 조회) | 반응 |
OpenAI가 기본값을 바꾸거나 설정 문서에 이 항목을 실으면 이 글을 고치고 개정 날짜를 적겠습니다.