알림·권한·에디터 동작 개선
권한 흐름, 편집 도구, 터미널·음성·PowerShell 동작을 다듬고 여러 오류를 수정했습니다.
교안에 영향
`/env`, `/usage`, `showThinkingSummaries`, `cleanupPeriodDays` 관련 기존 안내는 동작이 달라져 그대로 쓰면 맞지 않을 수 있습니다.
요약
- `PreToolUse`, `PermissionDenied`, `TaskCreated` 훅과 관련된 권한·차단 흐름을 보강했습니다. - `Edit`, `Write`, `Read`, `Bash`, `PowerShell` 도구의 경로 처리와 편집 동작을 개선했습니다. - `-p --resume`, `--continue`, `/stats`, `/usage`, `/env` 등 명령과 표시 내용을 수정했습니다. - 음성 모드, 알림, 터미널 렌더링, 스크롤백, 입력 처리 관련 오류를 고쳤습니다. - 대용량 세션·파일, MCP 연결, 캐시, LSP, 히스토리 저장 관련 안정성을 높였습니다.
바뀐 것
새 기능
- `PreToolUse` 훅에 `"defer"` 권한 결정을 추가해 headless 세션이 도구 호출에서 잠시 멈춘 뒤 `-p --resume`로 다시 평가할 수 있게 했습니다.
- `CLAUDE_CODE_NO_FLICKER=1` 환경 변수를 추가해 가상 스크롤백을 사용하는 깜빡임 없는 alt-screen 렌더링을 선택할 수 있게 했습니다.
- 자동 모드 분류기가 명령을 거부한 뒤 실행되는 `PermissionDenied` 훅을 추가하고, `{retry: true}`로 재시도를 알릴 수 있게 했습니다.
- `@` 멘션 자동완성 제안에 이름이 있는 subagents를 추가했습니다.
- `-p` 모드에서 MCP 연결 대기를 건너뛰는 `MCP_CONNECTION_NONBLOCKING=true`를 추가하고, `--mcp-config` 서버 연결 대기 시간을 5초로 제한했습니다.
개선
- 자동 모드에서 거부된 명령을 알림으로 보여주고 `/permissions`의 Recent 탭에서 `r`로 다시 시도할 수 있게 했습니다.
수정
- `Edit(//path/)`와 `Read(//path/)` 허용 규칙이 요청 경로가 아니라 실제로 해석된 symlink 대상 경로를 검사하도록 고쳤습니다.
- 일부 수정자 조합의 푸시 투 토크가 동작하지 않던 문제와 Windows의 음성 모드 WebSocket 연결 실패를 고쳤습니다.
- Windows에서 `Edit`/`Write` 도구가 CRLF를 두 번 붙이거나 Markdown 줄바꿈을 지우던 문제를 고쳤습니다.
- 여러 schema를 사용할 때 `StructuredOutput` schema cache가 약 50% 실패를 내던 문제를 고쳤습니다.
- 긴 실행 세션에서 큰 JSON 입력이 LRU cache 키로 남아 메모리를 잡아먹던 문제를 고쳤습니다.
- 50MB가 넘는 매우 큰 세션 파일에서 메시지를 삭제할 때 발생하던 충돌을 고쳤습니다.
- 충돌 후 LSP server가 좀비 상태로 남아 다음 요청부터만 재시작되는 문제를 고쳤습니다.
- CJK 문자나 emoji가 `~/.claude/history.jsonl`의 4KB 경계에 걸릴 때 조용히 누락되던 문제를 고쳤습니다.
- `/stats`가 subagent 사용량을 빼서 토큰을 적게 세고, 통계 캐시 형식 변경 시 30일보다 오래된 기록을 잃던 문제를 고쳤습니다.
- `-p --resume`가 지연된 도구 입력이 64KB를 넘거나 지연 표시가 없을 때 멈추던 문제와 `-p --continue`가 지연된 도구를 다시 이어받지 못하던 문제를 고쳤습니다.
- `claude-cli://` deep links가 macOS에서 열리지 않던 문제를 고쳤습니다.
- MCP 도구 오류가 서버의 multi-element error content를 반환할 때 첫 번째 content block만 남기던 문제를 고쳤습니다.
- 이미지가 포함된 메시지를 SDK로 보낼 때 skill reminders와 다른 system context가 빠지던 문제를 고쳤습니다.
- `PreToolUse`와 `PostToolUse` 훅이 `Write`/`Edit`/`Read` 도구에 대해 `file_path`를 absolute path로 받도록 고쳤습니다.
- 세 번 연속 compact한 뒤 context가 즉시 한도까지 다시 차는 autocompact 무한 반복을 멈추고, API 호출을 낭비하지 않도록 고쳤습니다.
- 도구 schema 바이트가 세션 중간에 바뀔 때 긴 세션에서 prompt cache가 빗나가던 문제를 고쳤습니다.
- 여러 파일을 읽는 긴 세션에서 중첩된 `CLAUDE.md`가 수십 번 재주입되던 문제를 고쳤습니다.
- transcript에 이전 CLI 버전의 도구 결과나 중단된 쓰기가 포함되면 `--resume`가 충돌하던 문제를 고쳤습니다.
- API가 entitlement 오류를 반환했는데도 “Rate limit reached”로 오해하게 하던 메시지를 실제 오류와 안내로 바꿨습니다.