claudekit / updates / claude-code-2-1-208
[ PATCH · ]

Claude Code 2.1.208

스크린 리더 사용자를 위한 평문 렌더링 모드(`--ax-screen-reader`)가 추가됐고, vim 모드에서 `jj` 같은 두 글자 시퀀스를 Escape로 매핑하는 `vimInsertModeRemaps` 설정, 기업용 런처를 강제하는 `CLAUDE_CODE_PROCESS_WRAPPER`가 함께 들어왔습니다. 긴 세션의 메모리 누수(MCP stderr, LSP 문서, 도구 결과 페이로드)와 트랜스크립트 크기(편집 위주 세션에서 최대 79배)를 대폭 줄였고, 자동 업데이트 후 컨텍스트 창이 200k로 리셋되어 "100% 사용"으로 잘못 표시되던 문제, `claude -p`로 큰 응답을 파이프할 때 stream-json 출력이 잘리던 문제, AWS SSO 프로필에서 Bedrock 인증이 실패하던 2.1.207 회귀를 수정했습니다.

공식 발표 →

이 글은 공식 문서를 바탕으로 요약·정리한 내용입니다.

무엇이 바뀌었나?

Claude Code 2.1.208이 2026년 7월 14일 출시됐습니다. 스크린 리더 사용자를 위한 접근성 모드가 새로 추가되고, vim 인서트 모드 리매핑과 기업 환경용 프로세스 래퍼 같은 설정이 들어왔습니다. 버그 수정은 긴 세션의 메모리 누수와 성능, 백그라운드 에이전트 연결, 헤드리스·SDK 출력 안정성, 그리고 Bedrock 인증 회귀에 집중됐습니다.

새 기능

  • 스크린 리더 모드 (--ax-screen-reader)

    기존 터미널 UI는 스피너, 재렌더링, 박스 그래픽이 많아 스크린 리더로 읽기 어려웠습니다. 이제 평문 렌더링 모드를 켜면 스크린 리더가 읽기 좋은 형태로 출력됩니다. claude --ax-screen-reader로 실행하거나, CLAUDE_AX_SCREEN_READER=1 환경변수, 또는 설정에 "axScreenReader": true를 추가해 켤 수 있습니다.

  • vim 인서트 모드 두 글자 리매핑 (vimInsertModeRemaps)

    vim 모드에서 인서트 모드를 빠져나오려면 매번 Escape 키에 손을 뻗어야 했습니다. 이제 vimInsertModeRemaps 설정으로 jj 같은 두 글자 시퀀스를 Escape로 매핑해, vim 사용자가 익숙한 방식으로 노멀 모드로 돌아갈 수 있습니다.

  • 기업용 프로세스 래퍼 (CLAUDE_CODE_PROCESS_WRAPPER)

    기업 환경에서는 모든 프로세스를 사내 런처로 감싸 실행해야 하는 경우가 있는데, Claude Code가 스스로 새 프로세스를 띄우는 경로는 이를 우회했습니다. 이제 CLAUDE_CODE_PROCESS_WRAPPER를 지정하면 agent view와 백그라운드 서비스가 자기 자신을 다시 실행하는 모든 경로에서 지정된 래퍼 실행 파일을 거칩니다.

  • 전체 화면 모드 멀티셀렉트 마우스 클릭 지원

    전체 화면 모드의 다중 선택 메뉴와 “Other” 입력 행은 키보드로만 조작할 수 있었습니다. 이제 마우스 클릭으로 항목을 선택하고 “Other” 입력 행을 활성화할 수 있습니다.

주요 개선

  • 에이전트 작업 목록 갱신 중 입력 반응성 개선

    에이전트의 작업 목록이 업데이트될 때마다 UI 전체가 다시 그려져 입력이 버벅였습니다. 이제 작업 목록 갱신이 UI 전체를 재렌더링하지 않습니다.

  • MCP 도구가 많은 print/SDK 세션의 도구 호출 오버헤드 감소

    도구 호출마다 도구 풀을 매번 조립해, MCP 도구가 많을수록 CPU 부담이 컸습니다. 도구 풀 조립을 캐시해 도구 수가 많은 환경에서 도구 라운드가 최대 7배 빨라졌습니다.

  • 세션 트랜스크립트 크기 감소

    편집이 많은 세션은 대체된 파일 히스토리 백업이 계속 쌓여 트랜스크립트가 비대해졌습니다. 대체된 백업을 정리해 트랜스크립트 크기를 편집 위주 세션에서 최대 79배까지 줄이고 체크포인트 디스크 사용량도 제한했습니다.

  • 완료된 백그라운드 에이전트가 /tasks에 유지

    백그라운드 에이전트가 끝나는 순간 목록에서 사라져 결과를 확인하기 어려웠습니다. 이제 완료된 에이전트는 정리 시점까지 /tasks에 남아 있고, 중지된 에이전트에 연결하면 세션이 준비되는 동안 빈 “Session is starting” 화면 대신 트랜스크립트를 바로 보여줍니다.

  • $(…), 백틱, <(…)가 포함된 파괴적 명령도 확인 프롬프트 표시

    rm -rf ~ 같은 파괴적 명령이 명령 치환($(…)) 안에 숨어 있으면 --dangerously-skip-permissions와 auto 모드에서 확인 없이 실행될 수 있었습니다. 이제 명령 치환, 백틱, 프로세스 치환(<(…))이 포함된 경우에도 일반 형태와 동일하게 확인 프롬프트를 띄웁니다.

주요 버그 수정

세션과 컨텍스트

  • 자동 업데이트 후 컨텍스트 창이 200k로 리셋되던 문제 — CLI 자동 업데이트 직후 컨텍스트 창과 auto-compact 표시가 잠깐 200k로 초기화되어, 긴 컨텍스트 세션을 재개하면 “100% 컨텍스트 사용”으로 잘못 표시됐습니다. 수정됨.
  • 지원 모델로 돌아와도 fast mode가 꺼진 채 유지되던 문제 — 이제 설정에서 켜져 있으면 fast mode를 지원하는 모델로 전환할 때 자동으로 복원됩니다.
  • 세션 재개 시 “No completion record was found” 알림이 반복되던 문제 — 고아 백그라운드 작업이 하나의 요약으로 합쳐집니다.
  • 긴 세션의 메모리 누수 다수 수정 — MCP stdio 서버 stderr가 서버당 최대 64MB까지 쌓이고, LSP 문서가 무기한 열린 채 남고(이제 50개 LRU 캐시), 백그라운드 전환 후 비동기 hook 출력이 유지되고, 헤드리스·SDK 세션이 큰 도구 결과 페이로드로 무한정 커지던 문제를 함께 수정. 파일 편집 읽기 캐시도 최대 1,000개 파일을 고정하는 대신 16MB로 제한됩니다.

백그라운드 에이전트

  • 백그라운드 에이전트에 입력한 답장이 전송 실패 시 사라지던 문제 — 이제 텍스트를 저장했다가 세션이 다시 시작될 때 전달합니다.
  • 바이너리 교체 후 백그라운드 세션 연결이 영구 실패하던 문제 — 실행 중인 claude agents 프로세스가 시작된 바이너리를 업데이트가 교체하면 “Couldn’t start the background daemon”으로 연결이 계속 실패했습니다. 수정됨.
  • 터미널 호스팅 세션에 붙은 Remote Control 클라이언트가 백그라운드 에이전트와 워크플로 진행 상황을 보지 못하던 문제 — 작업이 시작·중지되기 전까지 보이지 않았습니다. 수정됨.
  • SDK 호스트(예: Claude Desktop)에서 “Change directory”가 실패하던 문제 — 백그라운드 작업이 도는 유휴 세션에서 “A turn is in progress”로 실패했습니다. 수정됨.

헤드리스·SDK 출력

  • claude -p로 큰 응답을 파이프할 때 stream-json/JSON 출력이 잘리고 result 메시지가 누락되던 문제 수정.
  • CLAUDE_CODE_MAX_OUTPUT_TOKENS 같은 환경변수가 과학적 표기의 가수만 쓰던 문제1e61로 처리됐습니다. 수정됨.
  • Windows 스타일 SDK 호스트의 빈 CRLF나 공백만 있는 줄에 stream-json 입력이 세션을 종료시키던 문제 수정.
  • control_request가 문자열이 아닌 set_model 페이로드를 담으면 헤드리스 stream-json 세션이 영구 멈추던 문제 — 이제 CLI가 오류 응답으로 답합니다.
  • 플러그인 새로고침이 클라이언트 연결 전에 실행되면 initialize 요청으로 정의한 에이전트를 SDK 세션이 잃던 문제 수정.

도구 (Edit, Read, Grep, Glob, Agent)

  • 읽은 뒤 수정된 파일에서 대상 텍스트가 여전히 유일하게 일치하는데도 Edit 도구가 실패하던 문제 수정.
  • Read, Grep, Glob의 경계 조건 문제 — Read가 빈 파일을 “shorter than offset”으로 보고하고, Grep이 잘못된 정규식에 조용히 “No files found”를 반환하고, Grep count 모드가 페이지네이션 시 총계를 누락하고, 패턴·경로·작업 디렉토리에 널 바이트가 있으면 Glob이 불명확한 오류로 크래시하던 문제를 함께 수정.
  • 서브에이전트의 tools 목록이 아무것도 해석되지 않을 때 Agent 도구가 도구 없이 실행되던 문제 — 이제 인식되지 않은 항목을 명시한 오류를 반환합니다.
  • 매우 큰 마크다운 테이블이 렌더링을 멈추거나 메모리를 과도하게 쓰던 문제 — 200행이 넘는 테이블은 처음 200행과 ”… N more rows” 안내를 표시합니다.

네트워크와 인증

  • AWS SSO 프로필에서 Bedrock 인증이 “Session token not found or invalid”로 실패하던 2.1.207 회귀sso_region이 Bedrock 리전과 다른 프로필에서 발생했습니다. 수정됨.
  • HTTP/2 연결을 GOAWAY로 닫을 때 supervised·백그라운드 세션이 크래시하던 문제 — 요청 처리 중 서버가 연결을 닫으면 발생했습니다. 수정됨.
  • apiKeyHelper 스크립트 실패가 일반 401 뒤에 가려지던 문제 — 약 10번 조용히 재시도한 뒤에야 드러났습니다. 이제 3번 이내에 스크립트 자체 오류를 보여줍니다.
  • 게이트웨이가 응답을 변형할 때 Bedrock 스트리밍이 “Truncated event message received”로 실패하던 문제 — 이제 오류가 content-type을 명시하고 프록시를 가리킵니다.

알아두면 좋은 점

  • 스크린 리더 모드는 opt-in — 기본으로 켜지지 않으며 claude --ax-screen-reader, CLAUDE_AX_SCREEN_READER=1, 설정의 "axScreenReader": true 세 가지 방법 중 하나로 활성화합니다.
  • AWS SSO로 Bedrock을 쓰는 조직은 업데이트 권장sso_region이 Bedrock 리전과 다른 프로필에서 2.1.207 이후 인증이 깨졌다면 이번 릴리스에서 해소됩니다.
  • 큰 마크다운 테이블은 200행까지만 표시 — 이제 200행이 넘는 테이블은 처음 200행과 나머지 행 수 안내만 보여줍니다. 전체를 봐야 할 때는 원본 파일을 확인하세요.
  • /release-notes가 더 이상 컨텍스트를 오염시키지 않음 — 이전에는 “Show all”이 전체 changelog를 모델의 컨텍스트에 주입해 이후 모든 요청에 붙었습니다. 이제 릴리스 노트를 봐도 컨텍스트에 추가되지 않습니다.