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

Claude Code 2.1.239

응답의 Content-Type 헤더를 지우는 프록시 뒤에서 Bedrock 스트리밍이 실패해 매 턴이 스트리밍 없이 한 번 더 실행되던 문제가 수정됐습니다. 청구되는 API 호출이 아무 표시 없이 두 배가 되던 문제입니다. 데이터 레지던시 워크스페이스의 1.1배 요금은 이제 `/cost`, 상태 표시줄, `--max-budget-usd` 계산에 반영되고, Python 프로젝트를 `anthropic` 0.x에서 1.x로 옮기는 `/claude-api upgrade`가 추가됐습니다. Windows에서도 세션 간 메시징을 쓸 수 있게 됐고, 클라우드 세션에서는 claude.ai에서 동기화된 플러그인이 `name@synced`로 구분됩니다. 세션 재개(`/resume`)의 세션 선택과 제목 처리, 전체 화면 표시, 프롬프트 입력 편집에 몰린 수정까지 50건이 넘는 변경이 함께 들어왔습니다.

공식 발표 →

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

무엇이 바뀌었나?

Claude Code 2.1.239가 2026년 8월 21일 출시됐습니다. 새 기능보다 수정이 중심인 릴리스로, 50건이 넘는 변경 가운데 대부분이 버그 수정입니다. 영향이 가장 큰 것은 Bedrock 스트리밍 수정입니다. 응답의 Content-Type 헤더를 지우는 프록시 뒤에서는 매 턴이 스트리밍 없이 한 번 더 실행돼, 청구되는 API 호출이 아무 표시 없이 두 배가 되고 있었습니다. 비용 표시도 손봐서 데이터 레지던시 워크스페이스의 1.1배 요금이 이제 계산에 들어갑니다. 나머지 수정은 세션 재개(/resume), 전체 화면 표시, 프롬프트 입력 편집에 몰려 있습니다.

새 기능

  • /claude-api upgrade

    Python 프로젝트를 anthropic 0.x에서 1.x로 옮기려면 바뀐 부분을 직접 찾아 고쳐야 했습니다. 이제 /claude-api upgrade가 이 이전 작업을 대신합니다. 기본 제공 claude-api 스킬의 Python 참고 문서도 1.x 기준으로 갱신돼, 타임아웃을 httpx.Timeout이 아니라 anthropic.Timeout으로 설정하도록 바뀐 부분 등이 반영됐습니다.

  • Windows의 세션 간 메시징

    이 기능은 macOS와 Linux에서만 쓸 수 있어, Windows에서는 여러 대의 컴퓨터에 떠 있는 Claude Code 세션끼리 서로를 찾거나 메시지를 주고받을 수 없었습니다. 이제 Windows에서도 SendMessage로 메시지를 보내고 ListAgents로 상대를 찾을 수 있습니다.

주요 개선

  • 데이터 레지던시 워크스페이스의 비용 계산

    미국 내 추론만 사용하는 데이터 레지던시(data residency) 워크스페이스는 요금이 1.1배인데, /cost와 상태 표시줄, --max-budget-usd의 계산에는 이 배수가 빠져 있어 실제 청구액보다 낮게 보였습니다. 이제 세 곳 모두 1.1배를 반영해 계산합니다.

  • Bedrock, Vertex, Foundry에서도 전체 화면 렌더러 안내

    이 설정들은 안내 대상에서 빠져 있어 전체 화면 렌더러를 한 번 물어보는 안내가 나오지 않았습니다. 이제 안내가 표시되고, 이 환경에 새로 설치한 경우 전체 화면으로 시작합니다.

  • claude.ai에서 동기화된 플러그인 구분 (클라우드 세션)

    claude.ai에서 동기화된 플러그인과 직접 설치한 플러그인이 이름만으로는 구분되지 않아, 이름이 같으면 서로 덮어쓸 수 있었습니다. 이제 동기화된 것은 name@synced로 표시되고 claude plugin enable/disable <name>@synced로 켜고 끌 수 있으며, 같은 이름으로 직접 설치한 플러그인을 덮어쓰지 않습니다.

  • Alpine, musl 환경의 추가 기능 로딩

    Alpine처럼 musl을 쓰는 환경에서는 이미지 붙여넣기, 클립보드, 음성 녹음 추가 기능이 glibc용으로 빌드돼 있어 실행 환경이 로드를 거부했습니다. 이제 musl로 빌드된 바이너리가 제공돼 정상적으로 로드됩니다.

  • 사용 한도 안내에 세션, 주간 한도 재설정 시점 표시

    월 지출 한도를 이미 다 쓴 상태에서 뜨는 안내는 그 사실만 알려 줘, 언제 다시 쓸 수 있는지 알 수 없었습니다. 이제 세션 한도와 주간 한도가 언제 재설정되는지도 함께 표시합니다.

  • 압축(compaction) 이후 안내 문구 — 대화를 압축한 뒤 표시되는 안내 때문에 스킬에 넘겼던 원래 인자가 새 요청으로 다시 실행되는 일이 있었습니다. 안내 문구가 이를 유도하지 않도록 개선됐습니다.

  • /goal의 반복 확인 간격 — 오래 걸리는 백그라운드 작업의 확인을 30분마다 반복하던 것이, 이제 30분, 1시간, 이후 2시간마다로 간격이 늘어납니다. claude --resume 목록에서 세션을 다시 열면 그 세션의 활성 목표도 복원됩니다.

  • ListAgents가 자기 이름과 팀원을 알려 줌 — 세션이 자기 이름(다른 세션이 메시지를 보낼 때 쓰는 이름)을 알 방법이 없었습니다. 이제 ListAgents가 자기 이름을 함께 알려 주고, 자기 이름으로 SendMessage를 보내면 “그런 에이전트가 없다”는 응답 대신 자기 자신임을 알려 줍니다. 또 ListAgents와 /list-agents는 서브에이전트와 다른 세션에 더해 실행 중인 팀원(teammate)도 목록에 표시합니다. 이전에는 연결 가능한 팀원이 없는 것처럼 보였습니다.

  • keybindingFlavor: "readline"의 단어 단위 키 — "readline"으로 설정해도 단어 단위 이동, 삭제 키의 동작은 Bash와 달랐습니다. 이제 Alt+F와 Ctrl/Option+→는 단어 끝에서 멈추고, Alt+D는 거기까지 지우며(Ctrl+Y로 되돌릴 수 있음), 구두점이 단어 경계로 취급됩니다.

  • 지속 재시도 모드의 즉시 실패 조건 — CLAUDE_CODE_RETRY_WATCHDOG를 켜면 조직 지출 한도 초과나 크레딧 소진 오류에도 한도가 재설정되기를 무한정 기다렸습니다. 이제 이 두 경우에는 곧바로 실패합니다.

  • 원격 세션의 긴 시작 훅 — SessionStart나 Setup 훅이 오래 걸리면 컨테이너가 유휴 상태로 판단돼 훅 도중에 회수됐습니다. 이제 훅이 실행되는 동안에도 keep-alive를 계속 보냅니다.

  • 모바일에서 올린 이미지의 파일 경로 — 원격 세션에서 휴대폰으로 올린 이미지에 저장 경로가 없어, Claude가 만드는 파일에 그 이미지를 복사해 넣을 수 없었습니다. 이제 저장된 파일 경로가 함께 전달됩니다.

  • Claude in Chrome의 탭 그룹 정리 — /clear를 실행하면 이제 그 세션의 Chrome 탭 그룹이 닫히고, 빈 그룹은 /resume 때와 Claude Code 종료 때 함께 닫힙니다.

  • 웹에서 실행하는 세션의 네트워크 경로 — Claude Code on the web에서 Bash 등이 API가 아닌 anthropic.com 호스트(www, docs 등)로 보내는 요청이 세션의 네트워크 프록시를 거치지 않았습니다. 이제 프록시를 거치므로 환경에 설정한 허용 도메인이 그대로 적용됩니다.

  • Remote Control 미사용 계정 안내 — 계정에 Remote Control이 켜져 있지 않을 때 나오는 메시지와 claude doctor의 문구가 명확해졌습니다.

  • 긴 파일 경로 표시 — 도구 실행 줄의 긴 파일 경로는 이제 가운데를 줄여 한 줄에 표시됩니다.

  • [VSCode] 사용 한도 배너 — 배너의 “View usage”가 중간에 떠 있지 않고 경고 문구와 같은 줄에 놓입니다.

주요 버그 수정

Bedrock과 프록시

  • 응답의 Content-Type 헤더를 지우는 프록시 뒤에서 Bedrock 스트리밍이 실패하던 문제 수정. 매 턴이 스트리밍 없이 다시 실행돼, 청구되는 API 호출이 아무 표시 없이 두 배가 됐습니다.
  • HTTPS 프록시 뒤에서 Bedrock을 SSO 프로필과 awsAuthRefresh로 쓸 때 시작 단계에서 멈추던 문제 수정. 자격 증명 사전 확인이 이제 HTTPS_PROXY 설정을 따릅니다.
  • 조직 정책 검사에서 거부된 요청이 거부 사실이 표시되기 전에 다시 전송되던 문제 수정.

세션 재개와 세션 목록

  • 이름을 바꾼 뒤 대화가 약 64KB 넘게 쌓이면 직접 지정한 세션 제목이 /resume에서 사라지던 문제 수정.
  • claude -c와 재개가 _, -, . 같은 문자만 다른 경로의 세션을 불러오던 문제 수정.
  • 파일이 건드려지기만 했거나 단순히 다시 열었을 뿐인 세션이 /resume과 에이전트 화면에서 최근 변경된 것으로 표시되고 순서가 앞당겨지던 문제 수정.
  • /resume의 전체 프로젝트 모드가 이미 삭제된 디렉터리(제거된 워크트리 등)로 cd 하라고 안내하던 문제 수정. 이제 그런 세션은 현재 디렉터리에서 재개됩니다.
  • 프롬프트를 대기열에 넣어 둔 채 Esc를 누르면 다음 턴이 먼저 끝난 것으로 처리되던 문제 수정. Claude가 아직 작업 중인데 세션이 유휴 상태로 보였고, 이후 다시 제출하면 같은 작업이 반복될 수 있었습니다.
  • 클라우드 세션(웹, 데스크톱, 모바일 앱)이 유휴 작업자 재시작 이후 plan mode에서 빠져나온 상태로 재개되던 문제 수정.
  • 두 개의 Claude Code 프로세스가 하나의 백그라운드 작업 상태를 공유할 때 세션 제목이 Remote Control로 끝없이 동기화되던 문제(2.1.232 회귀) 수정. 이제 제목 갱신은 중복이 제거되고 빈도가 제한됩니다.
  • 제목이 /로 시작하는 세션에 SendMessage로 메시지를 보낼 수 없고 ListAgents에 “(untitled)“로 표시되던 문제 수정.

MCP

  • MCP elicitation(사용자에게 추가 정보를 묻는) 창이 터미널보다 길면 전체 화면 모드에서 잘려 보이던 문제 수정. 이제 창 크기에 맞춰 표시되고, 가려진 항목은 스크롤로 볼 수 있으며 Accept, Decline은 항상 보입니다.
  • 원격 MCP 서버가 세션 도중 재연결에서 일시적인 5xx를 만나면 실패 상태로 남아 있던 문제 수정. 클라우드 세션과 SDK setMcpServers() 사용 시 나타났습니다.

화면과 전체 화면 모드

  • dark-ansi 테마에서 펼친 도구 실행 결과가 배경과 같은 색으로 표시되던 문제 수정.
  • 답할 수 없는 상황인데도 전체 화면 렌더러 안내가 실행할 때마다 다시 뜨던 문제 수정. 이제 세 번 표시한 뒤에는 나오지 않습니다.
  • 브라우저 기반 터미널에서 마우스를 움직이면 "35;150;7M" 같은 문자열이 프롬프트에 입력되던 문제 수정. 마우스 신호가 여러 번에 나뉘어 전달될 때 발생했습니다.
  • effort, ultracode 상태 배지 색상에 지정한 사용자 테마가 무시되던 문제 수정.
  • 전체 화면에서 다른 창에 있다가 터미널 창을 다시 선택하려고 클릭했을 뿐인데 권한 확인에 답하거나 버튼이 눌리던 문제 수정.
  • 전체 화면에서 /config, /model 같은 슬래시 명령 창이 최근 메시지를 가리던 문제 수정. 이제 대화가 창 위쪽에 고정됩니다.
  • Claude가 응답하는 중에 연 /workflows 상세 창이 터미널을 넘어가 제목 부분이 화면 밖으로 밀려나던 문제 수정.
  • JetBrains IDE 터미널에서 Claude Code 플러그인이 연결돼 있으면 Edit, Write 실행이 약 5초씩 멈추던 문제 수정.

프롬프트 입력 편집

  • 에이전트 화면의 vim 모드에서 Escape가 입력한 내용을 지우던 문제 수정. 이제 내용을 유지한 채 NORMAL 모드로 전환합니다.
  • Shift+화살표로 늘린 선택 영역이 selection:copy 단축키에서 아무 표시 없이 무시되던 문제 수정.
  • 커서가 [Pasted text #N] 표시 안에 있을 때 Ctrl+W, Ctrl+U, Ctrl+K, Option+Backspace, Option+D와 vim의 df, dt가 깨진 표시를 남기던 문제 수정.
  • 로그인 코드 입력란처럼 가려진 입력의 내용이 다른 곳에서 Ctrl+Y로 붙여넣어지거나, Esc를 두 번 눌러 지웠을 때 프롬프트 기록에 저장되던 문제 수정.
  • 검색 입력란에서 Ctrl+Backspace가 단어가 아니라 한 글자만 지우던 문제 수정.
  • 셸 모드(!)의 Tab 완성이 ./script 경로에서 ./를 빼 버리던 문제 수정. 셸이 실행할 수 없는 명령이 남았습니다.
  • voice.enabled 설정으로 음성 입력을 켠 뒤에도 /voice 시작 안내가 계속 뜨던 문제 수정.

설정 파일과 실행 환경

  • .worktreeinclude 패턴 적용 — 대상이 gitignore된 디렉터리에 있으면 **/로 시작하는 패턴이 아무 안내 없이 아무것도 찾지 못하던 문제 수정.
  • 에이전트, 스킬, 명령의 .md 파일이 UTF-8 BOM으로 시작하면 아무 안내 없이 무시되던 문제 수정.
  • 마켓플레이스의 metadata.pluginRoot가 적용되지 않던 문제 수정. 이제 이름만 적은 플러그인 소스가 문서 설명대로 그 경로 아래에서 해석됩니다.
  • claudeMdExcludes가 심볼릭 링크로 연결된 .claude/rules 파일을 제외하지 못하던 문제 수정. 패턴이 링크가 가리키는 대상이 아니라 rules 디렉터리나 링크 자체를 가리킬 때 발생했습니다.
  • Linux 샌드박스가 존재하지 않는 .git/config.worktree를 읽을 수 없게 만들던 문제 수정. extensions.worktreeConfig가 설정된 저장소에서는 샌드박스 안의 git 명령이 전부 실패했습니다.
  • 세션의 작업 디렉터리가 삭제된 뒤 훅이 “posix_spawn ENOENT”로 실패하던 문제 수정. 이제 프로젝트 최상위나 홈 디렉터리에서 실행됩니다.
  • 이미 없어진 디렉터리에서 Claude Code를 실행하면 크래시 덤프가 그대로 출력되던 문제 수정. 이제 원인을 알려 주는 메시지가 표시됩니다.
  • WebFetch가 만료된 페이지 내용을 의도한 15분이 아니라 세션이 끝날 때까지 메모리에 들고 있던 문제 수정.
  • 일부 모델에서 /insights 응답에 <message> 태그가 그대로 출력되던 문제 수정.
  • OpenTelemetry 추적이 나뉘던 문제 수정. PreToolUse 훅이 미뤄 둔 도구 실행이 새 추적을 시작하지 않고 원래 턴의 추적에서 이어집니다.

알아두면 좋은 점

  • Bedrock을 프록시 뒤에서 쓰고 있었다면 지난 청구액을 확인해 볼 만합니다 — 응답의 Content-Type 헤더를 지우는 프록시 뒤에서는 매 턴이 스트리밍 없이 한 번 더 실행돼, 이 릴리스 전까지 API 호출이 두 배로 청구되고 있었습니다.
  • /cost 숫자가 올라 보여도 요금이 오른 것은 아닙니다 — 데이터 레지던시 워크스페이스는 원래부터 1.1배 요금이었고, 이번 변경은 그 배수를 /cost, 상태 표시줄, --max-budget-usd 계산에 반영한 것입니다.
  • 전체 화면 안내는 세 번까지만 표시됩니다 — Bedrock, Vertex, Foundry에서는 이번 릴리스부터 이 안내가 처음 나타나며, 이 환경에 새로 설치한 경우 전체 화면으로 시작합니다.
  • Windows에서도 세션 간 메시징을 쓸 수 있습니다 — macOS, Linux와 같은 방식으로 SendMessage와 ListAgents가 동작합니다.
  • claude.ai에서 동기화된 플러그인은 name@synced로 다룹니다 — 켜고 끄려면 claude plugin enable/disable <name>@synced를 사용합니다. 같은 이름으로 직접 설치한 플러그인은 덮어쓰이지 않습니다.
  • CLAUDE_CODE_RETRY_WATCHDOG는 이제 한도 초과를 기다리지 않습니다 — 조직 지출 한도 초과와 크레딧 소진은 재시도 대상이 아니라 즉시 실패로 처리되므로, 결제나 한도 조정이 필요합니다.