Claude Code v2.1.299 변경점: 유휴 압축과 MCP 규칙 변경
Claude Code v2.1.299는 긴 대화의 프롬프트 캐시 비용을 줄이는 유휴 압축을 추가했습니다. 함께 MCP 권한 규칙과 훅 실행 순서가 바뀌어, 기존 설정을 쓰는 분은 확인할 부분이 있습니다.
- 200K 토큰 이상 대화를 약 54분 유휴 시 압축하는 idle compaction이 터미널에 추가되었습니다.
- CLAUDE_CODE_DISABLE_FILE_MENTIONS로 @ 파일 멘션이 내용 대신 경로만 전달하도록 바꿀 수 있습니다.
- MCP allow 규칙이 이름이 정확히 일치하는 서버에만 적용되어 mcp__a가 a__b 서버를 허용하지 않습니다.
- UserPromptSubmit 훅이 스킬과 슬래시 명령 확장 전에 실행되어, 차단된 프롬프트의 내장 셸 명령도 막힙니다.
릴리스 노트 전체
공식 릴리스 노트의 190개 항목을 원문 순서대로 한 줄씩 옮겼습니다. 더하거나 뺀 항목은 없습니다.
- `CLAUDE_CODE_DISABLE_FILE_MENTIONS` 환경 변수를 추가했습니다: Claude가 `@` 파일 멘션의 내용 대신 경로를 받아 파일 도구로 직접 읽습니다
- 터미널에 유휴 압축을 추가했습니다: 200K 토큰 이상의 대화가 약 54분간 유휴 상태이면 1시간짜리 프롬프트 캐시가 만료되기 전에 압축하므로, 다음 메시지를 보낼 때 전체를 다시 처리하지 않습니다
- 유휴 압축의 최소 기준인 200K 토큰을 바꾸는 `CLAUDE_CODE_IDLE_COMPACT_MIN_TOKENS`를 추가했습니다. settings.json의 `"idleCompaction": false`로 끌 수 있습니다. 둘 다 v2.1.290 이상이 필요합니다
- 관리형 설정으로 설치된 모드의 `prompt.submit` 훅이 프롬프트에 첨부된 이미지나 문서의 바이트를 읽을 수 있도록 `$.prompt.media`를 추가했습니다
- 관리형 설정으로 설치된 모드를 위한 `$.session.identity()`를 추가했습니다: 세션의 로그인 방식과, 관리형 `forceLoginOrgUUID`에 해당 조직이 있으면 그 조직과 이메일을 알려줍니다
- 모드의 `Text`에 `size`, `weight`, `mono`, `tabular`를, `Box`에 이름이 붙은 간격 단계(`xs`~`xl`)를 추가했습니다. `bold`는 `weight`로 대체되어 더 이상 사용되지 않습니다
- `claude self-hosted-runner orchestrator`에 `--shutdown-drain-sec`를 추가했습니다: SIGTERM을 받으면 폴링을 중단하고, 진행 중인 폴링과 실행 중인 spawn 훅이 끝날 때까지 최대 지정한 초만큼 기다립니다
- 모드의 `skill.prompt` 훅이 받는 정보에 스킬의 프런트매터, 출처, 플러그인 이름, 파일 경로를 추가했습니다
- 에이전트 보기에서 새 세션의 시작 설정을 정하는 `/effort`와 `/fast`를 추가했습니다. 이제 거기서 인자 없이 `/model`, `/effort`, `/fast`를 입력하면 선택기가 열립니다
- `--safe-mode`로 시작한 백그라운드 세션에 대해 에이전트 보기 미리보기 패널에 "safe mode" 줄을 추가했습니다
- 권한 우회가 가능하여 계획 모드가 대부분의 편집이나 명령 전에 묻지 않을 때 한 번 표시되는 안내를 추가했습니다
- `claude plugin eval`에 `--disallow-tools`와 `disallowed_tools` 케이스 필드를 추가해, Agent 같은 특정 내장 도구를 평가 실행에서 제외할 수 있습니다
- Claude Desktop의 Code 탭에서 귀속 표시 블록을 끄는 기능을 추가했습니다: Claude apps 게이트웨이의 `code` 정책 `env`에 `CLAUDE_CODE_ATTRIBUTION_HEADER=0`을 설정하면 됩니다
- Claude apps 게이트웨이를 거치는 Claude Code 세션의 귀속 표시 블록에 필드를 추가했습니다. 블록은 `CLAUDE_CODE_ATTRIBUTION_HEADER=0`으로 제거할 수 있습니다
- `session.append` 모드 훅에 `queue` 도어를 추가해, 모드가 대화 기록의 큐 레코드를 전송된 프롬프트와 다르게 만들 수 있습니다
- 조직이 Claude Code를 관리하는 환경에서 건너뛰는 모드의 훅을 알려주는 안내를 `/plugin`과 `claude plugin validate`에 추가했습니다
- 최대 effort, 워크플로, 상시 컨텍스트, 큰 도구 결과에 대한 `/usage` 경고를 추가했습니다
- `apiKeyHelper`의 키를 사용 중일 때 거부된 클라우드 세션의 오류가 엉뚱한 조직을 가리킬 수 있던 문제를 고쳤습니다
- 사용자 지정 `ANTHROPIC_BASE_URL` 뒤에서 게이트웨이 전용 모델 이름을 쓰는 세션이, 요청을 보내는 대신 200K 토큰 근처에서 "Prompt is too long · automatic compaction failed"로 끝나던 문제를 고쳤습니다
- 매 턴이 끝날 때마다 프롬프트를 제출하는 모드 때문에 헤드리스 실행이 `--max-turns`, `--max-budget-usd`, 인터럽트, 호스트 대화 종료 이후에도 계속되던 문제를 고쳤습니다
- 클라우드 세션에서 모델의 후속 텍스트가 도구 그룹의 한 줄 라벨 뒤에 표시되는 경우가 있던 문제를 고쳤습니다
- 설정 디렉터리 경로에 `.claude`가 없을 때, 편집 수락 모드에서 Write와 Edit 도구가 묻지 않고 세션의 mods 폴더에 모드를 만들던 문제를 고쳤습니다
- 원격으로 꺼진 뒤에도 열린 세션에서 계속 실행되던 설치된 모드를 고쳤습니다. 이제 턴 사이에 언로드됩니다
- `UserPromptSubmit` 또는 모드 `prompt.submit` 훅이 아직 실행 중일 때 중단된 메시지에 대해 Cowork와 claude.ai 클라우드 세션의 Edit와 Retry가 실패하던 문제를 고쳤습니다 (2.1.296의 회귀)
- 설명 없이 시작한 에이전트 팀원의 작업 설명에 프롬프트에 있던 자격 증명 일부가 남아 표시되던 문제를 고쳤습니다
- 느린 연결에서 대량의 이벤트 업로드를 끝내지 못할 때 Remote Control 또는 클라우드 세션의 claude.ai 화면이 멈추던 문제를 고쳤습니다
- 샌드박스 안의 셸 명령이, Claude Code가 샌드박스 밖에서 다시 불러와 실행하는 `--plugin-dir` 폴더에 쓸 수 있던 문제를 고쳤습니다
- 디버그 로깅(`--debug`, `--debug-file`)이 많을 때의 메모리 증가와, 디버그 로그가 쓰기를 받지 않게 된 디스크나 네트워크 마운트에 있을 때 종료 시 멈추던 문제를 고쳤습니다
- 디버그 출력이 stderr로 가고 부모 프로세스가 읽기를 멈출 때 메모리가 끝없이 증가하던 문제를 고쳤습니다
- `rm`을 실행하지 않는 셸 `-c` 스크립트에서 rm 확인 창이 뜨던 문제를 고쳤습니다. Claude Code가 읽을 수 없는 스크립트에서 실행 시점에 만들어지는 rm은 `CLAUDE_CODE_STRICT_INLINE_SHELL_RM_PROMPT=1`이 아니면 더 이상 확인을 요구하지 않습니다
- 전체 화면 모드에서 펼친 대화 기록 행의 단어를 더블클릭하면 단어가 선택되지 않고 행이 접히던 문제를 고쳤습니다
- `claude mcp list`, `claude doctor`, `/status`가 빈 `.mcp.json`을 유효하지 않다고 보고하던 문제를 고쳤습니다
- 전체 화면에서 위로 스크롤한 상태로 `/btw`를 물으면 대화 기록이 맨 아래로 이동하던 문제를 고쳤습니다
- 샌드박스가 Windows 드라이브에 쓸 수 있을 때 WSL2에서 샌드박스 명령이 `bwrap: Can't mkdir /mnt/c/Program Files/ClaudeCode`로 실패하던 문제를 고쳤습니다
- Agent SDK, IDE, `claude remote-control` 세션에서 백그라운드 작업이 실행 중일 때 예약된 깨우기(ScheduleWakeup)가 작동하지 않던 문제를 고쳤습니다
- 붙여넣은 이미지가 있거나 읽을 수 없는 이미지가 있는 일부 프롬프트에서 모드의 `prompt.submit` 재작성이 조용히 무시되고 입력한 그대로 전송되던 문제를 고쳤습니다
- 같은 배치의 다른 대기 프롬프트 전달이 실패하면 Remote Control 프롬프트가 유실되던 문제를 고쳤습니다
- Stop이 다음 대기 프롬프트의 훅을 중단했을 때, 훅을 이미 통과한 Remote Control 프롬프트가 프롬프트 기록에서 빠지던 문제를 고쳤습니다
- 샌드박스 명령이 설정 디렉터리에 빈 `.config.json`을 남긴 뒤 Linux에서 로그인, MCP 서버, 프로젝트 신뢰 정보가 사라진 것처럼 보이던 문제를 고쳤습니다
- 프로젝트 폴더에 쓸 수 없어 설정을 저장하지 못했는데도 `/sandbox`가 성공했다고 보고하던 문제를 고쳤습니다. 이제 아무것도 바뀌지 않았다는 사실과 그 이유를 알려줍니다
- 호스트가 자동 모드를 지원하지 않는 모델로 전환한 뒤에도 SDK 및 헤드리스 세션이 자동 모드에 머물던 문제를 고쳤습니다
- MCP 설정에서 이름이 `constructor` 또는 `prototype`인 MCP 서버에 연결되지 않던 문제를 고쳤습니다
- 이름이 `constructor` 또는 `toString`인 MCP 서버의 도구가 자동 모드와 권한 우회 모드에서 권한을 요청하던 문제를 고쳤습니다
- 다른 Claude Code 프로세스가 claude.ai에서 동기화된 플러그인을 방금 업데이트했을 때 시작 시 "synced[0] commands path not found" 플러그인 오류가 잘못 표시되던 문제를 고쳤습니다
- 커넥터나 기타 접근 권한을 요청하는 게시가 서버나 프록시에 의해 거부되었을 때(HTTP 403) Artifact 도구가 재시도를 권하던 문제를 고쳤습니다. 이제 그 사실과 사용자에게 안내할 내용을 알려줍니다
- 시간 초과된 플러그인 다시 불러오기나 최근 동기화를 재사용한 재시작 뒤에도 Cowork 클라우드 세션이 이전 계정 플러그인을 계속 쓰던 문제를 고쳤습니다
- Claude가 작업하는 동안 보낸 사용자의 메시지에서 문서 블록이 누락되던 문제를 고쳤습니다
- 브라우저가 연결되지 않았을 때 Claude in Chrome이 권한을 요청하던 문제를 고쳤습니다. 이제 확장 프로그램이 연결되지 않았다고 알려줍니다
- 전체 화면의 "Update installed" 알림이 유휴 상태의 "/clear to save tokens" 힌트에 가려지던 문제를 고쳤습니다. 이제 힌트 옆에 표시됩니다
- `.catch`의 유무와 관계없이, 작업을 호출 밖에서 처리하는 다른 모드의 noun을 기다리는 모드 훅이 끝없이 다시 실행되던 문제를 고쳤습니다
- Claude apps 게이트웨이가 정책의 `availableModelsMatch: exact` 또는 `deniedModels`가 차단한 모델을 제공하던 문제를 고쳤습니다. 이제 400으로 응답하고 모델 목록에서 제외합니다
- 관리형 설정 파일이 `ANTHROPIC_BASE_URL`을 설정한 경우 Anthropic으로 가는 서버 관리형 설정 요청에 서드파티 게이트웨이의 API 키가 실리던 문제를 고쳤습니다
- 사용자 지정 `ANTHROPIC_BASE_URL`을 통한 스트림이 데이터가 없는 상태로 180초가 지나면 중단되던 문제를 고쳤습니다. 이제 기능 플래그 로드 여부와 관계없이 300초를 기다립니다
- `$.ui.invalidate` 이후 바뀐 모드의 `tool.describe` 또는 `prompt.section` 응답이 Claude에게 전달되지 않던 문제를 고쳤습니다. 이제 새 응답이 다음 턴에 전송됩니다
- `enabledMcpjsonServers` 또는 `disabledMcpjsonServers`에 서버 이름 하나(문자, 숫자, - 또는 _)가 일반 문자열로 들어 있을 때 설정 파일이 무시되던 문제를 고쳤습니다
- `claude plugin test`에서 호출된 `$` 메서드가 응답한 뒤에도 계속 `$`를 호출하는 동안 훅의 시간 예산이 일시 중지되던 문제를 고쳤습니다
- 서브에이전트를 많이 실행한 클라우드 또는 Remote Control 세션을 재개한 뒤 메모리 사용량이 높던 문제를 고쳤습니다
- 매우 깊게 중첩된 도구 입력이나 메시지를 next()로 넘길 때 플러그인 훅이 건너뛰어지던 문제를 고쳤습니다
- 모드의 훅이 `next()`에 넘기거나 반환하거나 `$` 메서드로 보내는 값의 getter 하나가 `RangeError`를 던지면 값 전체가 거부되던 문제를 고쳤습니다. 이제 해당 키만 거부됩니다
- `/usage`, 한도 임박 경고(터미널 및 VS Code), 상태 표시줄이 간혹 100%를 넘는 사용량을 표시하던 문제를 고쳤습니다 (anthropics/claude-code#92238)
- CJK 또는 이모지가 라틴 단어와 섞인 줄바꿈 텍스트가 일부 터미널 너비에서 마지막 줄을 잃거나 빈 행이 생기던 문제를 고쳤습니다
- 세션의 워커가 교체되는 동안 권한 프롬프트나 질문에 답하면 클라우드 세션이 그 답변을 무시하는 경우가 있던 문제를 고쳤습니다
- 굵게, 기울임 등 중첩된 텍스트 스타일이 표 테두리를 넘어서거나 줄바꿈된 행에서 사라지던 문제를 고쳤습니다
- 다른 기기에서 변경, 제거 또는 비활성화한 계정 플러그인의 이전 버전이 세션을 다시 시작할 때까지 Cowork 클라우드 세션에서 계속 실행되던 문제를 고쳤습니다
- MCP 서버의 정규화된 이름에 밑줄 두 개가 들어 있으면 해당 서버(`mcp__<server>`)에 대한 deny 및 ask 규칙이 적용되지 않던 문제를 고쳤습니다
- 용량이 너무 큰 이미지 하나를 API가 거부한 뒤, 긴 대화에서 새로 첨부한 이미지가 매 턴마다 누락되던 문제를 고쳤습니다
- 훅이 hooks 모듈인 플러그인(기본 제공 플러그인 포함)에 대해 `plugin_loaded` 텔레메트리 이벤트가 `has_hooks`를 false로 보고하던 문제를 고쳤습니다
- Claude가 작업하는 동안 첨부한 이미지(VS Code, 데스크톱 앱, SDK)가 원래 크기로 전송되어 긴 대화에서 이미지 오류가 반복되던 문제를 고쳤습니다
- 최신 모델에서 정사각형에 가까운 큰 이미지의 이미지 좌표 힌트가 없거나 약간 어긋나던 문제를 고쳤습니다
- 서드파티 게이트웨이(`ANTHROPIC_BASE_URL`)용으로 설정한 API 키가 Anthropic으로 가는 기능 플래그, 시작, 빠른 모드, 프로필, 피드백 요청에 함께 실리던 문제를 고쳤습니다. Anthropic API 키는 계속 전송됩니다
- 모드의 핫 리로드가 리로드 실패 직후 저장한 수정을 무시하던 문제를 고쳤습니다. 내용을 바꾸지 않고 모드 파일을 저장해도 더 이상 모드를 다시 로드하지 않습니다
- 훅이 모드의 다른 파일에서 가져온 함수 선언에 `$`를 넘길 때 소스 파일에서 로드한 모드가 거부되던 문제를 고쳤습니다
- 2.1.296에서 발생한 회귀로, 재시작 후 세션을 재개하는 중에 새 메시지가 도착하면 클라우드 및 헤드리스 세션이 승인된 도구 호출을 두 번 실행할 수 있던 문제를 고쳤습니다
- 예약된 작업이 잘못된 분으로 안내되던 문제를 고쳤습니다. 이제 스케줄링 도구가 각 작업의 실제 다음 실행 시각을 보고합니다
- 모드의 훅에 전달되는 값에서 `__proto__` 키가 조용히 제거되어, 다른 모드가 수행한 도구 호출에서 `tool.check` 가드를 건너뛸 수 있던 문제를 고쳤습니다
- 설정 파일이 유효성 검사에 실패해도 `claude -p`가 아무 말도 하지 않던 문제를 고쳤습니다. 이제 텍스트 출력 실행에서는 해당 파일과 잘못된 항목을 stderr에 나열합니다
- 괄호 붙여넣기(bracketed paste)를 지원하지 않는 터미널에서, 잘못 디코딩된 곡선 따옴표 같은 보이지 않는 제어 문자 뒤의 텍스트가 긴 붙여넣기에서 모두 사라지던 문제를 고쳤습니다
- MDM 또는 관리형 설정 파일이 `forceLoginOrgUUID`를 지정한 기기에서 저장된 로그인의 요금제를 로컬에서 변경하면 관리형 설정과 조직 정책을 가져오지 못하던 문제를 고쳤습니다
- 서버가 알림에 대한 응답 본문을 끝내지 않을 때 HTTP를 통한 MCP 연결이 30초 동안 멈췄다가 실패하던 문제를 고쳤습니다 (anthropics/claude-code#99014)
- 실행 중인 헤드리스 또는 SDK 세션에 추가된 MCP 서버가 일부 정책 검사가 실행되기 전에 연결되던 문제를 고쳤습니다. 이제 차단된 서버는 접속하지 않고 실패로 보고됩니다
- `claude mcp list`, `claude mcp get`, 서브에이전트 MCP 서버가 정책 검사로 차단된 서버를 시작하던 문제를 고쳤습니다. 이제 시작하지 않고 차단됨으로 보고됩니다
- `/reload-plugins`가 직전에 다른 터미널에서 설치한 플러그인을 로드하지 못하던 문제를 고쳤습니다
- 아주 좁은 터미널처럼 한 칸 너비의 열에 CJK 및 이모지 텍스트가 압축될 때 아래에 빈 행이 나타나던 문제를 고쳤습니다
- 넓은 문자 옆에서 텍스트가 중간에 잘릴 때 한 칸이 비거나 두 번 잘리던 문제와, 이모지 안에서 색상이 바뀌면 이모지가 사라지던 문제를 고쳤습니다
- 백그라운드 세션의 bare 모드 알림이 모드가 유지되는 `--bare` 없이 다시 시작하라고 안내하던 문제를 고쳤습니다. 이제 안전 모드 알림처럼 `/stop`과 `claude --resume`을 안내합니다
- Remote Control이 켜져 있을 때 대기 중인 메시지 위에서 `←`가 움직이지 않는 이유를 알려 주지 않던 문제를 고쳤습니다
- 모드의 `$.http.fetch`가 4 MiB 본문 제한을 넘는 `Content-Length`를 선언한 `304`, `204`, `205` 응답을 거부하던 문제를 고쳤습니다
- `/config`의 푸시 알림 토글이 방금 선택한 설정이 아니라 이전 설정을 계정에 보내던 문제를 고쳤습니다
- 응답이 출력 토큰 한도에 도달한 직후 워커가 교체되면 클라우드 세션이 응답을 끝내지 못한 채 남겨 두던 문제를 고쳤습니다
- 권한 상승 없이 실행되는 Linux의 원격 세션에서 Read가 PDF 페이지 범위 읽기에 실패하던 문제를 고쳤습니다
- 전송하지 않은 메시지를 입력하는 동안 보류된 질문이나 권한 프롬프트에 Enter가 응답하던 문제를 고쳤습니다
- 원격 세션에서 메시지에 첨부한 파일의 다운로드가 중간에 멈추면 파일이 누락되던 문제를 고쳤습니다. 이제 다운로드를 다시 시도합니다
- `--input-format stream-json`으로 콘텐츠 블록 형태로 보낸 대기 중 프롬프트가 한 턴으로 병합될 때 줄바꿈 없이 붙어 버리던 문제를 고쳤습니다
- 셀프 호스팅 러너 세션에서 연결 도구(커넥터)가 세션 도중 바뀔 때 `--exec-path` 래퍼 자체의 `--mcp-config`로 추가된 MCP 서버가 종료되던 문제를 고쳤습니다
- API가 거부한 실행을 `claude plugin eval`이 통과로 처리하던 문제를 고쳤습니다. 이제 API 오류로 끝난 실행은 채점 없이 0점 처리되고 스위트가 종료 코드 1로 끝납니다
- 사유 텍스트에 키캡 또는 결합 이모지가 있을 때 권한 프롬프트가 잘리거나 너무 일찍 줄바꿈되던 문제를 고쳤습니다
- MDM 또는 관리형 설정 파일의 `forceLoginOrgUUID`와 `forceLoginMethod`가 서버 관리형 설정에 가려지거나 대체되던 문제를 고쳤습니다
- `--bare` 세션이 `--channels`로 요청한 `constructor` 또는 `prototype`이라는 이름의 MCP 서버를 누락하던 문제를 고쳤습니다
- `/clear` 이전의 대화를 재개하면 그 이후 대화의 Remote Control 세션에 다시 연결되던 문제를 고쳤습니다
- `CLAUDE_CODE_RESUME_INTERRUPTED_TURN`이 재시작 후 프롬프트를 다시 실행할 때, Agent SDK의 `verbatimPrompts` 옵션으로 보낸 `/`로 시작하는 프롬프트가 슬래시 명령으로 실행되던 문제를 고쳤습니다
- `--safe-mode`로 시작한 백그라운드 세션이 깨어나거나 다시 시작될 때 조용히 안전 모드를 벗어나던 문제를 고쳤습니다
- 일광 절약 시간제가 끝나 같은 시간이 반복되는 동안 예약된 작업과 루프가 매 턴마다 다시 실행되거나 일찍 실행되던 문제를 고쳤습니다
- 이름이 공백으로 시작하거나 끝나는 새 파일을 diff 보기에서 잘못된 이름으로 표시하던 문제를 고쳤습니다
- 백그라운드 재연결로 실행 중이던 연결이 닫히면 헤드리스 및 SDK 세션의 MCP 도구 호출이 실패하거나 두 번 실행되는 경우가 있던 문제를 고쳤습니다
- 비대화형 세션에서 `/btw` 부가 질문이 세션 종료 시 취소되지 않고, 같은 요청이 실행 도중 다시 도착하면 두 번 실행되던 문제를 고쳤습니다
- macOS에서 거부된 경로가 심볼릭 링크를 거치는 경우, 샌드박스 명령이 실제 위치를 통해 그 경로를 읽거나 쓸 수 있던 문제를 고쳤습니다
- 폴더 이름에 중괄호, 괄호, 역슬래시가 있을 때 샌드박스 `denyRead` 및 `allowRead` 글롭을 Claude Code의 설정 검사와 샌드박스가 서로 다르게 해석하던 문제를 고쳤습니다
- 샌드박스 글롭 `allowRead` 및 `allowWrite` 항목의 시작 디렉터리가 심볼릭 링크로 교체될 때 다시 검사되지 않던 문제를 고쳤습니다
- 워크트리 격리 세션이 격리 가드가 거부해야 할 일부 awk 프로그램을 허용하던 문제를 고쳤습니다
- `claude mcp add <name> -- <command> --background`가 백그라운드 세션으로 시작되던 문제를 고쳤습니다
- 백그라운드 세션에 보낸 프롬프트나 답장이 `--bg` 또는 `--background`이면 플래그로 인식되어, 전달되지 않고 새 세션이 계속 시작될 수 있던 문제를 고쳤습니다
- 프롬프트를 검사하는 동안 더 새로운 메시지가 명령을 중단시키면 사용자 정의 슬래시 명령에 포함된 셸 줄이 두 번 실행되던 문제를 고쳤습니다
- git의 reftable ref 저장소를 쓰는 저장소에서 `--worktree` 세션이 `.git/worktrees`에 폴더를 남기던 문제를 고쳤습니다
- 원격 저장소가 아직 비어 있는 재사용 클론에서 시작할 때, Anthropic 관리 git을 쓰는 `claude self-hosted-runner` 세션이 추적 중인 파일을 스테이징된 삭제로 표시하던 문제를 고쳤습니다
- 설정에서 `ultracode`가 켜져 있을 때 예약된 작업과 그 밖의 전달된 헤드리스 턴에 Ultracode가 안내되지 않던 문제를 고쳤습니다
- MCP OAuth 로그인, 토큰 갱신, 로그아웃이 설정된 `headers`/`headersHelper` 값을 보내지 않아 인증 프록시 뒤의 서버가 동작하지 않던 문제를 고쳤습니다
- `<head>` 뒤에 줄바꿈이 있는 큰 페이지를 변경 없이 다시 게시할 때 Artifact 도구가 라이브 페이지와의 가짜 한 줄 차이를 보고하고 게시를 거부하던 문제를 고쳤습니다
- VS Code용 Claude Code와 `claude -p`처럼 어떤 화면도 모드의 창을 그리지 않는 세션에서 `$.ui.open`이 창이 배치된 것으로 보고하던 문제를 고쳤습니다
- 완료된 서브에이전트나 종료된 팀원을 재개할 때 `agent.spawn` 모드 훅이 실행되지 않던 문제를 고쳤습니다. 이제 훅의 이벤트에 `resume`이 담기며 모드가 이를 거부할 수 있습니다
- `plugin.json`에 `types` 키가 없고 계약이 `./types/index.d.ts`에 있을 때 `claude plugin validate`가 모드의 `$.state` 참조를 거부하던 문제를 고쳤습니다
- 어두운 ANSI 테마와 16색 터미널에서 mod의 `dimColor` 텍스트가 일반 텍스트와 똑같아 보이던 문제를 고쳤습니다
- `PreToolUse` 훅이나 mod의 `tool.check` 훅이 허용한 쓰기 작업(MCP 도구, 파일, 셸 명령)을 계획 모드가 실행하던 문제를 고쳤습니다
- 자동 모드의 백그라운드 서브에이전트가 최종 보고를 결과와 메시지로 두 번 보내는 경우가 있던 문제를 고쳤습니다
- CLI를 다시 시작해 세션을 재개한 뒤 `SendMessage`가 이름으로 서브에이전트를 찾지 못하던 문제를 고쳤습니다(마지막 압축 이전에 지정한 이름은 여전히 에이전트 ID가 필요합니다)
- 요청이 비스트리밍 모드로 전환된 뒤, 출력 토큰 한도에서 잘린 응답이 재시도나 오류 없이 조용히 턴을 끝내던 문제를 고쳤습니다
- Read가 바이트 순서 표시(BOM)가 있는 UTF-16LE 파일을 깨뜨리던 문제와, Write가 바이트 순서 표시를 없애거나 Windows-1252, Shift-JIS, GBK, UTF-16BE 파일을 조용히 UTF-8로 변환하던 문제를 고쳤습니다(이제 거부합니다)
- 압축 직후 워커가 교체될 때 클라우드 세션에서 메시지가 응답 없이 남는 경우가 있던 문제를 고쳤습니다
- 도구가 턴을 끝내고 같은 단계에서 스킬이 로드된 경우, 재시작 후 클라우드 세션과 `CLAUDE_CODE_RESUME_INTERRUPTED_TURN`이 이미 끝난 턴에 다시 응답하는 경우가 있던 문제를 고쳤습니다
- Remote Control로 보낸 사진의 사본을 컴퓨터에 저장하지 못하면 사진이 버려지던 문제를 고쳤습니다. 이제 Claude는 그 사진을 그대로 볼 수 있습니다
- 오래 실행된 세션에서 Remote Control로 보낸 파일이 간혹 도착하지 않던 문제를 고쳤습니다
- Remote Control이나 클라우드 세션으로 보낸 30~35 MiB 크기의 파일이 도착하지 않던 문제를 고쳤습니다
- 사용자가 설치한 mod의 `$.env.set`이 관리형 설정의 명령 훅이 시작되는 환경이나 셸 접두사를 바꾸던 문제를 고쳤습니다
- Windows: 바쁜 컴퓨터에서 프로세스 생존 확인이 고아 PowerShell 프로세스를 남겨 메모리가 바닥날 때까지 쌓이던 문제를 고쳤습니다
- Windows: 셸을 지정하지 않은 PreToolUse 및 PermissionRequest 훅이 Git for Windows가 설치되어 있지 않을 때 실패해도 통과시키던 문제를 고쳤습니다. 이제 실패하는 가드는 호출을 차단합니다
- Windows: Git Bash가 시작 시 PATH를 보고하지 않으면 세션 내내 Bash 명령이 "command not found"로 실패하던 문제를 고쳤습니다
- 자체 호스팅 러너: 러너 머신에 git 자격 증명이 없을 때 `setup`과 `doctor`가 보여 주는 안내를 개선했습니다
- 자체 호스팅 러너: 첫 턴 전에 출력을 쓴 세션이 해제 타이머 없이 남아 `--retire-at`을 무시하고 종료를 지연시키던 문제를 고쳤습니다
- claude.ai 로그인이 거부되었거나 만료되어 클라우드 세션이 거부될 때 표시되는 오류를 개선했습니다. 이제 `claude auth login`으로 다시 로그인하라고 안내합니다
- 사용자가 설치한 mod에 대한 관리형 권한 규칙, 관리형 훅, 조직 MCP 도구 이름의 적용을 개선했습니다
- PDF를 @로 언급할 때의 메모리와 디스크 사용을 개선했습니다. 이제 PDF의 바이트가 세션 대화 기록에 보관되지 않습니다
- Linux의 샌드박스 Bash를 개선했습니다. 이제 명령에 대한 와일드카드 읽기 규칙을 확장하는 동안에도 Esc와 Ctrl-C가 동작합니다
- 인식할 수 없는 모델 ID에 대한 시작 경고를 개선했습니다. 이제 긴 원문 메시지 대신 환영 배너 아래에 문서 링크가 포함된 짧은 한 줄로 표시됩니다
- mod 공유를 위한 플러그인 제작 스킬의 단계를 개선했습니다. Claude가 공개 또는 비공개 여부를 묻고, GitHub 저장소를 만들기 전에 파일을 확인합니다
- Claude가 스킬에 `anthropic-skills:` 접두사를 잘못 붙였을 때, Skill 도구의 "Unknown skill" 오류가 목록에 있는 스킬 이름을 제안하도록 개선했습니다
- `/reload-skills`가 전체 스킬 목록을 Claude에게 다시 보낸다는 점, 즉 압축 후 스킬을 되살리는 방법임을 알려 주도록 개선했습니다
- 기준 커밋을 확인할 수 없어 워크트리를 만들지 못할 때 표시되는 오류를 개선했습니다. 이제 조회가 어떻게 끝났는지와 커밋이 없는 저장소 같은 가능한 원인을 알려 줍니다
- 베어 저장소 구조의 루트에 워크트리를 만들 때의 오류를 개선했습니다. 이제 관련 없는 git 오류 대신 해당 구조를 설명합니다
- 아티팩트 감시를 개선했습니다. 이제 로컬 세션이 게시된 아티팩트를 최대 25개까지 동시에 감시할 수 있습니다(기존 10개)
- 백그라운드 에이전트 알림을 개선했습니다. 이제 에이전트가 자신의 백그라운드 작업만 기다리는 경우, 결과를 내기엔 너무 늦게 메시지를 받은 경우, 사용량 한도로 중지된 경우를 알려 줍니다
- 플러그인 훅과 워크플로 스크립트가 28,000단계보다 깊게 중첩된 반환 값을 거부하도록 변경했습니다. 한도를 명시한 오류가 표시됩니다(워크플로 스크립트는 기존에 100,000단계까지 허용했습니다)
- 플러그인 훅이 차단할 수 있는 동작은 훅에 전달할 수 없거나 훅이 응답을 돌려줄 수 없을 때 통과시키지 않고 거부하도록 변경했습니다. 이미 실행된 도구는 결과가 보류됩니다
- claude.ai 커넥터 프록시와 Anthropic 호스팅 MCP 서버로 가는 요청이 더 이상 HTTP 리디렉션을 따르지 않도록 변경했습니다. 커넥터 자체 서버의 리디렉션은 영향받지 않습니다
- 클라우드 및 자체 호스팅 러너 세션의 MCP 요청이 더 이상 세션의 MCP 프록시가 보내는 HTTP 리디렉션을 따르지 않도록 변경했습니다
- 스킬과 명령 로딩을 변경했습니다. 파일 또는 폴더 이름에 숨김 문자, 방향 전환 문자, 공백처럼 보이는 문자, `<` 또는 `>`가 있는 항목은 이름을 바꿀 때까지 제공되지 않으며, 이런 `name:`은 무시됩니다
- `claude plugin test`의 `ui.render` 트리를 변경했습니다. 이제 각 mod의 Box 또는 Text 루트에 mod를 나타내는 `part: { plugin }`이 포함되므로 정확한 트리 단언에도 이를 넣어야 합니다
- WebFetch 페이지 읽기가 웹 검색과 같은 방식으로 노력 수준을 정하도록 변경했습니다. 호출자의 모델에서는 호출자의 수준을 쓰고, 그렇지 않으면 설정이 작은 모델에 지정한 수준을 씁니다
- `claude plugin test`가 세션처럼 mod가 제공하는 `$` 메서드 호출이 10초 안에 응답하지 않으면 실패하도록 변경했습니다
- MCP 허용 규칙이 이름이 지정된 서버에만 적용되도록 변경했습니다. 이제 `mcp__a`는 `a__b` 또는 `a_`라는 서버를 허용하지 않으며, 서버의 정규화된 전체 이름으로 `mcp__<server>__*`를 작성해야 합니다
- 에이전트의 `tools:` 목록이 이름이 지정된 MCP 서버의 도구만 받도록 변경했습니다. 이름에 `__`가 포함된 서버는 `mcp__<whole name>__*`로 나열하세요
- 자동 모드가 아닌 Cowork 클라우드 세션의 Claude in Chrome을 변경했습니다. 안전 분류기가 표시한 승인된 사이트의 동작은 이제 거부되지 않고 사용자에게 묻습니다. 단, 관리형 설정이 적용되는 경우는 제외입니다
- 플래그를 가져오지 않는 설치에서 클라우드 세션 및 Remote Control MCP 커넥터가 기본적으로 MCP 프로토콜 버전 2026-07-28을 협상하도록 변경했습니다. `MCP_PROTOCOL_NEGOTIATION=legacy`로 사용 중지할 수 있습니다
- `api.anthropic.com`의 Anthropic 자사 MCP 서버가 제공하는 MCP 도구 설명과 서버 지침이 4,096자에서 잘리지 않고 Claude에게 전체가 전달되도록 변경했습니다
- Cowork 클라우드 세션의 자동 모드를 변경했습니다. 이제 `PermissionRequest` 훅은 셸 명령이나 서브에이전트를 승인할 수 없으며, 해당 요청은 대기하거나 거부됩니다
- 종료 시 출력되는 재개 명령을 변경했습니다. 이제 세션 이름 대신 ID로 세션을 지정하므로, 해당 줄을 붙여넣어도 세션 이름 안의 어떤 내용도 실행되지 않습니다
- 워크트리 세션 종료 시 출력되는 재개 명령을 변경했습니다. 긴 플래그가 터미널에 맞지 않으면 `-w`와 `-r`을 사용합니다. 둘 다 맞지 않고 워크트리가 유지된 경우에는 그 위의 줄에 실행할 위치를 알려 줍니다
- 비대화형 세션의 `/btw` 부가 질문이 11분이 지나도 답을 받지 못하면 시간 초과 오류를 반환하도록 변경했습니다
- `UserPromptSubmit` 훅이 스킬이나 사용자 지정 슬래시 명령이 확장되기 전에 실행되도록 변경했습니다. 따라서 프롬프트를 차단하는 훅은 이제 그 안에 포함된 셸 명령도 함께 막습니다
- 스킬 자체 front-matter의 `UserPromptSubmit` 훅이 스킬을 호출한 프롬프트의 다음 프롬프트부터 처음 실행되도록 변경했습니다
- `turn.start` mod 훅이 메인 루프뿐 아니라 서브에이전트와 팀원의 턴도 받도록 변경했습니다. `e.agentId`로 구분하세요(메인 루프에는 없습니다)
- `/ultrareview`가 저장소를 업로드하지 못할 때 표시되는 오류가 더 이상 `git add .`를 권하지 않도록 변경했습니다. 이 명령은 `.env` 같은 추적되지 않는 파일을 스테이징하거나 커밋할 수 있었습니다
- 사이버 안전장치 알림이 더 이상 Cyber Verification Program 신청을 안내하지 않도록 변경했습니다
- [VSCode] 다른 세션으로 전환했다가 돌아올 때 전송하지 않은 프롬프트와 첨부 파일이 사라지던 문제를 고쳤습니다
- [VSCode] 새 대화를 시작한 뒤 사용하지 않은 빈 채팅이 백그라운드 Claude 프로세스를 계속 실행시키던 문제를 고쳤습니다
- [VSCode] claude.ai에서 로그아웃된 상태에서 마이크 버튼이 내부 오류 메시지를 표시하던 문제를 고쳤습니다. 이제 로그인을 안내합니다
- [VSCode] Python 확장이 로드되는 동안 Claude를 시작하도록 해 Python 환경이 없는 워크스페이스의 시작 시간을 개선했습니다
- [VSCode] 시작 과정을 개선했습니다. 이전에 연 적이 있는 폴더의 새 창에서 모델 선택기와 슬래시 명령 메뉴가 바로 채워집니다
- [Cloud sessions] 기존 출력 파일 다수가 한꺼번에 다시 전송될 때 세션이 중단될 수 있던 메모리 급증을 고쳤습니다
- [Cloud sessions] 루틴의 기존 환경이 삭제되었거나 목록에 없을 때, 수정한 루틴을 저장하면 조용히 다른 환경으로 옮겨지던 문제를 고쳤습니다. 이제 루틴이 원래 환경을 유지합니다
- [Cloud sessions] 자체 호스팅 환경의 관리자 상세 정보에서 세션 링크의 세션 ID를 붙여넣으면 세션 검색에 아무 결과도 나오지 않던 문제를 고쳤습니다
- [Cloud sessions] 자체 호스팅 환경의 관리자 상세 정보에서 검색 결과가 없을 뿐인데 세션 및 러너 목록이 비어 있다고 표시되던 문제를 고쳤습니다
- [Cloud sessions] 자체 호스팅 환경이나 환경 키를 만들 때 표시되는 배포 명령을 개선했습니다. 이제 전체가 표시되고, 인자 사이에서 줄바꿈되며, 눈에 보이는 복사 버튼이 있습니다
- [Cloud sessions] 자체 호스팅 환경을 삭제하면 루틴 실행이 실패하도록 두는 대신 해당 루틴을 즉시 끄고 각 루틴에 그 이유를 표시하도록 변경했습니다
- [Remote Control] 컴퓨터에 연결할 수 없는 Remote Control 세션이 메시지를 보낸 것처럼 보이던 문제를 고쳤습니다. 이제 입력한 텍스트가 입력란에 그대로 남고 다시 연결될 때까지 Send가 꺼집니다
- [Claude Tag] Slack의 Claude가 누군가 요청하면 채널에 직접 만든 캔버스를 삭제할 수 있는 기능을 추가했습니다
- [Claude Tag] 게스트가 있는 채널에서, 채널 자체 지침에 따라 답해야 하는 태그 없는 게시물(예: 다른 사람을 태그한 게시물)에 Slack의 Claude가 응답하지 않던 문제를 고쳤습니다
- [Claude Tag] Slack의 Claude가 멤버가 아닌 다른 채널의 스레드에 단 답글을 게시된 것으로 보고하던 문제를 고쳤습니다. 이제 답글이 전달되지 않았다는 사실과 해결 방법을 안내합니다
- [Claude Tag] 자체 호스팅 러너의 이미지에 python3가 없을 때 Slack의 Claude가 답변을 게시하지 않고 턴을 끝내는 경우가 있던 문제를 고쳤습니다
- [Claude Tag] Slack의 Claude가 잘못 보낸 메시지를 바로잡는 방식을 변경했습니다. 이전 텍스트에 취소선을 긋는 대신 메시지를 그 자리에서 수정하고 짧은 "Edited" 표시를 추가합니다
- [Claude Tag] Slack의 Claude가 멤버가 100명이 넘는 채널에는 소개 메시지 없이 조용히 참여하도록 변경했습니다
- [Code Review] Code Review의 월간 지출 한도 댓글과 check-run 카드가 관리자를 Claude Code 설정으로 안내하던 문제를 고쳤습니다. 이제 해당 한도를 설정하는 Usage 페이지로 연결됩니다
함께 읽기: Gemini Code Assist 신규 구독 판매 종료 일정과 자동 갱신 마감 시한 · Claude Code v2.1.292: 플러그인 설치와 서브에이전트 effort 지정 · Claude Code v2.1.289: 권한 규칙 우회 수정과 플러그인 안정화
새로 쓸 수 있게 된 기능
이번 업데이트로 새로 쓸 수 있게 된 기능은 10가지입니다. 근거 항목은 위 릴리스 노트의 번호입니다.
| 기능 | 달라진 점 | 근거 항목 |
|---|---|---|
| 터미널 유휴 압축 | 200K 토큰 이상 대화가 약 54분 유휴 상태이면 1시간 프롬프트 캐시가 만료되기 전에 압축되어, 다음 메시지에서 전체를 다시 처리하지 않습니다. | 2번 |
| 유휴 압축 조정 | CLAUDE_CODE_IDLE_COMPACT_MIN_TOKENS로 최소 토큰 기준을 바꾸고, settings.json에 "idleCompaction": false를 두면 끌 수 있습니다. 둘 다 v2.1.290 이상이 필요합니다. | 3번 |
| 파일 멘션 경로 전달 | CLAUDE_CODE_DISABLE_FILE_MENTIONS를 설정하면 @ 멘션 시 파일 내용 대신 경로가 전달되고, Claude가 파일 도구로 직접 읽습니다. | 1번 |
| /usage 경고 | max effort, 워크플로, 상시 컨텍스트, 큰 도구 결과에 대한 경고가 /usage에 표시됩니다. | 17번 |
| 에이전트 뷰의 /effort, /fast | 에이전트 뷰에서 새 세션의 시작 값을 정할 수 있고, 인자 없는 /model, /effort, /fast는 선택기를 엽니다. | 9번 |
| plugin eval 도구 제외 | --disallow-tools 옵션과 disallowed_tools 케이스 필드로 Agent 같은 내장 도구를 평가 실행에서 뺄 수 있습니다. | 12번 |
| MCP 규칙 범위 변경 | mcp__a 허용 규칙은 a__b나 a_ 서버에 적용되지 않으며, 에이전트 tools 목록도 해당 서버 도구만 받습니다. 이름에 __가 있으면 mcp__<전체 이름>__*로 적습니다. | 158번, 159번 |
| 훅 실행 순서 변경 | UserPromptSubmit 훅이 스킬이나 커스텀 슬래시 명령이 확장되기 전에 실행됩니다. | 167번 |
| 러너 종료 유예 | claude self-hosted-runner orchestrator의 --shutdown-drain-sec로 SIGTERM 후 진행 중인 폴링과 spawn 훅이 끝날 시간을 줄 수 있습니다. | 7번 |
| mod 개발 API | managed settings 모드는 $.prompt.media와 $.session.identity()를 쓸 수 있고, Text에 size, weight, mono, tabular, Box에 xs~xl 간격이 추가되었습니다. | 4번, 5번, 6번 |
업데이트 효과 직접 재보기
에이전트, effort, 속도, 재시도에 관한 변경이 내 작업에서 얼마나 차이 나는지는 직접 재 보면 숫자로 확인됩니다. claude -p를 JSON 출력으로 실행하면 걸린 시간과 턴 수, 서브에이전트 결과가 함께 나옵니다.
claude -p "<작업 지시>" \
--output-format json < /dev/null
작업 지시는 옵션보다 앞에 둡니다. --allowedTools Agent "<작업 지시>"처럼 쓰면 --allowedTools가 값을 여러 개 받는 옵션이라 작업 지시까지 도구 이름으로 읽습니다. 옵션을 뒤에 쓰려면 --allowedTools=Agent처럼 =로 붙입니다. 아무것도 보내지 않는 파이프에 표준 입력이 연결돼 있으면 3초를 기다린 뒤 경고를 띄우고 진행하는데, < /dev/null로 표준 입력을 막아 두면 이 대기가 없습니다.
- duration_ms: 실행 전체에 걸린 시간(밀리초)
- num_turns: 결과가 나오기까지 걸린 턴 수
- subagent_stats.completed / subagent_stats.failed: 서브에이전트가 끝까지 마친 수와 실패한 수
단순 조회 작업 하나(예: 어떤 함수가 어디서 호출되는지 찾기)와 코드 수정 작업 하나(예: 함수 하나에 테스트 추가)를 정해 둡니다. 같은 저장소에서 설정마다(업데이트 전후, effort 수준별) 두 작업을 각각 여러 번 실행하고, 조회와 수정의 기록을 따로 모아 비교합니다.
아래는 Claude Code 2.1.292에서 서브에이전트 한 개를 띄운 실행의 실제 출력에서 위 네 값만 남긴 것입니다. 나머지 키는 ...로 줄였습니다.
{
"duration_ms": 14271,
"num_turns": 4,
"subagent_stats": {
"completed": 1,
"failed": 0,
...
},
...
}
기록표의 첫 줄은 이 실행을 옮긴 것입니다. 조회 작업과 코드 수정 작업을 나눠, 실행할 때마다 한 줄씩 더합니다.
| 작업 | 설정 | 시간(ms) | 턴 | 완료/실패 |
|---|---|---|---|---|
| 예시 | 2.1.292 | 14271 | 4 | 1 / 0 |
업데이트하고 버전 확인하기
이 글의 변경을 모두 쓰려면 Claude Code 2.1.299 이상이 필요합니다. 터미널에서 claude update로 새 버전을 받고, claude --version으로 2.1.299 이상인지 확인합니다.
claude update
claude --version
- Claude Code v2.1.299 릴리스 노트 · github.com
작성일 2026-10-14 12:19
소개 · 문의 · 개인정보처리방침 · 면책 안내 · 저작권 안내 · AI, IT 글 모음
© 2026 MinoSui. 이 글의 무단 전재·재배포를 금합니다. 원문: https://minoss0918.blogspot.com/
댓글
댓글 쓰기