Claude Code 2.1.128 업데이트

💡

`--channels`가 콘솔(API key) 인증에서도 동작하고, `/mcp`가 서버별 도구 개수와 비정상 서버를 표시합니다. 서브프로세스의 `OTEL_*` 환경변수 누수가 차단되고, `EnterWorktree`는 로컬 HEAD에서 분기하도록 바뀌었습니다. 1M 컨텍스트 모델의 잘못된 차단, 병렬 셸 호출 회귀 등 다수 버그도 함께 수정되었습니다.

🔗 공식 발표 →

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

무엇이 바뀌었나?

Claude Code 2.1.128이 2026년 5월 4일(현지 시간) 릴리스되었습니다. --channels가 콘솔 인증에서도 동작하도록 확장되었고, MCP·플러그인 운영 가시성을 높이는 변경이 다수 들어왔으며, 서브프로세스의 OTEL 환경변수 누수가 차단되었습니다. EnterWorktree의 분기 기준이 로컬 HEAD로 바로잡혔고, 1M 컨텍스트 모델의 잘못된 차단·병렬 셸 호출 회귀·sub-agent 캐시 누락 등 안정성 이슈도 폭넓게 정리되었습니다.

새 기능

  • --channels가 콘솔(API key) 인증에서도 동작

    기존에는 --channels가 OAuth 기반 워크스페이스에서만 동작해 콘솔 API 키로 운영하는 조직은 이 모드를 쓸 수 없었습니다. 이번 릴리스에서 콘솔 인증에서도 사용 가능합니다. 다만 managed settings를 사용하는 콘솔 조직은 활성화를 위해 channelsEnabled: true를 설정해야 합니다.

  • /mcp가 도구 개수와 비정상 서버를 표시

    연결된 MCP 서버 목록만 보면 어떤 서버가 도구를 제대로 노출하는지 알기 어려웠습니다. 이번 변경으로 /mcp가 각 서버의 도구 개수를 함께 표시하고, 도구를 0개로 연결한 서버에 별도 플래그를 붙여 설정 오류·인증 실패를 빠르게 식별할 수 있습니다.

  • --plugin-dir.zip 아카이브 수용

    로컬 플러그인을 시험할 때 디렉토리를 풀어두는 단계가 필요했지만, 이제 --plugin-dir.zip 파일 경로를 직접 넘길 수 있어 압축을 풀지 않고도 바로 로드됩니다.

  • /model 피커 정리 — Opus 4.7 중복 항목 통합

    /model 목록에 같은 Opus 4.7이 두 번 노출되던 문제가 정리되어 중복이 제거되었습니다. 현재 Opus는 “Opus 4.7”이 아니라 “Opus”로 표시됩니다.

  • EnterWorktree가 로컬 HEAD에서 분기 (기존: origin/<default-branch>)

    문서에 명시된 동작과 달리 EnterWorktree가 원격 기본 브랜치를 기준으로 새 브랜치를 만들면서 푸시되지 않은 로컬 커밋이 누락되는 문제가 있었습니다. 이제 로컬 HEAD에서 분기하므로 미푸시 커밋이 사라지지 않습니다.

  • MCP workspace가 예약 서버 이름으로 지정

    기존에 workspace 이름으로 MCP 서버를 등록한 경우, 이번 릴리스부터는 해당 서버가 경고와 함께 건너뛰어집니다. 향후 동일 이름이 시스템 용도로 사용될 예정이라 다른 이름으로 변경해야 합니다.

  • MCP 재연결 시 도구 목록 폭주 방지

    MCP 서버가 재연결될 때마다 전체 도구 이름 목록이 대화창을 채우던 동작이 정리되었습니다. 다시 안내되는 도구는 서버 prefix로 묶어 요약 표시됩니다.

  • SDK 호스트에 localSettings 영구 제안

    Bash 권한 프롬프트에서 “Always allow”를 선택할 때 SDK 호스트가 .claude/settings.local.json에 영구 기록할 수 있도록 localSettings 제안을 함께 받게 되었습니다.

  • Auto 모드 분류기 오류에 복구 힌트 추가

    분류기가 동작을 평가하지 못해 막혔을 때 사용자가 무엇을 해야 하는지 알기 어려웠습니다. 이제 오류 메시지에 재시도, /compact, --debug 실행 같은 다음 행동 힌트가 함께 표시됩니다.

  • /color를 인자 없이 실행하면 무작위 세션 색상 적용

    이제 /color만 입력하면 세션 색상이 무작위로 지정됩니다. 여러 세션을 띄워둘 때 시각적 구분에 활용할 수 있습니다.

주요 개선

  • 서브프로세스의 OTEL_* 환경변수 격리

    Claude Code가 자체 OTLP endpoint로 OTEL 환경변수를 설정한 채 동작하면 Bash·hook·MCP·LSP 같은 서브프로세스가 이를 상속해 OTEL 계측이 적용된 사용자 앱이 CLI의 OTLP endpoint로 텔레메트리를 잘못 보내는 문제가 있었습니다. 이번 릴리스에서 서브프로세스가 더 이상 OTEL_* 환경변수를 상속하지 않도록 격리되어, Bash 도구로 실행한 OTEL 계측 앱이 의도된 자체 endpoint로만 데이터를 보냅니다.

  • sub-agent progress summary가 프롬프트 캐시를 사용

    sub-agent가 진행 상황을 요약할 때 프롬프트 캐시를 활용하지 않아 cache_creation 토큰이 불필요하게 발생했습니다. 이번 수정으로 약 3배 수준의 cache_creation 감소가 보고됩니다. 또한 대화 기록이 변하지 않는 유휴 상태의 sub-agent에서 요약 호출이 반복되던 문제도 함께 정리되어, 유휴 sub-agent의 최악 토큰 비용 상한이 명확해졌습니다.

주요 버그 수정

세션·UI

  • focus 모드에서 새 프롬프트 제출 시 이전 응답이 잠깐 어두워지던 현상 수정.
  • Kitty 등 OSC 9를 알림으로 해석하는 터미널에서 /exit마다 뜨던 “4;0;” 데스크톱 알림 수정.
  • Remote Control 속도 제한 화면이 “Opening your options…”라는 빈 메시지만 표시하던 문제 — 실제 행동 가능한 업셀 옵션이 표시되도록 수정.
  • 이미지 읽기 실패 시 drag-and-drop 업로드가 “Pasting text…”에서 멈추던 문제 수정.
  • 풀스크린 모드에서 줄바꿈된 긴 URL의 각 행이 클릭되지 않던 문제 수정.
  • OSC 8 하이퍼링크를 지원하지 않는 터미널에서 마크다운 링크 라벨이 사라지던 문제 — 이제 URL만이 아니라 라벨 (URL) 형식으로 표시됩니다.
  • 터미널 progress indicator(OSC 9;4)가 도구 호출 사이마다 깜박이며 꺼지던 문제 — 한 턴 내내 유지되도록 수정.
  • --resume·--continue 후 이전 세션의 “remote-control is active” 상태 라인이 잔존하던 문제 수정.

MCP·플러그인

  • /plugin Components 패널이 --plugin-dir로 로드된 플러그인에 대해 “Marketplace ‘inline’ not found”를 표시하던 문제 수정.
  • MCP 도구 결과에서 서버가 structured content와 content blocks를 모두 반환할 때 이미지가 누락되던 문제 수정.
  • /plugin update가 npm 소스 플러그인의 새 버전을 감지하지 못하던 문제 수정.
  • CLAUDE_CODE_SHELL_PREFIX 설정 시 인자에 공백·셸 메타문자가 포함되면 MCP stdio 서버에 인자가 손상된 채 전달되던 문제 수정.
  • 삭제된 캐시 디렉토리를 가리키는 installed_plugins.json의 오래된 항목이 PATH를 오염시키던 문제 수정.
  • Headless --output-format stream-jsoninit.plugin_errors — 의존성 강등(demotion)뿐 아니라 --plugin-dir 로드 실패도 포함하도록 확장.

입력·텍스트

  • 리스트 항목 안의 펜스 코드 블록을 복사할 때 선행 공백이 클립보드에 함께 들어가던 문제 수정.
  • /config 탭 이동 시 포커스가 갇히던 문제 — 탭 헤더가 포커스를 유지해 화살표·Esc가 계속 동작하도록 수정.
  • vim 모드 NORMAL에서 Space가 표준 vi/vim과 달리 동작하지 않던 문제 — 이제 커서를 오른쪽으로 이동.

모델·어시스턴트 동작

  • 1M 컨텍스트 모델에서 더 작은 autocompact 윈도우를 사용할 때 실제 API 한도에 닿기도 전에 “Prompt is too long”으로 잘못 차단되던 문제 수정.
  • 병렬 셸 도구 호출에서 grep·git diff·ls 같은 read-only 명령이 실패하면 형제 호출까지 취소되던 문제 — read-only 실패가 다른 호출을 끌어내리지 않도록 수정.
  • effort를 지원하지 않는 모델에서 배너에 “with X effort”가 표시되던 문제 수정.
  • 타사 provider에서 /fast 입력이 무관한 skill로 퍼지 매칭되던 문제 — 이제 “not available”로 명확히 안내.
  • Bedrock 기본 모델이 리전별 prefix가 아니라 global.*로 해석되던 문제 수정.

세션 재개·헤드리스

  • /compact로 압축된 직후 재개한 세션에서 인자 없는 /rename이 실패하던 문제 수정.
  • claude -p에 stdin으로 매우 큰 입력(>10 MB)을 파이프할 때 발생하던 크래시 루프 수정.

알아두면 좋은 점

  • 콘솔 조직에서 --channels를 쓰려면 managed settings에 channelsEnabled: true — managed settings 없이 운영하는 콘솔 조직은 추가 설정 없이 바로 사용 가능합니다.
  • MCP 서버 이름이 workspace인 경우 변경 필요 — 이름 충돌 시 해당 서버가 경고와 함께 건너뛰어지므로 다른 이름으로 재등록하세요.
  • OTEL 통합 운영자에게 직접 영향 — Claude Code가 자체 OTLP endpoint를 설정한 환경에서 Bash 도구로 OTEL 계측 앱을 띄우면 더 이상 CLI의 endpoint로 텔레메트리가 흘러가지 않습니다. 의도적으로 상속을 활용하던 구성은 별도로 환경변수를 다시 설정해야 합니다.
  • /model에서 Opus 표기 변경 — 자동화 스크립트가 정확히 “Opus 4.7” 문자열을 매칭하고 있었다면 이제 “Opus”로 갱신하세요.
  • EnterWorktree 동작 변경 — 새 브랜치가 더 이상 origin/<default-branch>가 아니라 로컬 HEAD에서 분기됩니다. 의도적으로 원격 기본 브랜치 기준이 필요하다면 별도로 처리해야 합니다.