Codex CLI 서브에이전트 세션 로그가 755GB를 삼킨 이슈 #34061
목차
개요
OpenAI Codex 저장소에 2026년 7월 18일 등록된 이슈 #34061 “Insane Codex Disk Usage from Subagents”는 Codex CLI의 세션 로그가 비정상적으로 누적되는 문제를 보고한다. 작성자는 jezell이며, 이슈는 현재 Open 상태다. 보고 시점 기준으로 세션 저장소가 약 755GB를 차지해 1.8TB 드라이브의 99~100%를 소진했다. 문제의 중심에는 서브에이전트가 생성하는 자식 세션 JSONL 파일이 있다.
배경
Codex CLI는 대화와 도구 실행 이력을 JSONL 형식의 세션 파일로 기록한다. 서브에이전트를 사용하면 부모 스레드와 별개로 자식 세션 파일이 생성된다. 평상시에는 문제가 되지 않는 규모지만, 장시간 유지되는 부모 스레드에서 서브에이전트를 반복 생성할 경우 파일 수와 크기가 함께 폭증한다. 이슈 보고자의 환경은 Codex CLI 0.144.6 버전이며, 영향을 받은 버전 범위는 0.142.4에서 0.144.6에 걸쳐 있다.
핵심 내용
디스크 사용량 규모
보고된 수치는 단일 사용자 환경에서 발생한 것으로, 세션 로그가 드라이브 용량 대부분을 점유한 상태였다. 특히 하나의 부모 스레드에서 파생된 자식 세션이 전체 사용량의 대부분을 차지했다.
| 항목 | 수치 |
|---|---|
| 세션 저장소 전체 사용량 | 약 755GB |
| 드라이브 용량 | 1.8TB |
| 드라이브 소진율 | 99~100% |
| 단일 부모 스레드의 자식 세션 파일 수 | 2,393개 |
| 해당 자식 세션 파일 총 용량 | 약 731.5GB |
| 7월 한 달간 생성된 세션 파일 수 | 약 2,931개 |
| 400MB 이상 크기의 파일 수 | 797개 |
대표 자식 세션 분석
이슈에는 문제를 압축적으로 보여주는 개별 자식 세션 사례가 포함되어 있다. 3분 19초 동안만 실행된 세션이 483,714,063바이트를 차지했다. 이 파일에는 JSONL 레코드가 353,255개 기록되었으며, 초당 약 1,770건의 기록이 발생한 셈이다.
| 항목 | 값 |
|---|---|
| 실행 시간 | 3분 19초 |
| 파일 크기 | 483,714,063바이트 |
| JSONL 레코드 수 | 353,255개 |
| 초당 기록 수 | 약 1,770건 |
레코드 구성을 보면 특정 이벤트 유형이 용량을 지배하고 있음을 확인할 수 있다.
| 레코드 유형 | 건수 |
|---|---|
| token_count 이벤트 | 185,461개 |
| patch_apply_end 이벤트 | 36,295개 |
| compacted 기록 | 1,618개 |
token_count 이벤트가 전체 레코드의 절반 이상을 차지한다. compacted 기록은 건수 자체는 적지만 개별 레코드 크기가 커서 용량 기여도가 높다.
의심되는 원인
이슈 보고자는 다음과 같은 메커니즘을 원인으로 추정한다.
첫째, 자식 세션으로 부모 및 형제 이벤트가 복제되어 기록되는 문제다. 동일한 이벤트가 여러 세션 파일에 중복 저장되면 파일 수에 비례해 용량이 증폭된다.
둘째, 비제한적인 이벤트 루프다. 초당 1,770건이라는 기록 빈도는 정상적인 작업 흐름에서 기대하기 어려운 수치이며, 이벤트 발생에 상한이 없다는 점을 시사한다.
셋째, compaction 상태의 반복 저장이다. 컨텍스트 압축 시 참조가 아닌 전체 상태 스냅샷을 매번 기록하면 압축 횟수만큼 대용량 레코드가 쌓인다.
넷째, 장시간 resumed 세션의 생명주기 누수다. 작업이 종료된 이후에도 세션이 계속 유지되며 서브에이전트를 생성하고 기록을 지속하는 상황이다.
재현 방법
이슈에 정리된 재현 절차는 다음과 같다.
- Codex TUI로 로컬 프로젝트에서 작업을 시작한다.
- 서브에이전트를 활용하는 스레드를 구성한다.
codex resume로 해당 세션을 장시간 이어서 실행한다.- 수일간 서브에이전트를 반복 생성하며 작업을 지속한다.
이 조건에서 하루에 수백 개의 새 자식 JSONL 파일이 생성되고, 상당수가 수 분 내에 400MB에서 500MB 규모에 도달한다.
임시 완화책
이슈가 Open 상태이며 확정된 수정본이 배포되지 않은 만큼, 사용자 측 대응이 필요하다.
장기간 유지되는 resume 세션을 지양하는 것이 가장 직접적인 완화책이다. 부모 스레드를 며칠씩 이어가지 않고 주기적으로 새 세션을 시작하면 자식 세션 누적의 기준점이 초기화된다.
대량의 서브에이전트 생성을 회피하는 것도 필요하다. 자식 세션 파일 수가 곧 용량 증폭 배수로 작용하므로, 서브에이전트 사용 빈도를 제한하면 총량이 크게 줄어든다.
세션 저장소 용량을 정기적으로 점검하는 습관도 권장된다. 디스크가 완전히 소진되기 전에 이상 징후를 발견해야 작업 중단이나 데이터 손실을 피할 수 있다.
의미와 시사점
이 이슈는 에이전트 도구의 관측성 로깅이 그 자체로 운영 리스크가 될 수 있음을 보여준다. 서브에이전트 구조는 작업을 병렬로 분할해 처리량을 높이지만, 각 자식 세션이 독립적인 로그 스트림을 유지하면 기록량은 에이전트 수에 비례해 증가한다. 여기에 부모 이벤트 복제와 compaction 전체 스냅샷 저장이 겹치면 증가 폭은 선형을 넘어선다.
3분 19초 실행에 약 484MB가 기록된 사례는 로깅 설계에서 이벤트 빈도 제어와 중복 제거가 얼마나 중요한지 드러낸다. 특히 token_count처럼 고빈도로 발생하는 텔레메트리 이벤트는 집계나 샘플링 없이 개별 기록될 경우 실질적인 작업 정보보다 훨씬 큰 용량을 차지한다.
이슈에서는 세션별 및 전역 용량 쿼터, 자동 로테이션과 압축, 보존 기간 정책, compaction 스냅샷과 도구 출력의 중복 제거, 고빈도 이벤트의 레이트 제한, 용량 임계값 경고 등을 요청하고 있다. 이는 에이전트 CLI 도구가 갖춰야 할 스토리지 관리 기능의 기준선을 제시하는 목록이기도 하다.
결론
Codex CLI 이슈 #34061은 서브에이전트 세션 로그가 약 755GB까지 누적되어 1.8TB 드라이브를 소진한 사례를 보고한다. 단일 부모 스레드에서 2,393개의 자식 세션 파일이 약 731.5GB를 차지했고, 3분 19초짜리 세션 하나가 353,255개 레코드로 약 484MB를 기록했다. 원인으로는 자식 세션으로의 이벤트 복제, 비제한적 이벤트 루프, compaction 상태 반복 저장, 장시간 resumed 세션의 생명주기 누수가 지목된다. 이슈가 Open 상태인 현재로서는 장기 resume 세션 지양, 대량 서브에이전트 생성 회피, 세션 용량 정기 점검이 실질적인 대응책이다.