티스토리 뷰

반응형

Gemini CLI 0.39.0 업데이트
Gemini CLI 0.39.0 업데이트

 

2026년 4월 23일 Gemini CLI 0.39.0이 릴리즈되었습니다. 이번 업데이트의 핵심은 메모리 관리 고도화와 서브에이전트 구조 재설계입니다. 눈에 확 띄는 신기능보다는 Windows 환경 개선, 메모리 누수 수정, 채팅 기록 방식 전환 등 내부를 전반적으로 정비하는 데 공을 들인 버전입니다.

3줄 요약

  • /memory inbox 명령어가 추가되어 AI가 추출한 스킬을 직접 검토하고 패칭할 수 있습니다.
  • invoke_subagent로 서브에이전트 도구가 통합되어 구조가 단순해지고 메모리 누수가 해소되었습니다.
  • 메모리 누수, 샌드박스 정리, Windows 버그 등 안정성 관련 수정이 집중적으로 이루어졌습니다.

주요 변경사항

/memory inbox와 스킬 패칭 지원

  • /memory inbox 명령어 추가: 백그라운드 메모리 서비스가 자동으로 추출한 스킬 후보를 /memory inbox로 직접 확인하고 검토할 수 있습니다. 이전 버전에서 메모리 추출 자체가 자동화되었다면, 이번 버전에서는 그 결과물을 직접 들여다볼 수 있게 됐습니다.
  • 스킬 패칭 지원: /memory inbox와 연동하여 추출된 스킬을 수정하고 적용하는 기능이 추가되었습니다. 잘못 잡힌 스킬이나 다듬어야 할 내용을 직접 편집할 수 있습니다.
  • 플랜 모드에서 activate_skill 사용자 확인: 플랜 모드에서 스킬을 활성화할 때 사용자 확인 단계를 거치도록 바뀌었습니다. 자동화 범위가 넓어질수록 의도치 않은 동작이 생길 수 있는데, 이를 막는 안전장치입니다.

서브에이전트 도구 통합: invoke_subagent

  • invoke_subagent로 통합: 여러 곳에 흩어져 있던 서브에이전트 도구들이 invoke_subagent 하나로 모였습니다. 레거시 래핑 도구들은 이번 버전에서 제거되었습니다.
  • 서브에이전트 agentId 영속성: 도구 호출 기록에 서브에이전트의 agentId가 함께 저장됩니다. 어떤 에이전트가 무슨 작업을 했는지 나중에 추적하기 쉬워집니다.
  • AbortSignal을 통한 메모리 누수 해결: MessageBus에서 AbortSignal을 활용하여 서브에이전트 종료 시 메모리가 제대로 해제됩니다. 장시간 실행할수록 쌓이던 누수 문제가 해소됩니다.
  • codebase investigator 턴 한도 상향: 코드베이스 탐색 에이전트의 턴 한도가 50회로 늘었습니다. 규모가 큰 프로젝트를 분석할 때 중간에 끊기는 상황이 줄어듭니다.

ContextManager와 Sidecar 분리

  • ContextManager와 Sidecar 아키텍처 분리: 컨텍스트 관리 책임을 독립된 구조로 떼어내는 작업이 이루어졌습니다. 당장 체감하기는 어렵지만 이후 컨텍스트 관련 기능을 손댈 때 기반이 되는 변화입니다.
  • 채팅 기록의 JSONL 스트리밍 전환: 채팅 기록 저장 방식이 JSONL 스트리밍 기반으로 바뀌었습니다. 기록이 많이 쌓인 세션에서 안정성이 높아집니다.
  • 전략적 재평가 가이던스 시스템 프롬프트 추가: 에이전트가 작업 중간에 접근 방식을 스스로 점검하도록 유도하는 가이던스가 시스템 프롬프트에 들어갔습니다.

UI 및 사용성 개선

  • Windows에서 Ctrl+Backspace 단어 삭제 지원: Windows 터미널에서 Ctrl+Backspace로 단어 단위 삭제가 가능해졌습니다. 사소해 보이지만 CLI 입력 흐름에서 꽤 자주 쓰는 동작입니다.
  • Ctrl+Shift+G 지원 추가: 새로운 단축키가 추가되었습니다.
  • AskUser 멀티라인 응답에서 마우스 클릭 커서 위치 지원: 긴 답변을 입력할 때 마우스로 커서 위치를 클릭해 이동할 수 있습니다.
  • 스크롤 모멘텀 개선: 스크롤이 더 자연스럽게 움직입니다.
  • 터미널 버퍼 모드에서만 스크롤바 표시: 필요할 때만 스크롤바가 나타납니다.
  • 도구 출력 포맷 개선(콤팩트 모드): 콤팩트 모드에서 도구 실행 결과가 더 깔끔하게 나옵니다.
  • 쉘 도구 설명 표시 로직 개선: 쉘 도구의 설명이 표시되는 방식이 바뀌었습니다.
  • 시작 속도 최적화: 부모 프로세스를 경량화하여 CLI 시작 시간이 짧아졌습니다.
  • 수동 /settings 동시 실행 방지: /settings 명령어가 겹쳐서 실행되지 않도록 처리가 추가되었습니다.

MCP 서버 설정 개선

  • 에이전트에서 MCP 서버 auth 블록 지원: MCP 서버 설정에 auth 블록을 추가할 수 있게 되었습니다. 인증이 필요한 MCP 서버를 에이전트에서 구성할 때 더 명확하게 다룰 수 있습니다.
  • MCP 에러 코드 기반 처리: 기존에 문자열 매칭에 의존하던 MCP 오류 처리가 에러 코드 기반으로 바뀌었습니다. 오류 대응이 더 안정적으로 동작합니다.

부가 변경사항

샌드박스 안정성 강화

  • 모든 프로세스 실행 경로에서 샌드박스 정리 보장: 예외 상황에서도 샌드박스가 제대로 정리됩니다.
  • Windows 심볼릭 링크 우회 문제 해결: Windows에서 심볼릭 링크를 통한 샌드박스 우회 취약점이 수정되었습니다.
  • 샌드박스 경로 관리 중앙화: macOS Seatbelt, Linux 샌드박스의 경로 관리가 한 곳으로 모였습니다.
  • Windows 샌드박스 초기화 성능 개선: 네이티브 ACL 적용 방식을 활용해 Windows 샌드박스 초기화 속도가 빨라졌습니다.
  • 비동기 git worktree 처리 중앙화 및 읽기 전용 보안 강화: git worktree 처리 방식이 일관성 있게 통일되었습니다.
  • 샌드박스 Git 체크포인팅 오류 수정: git identity 환경변수가 없을 때 발생하던 샌드박스 오류가 해결되었습니다.

메모리 누수 수정

이번 버전에서 유독 집중적으로 수정된 항목입니다.

  • OAuth 흐름의 5분 타임아웃 정리: OAuth 인증 과정에서 쌓이던 타임아웃 객체가 정상적으로 해제됩니다.
  • PTY 소진 및 MCP 서브프로세스 고아 프로세스 누수 해결: PTY가 고갈되거나 MCP 서브프로세스가 떠돌다 남는 문제가 수정되었습니다.
  • trace의 streamWrapper 메모리 누수 수정: 스트림 래퍼에서 발생하던 누수가 해결되었습니다.
  • 리스너와 루트 클로저 정리를 통한 생명주기 메모리 누수 해결: 컴포넌트 정리 시 이벤트 리스너가 제대로 해제됩니다.
  • 대용량 출력 스트림 OOM 방지: 버퍼 처리 방식을 개선하여 출력이 많을 때 메모리가 부족해지는 상황을 방지합니다.
  • EPERM 오류 처리: 디렉터리 탐색 중 권한 오류가 나도 조용히 넘어갑니다.

기타 버그 수정

  • 세션 ID 동적 주입으로 resume 버그 해결: 대화를 재개할 때 발생하던 세션 ID 관련 버그가 수정되었습니다.
  • 503 오류의 retryDelay 적용: 503 응답에 담긴 retryDelay가 실제로 반영됩니다.
  • 모델 응답의 thoughts/text 출력 복원: 모델 응답에서 생각(thoughts)과 텍스트가 다시 제대로 보입니다.
  • 비이진 파일 감지 라이브러리 교체: 커스텀 로직을 isbinaryfile로 교체하여 UTF-8 문자 처리가 개선되었습니다.
  • 파일 읽기 시 오디오 MIME 정규화 개선: 오디오 파일 읽기 시 MIME 타입 감지와 검증이 좀 더 정확해졌습니다.
  • API 오류 메시지의 Uint8Array 디코딩 수정: API 오류 메시지 안의 멀티바이트 문자가 올바르게 디코딩됩니다.
  • 컨텍스트 비율 설정 반영 수정: FooterConfigDialog를 닫아도 hideContextPercentage 설정이 유지됩니다.
  • 쿼터 표시 개선: 비자동 모델에서 쿼터가 잘못 표시되던 문제가 수정되었습니다.
  • 파일 경로 표시 복원: edit/write 도구 확인 화면에서 파일 경로가 다시 보입니다.
  • AbortError 로그 억제: 요청 취소 시 불필요한 AbortError 로그가 더 이상 찍히지 않습니다.
  • 키체인 폴백 로깅 수준 변경: 키체인 폴백 관련 로그가 debug 수준으로 내려가 콘솔이 조용해집니다.
  • 리다이렉트 카운트 증가 버그 수정: fetchJson에서 리다이렉트 횟수가 올바르게 셉니다.
  • ModelRouterService 크래시 방지: finally 블록에서 발생하던 2차 크래시가 막혔습니다.
  • 취약 의존성 업데이트: npm audit fix로 보안 취약점이 있는 패키지들이 정리되었습니다.
  • keytar를 @github/keytar로 교체: 키체인 연동 라이브러리가 교체되었습니다.

마무리

Gemini CLI 0.39.0은 /memory inboxinvoke_subagent 통합을 중심으로, 메모리 누수·샌드박스 안정성·Windows 개선을 한꺼번에 챙긴 업데이트입니다. 체감 변화는 크지 않지만 장시간 사용하거나 복잡한 에이전트 워크플로우를 돌릴 때 이번 업데이트의 효과를 느낄 수 있을 거 같습니다.

반응형

'GEMINI CLI > 패치노트' 카테고리의 다른 글

Gemini CLI 0.38.0 업데이트 정리  (0) 2026.04.15
Gemini CLI 0.37.0 업데이트 정리  (0) 2026.04.10
댓글
최근에 올라온 글
최근에 달린 댓글