어제 나온 v2.1.251은 고친 목록이 유난히 긴데, 그 가운데 권한 경계를 다시 조인 항목이 여럿이에요. Read·Write·Edit 가 권한 검사를 통과한 뒤 작업 디렉토리 안에서 심링크가 바뀌면 승인받은 자리 밖의 파일을 읽거나 쓸 수 있었고, Grep·Glob 은 심링크를 낀 검색 경로로 닿은 파일에는 Read(...) 거부 규칙을 아예 적용하지 않고 있었어요. 저장소에 딸려 오는 프로젝트 설정도 함께 좁혔는데, .claude/settings.json 이 자세한 베타 추적이나 API 본문 원문 기록을 켜거나 CLAUDE_CONFIG_DIR·TMPDIR 을 바꿀 수 있던 걸 막았고 자격 증명·라우팅 헤더를 넣는 ANTHROPIC_CUSTOM_HEADERS 는 승인을 받게 했어요. 정작 4월엔 심링크를 따라가 작업 공간 밖에 파일을 쓰는 문제에 High 등급 보안 권고가 붙었는데, 이번 권한 검사 쪽 건들은 8월 29일 현재 권고 없이 변경 목록 줄로만 나가 있어요.
용어 풀이
- 심링크
- 다른 파일이나 디렉토리를 가리키는 바로가기 파일. 경로를 따라가면 실제로는 다른 자리의 파일이 열린다
- 거부 규칙
- 설정 파일 permissions 의 deny 목록. 여기 적힌 경로는 승인을 묻지도 않고 아예 막힌다
- CLAUDE_CONFIG_DIR
- 설정·로그인 정보·세션 기록·플러그인을 담는 디렉토리 위치를 정하는 환경변수
- ANTHROPIC_CUSTOM_HEADERS
- 클로드 코드가 API 로 보내는 요청에 헤더를 덧붙이는 설정. Authorization·Host 처럼 요청이 어디로 어떤 자격으로 가는지를 바꾸는 값도 넣을 수 있다
운영자 인사이트
권한 allow/deny 는 최후 방어선이 아니라 한 겹일 뿐이라는 걸 이번 목록이 보여 줘요 — 에이전트에게 정말 안 보이길 바라는 파일은 거부 규칙에 맡기지 말고 작업 디렉토리 밖에 두고, 심링크가 흔한 작업 트리라면 v2.1.251 로 올려 두세요.
여러 관점으로 보기
- 같은 버전이 함께 좁힌 프로젝트 설정 이제 프로젝트의 .claude/settings.json 은 env 로 CLAUDE_CONFIG_DIR·CLAUDE_CODE_TMPDIR·TMPDIR/TMP/TEMP 를 정할 수 없고, 셸이나 사용자·관리 설정으로 옮기라고 노트가 적어 뒀어요. 정작 공식 환경변수 문서의 '설정 파일에서' 절에는 어떤 파일이 누구에게 적용되는지만 표로 있을 뿐, 프로젝트 설정이 못 정하는 키 목록은 아직 없어요. Claude Code Docs
- 4월엔 같은 심링크 경로가 High 등급 권고였어요 이 저장소에 올라온 보안 권고 10건 중에는 '심링크를 따라가 작업 공간 밖에 파일을 쓰는 샌드박스 탈출'이 High 등급으로 4월 20일에 있어요. 가장 최근 권고는 6월 25일 자라, 이번 v2.1.251 의 권한 검사 우회 건들은 8월 29일 현재 권고 없이 릴리스 노트 줄로만 남아 있어요. GitHub
- 직전 v2.1.250 은 한 줄이 전부였어요 하루 앞선 v2.1.250(8월 28일 00:49)의 노트는 'Bug fixes and reliability improvements' 한 줄뿐이라 무엇이 바뀌었는지 알 수 없어요. v2.1.249 는 아예 건너뛰어 공개되지 않았고요. GitHub