
Claude Code v2.1.222|worktree 격리 취약점 해결|매일 Changelog 해설
요약
Claude Code v2.1.222 업데이트를 통해 worktree 격리 취약점을 해결했습니다. 이제 Bash 실행 시에도 메인 체크아웃에 영향을 주지 않도록 격리가 적용되며, 권한 우회 문제와 Remote Control 설정 방식도 개선되었습니다.
핵심 포인트
- worktree 격리 강화: Bash 실행 시 메인 체크아웃에 대한 파괴적 git 명령어 실행 방지
- 보안 취약점 수정: PreToolUse 훅을 통한 툴 제한 우회 및 에이전트 간 메시지 권한 검증 강화
- Remote Control 설정 변경: 리포지토리 설정 대신 유저 스코프를 통한 설정 권장
- 기능 변경: ultraplan 기능 폐지 및 /usage MCP 서버 할당량 산정 방식 개선
worktree로 격리했을 세션이 메인 체크아웃(checkout)에 대해 파괴적인 git 명령어를 실행할 수 있었던 문제가 있었습니다. v2.1.222에서 이 문제가 해결되었으며, 격리는 파일 편집과 Bash 모두에 대해 모든 세션 타입에 적용됩니다. 권한 경계에 존재하던 다른 허점들도 수정되었습니다.
worktree 격리가 Bash를 통과하고 있었음- 격리 세션과 서브 에이전트(subagent)가 메인 체크아웃에 대해 파괴적인 git 명령어를 실행할 수 있었음 (v2.1.222) -
PreToolUse의 auto-allow 훅(hook)이 툴 제한을 우회하고 있었음- 요약, 컴팩션(compaction), 리네임(rename)과 같은 백그라운드 태스크가 대상 (v2.1.222) -
- 다른 에이전트 세션으로 보내는 메시지를 전송 전에 평가 (v2.1.222)
SendMessage가 권한 분류기(permission classifier)를 통과하게 됨 -
Remote Control의 자동 실행이 유저 스코프(user scope)로 한정됨- 리포지토리 측 설정으로는 ON 할 수 없으며, OFF 설정은 계속 유효함 (v2.1.222) - - 툴 결과를 실제로 소비한 요청만 집계 (v2.1.222)
/usage의 MCP 서버 안분(pro-rata)이 실태 기반으로 변경 -
ultraplan 삭제- 기능별 폐지 (v2.1.222)
격리 대상이 파일 편집에만 국한되어 Bash가 빠져 있었습니다. 서브 에이전트를 worktree 격리로 실행하면 전용 worktree가 생성됩니다. 파일 쓰기 작업은 그 안에 갇히게 됩니다. 하지만 Bash를 통해 실행한 git reset --hard나 git checkout은 메인 체크아웃에 도달했습니다.
Fixed worktree-isolated sessions and their subagents being able to run destructive git commands against the main checkout; isolation now applies to file edits and Bash in every session type
에이전트를 병렬로 돌리며 git 조작을 허용하던 구성에서는, v2.1.222 이전 버전에서 격리 세션의 git 명령어가 메인 측의 작업 트리(working tree)에 도달했습니다. 커밋되지 않은 변경 사항이 사라진 경험이 있다면 이 수정 사항이 해당됩니다.
v2.1.222에서는 격리가 파일 편집과 Bash 모두에 적용되며, worktree 세션에 국한되지 않고 모든 세션 타입에 적용됩니다.
대상 독자: PreToolUse 훅에서 자동 허용을 반환하는 사람, 여러 에이전트를 SendMessage로 연계하고 있는 사람
PreToolUse 훅에서 자동 허용을 반환하는 구성으로 설정한 경우, 요약, 컴팩션, 세션 리네임과 같은 백그라운드 태스크에서 툴 제한이 우회되고 있었습니다. 훅 측의 허용이 태스크에 부여된 제한보다 강력했던 형태였습니다. v2.1.222에서 이 우회로가 차단되었습니다.
auto mode 측에도 수정이 이루어졌습니다. SendMessage를 통해 다른 에이전트 세션으로 보내는 메시지가 디스패치(dispatch) 전에 권한 분류기의 평가를 거치게 되었습니다. 에이전트 간의 메시지를 우회로로 삼은 지시는 여기서 차단됩니다.
Remote Control의 자동 실행은 .claude/settings.json과 .claude/settings.local.json에서 ON 할 수 없게 되었습니다. OFF로 만드는 용도로는 계속 유효합니다. ON 하려는 경우에는 유저 스코프에서 /config를 통해 설정해 주세요.
ultraplan은 기능별로 삭제되었습니다.
| 버전 | 카테고리 | 변경 사항 | 개요 |
|---|---|---|---|
| v2.1.222 | 수정 | /usage의 MCP 배분 | 서버별 할당량이 해당 도구 결과를 실제로 소비한 요청만을 반영하도록 변경됨 |
| v2.1.222 | 수정 | 기동 시의 통신 체크 | HTTPS 프록시(Proxy) 환경에서 행(Hang)이 발생하며 실패하던 문제 해결. API 요청과 동일한 프록시 대응 transport를 사용하며, 타임아웃 시 메시지를 표시 |
| v2.1.222 | 수정 | 조직 제한 하의 모델 별칭 | model: opus 형식의 서브 에이전트(Sub-agent) / 팀메이트 지정 시, 부모 모델로 떨어지는 대신 동일 패밀리 내의 최신 허가 모델로 지정됨 |
| v2.1.222 | 수정 | 스트림(Stream) 유휴 타임아웃 | 자체 ANTHROPIC_BASE_URL 게이트웨이에서 keep-alive ping이 도달하고 있음에도 타임아웃이 발생하던 문제 해결 |
| v2.1.222 | 수정 | 세션과 PR의 연결 | 브랜치를 push한 후에 생성한 PR (GitHub REST API 경유 포함)이 연결되지 않던 문제 해결 |
| v2.1.222 | 수정 | /usage-credits | Team / Enterprise 환경에서 이전 신청이 거절된 멤버가 재신청할 수 없던 문제 해결 |
| v2.1.222 | 수정 | claude.ai 커넥터 | 세션 토큰이 무효할 때 '인증 필요'라고 잘못 표시하지 않고, /login을 안내하도록 수정 |
| v2.1.222 | 수정 | SendMessage의 글자 수 상한 | 긴 요약을 거부하지 않고, 길이를 조절(Truncate)하여 전송 |
| v2.1.222 | 개선 | /diff와 Web 세션의 차이 | git blob의 원시 데이터를 사용하여, 리포지토리 설정의 diff 드라이버와 textconv를 무시 |
| v2.1.222 | 개선 | skill 호출 거부 메시지 | disable-model-invocation skill은 워크플로우를 흉내 내지 않고 사용자에게 실행을 요청하도록 Claude에게 전달 |
v2.1.222는 21건의 변경 사항 중 16건이 수정이며, 새로운 기능 추가는 없습니다. 권한의 경계가 worktree 격리, PreToolUse 훅, SendMessage의 세 곳에서 동시에 강화된 버전입니다. 서브 에이전트(Sub-agent)를 병렬로 실행하는 환경일수록 업데이트 후의 동작이 달라질 수 있습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기