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

Claude Code 2.1.212

폭주하는 검색과 위임 루프를 막기 위해 세션 단위 웹 검색(기본 200회)과 서브에이전트 생성(기본 200개) 상한이 도입됐습니다. `/fork`는 대화를 백그라운드 세션으로 복제하도록 바뀌었고 이전의 in-session 실행은 `/subtask`로 분리됐으며, 2분을 넘는 MCP 도구 호출은 자동으로 백그라운드로 전환됩니다. plan mode가 파일 수정 Bash 명령을 권한 프롬프트 없이 실행하던 문제, `continue:false` hook의 중단 신호가 유실되던 문제, 세션 재개 후 발생하던 여러 회귀가 함께 수정됐습니다.

공식 발표 →

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

무엇이 바뀌었나?

Claude Code 2.1.212가 2026년 7월 17일 출시됐습니다. 검색과 위임이 통제 없이 반복되던 상황을 막는 세션 단위 상한이 도입됐고, /fork는 in-session 서브에이전트 대신 대화를 통째로 백그라운드 세션으로 복제하도록 바뀌었습니다. 오래 걸리는 MCP 호출은 자동으로 백그라운드로 옮겨 세션을 계속 쓸 수 있게 했고, plan mode 권한 우회, hook 중단 신호 유실, 세션 재개 관련 회귀 등 다수의 버그가 정리됐습니다.

새 기능

  • 세션 단위 웹 검색 상한 (기본 200회)

    에이전트가 웹 검색을 반복하는 루프에 빠지면 한 세션에서 검색 호출이 끝없이 쌓였습니다. 이제 세션당 WebSearch 호출에 상한(기본 200회)이 생겨 폭주 검색 루프를 멈춥니다. CLAUDE_CODE_MAX_WEB_SEARCHES_PER_SESSION으로 조정할 수 있습니다.

  • 세션 단위 서브에이전트 생성 상한 (기본 200개)

    서브에이전트가 다시 서브에이전트를 위임하는 흐름이 통제 없이 반복되면 한 세션에서 생성이 무한정 늘어날 수 있었습니다. 이제 세션당 서브에이전트 생성에 상한(기본 200개)이 적용돼 폭주 위임 루프를 막습니다. CLAUDE_CODE_MAX_SUBAGENTS_PER_SESSION으로 조정하고, /clear로 예산을 리셋합니다.

  • 오래 걸리는 MCP 도구 호출 자동 백그라운드 전환

    응답이 느린 MCP 도구를 호출하면 그동안 세션 전체가 멈춰 대기했습니다. 이제 2분을 넘는 MCP 도구 호출은 자동으로 백그라운드로 옮겨 세션을 계속 사용할 수 있습니다. 임계값은 CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS로 조정하거나 비활성화할 수 있습니다.

  • /fork가 대화를 백그라운드 세션으로 복제

    기존 /fork는 in-session 서브에이전트를 띄우는 방식이라 원래 대화를 계속 진행하면서 분기 결과를 따로 관리하기 어려웠습니다. 이제 /fork는 대화를 새 백그라운드 세션(claude agents의 별도 행)으로 복제하고, 사용자는 원래 대화를 그대로 이어갈 수 있습니다. 이전의 in-session 방식은 /subtask로 분리됐습니다.

  • claude auto-mode reset

    auto-mode 설정이 꼬였을 때 기본값으로 되돌리는 표준 방법이 없었습니다. claude auto-mode reset으로 auto-mode 기본 설정을 복원할 수 있으며, 확인 프롬프트가 뜹니다(--yes로 건너뜀).

  • /resume 세션 피커 (agent view)

    agent view에서 과거 세션을 다시 열려면 세션을 직접 찾아야 했습니다. 이제 agent view에서 /resume를 입력하면 과거 세션(목록에서 삭제한 세션 포함) 피커가 열리고, 선택한 세션을 백그라운드 세션으로 재개합니다.

주요 개선

  • 프롬프트 캐싱이 LLM 게이트웨이와 커스텀 base URL에서 동작

    mid-conversation system block 캐싱이 게이트웨이나 커스텀 base URL 뒤에서는 적용되지 않았습니다. 이제 Bedrock, Vertex, 1P를 포함한 환경에서도 동작합니다.

  • inter-agent 메시징 토큰 사용량 감소

    SendMessage 본문이 replay된 히스토리와 tool result에 중복 복사되어 토큰을 낭비했습니다. 이제 중복이 제거됩니다.

  • 백그라운드 에이전트 cold-attach 개선

    중지된 백그라운드 에이전트에 attach하면 세션이 부팅되는 동안 빈 화면으로 기다려야 했습니다. 이제 부팅 중에도 포맷된 transcript를 즉시 보여줍니다.

  • 웹 검색/페치 안정성 개선

    일시적인 529 오류나 rate limit에 걸리면 웹 검색과 페치가 그대로 실패했습니다. 이제 bounded backoff로 재시도합니다.

  • headless/SDK 세션의 mid-turn 모델 전환

    headless/SDK 세션에서 모델을 바꿔도 다음 턴이 되어야 반영됐습니다. 이제 set_model control request가 다음 model round-trip부터 적용됩니다.

  • agent view의 “Needs input” 상태 표시

    sandbox, MCP-input, managed-settings 프롬프트를 기다리는 세션이 “Working”으로 표시돼 무엇을 기다리는지 알 수 없었습니다. 이제 이런 세션은 “Needs input”으로 표시됩니다. claude agents --json에도 반영됩니다.

  • 세션 transcript에 reasoning effort 기록

    각 assistant 메시지가 어느 reasoning effort 수준에서 나왔는지 기록에 남지 않았습니다. 이제 transcript가 메시지마다 reasoning effort 수준을 기록합니다.

주요 버그 수정

권한과 plan mode

  • plan mode가 파일 수정 Bash 명령(touch, rm 등)을 권한 프롬프트나 SDK canUseTool 콜백 없이 자동 실행하던 문제 수정.
  • worktree 생성이 .claude/worktrees에 리포에 커밋된 심링크를 따라가 리포 외부에 파일을 만들 수 있던 문제 수정.

Hook과 도구 실행

  • continue:false hook의 중단 신호가 도구가 실패하거나 스트림 중간에 완료되면 유실되고, hook 인프라 오류가 사용자 거부로 잘못 보고되던 문제 수정.
  • 실행 중인 Bash 도구에 SIGTERM이 들어오면 print/SDK 모드에서 명령의 프로세스 트리가 orphan으로 남던 문제 수정 — 이제 CLI가 턴을 중단하고 트리를 종료한 뒤 143으로 종료합니다.

세션 재개와 백그라운드 세션

  • offset/limit으로 읽은 파일을 세션 재개 후 편집하면 “File has not been read yet” 오류가 잘못 발생하던 문제 수정.
  • --continue/--resume로 재개한 뒤 print/SDK 모드에서 ExitWorktree가 “no active EnterWorktree session”으로 실패하던 문제 수정.
  • 스트리밍 모드 control request가 핸들러가 끝나기 전에 완료 처리되어 세션 재시작 시 요청이 유실될 수 있던 문제 수정.
  • /fork로 만든 백그라운드 세션이 state write 실패 후 live-parent 보호를 잃던 문제 수정.
  • agent view에서 중지된 백그라운드 세션을 다시 열면 조용히 실패하던 문제 수정 — 이제 세션을 재개하거나, 재개할 수 없는 이유를 보여주고 강제 재시작을 선택할 수 있습니다.
  • workflow agent grid가 실행 도중 합류한 Remote Control 클라이언트에는 비어 있던 문제 수정.
  • agent teams에서 중지 중인 팀원이 팀 초기화가 세션 내에서 재실행될 때 리더에게 중복 idle 알림을 보내던 문제 수정.

/ultrareview

  • PR 참조(#123, PR 123, 붙여넣은 PR URL)를 거부하던 문제 수정 — 오류 힌트도 실제 입력한 명령 이름을 안내합니다.
  • /ultrareview <branch>가 브랜치가 origin에 원격 존재해도 가져오지 않던 문제 수정 — 오타 시 가장 가까운 브랜치 이름을 제안합니다.
  • /clear 후 새 대화에서 /ultrareview가 billing 확인을 건너뛰던 문제 수정.
  • Claude Desktop에서 /ultrareview의 “not a git repository” 오류가 터미널 명령 대신 프로젝트 리포 폴더를 제안하도록 수정.

네트워크와 텔레메트리

  • OpenTelemetry HTTP export가 chunked transfer encoding 때문에 Azure Monitor 등 일부 엔드포인트에서 411/400으로 거부되던 문제 수정.
  • SDK/headless 모드에서 TRACEPARENT가 설정돼도 OTLP event log 레코드에 trace_id/span_id가 누락되던 문제 수정.
  • 이미지가 많은 대화가 “Request too large” 오류로 잘못 실패하던 문제 수정 — 실제 원인을 설명하도록 오류 메시지도 개선.
  • 웹 검색과 페치가 API 과부하 시 “API Error” 텍스트를 검색 결과나 페이지 내용으로 반환하던 문제 수정.
  • hosted(host-managed) 세션이 리포 설정에 mTLS 인증서, 추가 CA 번들, OAuth scope가 있으면 시작에 실패하던 문제 수정 — 이런 transport 설정은 경고와 함께 무시됩니다.

터미널과 플랫폼

  • Windows에서 Group Policy가 PowerShell 5.1을 차단하면 /backgroundclaude --bg가 “EUNKNOWN: unknown error, uv_spawn” 오류로 실패하던 문제 수정 — 데몬이 PowerShell 7을 우선 사용합니다.
  • 경로 자동완성 팝업이 열려 있으면 shell 모드(!)가 파일 경로가 포함된 명령을 실행하지 않던 문제 수정.
  • auto-mode 거부 알림이 긴 사유를 이모지 중간에서 잘라 깨진 문자로 렌더링하던 문제 수정.
  • extended key reporting을 지원하는 터미널에서 Ctrl+J가 agent view dispatch 입력에 개행을 넣지 못하던 문제 수정 — 개행 단축키를 ? 도움말 오버레이에도 표시합니다.
  • plan 승인 다이얼로그 푸터가 파일 경로가 길면 “ctrl+g to edit in “을 쪼개던 문제 수정.
  • 환영 배너가 fullscreen 모드에서 너비와 높이가 동시에 바뀌는 리사이즈 후 이전 패널 폭을 유지하던 문제 수정.
  • diff 미리보기가 좁은 레이아웃에서 줄 번호와 +/- 마커를 잃던 문제 수정.

기타

  • @-mention이 부분 파일 읽기 후 아무것도 첨부하지 않고, plugin uninstall이 잘못된 마켓플레이스를 대상으로 하고, 종료 코드 143에서 잘못된 “Command timed out”이 뜨던 문제 수정.

알아두면 좋은 점

  • 세션 단위 상한 도입 — 웹 검색 200회, 서브에이전트 200개가 기본값입니다. 대규모 자동화 워크플로가 이 한도에 걸릴 수 있으므로, 필요하면 CLAUDE_CODE_MAX_WEB_SEARCHES_PER_SESSION, CLAUDE_CODE_MAX_SUBAGENTS_PER_SESSION으로 조정하세요. 서브에이전트 예산은 /clear로 리셋됩니다.
  • /fork 동작 변경과 /subtask 신설/fork는 이제 백그라운드 세션을 복제합니다. 이전처럼 in-session 서브에이전트를 실행하려면 /subtask를 사용하세요.
  • Task 도구 mode 파라미터 폐기(deprecated) — 이제 무시되며, 서브에이전트는 기본적으로 부모 세션의 권한 모드를 상속합니다.
  • Enterprise forceLoginMethod 적용 범위 확대 — 터미널뿐 아니라 VS Code 확장, SDK, setup-token, install-github-app 로그인에도 적용됩니다.
  • 2.1.200 릴리스 노트 정정 — tmux 3.6 계열은 synchronized output을 지원하지 않으며, 지원하는 최신 tmux는 자동으로 감지됩니다.