
Claude Code v2.1.214 | permission 체크 허점이 일제히 보완됨 | 매일 Changelog 해설
요약
Claude Code v2.1.214 업데이트를 통해 권한(permission) 체크의 보안 허점이 대폭 보완되었습니다. 디렉토리 허용 규칙의 범위를 현재 작업 디렉토리로 제한하고, Bash 및 Docker 명령어 실행 시 보안을 위해 fail-closed 원칙을 적용했습니다.
핵심 포인트
- 디렉토리 허용 규칙(dir/**)이 현재 작업 디렉토리(cwd) 기준으로 엄격하게 제한됨
- 악의적 이용 방지를 위한 EndConversation 도구 추가
- Bash 명령어 실행 시 10,000자 초과 및 복잡한 리다이렉트 등에 대해 자동 승인 차단
- Docker 및 Podman의 리모트 모드 실행 시 확인 절차 강화
- 분석기가 구조를 완전히 파악할 수 없는 명령어는 자동 승인하지 않는 원칙 적용
v2.1.214는 permission(권한) 체크의 누락을 일제히 보완하는 릴리스입니다. Edit(src/**)와 같은 allow(허용) 규칙이 트리 내 어디에 있는 src/에 대한 쓰기도 자동 승인하던 버그가 수정되었습니다. allow를 세밀하게 작성한 설정일수록 승인 프롬프트가 나타나는 방식이 달라집니다.
- 단일 세그먼트
Edit(src/**)의 과도한 적용 수정:dir/**allow 규칙이<cwd>/dir이외의dir/까지 자동 승인하던 문제 (v2.1.214)
EndConversation 도구 추가: 악의적인 이용이나 탈옥(jailbreak) 시도에 대해 Claude 측에서 세션을 종료할 수 있음 (v2.1.214)
Bash의 permission 체크가 전반적으로 fail-closed로 변경: 10,000자 초과 명령어, FD 리다이렉트, zsh의 [[ ]] 인덱스 등이 자동 승인되지 않음 (v2.1.214)
docker의 데몬 리다이렉트 플래그에 확인 절차 추가: --url / --connection / --identity 및 Podman의 리모트 모드가 확인 없이 실행되던 문제 (v2.1.214)
백그라운드 세션의 잔류 및 삭제 불가능 문제 수정: claude rm으로 지울 수 없거나, 유휴(idle) 상태에서도 데몬이 살아남는 등 여러 문제 (v2.1.214)
- v2.1.181 이후, CLI 플래그로 활성화한 plugins(플러그인)이 읽히지 않던 문제 (v2.1.214):
--settings를 통한 plugins 미로드 회귀 현상 수정
.claude/settings.json의 allow 규칙이나 hook의 if: 조건에서 단일 세그먼트인 dir/**를 작성하고 있는 경우, 이번 업데이트로 동작이 변경됩니다. 승인 프롬프트가 늘어나거나 hook이 발화하지 않는다면 우선 이 부분을 의심해 보세요.
대상 독자: Edit(src/**)나 Read(config/**)와 같은 allow 규칙, 혹은 hook의 if: 조건을 .claude/settings.json에 작성하고 있는 사람.
지금까지 Edit(src/**)는 <cwd>/src뿐만 아니라 트리 내 어디에 있는 src/에 대한 쓰기도 자동 승인해 왔습니다. 모노레포(monorepo)에서 packages/foo/src/나 vendor/lib/src/를 건드리면 의도치 않게 통과되었습니다. v2.1.214에서 이것이 <cwd>/src로만 한정되었습니다.
hook의 if: 조건도 같은 방향으로 변경되었습니다. 단일 세그먼트인 dir/**는 <cwd>/dir에만 매치되며, 임의의 깊이에서 매치시키고 싶다면 **/dir/**라고 작성해야 합니다. 단, deny(거부) / ask(확인) permission 규칙은 기존과 동일하게 임의의 깊이에서 매치되므로, 안전 측의 동작은 유지됩니다.
Bash의 permission 체크 측도 일괄적으로 엄격해졌습니다.
- 10,000자를 초과하는 명령어는 항상 프롬프트를 띄움 (이전에는 오판으로 자동 실행되는 경우가 있었음)
- bash가 해석을 달리하는 FD 리다이렉트 형식은 fail-closed 처리. 자동 승인하지 않음
[[ ]]내의 zsh 변수 인덱스 및 수식어를 '단순 문자열'로 간주하던 것을 수정하여 확인 절차를 거치도록 함- 일부
help/man명령어가 위험한 옵션이나 명령어 치환(command substitution)을 실행할 수 있었기에 자동 승인을 철회
모두 분석기(parser)가 구조를 완전히 읽어낼 수 없는 명령어는 자동 승인하지 않는다는 하나의 원칙으로 통일되었습니다.
docker에 데몬 리다이렉트 계열의 플래그가 붙어 있을 때도 확인 프롬프트를 띄우게 되었습니다. 대상은 --url / --connection / --identity 및 Podman의 docker 심(shim) 리모트 모드입니다. 이것들은 접속 대상을 다른 데몬으로 돌리기 때문에, read-only(읽기 전용)라고 생각하고 허가했다가는 예상치 못한 호스트로 명령어가 날아갈 수 있습니다. file 명령어 또한 마찬가지로, -m / --magic-file과 -f / --files-from을 사용하는 형태는 read-only 자동 허가 대상에서 제외되었습니다.
Claude는 악성 사용자나 탈옥 시도에 대해 세션 자체를 종료할 수 있는 EndConversation 툴을 추가했습니다. claude.ai에서는 2025년부터 작동하던 기능이 Claude Code에도 적용된 형태입니다.
Claude can end sessions with highly abusive users or jailbreak attempts
배경에는 공식 리서치에 설명이 있습니다.
백그라운드 세션의 '삭제되지 않거나 남아있는' 종류의 버그들을 모아서 수정했습니다.
←
또는 /background
으로 대피하여 유휴 상태로 방치하면, 데몬과 워커가 무기한으로 살아남았습니다.
- 완료된 세션이 백그라운드 서비스의 유휴 후에도
claude rm
으로도 에이전트 뷰에서도 삭제할 수 없었습니다. - git 관리 외 폴더에서 시작한 세션이 에이전트 뷰에서 사라지지 않았습니다.
- 교대하는 데몬이 후속 제어 소켓을 삭제하여, 다음 클라이언트가 건전한 후속 데몬을 kill 해버리는 문제
대피 세션을 방치하여 데몬이 남아있던 환경이라면, v2.1.214에서 모두 해결됩니다.
| 버전 | 카테고리 | 변경점 | 개요 |
|---|---|---|---|
| v2.1.214 | 신기능 | 진행률 하트비트 (Progress Heartbeat) | 무음이었던 장시간 툴 실행에 주기적인 진행률 표시 추가 |
| v2.1.214 | 신기능 | OTel 속성 추가 | message.uuid / client_request_id / tool_source를 로그 이벤트에 부여하여, 메시지 상관관계 및 툴 출처 추적이 가능해짐 |
| v2.1.214 | 신기능 | CLAUDE_CODE_OTEL_CONTENT_MAX_LENGTH | OTel content 속성의 60 KB 자르기 상한 설정 가능 |
| v2.1.214 | 신기능 | memory frontmatter의 modified | |
| ISO 타임스탬프를 자동 부여 | |||
| v2.1.214 | 신기능 | subagentStatusLine에 reasoning effort | 커스텀 에이전트 라인에서 모델과 effort를 표시할 수 있게 됨 |
| v2.1.214 | 파괴적 변경 | SessionStart hook의 source | fork로 시작한 세션을 ` |
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기