
Claude Code v2.1.208〜v2.1.209|장시간 세션의 메모리 누수 일소|매일 Changelog 해설
요약
Claude Code v2.1.208 및 v2.1.209 업데이트를 통해 장시간 세션에서 발생하던 메모리 누수 문제를 해결하고 성능을 대폭 개선했습니다. 툴 실행 속도 향상, 트랜스크립트 크기 축소, 스크린 리더 모드 추가 등 사용자 경험과 안정성을 강화했습니다.
핵심 포인트
- 장시간 세션의 메모리 누수(MCP stderr, LSP 문서 등) 해결
- MCP 툴 실행 속도 최대 7배 향상 및 트랜스크립트 크기 최대 79배 축소
- 스크린 리더 사용자를 위한 플레인 텍스트 렌더링 모드 추가
- 파괴적인 삭제 명령어(rm -rf)의 우회 경로 차단 및 보안 강화
- Vim 모드 개선 및 백그라운드 세션 회귀 현상 수정
v2.1.208은 장시간 켜두는 세션에서 쌓여가던 메모리 누수 (Memory Leak)를 한꺼번에 해결한 버전입니다. tool 실행은 최대 7배 빨라졌고, transcript는 최대 79배 작아졌습니다. 이어지는 v2.1.209는 백그라운드 세션에서 /model 등의 다이얼로그를 열 수 없게 되었던 회귀(Regression) 현상을 되돌린 hotfix일 뿐입니다.
메모리 누수 총정리 MCP stdio의 stderr가 서버당 최대 64MB씩 쌓이거나, LSP 문서가 계속 열려 있는 등 장시간 세션에서 발생하던 여러 메모리 누수를 수정 (v2.1.208) -
툴 실행 최대 7배 속도 향상 많은 MCP 툴을 탑재한 print/SDK 세션에서 tool-pool 구성을 캐싱 (v2.1.208) -
transcript 최대 79배 축소 편집이 많은 세션에서 이미 덮어씌워진 file-history 백업을 정리 (v2.1.208) -
가짜 「context 100% 사용」 수정 auto-update 직후에 context window가 순간적으로 200k로 돌아가, 긴 히스토리 재개 시 오검출되던 문제 수정 (v2.1.208) -
스크린 리더 모드 추가 플레인 텍스트(Plain Text) 렌더링을 opt-in 방식으로 활성화. 플래그, 환경 변수, 설정 중 하나로 전환 가능 (v2.1.208) -
rm -rf의 우회로 차단 $(…)나 백틱(Backtick) 내부의 파괴적인 삭제도 skip/auto 모드에서 확인 절차를 거치도록 변경 (v2.1.208)
v2.1.208의 변경 사항은 상당수가 장시간 세션의 메모리와 레이턴시 (Latency)에 집중되어 있습니다. 하루 종일 Claude Code를 켜두면 메모리와 렌더링이 조금씩 무거워졌는데, 그 원인이 한꺼번에 해결되었습니다.
쌓여있던 누수는 단 하나가 아닙니다.
- MCP stdio 서버의 stderr가 서버당 최대 64MB까지 누적
- LSP 문서가 계속 열려 있음 (이번부터 50개 제한의 LRU 적용)
- backgrounding 이후에도 async hook의 출력이 유지됨
- headless/SDK 세션에서 큰 tool 결과가 무제한으로 불어남
여기에 더해, file edit의 read 캐시가 최대 1,000개의 파일을 통째로 유지하던 것을 16MB 상한으로 변경했습니다. 편집이 많은 세션에서는 transcript 자체가 최대 79배 작아지며, checkpoint의 디스크 사용량도 덮어씌워진 백업을 정리함으로써 억제됩니다.
속도 측면의 수정도 포함되었습니다. MCP 툴을 대량으로 탑재한 print/SDK 세션에서는 tool-pool 구성을 캐싱하여 툴 라운드가 최대 7배 빨라졌습니다. permission의 deny/ask 규칙이 많은 세션에서 매 턴마다 수 초씩 느려지던 문제는 matcher를 한 번만 컴파일하여 캐싱하는 방식으로 변경되었습니다.
# 실행 플래그
claude --ax-screen-reader
# 환경 변수
...
스크린 리더 사용자들을 위해 플레인 텍스트로 렌더링하는 opt-in 모드가 v2.1.208에 추가되었습니다. TUI의 장식이 읽기 노이즈가 되지 않도록 렌더링을 전환하는 기능입니다.
같은 v2.1.208에서 vim 모드도 개선되어, vimInsertModeRemaps를 통해 insert 모드 중 jj를 Escape로 할당하는 등 2개 키 조합의 매핑이 가능합니다.
--dangerously-skip-permissions나 auto 모드로 CI 또는 스크립트를 돌리고 있는 경우, 기존에는 그냥 지나쳤던 명령어가 확인 대기 상태로 멈출 가능성이 있습니다. 업데이트 후 한 번 동작을 확인해 주세요.
rm -rf ~와 같은 파괴적인 삭제는 원래 프롬프트의 대상이었습니다. 하지만 명령어가 $(…) · 백틱 · <(…)를 포함하고 있으면 그 내용물이 가드를 빠져나갔었습니다. v2.1.208에서 이 우회로가 차단되어, 일반적인 형태와 마찬가지로 skip/auto 모드에서도 확인 절차가 나타나게 되었습니다.
| 버전 | 카테고리 | 변경점 | 개요 |
|---|---|---|---|
| v2.1.209 | 수정 | 백그라운드 세션의 /model 등 | 과도한 가드 (guard)를 revert 하여 다이얼로그가 열리도록 수정 |
| v2.1.208 | 신기능 | vimInsertModeRemaps | insert 중 jj → Escape 등 2개 키 조합을 매핑 |
| v2.1.208 | 신기능 | CLAUDE_CODE_PROCESS_WRAPPER | 모든 self-spawn을 기업용 래퍼 (wrapper)를 통해 실행 |
| v2.1.208 | 개선 | 거대 markdown 테이블 | 200행 초과 시 상위 200행 + 「… N more rows」로 표시 |
| v2.1.208 | 개선 | /release-notes의 Show all | 모든 changelog가 매 요청의 컨텍스트 (context)에 주입되는 문제 수정 |
| v2.1.208 | 수정 | CLAUDE_CODE_MAX_OUTPUT_TOKENS | 1e6이 1이 되는 과학적 표기법 (scientific notation) 처리 오류 수정 |
| v2.1.208 | 수정 | fast mode | 지원 모델로 돌아갔을 때 설정에 따라 자동으로 복귀하도록 수정 |
v2.1.208은 신기능보다는 장시간 세션의 메모리, 속도, 디스크 사용량을 꾸준히 줄여나간 회차였습니다. tool 라운드 최대 7배, transcript 최대 79배, MCP stderr 64MB 상한선 적용 등이 포함되었습니다. 이어지는 v2.1.209는 백그라운드 세션의 다이얼로그를 막고 있던 회귀(regression) 현상을 되돌린 회차입니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기