Claude Code 2.1.118 업데이트

💡

Vim 비주얼 모드, 커스텀 테마, MCP 도구를 호출하는 hook, `/cost`·`/stats`를 통합한 `/usage`, WSL 관리형 설정 상속, 그리고 다수의 MCP OAuth 버그 수정

🔗 공식 발표 →

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

무엇이 바뀌었나?

Claude Code 2.1.118이 2026년 4월 23일에 릴리스되었습니다. Vim 비주얼 모드가 들어와 텍스트 편집 흐름이 깔끔해졌고, 커스텀 테마와 플러그인이 테마를 배포할 수 있게 되었습니다. hook에서 MCP 도구를 직접 호출하는 경로가 열렸으며, /cost/stats/usage로 통합되었습니다. MCP OAuth·자격 증명 저장 관련 장기 이슈 다수가 수정되었습니다.

새 기능

  • Vim 비주얼 모드(v)·비주얼 라인 모드(V)

    Vim 모드에서 범위 선택·연산자 적용이 불가능해 여러 줄 편집 효율이 떨어졌습니다. 이제 v로 문자 단위, V로 줄 단위 선택이 가능하고 연산자와 시각적 피드백이 함께 동작합니다.

  • 커스텀 테마와 플러그인 테마 배포

    내장 테마 외 선택지가 없어 조직 브랜딩·개인 선호를 반영하기 어려웠습니다. 이제 /theme에서 이름 있는 커스텀 테마를 만들어 전환하거나, ~/.claude/themes/ 아래 JSON 파일을 직접 수정할 수 있습니다. 플러그인도 themes/ 디렉토리로 자체 테마를 배포할 수 있습니다.

  • Hook에서 MCP 도구 직접 호출

    hook이 실제 MCP 도구를 호출하려면 중간 래퍼가 필요했습니다. 이제 hook 설정에서 type: "mcp_tool"을 지정해 MCP 도구를 직접 호출할 수 있습니다.

  • DISABLE_UPDATES 환경변수로 모든 업데이트 경로 차단

    DISABLE_AUTOUPDATER는 자동 업데이트만 막고 수동 claude update는 허용했습니다. DISABLE_UPDATES는 수동 포함 모든 업데이트 경로를 완전히 차단해, 조직 정책으로 버전 고정이 필요한 환경에 적합합니다.

  • WSL이 Windows 측 관리형 설정 상속

    WSL 환경에서 Windows 관리형 정책이 적용되지 않아 기업 배포 시 WSL 사용자만 예외가 되는 문제가 있었습니다. 정책 키 wslInheritsWindowsSettings를 통해 Windows의 managed settings을 WSL에서도 상속받을 수 있습니다.

  • Auto mode의 $defaults 확장 규칙

    autoMode.allow·autoMode.soft_deny·autoMode.environment를 커스텀하면 내장 목록이 통째로 교체되어, 약간의 규칙만 추가하려 해도 전체를 재정의해야 했습니다. 이제 "$defaults"를 포함하면 내장 규칙 위에 커스텀을 추가하는 방식이 됩니다.

  • Auto mode 옵트인에 “Don’t ask again”

    Auto mode 허용 프롬프트가 매번 뜨던 불편을 해소하는 “다시 묻지 않기” 옵션이 추가되었습니다.

  • claude plugin tag — 플러그인 릴리스 태그 생성

    플러그인 버전 태깅을 수동으로 만들면 형식 실수가 잦았습니다. claude plugin tag가 버전 유효성 검증을 포함한 릴리스 git 태그를 생성해 줍니다.

  • --continue·--resume/add-dir 세션 탐색

    /add-dir로 현재 디렉토리를 나중에 추가한 세션은 재개 탐색에서 누락되던 문제가 해소되어, 이제 검색 대상에 포함됩니다.

  • Remote Control 연결 시 /color 동기화

    세션 악센트 컬러를 /color로 바꿔도 Remote Control(claude.ai/code)과 터미널이 따로 보였습니다. 이제 Remote Control 연결 상태에서 /color가 양쪽을 동기화합니다.

  • 커스텀 게이트웨이에서 /model 이름·설명 오버라이드

    ANTHROPIC_BASE_URL로 게이트웨이를 쓸 때 /model 피커가 기본 모델 이름만 보여 조직 커스텀 이름을 노출하기 어려웠습니다. 이제 ANTHROPIC_DEFAULT_*_MODEL_NAME·_DESCRIPTION 오버라이드를 /model 피커가 그대로 반영합니다.

주요 개선

  • /cost + /stats/usage 통합

    비용과 사용 통계가 두 명령으로 나뉘어 있어 매번 어느 쪽에서 무엇이 보이는지 혼동되었습니다. /usage로 통합되어 두 탭을 한 화면에서 볼 수 있고, /cost·/stats는 해당 탭을 바로 여는 단축 별칭으로 유지됩니다.

  • 의존성 충돌로 건너뛴 플러그인 업데이트 가시화

    자동 업데이트가 다른 플러그인의 버전 제약 때문에 특정 플러그인을 건너뛰면 조용히 스킵되어 원인 파악이 어려웠습니다. 이제 /doctor/plugin Errors 탭에 건너뜀 사유가 표시됩니다.

주요 버그 수정

MCP / OAuth

  • /mcp 메뉴의 OAuth Authenticate·Re-authenticate 항목headersHelper로 구성된 서버에서 메뉴에 표시되지 않던 문제, 그리고 커스텀 헤더를 쓰는 HTTP/SSE MCP가 일시적 401 이후 “needs authentication”에 영구적으로 묶이던 문제 수정.
  • expires_in 없는 OAuth 토큰 응답 — 1시간마다 재인증이 요구되던 문제 수정.
  • Step-up 권한 401/403 처리insufficient_scope 403이 이미 보유 중인 스코프를 요구할 때 조용히 리프레시만 하고 재동의 프롬프트를 띄우지 않던 문제 수정.
  • OAuth 흐름 타임아웃·취소 시 unhandled promise rejection 수정.
  • OAuth 리프레시의 크로스 프로세스 락 경합 — 경합 상황에서 락 없이 리프레시가 진행되던 문제 수정.
  • macOS 키체인 경쟁 상태 — 동시 MCP 토큰 리프레시가 방금 갱신된 토큰을 덮어써 “Please run /login” 프롬프트가 뜨던 문제 수정.
  • 서버가 로컬 만료 전에 토큰 폐기 시 리프레시 실패 수정.

자격 증명·세션

  • Linux·Windows 자격 증명 저장 크래시~/.claude/.credentials.json이 손상되던 문제 수정.
  • CLAUDE_CODE_OAUTH_TOKEN 세션에서 /login 무반응 — 환경 토큰이 디스크 자격 증명을 막던 문제가 수정되어, /login이 환경 토큰을 지우고 디스크 자격 증명이 적용됩니다.
  • 원격 세션 연결 시 로컬 model 설정 덮어쓰기~/.claude/settings.json의 모델 설정이 원격 세션 연결만으로 변경되던 문제 수정.
  • SendMessage로 재개된 하위 에이전트의 cwd 손실 — 스폰 시점의 명시적 cwd가 복원되도록 수정.

UI·입력

  • “new messages” 스크롤 알약과 /plugin 배지 텍스트 가독성 수정.
  • --dangerously-skip-permissions 실행 시 plan 수락 다이얼로그 — “bypass permissions” 대신 “auto mode”를 제안하던 오표기 수정.
  • Alt+K / Alt+X / Alt+^ / Alt+_ 키보드 입력 프리즈 수정.
  • /로 시작하는 파일 경로 붙여넣기 시 “No commands match” — 타입어헤드가 경로를 슬래시 명령으로 오인하던 문제 수정.

Hook·플러그인·파일 감시

  • Stop·SubagentStop 이외 이벤트의 agent-type hook 오류 — “Messages are required for agent hooks” 로 실패하던 문제 수정.
  • Agent-hook 검증 하위 에이전트 도구 호출에서 prompt hook 재발화 수정.
  • /fork 용량 문제 — 포크할 때마다 부모 대화 전체를 디스크에 쓰던 문제가 수정되어, 포인터만 쓰고 읽을 때 hydrate합니다.
  • 동일 버전 미일치 플러그인 재설치 — 잘못된 버전으로 설치된 의존성이 plugin install 재실행에도 재해결되지 않던 문제 수정.
  • 파일 감시기 unhandled error — 유효하지 않은 경로·fd 고갈 시 발생하던 크래시 수정.

Remote Control

  • JWT 리프레시 중 일시적 CCR 초기화 깜빡임으로 세션이 아카이브되던 문제 수정.

알아두면 좋은 점

  • /cost·/stats/usage 탭으로 재배치되었습니다. 기존 단축키는 계속 동작하지만 문서·스크립트에 명시해 둔 명령이 있다면 /usage 중심으로 정리해 두는 편이 좋습니다.
  • 조직 정책으로 버전을 고정하려면 DISABLE_AUTOUPDATER가 아니라 DISABLE_UPDATES를 사용하세요. 수동 claude update까지 차단합니다.
  • Vim 비주얼 모드는 기존 Vim 키맵 사용자에게 유용하지만, 기본 Vim 모드를 꺼 둔 사용자에게는 영향이 없습니다.
  • wslInheritsWindowsSettings는 WSL·Windows 양측 모두 관리형 설정이 배포된 환경에서만 의미가 있습니다. 단일 환경만 쓰는 경우는 해당 없음.