oh-my-customcode 2.0.1 → 2.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/index.js +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/templates/.claude/rules/MUST-agent-design.md +5 -4
- package/templates/guides/claude-code/15-version-compatibility.md +796 -15
- package/templates/guides/multi-model-routing/README.md +2 -1
- package/templates/manifest.json +1 -1
|
@@ -1919,28 +1919,795 @@ Opus 4.8에서 thinking blocks가 수정되어 API 오류가 발생하던 버그
|
|
|
1919
1919
|
|
|
1920
1920
|
---
|
|
1921
1921
|
|
|
1922
|
-
## v2.1.290 (2026-10-05)
|
|
1922
|
+
## v2.1.290 (2026-10-05)
|
|
1923
|
+
|
|
1924
|
+
> Issue: #1845 — Claude Code v2.1.290 compatibility documentation
|
|
1925
|
+
> Scope-ceiling check (R017): 조사 시점(2026-10-13)의 최신 릴리즈는 2.1.296입니다(`claude --version`=2.1.296, `npm view @anthropic-ai/claude-code version`=2.1.296). 2.1.291~2.1.296 절에서 "2.1.290"과 "Revert"를 검색한 결과, 이 릴리즈 항목을 되돌리는 문장 1건과 이 릴리즈가 들여온 회귀를 고친 문장 1건이 관측됐습니다. 2.1.293 절: "Reverted the 2.1.290 fix for cloud sessions staying asleep after a container restart lost a pending `/loop` wakeup or scheduled task; Claude is no longer told, and the session stays asleep" — 아래 클라우드 세션 항목에 반영했습니다. 2.1.291 절: "Fixed a regression in 2.1.290 where cloud sessions could drop answers to permission prompts" — 2.1.290이 들여온 클라우드 세션 회귀를 고친 수정이며, 이 릴리즈 항목을 되돌리거나 좁히는 문장은 아닙니다. 이 저장소가 클라우드 세션을 쓰는지는 관측하지 않았습니다(2.1.291 절과 같은 [가설]). 2.1.293 절의 다른 "Reverted" 항목은 2.1.281 변경에 대한 것이며 이 릴리즈와 무관합니다. 2.1.295 절의 "Fixed a background session's `/loop` stopping without notice when its next wakeup came due while the session's process was down; the session now says so and Claude is told"와 "Fixed a stopped scheduled task coming back on resume after a rewind, and a scheduled task being lost on resume after Esc or a rewind following a compaction"은 같은 `/loop`·예약 작업 영역의 후속 수정이며(뒤 문장은 아래 compaction 뒤 예약 작업 복귀 항목의 후속), 둘 다 롤백이 아닙니다. 릴리즈 게시 시각은 2026-10-05T23:33:17Z입니다(`gh release view v2.1.290 -R anthropics/claude-code --json publishedAt`).
|
|
1926
|
+
|
|
1927
|
+
### 에이전트 · teammate · worktree
|
|
1928
|
+
|
|
1929
|
+
- CHANGELOG 원문: "Changed an in-process teammate's `agent_id` in Agent results to its agent ID (its `name@team` address stays in `teammate_id`); TeammateIdle hooks no longer fire from its subagents or forks"
|
|
1930
|
+
(290) 인프로세스 teammate의 Agent 반환 결과에서 `agent_id`는 agent ID가 되고 `name@team` 주소는 `teammate_id`에 남으며, 그 teammate의 서브에이전트나 fork에서는 TeammateIdle 훅이 더 이상 발화하지 않습니다. 관측한 범위에서 `.claude/settings.json:355`의 TeammateIdle 훅은 stdin에서 `.teammate_id`를 읽으므로(`.claude/settings.json:360`) 주소 필드가 유지되는 한 읽는 필드는 그대로입니다. 이 변경은 Agent 반환 결과에 대한 서술이며 훅 stdin의 필드 변경이라는 근거는 원문에 없습니다 [가설 — 훅 stdin의 `teammate_id` 값 형식 불변 여부는 실제 teammate 세션 미실측]. R018은 `TeamCreate` 부재로 dormant이므로(`.claude/rules/MUST-agent-teams.md:22`, `:36`) 정책 변경은 없습니다.
|
|
1931
|
+
- CHANGELOG 원문: "Fixed background subagents losing write and Bash access in their worktree after the main session enters or exits a different worktree"
|
|
1932
|
+
(290) 메인 세션이 다른 worktree에 들어가거나 나온 뒤 백그라운드 서브에이전트가 자기 worktree의 write·Bash 접근을 잃던 결함이 수정되었습니다. 관측한 범위(`git grep -n '^isolation:' -- '.claude/agents/*.md'`)에서 에이전트 frontmatter의 `isolation:` 값은 `sec-codeql-expert`의 `sandbox`(`.claude/agents/sec-codeql-expert.md:8`) 1건이며 `isolation: worktree` 에이전트는 없습니다. frontmatter 밖의 worktree 경로, 즉 메인 세션이 `EnterWorktree`를 쓰는 `omcustom-auto-improve`(`.claude/skills/omcustom-auto-improve/SKILL.md:59`)와 호출 단위 `isolation: "worktree"` 위임(R009 `.claude/rules/MUST-parallel-execution.md:208`의 v2.1.273 노트)은 이번에 실행 검증하지 않았습니다. 따라서 그 경로의 백그라운드 서브에이전트에 대한 영향은 [가설 — 메인 세션의 worktree 전환과 백그라운드 서브에이전트 실행이 겹치는지로 판정]입니다. 이 수정은 플랫폼의 접근 복원이며 프로젝트의 도구 허용 범위를 넓히는 근거가 아닙니다.
|
|
1933
|
+
- CHANGELOG 원문: "Fixed resumed subagents and teammates losing their earlier thinking and prompt cache after receiving a message mid-run"
|
|
1934
|
+
(290) 재개된 서브에이전트와 teammate가 실행 중 메시지를 받은 뒤 이전 thinking과 prompt cache를 잃던 결함이 수정되었습니다. 원문의 발생 조건은 "after receiving a message mid-run"(실행 중 메시지 수신)입니다. 멈춘 위임을 `SendMessage`로 재개하는 R020 절차(`.claude/rules/MUST-completion-verification.md:120`)가 이 조건에 해당하는지는 [가설 — 재개 메시지가 원문의 실행 중 수신으로 처리되는지 미실측]이며, 효과 크기도 [가설 — 재개 전후 prompt_cache 필드를 R012 상태줄로 실측하면 판정]입니다.
|
|
1935
|
+
- CHANGELOG 원문: "Fixed background agents failing with "Agent stalled" and Workflow tool subagents restarting from their prompt when a Mac woke from sleep"
|
|
1936
|
+
(290) Mac이 절전에서 깨어날 때 백그라운드 에이전트가 "Agent stalled"로 실패하고 Workflow 도구의 서브에이전트가 프롬프트부터 다시 시작되던 결함이 수정되었습니다. 이 저장소의 개발 환경은 macOS(Darwin)이므로 `/fsd` 장기 루프의 절전 후 중단 진단 시 이 축을 확인 대상에 포함합니다. R018의 정체 멤버 재할당 규칙(`.claude/rules/MUST-agent-teams.md:349`의 "Reassign (>2min)", `:568`의 "~2분간 진행이 없으면") 문안은 바뀌지 않습니다.
|
|
1937
|
+
|
|
1938
|
+
### 예약 작업 · 백그라운드 세션 (/loop)
|
|
1939
|
+
|
|
1940
|
+
- CHANGELOG 원문: "Fixed scheduled tasks (`/loop` with an interval, reminders) silently not coming back on resume once the conversation was compacted; covers compactions made from this version on"
|
|
1941
|
+
(290) 대화가 compact된 뒤 resume하면 `/loop` 간격 작업과 reminder가 조용히 돌아오지 않던 결함이 수정되었으며, 적용 범위는 이 버전부터 수행한 compaction입니다. 과거에 compact된 세션까지 복구된다고 확장하지 않습니다. 원문의 대상은 간격을 둔 `/loop`와 reminder이며, `/fsd`의 `/loop`는 간격 없이 모델이 주기를 정하는 self-paced 루프입니다(`.claude/skills/fsd/SKILL.md:16`, `:39` "self-paced loop (model decides cadence)"; `:162`는 스킬 호출이 필수가 아니라고 명시). CHANGELOG는 self-paced 루프를 따로 부르기도 하므로(2.1.295 "a self-paced `/loop`") 이 수정이 `/fsd`의 루프에도 적용되는지는 [가설 — self-paced `/loop` 세션을 compact한 뒤 resume해 루프가 돌아오는지 실측하면 판정]입니다.
|
|
1942
|
+
- CHANGELOG 원문: "Fixed scheduled tasks set in the foreground never firing after a ← or `/background` hand-off, and recurring ones firing an extra run on every resume, respawn or fork"
|
|
1943
|
+
(290) foreground에서 설정한 예약 작업이 ← 또는 `/background` hand-off 뒤 발화하지 않던 결함과, 반복 작업이 resume·respawn·fork마다 추가로 한 번 더 실행되던 결함이 수정되었습니다. `.claude/settings.json`에는 예약 관련 설정이 없습니다(`command grep -c -E 'ScheduleWakeup|CronCreate' .claude/settings.json` 결과 0). 관측한 범위(`git grep -n -E 'CronCreate|ScheduleWakeup|/schedule' -- '.claude/skills/*/SKILL.md'`와 `/fsd`의 `/loop` 줄)에서 플랫폼 예약 기능을 언급하는 스킬 경로는 두 가지입니다. 하나는 `/fsd`의 선택적 `/loop`·ScheduleWakeup 호출(`.claude/skills/fsd/SKILL.md:16`, `:162`)이고, 다른 하나는 `claude-native` 스킬의 예약 실행 안내(`.claude/skills/claude-native/SKILL.md:232` "### Scheduled (CronCreate)", `:237`의 `/schedule "daily at 9am: /claude-native"`, `:240` "Or via CronCreate MCP tool for programmatic scheduling.")입니다. `/schedule`은 `.claude/skills/claude-native/SKILL.md:234`("Can be set up as a scheduled remote agent using `/schedule`")가 말하는 scheduled remote agent를 만드는 경로이고, 2026-10-13 Claude Code 2.1.296 세션의 스킬 목록에서 `schedule` 스킬 설명도 이를 "scheduled cloud agents (routines)"로 소개합니다. 따라서 이 항목의 세션 예약 작업과 다를 수 있습니다 [가설 — `/schedule` routine이 세션 예약 작업 경로를 거치는지는 미관측]. `:240`의 CronCreate 경로는 `/schedule`과 별개로 CronCreate 도구로 예약을 만드는 안내이며, 이것이 이 항목의 세션 예약 작업에 해당하는지도 [가설 — 미관측]입니다. 두 스킬 경로의 실제 사용도 관측하지 않았습니다. `omcustom-loop`는 예약 기능을 언급하지 않습니다(`command grep -c -E '/loop|ScheduleWakeup|CronCreate' .claude/skills/omcustom-loop/SKILL.md` 결과 0). 이 스킬은 SubagentStop 훅을 이용한 자동 이어가기를 설명하며 현재 배선은 v2.1.294 절에 정리했습니다. 따라서 프로젝트 변경은 필요하지 않습니다.
|
|
1944
|
+
- CHANGELOG 원문: "Fixed `/loop` and other recurring session-only scheduled tasks running an extra time after a sandboxed Bash command on Linux or after `.claude/scheduled_tasks.json` was deleted"
|
|
1945
|
+
(290) Linux의 sandboxed Bash 명령 뒤, 또는 `.claude/scheduled_tasks.json`이 삭제된 뒤 `/loop` 등 세션 한정 반복 작업이 한 번 더 실행되던 결함이 수정되었습니다. 첫 조건에 대해서는 관측한 범위에서 `.claude/settings.json`에 `sandbox` 키가 없고(`jq 'has("sandbox")'`=false) 개발 환경이 macOS이므로 직접 영향 조건이 관측되지 않았습니다. 둘째 조건인 `.claude/scheduled_tasks.json` 삭제에 대해서는, 이 파일이 현재 없고(`ls` 결과 "No such file or directory") gitignore 대상이며(`git check-ignore -v .claude/scheduled_tasks.json` → `.gitignore:40:.claude/*`), 이 가이드·미러를 제외한 추적 파일 중 이 파일 이름을 언급하는 곳은 R009 v2.1.273 노트(`.claude/rules/MUST-parallel-execution.md:208`)와 그 `templates/` 미러·위키 사본이어서(`git grep -n scheduled_tasks`), 파일 이름 검색 범위에서는 이 파일을 직접 지우는 경로가 관측되지 않았습니다. 다만 디렉터리 단위 경로는 이 파일을 지울 수 있습니다. 기존 설치에서 `omcustom init`은 `install({ backup: exists })`를 호출하고(`src/cli/init.ts:205`), 백업 단계가 `.claude/`를 `.claude-backup-` 접두의 타임스탬프 폴더로 `rename`하며(`src/core/installer.ts:197`, `:933`, `:919`~`:925`; `src/core/layout.ts:28`, `:32`), 복원 대상 기본값은 `settings.json`·`settings.local.json`과 `agent-memory`·`agent-memory-local`입니다(`src/core/file-preservation.ts:25`, `:30`). R001이 승인을 요구하는 `git clean -fdx`도 gitignore 대상인 이 파일을 지웁니다.
|
|
1946
|
+
- CHANGELOG 원문: "Changed background sessions waiting on a scheduled wakeup (`/loop`): they are now left running through updates and low memory, where being restarted or shut down could silently lose the wakeup"
|
|
1947
|
+
(290) `/loop` 예약 wakeup을 기다리는 백그라운드 세션은 업데이트와 메모리 부족 상황에서도 재시작·종료되지 않고 유지되므로, 이전에 wakeup이 조용히 사라질 수 있던 경로가 줄어듭니다. R013의 메모리 압박 노트(v2.1.238/274)와 관련된 영역이지만 그 임계값 계산을 바꾸지 않습니다.
|
|
1948
|
+
- CHANGELOG 원문: "Fixed sessions moved to the background while idle reopening as "no saved transcript" after a restart or idle cleanup; they now resume their conversation"
|
|
1949
|
+
(290) idle 상태에서 백그라운드로 옮겨진 세션이 재시작이나 idle cleanup 뒤 "no saved transcript"로 열리던 결함이 수정되어 이제 대화를 재개합니다. 이 저장소의 재개 절차(R011 세션 메모리)는 바뀌지 않으며, 실제 재개 동작은 이번 정적 검토에서 실행 검증하지 않았습니다.
|
|
1950
|
+
- CHANGELOG 원문: "Fixed cloud sessions staying asleep after a container restart lost a pending `/loop` wakeup or scheduled task; Claude is now told and can schedule it again"
|
|
1951
|
+
(290) 클라우드 세션에서 컨테이너 재시작으로 `/loop` wakeup이나 예약 작업이 사라진 뒤 세션이 계속 잠든 채로 남던 결함에 대한 수정입니다. 단, 2.1.293 절의 "Reverted the 2.1.290 fix for cloud sessions staying asleep after a container restart lost a pending `/loop` wakeup or scheduled task; Claude is no longer told, and the session stays asleep"가 이 수정을 되돌렸으므로 현재 최신 버전(2.1.296)에서는 이 항목이 유효하지 않습니다. 이 저장소가 클라우드 세션을 쓰는지는 관측되지 않았습니다. 관측한 범위(`git grep -n -E 'container restart|staying asleep' -- .claude/rules guides CLAUDE.md`, 이 가이드·미러 제외)에서 이 수정에 기대는 룰·가이드 문장은 찾지 못했습니다(유일한 일치인 `.claude/rules/MUST-completion-verification.md:567`은 2.1.275의 권한 프롬프트 항목입니다).
|
|
1952
|
+
|
|
1953
|
+
### 훅 · 플러그인
|
|
1954
|
+
|
|
1955
|
+
- CHANGELOG 원문: "Fixed Claude replying in an endless loop when a plugin's async Stop hook passes an unquoted script path under a folder with a space, such as Application Support"
|
|
1956
|
+
(290) 플러그인의 async Stop 훅이 공백이 든 폴더(예: Application Support) 아래의 인용되지 않은 스크립트 경로를 넘길 때 Claude가 무한 루프로 응답하던 결함이 수정되었습니다. 이 결함은 플러그인 훅에 관한 것이며, 이 저장소는 플러그인 매니페스트(`.claude-plugin/`)를 두지 않아(`git ls-files` 0건, `find -maxdepth 4 -name .claude-plugin` 0건) 플러그인 훅을 배포하지 않습니다. 참고로 프로젝트 `.claude/settings.json`의 훅 핸들러 64개(`command` 63·`prompt` 1) 중 `async: true`는 0건이며, `bash `로 시작하는 훅 명령 44개는 전부 `bash "${CLAUDE_PROJECT_DIR:-.}/..."` 형태로 경로를 따옴표로 감쌉니다(`jq '[.hooks[][]?.hooks[]? | select(.async==true)] | length' .claude/settings.json`=0, 같은 jq에서 `.command`가 `bash "${CLAUDE_PROJECT_DIR:-.}/`로 시작하는 항목 수=44; 같은 형태의 `statusLine` 명령은 훅이 아니므로 제외). 사용자가 설치한 플러그인의 훅은 저장소에서 관측할 수 없습니다.
|
|
1957
|
+
- CHANGELOG 원문: "Fixed some permission rules and safety checks not being applied to a tool call after a PreToolUse hook rewrote its input"
|
|
1958
|
+
(290) PreToolUse 훅이 도구 호출의 입력을 다시 쓴 뒤 일부 권한 규칙과 안전 검사가 그 호출에 적용되지 않던 결함이 수정되었습니다. 관측한 범위에서 `updatedInput`·`permissionDecision`은 `.claude/hooks`와 `.claude/settings.json`의 인라인 훅 어디에도 없으므로(`git grep -n -E 'updatedInput|permissionDecision' -- .claude/hooks` 0건, `command grep -c -E 'updatedInput|permissionDecision' .claude/settings.json` 0) 이 저장소 훅은 입력을 다시 쓰지 않으며 영향 조건이 관측되지 않았습니다.
|
|
1959
|
+
- CHANGELOG 원문: "Fixed sandboxed Bash commands on Linux running `ConfigChange` hooks and reloading settings mid-command when `.claude/settings.json` or `.claude/settings.local.json` does not exist"
|
|
1960
|
+
(290) `.claude/settings.json` 또는 `.claude/settings.local.json`이 없을 때 Linux의 sandboxed Bash 명령이 명령 도중 `ConfigChange` 훅을 실행하고 설정을 다시 읽던 결함이 수정되었습니다. 관측한 범위에서 `.claude/settings.json`에 `ConfigChange` 훅이 없고(`jq '.hooks|has("ConfigChange")'`=false) 두 설정 파일이 모두 존재하며(`ls`) `sandbox` 키도 없어(`jq 'has("sandbox")'`=false) 영향 조건이 관측되지 않았습니다.
|
|
1961
|
+
- CHANGELOG 원문: "Added `agentId` to the `tool.check` event of plugin hooks, so a hook can tell a subagent's permission check from the main session's"
|
|
1962
|
+
(290) 플러그인 훅의 `tool.check` 이벤트에 `agentId`가 추가되어, 훅이 서브에이전트의 권한 검사와 메인 세션의 검사를 구분할 수 있습니다. 이 항목은 플러그인(mod) 훅 표면이며, `r007-r008-drift-advisor.sh`가 읽는 것은 프로젝트 `settings.json` 훅 stdin의 `agent_id`입니다(`.claude/hooks/scripts/r007-r008-drift-advisor.sh:152`). 두 표면은 서로 다르므로 이 스크립트의 payload 계약을 바꾸지 않으며 코드 변경은 제안하지 않습니다.
|
|
1963
|
+
|
|
1964
|
+
### 권한 · Bash · 설정
|
|
1965
|
+
|
|
1966
|
+
- CHANGELOG 원문: "Fixed Bash permission checks auto-approving some read-only commands (such as `rg` or `git grep`) whose arguments the shell would still expand as wildcards; these now prompt for approval"
|
|
1967
|
+
(290) 셸이 인자를 여전히 와일드카드로 확장하는 일부 읽기 전용 명령(예: `rg`, `git grep`)을 Bash 권한 검사가 자동 승인하던 결함이 수정되어 이제 승인을 묻습니다. R005·R002가 전수조사 표준으로 지정한 `git grep`(`.claude/rules/MAY-optimization.md:87`)과 직접 관련됩니다. 다만 `.claude/settings.json`의 allow 규칙에 `Bash(git:*)`가 있어 규칙 일치로 허용될 가능성이 있으나, 규칙 일치와 읽기 전용 자동 승인 분류의 우선 관계는 관측되지 않았습니다 [가설 — 와일드카드 인자를 가진 `git grep` 실행 시 프롬프트 여부를 실측하면 판정]. 와일드카드 인자 사용 시 승인 프롬프트가 늘 수 있으며, 무인 실행의 유효 permission mode 확인(R010 Self-Check)은 그대로 필요합니다.
|
|
1968
|
+
- CHANGELOG 원문: "Fixed Bash permission checks auto-approving certain commands whose variable names zsh reads differently from bash; these now prompt for approval"
|
|
1969
|
+
(290) zsh가 bash와 다르게 해석하는 변수 이름을 가진 일부 명령을 Bash 권한 검사가 자동 승인하던 결함이 수정되어 이제 승인을 묻습니다. 이 저장소의 셸은 zsh이며 R005가 zsh 변수 분할 차이를 다루지만(`.claude/rules/MAY-optimization.md:43`), 이 수정은 그 문장의 내용을 바꾸지 않습니다.
|
|
1970
|
+
- CHANGELOG 원문: "Changed `CLAUDE_CODE_DISABLE_ATTACHMENTS` so a repository's `.claude/settings.json` or `.claude/settings.local.json` can no longer set it; shell, user and managed settings still can"
|
|
1971
|
+
(290) 저장소의 `.claude/settings.json`·`.claude/settings.local.json`은 더 이상 `CLAUDE_CODE_DISABLE_ATTACHMENTS`를 설정할 수 없고 셸·사용자·managed 설정은 계속 설정할 수 있습니다. 관측한 범위에서 이 가이드와 미러를 제외한 추적 파일 전체에서 이 키는 0건이고(`git grep -n CLAUDE_CODE_DISABLE_ATTACHMENTS -- . ':!guides/claude-code/15-version-compatibility.md' ':!templates/guides/claude-code/15-version-compatibility.md'`), gitignore 대상인 `.claude/settings.local.json`도 `command grep -c` 결과 0건이므로 영향이 없습니다.
|
|
1972
|
+
- CHANGELOG 원문: "Fixed automatic compaction giving up with "Prompt is too long" when a Mac went to sleep while it was running"
|
|
1973
|
+
(290) Mac이 절전 상태가 되었을 때 자동 compaction이 "Prompt is too long"으로 포기하던 결함이 수정되었습니다. R013의 v2.1.269/273 노트(같은 오류 계열의 compaction 정지 결함)와 같은 방향의 수정이며 R013 임계값은 바뀌지 않습니다.
|
|
1974
|
+
|
|
1975
|
+
### 스킬 · MCP · 도구
|
|
1976
|
+
|
|
1977
|
+
- CHANGELOG 원문: "Fixed skills not being found when asked for by the name in SKILL.md when their folder has a different name (for example a non-English name): the skill listing now shows both names"
|
|
1978
|
+
(290) 폴더 이름이 SKILL.md의 `name`과 다를 때(예: 비영어 이름) `name`으로 요청한 스킬을 찾지 못하던 결함이 수정되었고, 스킬 목록은 이제 두 이름을 함께 표시합니다. 관측한 범위(python3로 `.claude/skills/*/SKILL.md`의 `name:`과 폴더 이름을 비교)에서 114개 중 22개의 `name`이 폴더 이름과 다릅니다. 그중 20개는 `name: omcustom:<폴더명>` 형태이고(예: `.claude/skills/create-agent/SKILL.md:2`, `.claude/skills/fsd/SKILL.md:2`), 2개는 폴더 이름의 `omcustom-` 접두를 `omcustom:`로 바꾼 형태입니다(`omcustom-auto-improve` → `omcustom:auto-improve`, `omcustom-web` → `omcustom:web`). 따라서 이 저장소에 직접 해당하는 수정입니다. 목록 표시가 바뀌므로 `/skill-doctor`나 스킬 목록 출력을 문서화한 곳이 있다면 두 이름 표시를 반영해야 하지만, 그런 문서는 이번에 조사하지 않았습니다 [가설 — `git grep`으로 스킬 목록 출력 인용 문서를 찾으면 판정].
|
|
1979
|
+
- CHANGELOG 원문: "Changed skills and custom commands to refuse a `!` shell command that contains raw control characters other than tab and newline, with a message that shows where they are"
|
|
1980
|
+
(290) 스킬과 커스텀 커맨드는 탭과 개행을 제외한 raw 제어 문자가 든 `!` 셸 명령을 거부하며, 거부 메시지에 위치를 표시합니다. 관측한 범위(``git grep -n -E '^!|!`' -- '.claude/skills/*/SKILL.md'``)의 일치는 `.claude/skills/omcustom-release-notes/SKILL.md:164`의 "`!` breaking marker" 설명 1건이며 `!` 셸 명령이 아니므로, 영향 조건이 관측되지 않았습니다.
|
|
1981
|
+
- CHANGELOG 원문: "Fixed `disableClaudeAiConnectors` and `allowedMcpServers` URL rules not being applied to some MCP entries declared in `.mcp.json`, plugins or agents"
|
|
1982
|
+
(290) `disableClaudeAiConnectors`와 `allowedMcpServers` URL 규칙이 `.mcp.json`·플러그인·에이전트에 선언된 일부 MCP 항목에 적용되지 않던 결함이 수정되었습니다. 관측한 범위에서 `.mcp.json`에는 `eraser`, `ontology-rag` 2개 서버가 있고(jq 키 목록), `.claude/settings.json`·룰·로컬 설정에 `allowedMcpServers`·`disableClaudeAiConnectors`가 없으므로(`git grep -n -E 'allowedMcpServers|disableClaudeAiConnectors' -- .claude/settings.json .claude/rules` 0건, `.claude/settings.local.json`은 `command grep -c` 0) 저장소 설정 범위에서는 규칙이 걸려 있지 않아 영향 조건이 관측되지 않았습니다. 조직 managed 설정 유무는 저장소에서 관측할 수 없습니다.
|
|
1983
|
+
- CHANGELOG 원문: "Fixed WebFetch silently dropping page text past 100,000 characters; it now says how much was unread and takes an `offset` to read on"
|
|
1984
|
+
(290) WebFetch가 100,000자를 넘는 페이지 텍스트를 조용히 버리던 결함이 수정되어, 이제 읽지 못한 분량을 알리고 이어 읽을 `offset`을 받습니다. R005가 HTTP 조회에 `WebFetch`를 우선하도록 하므로(`.claude/rules/MAY-optimization.md:31`) 긴 페이지를 다룰 때 truncation이 보이게 된다는 점이 관련됩니다. 룰 문안 변경은 필요하지 않습니다.
|
|
1985
|
+
|
|
1986
|
+
기타 168건 — 이 저장소 비해당이거나 룰 변경이 필요 없는 세부 항목(Claude apps gateway, `/ultrareview`, agents view UI, mods 렌더링·pane 표시, VSCode·Cloud sessions·Claude Tag·Code Review·Remote Control 전용 항목, Windows 전용 수정, 터미널·키 입력 UI, plugin/mod 개발 API 세부, 보안 하드닝 세부, plan mode 세부(`--continue`·`--resume <session-id>` 재개 시 복원, 클라우드 컨테이너 재시작 시 계획 유실, connector 도구 승인), Bash 도구 세부(읽기 전용 명령의 권한 판정, changed-files 보기, `pyright`·`ps` 승인) 등). 이 중 "Fixed the Bash tool occasionally losing shell aliases, functions and plugin PATH entries for a whole session when its first command ran seconds after startup on a new config directory"는 이 저장소 Bash의 `grep`이 셸 함수라는 R005 문장(`.claude/rules/MAY-optimization.md:87`)과 관련되지만, 플랫폼 수정이므로 룰 변경 사안이 아닙니다. 실측: `gh release view v2.1.290 --repo anthropics/claude-code --json body --jq .body | grep -c '^- '` = 190건 중 위 본문 22건을 다뤘으므로 190 − 22 = 168건입니다. 계수 범위는 해당 릴리즈 노트의 최상위 불릿 줄(`- `로 시작하는 줄)입니다.
|
|
1923
1987
|
|
|
1924
|
-
|
|
1925
|
-
|
|
1988
|
+
**Action items**:
|
|
1989
|
+
- 훅·권한·스킬·MCP 항목은 이 저장소의 관측 구성(`async` 훅 0건, `updatedInput` 출력 훅 0건, `ConfigChange` 훅 0건, `sandbox` 키 없음, `allowedMcpServers` 0건)에서 영향 조건이 관측되지 않거나 플랫폼 결함 수정이어서 룰·훅·에이전트 변경이 필요하지 않습니다.
|
|
1990
|
+
- 스킬 `name`과 폴더 이름 불일치(114개 중 22개)는 이번 수정의 직접 수혜 대상이며, 후속으로 스킬 목록 출력을 인용한 문서의 두 이름 표시 반영 여부만 확인하면 됩니다.
|
|
1991
|
+
- 룰 변경 제안은 없습니다(CC 2.1.290 CHANGELOG 항목 기준).
|
|
1992
|
+
|
|
1993
|
+
---
|
|
1994
|
+
|
|
1995
|
+
## v2.1.291 (2026-10-06)
|
|
1996
|
+
|
|
1997
|
+
> Issue: #1844 — Claude Code v2.1.291 compatibility documentation
|
|
1998
|
+
> Scope-ceiling check (R017): 조사 시점(2026-10-13)의 최신 릴리즈는 2.1.296입니다(`claude --version`=2.1.296, `npm view @anthropic-ai/claude-code version`=2.1.296). 2.1.293~2.1.296 CHANGELOG 절에서 `2.1.291` 문자열과 "Revert"를 검색한 결과, 이 릴리즈의 두 항목을 되돌리거나 좁히는 문장은 관측되지 않았습니다. 2.1.293 절의 롤백 문장 2건은 각각 2.1.281의 auto mode 거부 메시지 변경과 2.1.290의 클라우드 세션 wakeup 수정을 대상으로 하며(293 절 "Reverted the 2.1.290 fix for cloud sessions staying asleep after a container restart lost a pending `/loop` wakeup or scheduled task; Claude is no longer told, and the session stays asleep"), 이 릴리즈의 권한 프롬프트 답변 누락 수정과는 다른 항목입니다. 릴리즈 게시 시각은 2026-10-06T03:55:19Z입니다(`gh release view v2.1.291 -R anthropics/claude-code --json publishedAt`).
|
|
1999
|
+
|
|
2000
|
+
### 세션 · 권한 프롬프트
|
|
2001
|
+
|
|
2002
|
+
- CHANGELOG 원문: "Fixed a regression in 2.1.290 where cloud sessions could drop answers to permission prompts"
|
|
2003
|
+
(291) 2.1.290에서 생긴 회귀로, 클라우드 세션이 권한 프롬프트에 대한 답변을 누락할 수 있던 결함이 수정되었습니다. 이 저장소의 `.claude/settings.json`은 `permissions.allow` 17개(`jq '.permissions.allow|length'`)와 `permissions.defaultMode: "bypassPermissions"`(`.claude/settings.json:23`)를 두지만, 바로 위 `:22`의 `_comment_defaultMode`가 "Do NOT rely on this key for unattended runs."라고 적고 있고 R010은 2.1.257부터 project·local scope의 `bypassPermissions`가 무시된다고 기록합니다(`.claude/rules/MUST-orchestrator-coordination.md:588`). R010은 또한 서브에이전트가 부모 세션의 권한 모드를 상속하되 에이전트 정의 frontmatter가 이를 덮어쓸 수 있다고 기록합니다(`.claude/rules/MUST-orchestrator-coordination.md:586`이 인용한 Agent 도구 스키마 "agent-definition frontmatter may override it"). 이 저장소의 에이전트 파일 50개 중 49개가 `permissionMode: bypassPermissions`를 두며(`git grep -h '^permissionMode:' -- '.claude/agents/*.md' | sort | uniq -c`), `agora-runner.md`에는 이 줄이 없습니다(`git grep -L '^permissionMode:' -- '.claude/agents/*.md'`, `souls/` 하위 파일 제외). 다만 이 저장소가 클라우드 세션을 쓰는지는 관측하지 못했으며 이 수정은 클라우드 세션 한정이므로 영향 여부는 [가설 — 클라우드 세션 사용 여부 미관측]입니다. 권한 모드 규칙(R010·R002)의 문안은 바뀌지 않습니다.
|
|
2004
|
+
- CHANGELOG 원문: "Fixed a regression in 2.1.288 where the last messages of a session could be lost when quitting"
|
|
2005
|
+
(291) 2.1.288에서 생긴 회귀로, 세션을 종료할 때 마지막 메시지가 유실될 수 있던 결함이 수정되었습니다. R020은 위반 횟수를 기억이 아니라 트랜스크립트 파싱으로 집계하도록 요구하므로(`.claude/rules/MUST-completion-verification.md:384`, `:389`), 2.1.288~2.1.290 구간에서 종료된 세션의 트랜스크립트는 마지막 메시지가 빠져 있을 수 있었습니다 [가설 — 실제 유실 여부는 해당 세션 트랜스크립트로 실측해야 합니다]. 이 수정은 이후 세션에만 적용되며 이미 유실된 메시지를 복구한다는 근거는 CHANGELOG에 없습니다.
|
|
2006
|
+
|
|
2007
|
+
기타 0건 — 이 저장소 비해당 항목은 없습니다. 실측: `gh release view v2.1.291 --repo anthropics/claude-code --json body --jq .body | grep -c '^- '` = 2건 중 위 본문 2건을 다뤘으므로 2 − 2 = 0건입니다. 계수 범위는 해당 릴리즈 노트의 최상위 불릿 줄(`- `로 시작하는 줄)입니다.
|
|
2008
|
+
|
|
2009
|
+
**Action items**:
|
|
2010
|
+
- 룰·CLAUDE.md·에이전트·훅 변경은 불필요합니다. 두 항목 모두 플랫폼 회귀 수정이며 이 저장소의 규범 문안을 바꾸지 않습니다.
|
|
2011
|
+
- 룰 변경 제안은 없습니다.
|
|
2012
|
+
|
|
2013
|
+
---
|
|
2014
|
+
|
|
2015
|
+
## v2.1.292 (2026-10-06)
|
|
2016
|
+
|
|
2017
|
+
> Issue: #1847 — Claude Code v2.1.292 compatibility documentation
|
|
2018
|
+
> Scope-ceiling check (R017): 조사 시점(2026-10-13)의 최신 릴리즈는 2.1.296입니다(`claude --version`=2.1.296, `npm view @anthropic-ai/claude-code version`=2.1.296). 2.1.293~2.1.296 CHANGELOG 절에서 `2.1.292` 문자열과 "Revert"를 검색한 결과, 이 릴리즈의 항목을 직접 되돌리는 문장은 관측되지 않았습니다. 2.1.293 절의 롤백 문장 2건은 2.1.281의 auto mode 거부 메시지 변경과 2.1.290의 클라우드 세션 wakeup 수정을 대상으로 합니다(293 절 "Reverted the 2.1.290 fix for cloud sessions staying asleep after a container restart lost a pending `/loop` wakeup or scheduled task; Claude is no longer told, and the session stays asleep"). 이 문장은 아래 background `/loop` 항목과 같은 영역이지만 대상이 클라우드 컨테이너 재시작이므로 별개 항목으로 판단합니다 [가설 — 두 수정의 코드 경로가 같은지는 미관측]. 후속 보완으로는 295 절 "Fixed a background session's `/loop` stopping without notice when its next wakeup came due while the session's process was down; the session now says so and Claude is told"가 있으며 롤백은 아닙니다. 릴리즈 게시 시각은 2026-10-06T18:59:30Z입니다(`gh release view v2.1.292 -R anthropics/claude-code --json publishedAt`).
|
|
2019
|
+
|
|
2020
|
+
### Agent · 서브에이전트
|
|
2021
|
+
|
|
2022
|
+
- CHANGELOG 원문: "Added an `effort` parameter to the Agent tool, so Claude runs a sub-agent at the effort level you ask for"
|
|
2023
|
+
(292) Agent 도구에 `effort` 파라미터가 추가되어, Claude가 사용자가 요청한 effort 수준으로 서브에이전트를 실행합니다. R009 「Agent Tool Requirements」 목록은 Agent 호출 파라미터로 `subagent_type`과 `model`을 열거하고(`.claude/rules/MUST-parallel-execution.md:278`, `:279`), 다른 룰은 `mode`(R006 `.claude/rules/MUST-agent-design.md:67`·`:470`, R010 `.claude/rules/MUST-orchestrator-coordination.md:588`·`:630`)와 `description`의 `[N]` 접두사(R008 `.claude/rules/MUST-tool-identification.md:101`)를 요구합니다. 이 7개 줄 어디에도 `effort`는 나오지 않으며(각 줄 `sed -n '<줄>p' <파일> | command grep -c effort` 결과 0), effort는 에이전트 frontmatter `effort:`로 정의합니다(`.claude/agents`의 49개 파일에 `effort:` 줄이 있음, R006 선택 필드 `.claude/rules/MUST-agent-design.md:179`). 오케스트레이터 환경의 Agent 도구 정의(Claude Code 2.1.296, 2026-10-13, 세션 도구 목록에서 직접 읽음)에는 `effort` 파라미터(enum: low, medium, high, xhigh, max)가 있으며, 도구 설명(CHANGELOG 원문이 아님) 전문은 "Reasoning effort for this agent. Set this ONLY when the user, or instructions such as CLAUDE.md or a skill, explicitly ask that this agent or delegated work run at a specific effort level, never on your own judgment; otherwise omit it and the agent runs at its usual effort. Ignored for subagent_type: "fork": a fork runs at your own effort."입니다. 이 절을 정정한 서브에이전트 세션(Claude Code 2.1.296)의 Agent 도구 정의에서도 같은 파라미터와 설명을 관측했습니다. 호출 단위 `effort`와 frontmatter `effort`의 우선순위는 관측하지 못했습니다 [가설 — 우선순위 미실측]. 이 항목은 선택 기능 추가이므로 기존 위임 규칙을 바꾸지 않습니다.
|
|
2024
|
+
- CHANGELOG 원문: "Fixed subagent definitions with `permissionMode: auto` entering auto mode when auto mode is unavailable (disabled by settings, circuit breaker, or a model that doesn't support it)"
|
|
2025
|
+
(292) auto mode를 쓸 수 없는 상황(설정으로 비활성화, circuit breaker, 미지원 모델)에서 `permissionMode: auto`로 정의된 서브에이전트가 auto mode에 진입하던 결함이 수정되었습니다. `.claude/agents`의 `permissionMode:` 줄 49개는 전부 `bypassPermissions`이고 `auto`와 `plan`은 0건이므로(`git grep -h '^permissionMode:' -- '.claude/agents/*.md' | sort | uniq -c` 결과 1행 "49 permissionMode: bypassPermissions") 이 결함 조건에 해당하지 않습니다.
|
|
2026
|
+
- CHANGELOG 원문: "Changed agent names to allow at most 256 characters: a longer one is rejected, and a skill's or a plugin file's `name` longer than that is ignored"
|
|
2027
|
+
(292) 에이전트 이름은 최대 256자로 제한되어 더 긴 이름은 거부되고, 스킬이나 플러그인 파일의 `name`이 그보다 길면 무시됩니다. 측정한 범위(python3로 `.claude/agents/*.md`와 `.claude/skills/*/SKILL.md`의 `name:` 길이 최대값 계산)에서 에이전트 `name`의 최대 길이는 22자(`lang-typescript-expert`), 스킬 `name`의 최대 길이는 32자(`supabase-postgres-best-practices`)이므로 영향 조건이 관측되지 않았습니다.
|
|
2028
|
+
|
|
2029
|
+
### 권한 · 훅 · 도구 입력
|
|
2030
|
+
|
|
2031
|
+
- CHANGELOG 원문: "Security: Fixed PreToolUse hook approvals and auto mode bypassing the permission prompt for file reads from network (UNC) paths"
|
|
2032
|
+
(292) PreToolUse 훅의 승인과 auto mode가 네트워크(UNC) 경로의 파일 읽기에서 권한 프롬프트를 우회하던 보안 결함이 수정되었습니다. 관측한 범위에서 이 저장소의 훅은 승인 결정 필드를 출력하지 않습니다(`git grep -n permissionDecision -- .claude/hooks` 결과 0건, `.claude/settings.json` 인라인 훅도 `command grep -c permissionDecision` 0; 훅 출력의 `hookSpecificOutput`은 `.claude/hooks/scripts/`의 `claude-md-reinject.sh:74`, `fail-axis-cause-advisor.sh:132`, `r007-r008-drift-advisor.sh:445`, `user-prompt-preprocessor.sh:99`의 jq 출력 식 4곳이 출력 생성 지점이며 모두 `additionalContext` 전달에만 씁니다; `git grep -n hookSpecificOutput -- .claude/hooks`는 주석과 `.claude/hooks/hooks.json:239`의 description을 포함해 13줄을 반환합니다). 또한 이 저장소 실행 환경은 macOS이며 UNC 경로 사용은 관측하지 못했습니다 [가설 — UNC 경로 사용 여부 미관측]. 영향이 없을 것으로 봅니다.
|
|
2033
|
+
- CHANGELOG 원문: "Fixed a skill's or slash command's `allowed-tools` rule coming back in a later turn when you leave auto mode or plan mode partway through that turn"
|
|
2034
|
+
(292) auto mode나 plan mode를 턴 도중에 벗어날 때 스킬·슬래시 커맨드의 `allowed-tools` 규칙이 이후 턴에 다시 돌아오던 결함이 수정되었습니다. 관측한 범위(`git grep -n '^allowed-tools:' -- '.claude/skills/*/SKILL.md'`)에서 `allowed-tools`를 선언한 스킬은 2개입니다(`.claude/skills/diagram-design/SKILL.md:12`, `.claude/skills/profile/SKILL.md:7`). 영향 범위가 작고 규칙 문안은 바뀌지 않습니다.
|
|
2035
|
+
- CHANGELOG 원문: "Improved hook output handling: `<system-reminder>` tags written in a hook's output are escaped before they reach Claude"
|
|
2036
|
+
(292) 훅 출력에 쓰인 `<system-reminder>` 태그가 Claude에 전달되기 전에 이스케이프됩니다. 측정한 범위(`git grep -n system-reminder -- .claude/hooks`)에서 `.claude/hooks`의 `system-reminder` 문자열은 `.claude/hooks/scripts/user-prompt-preprocessor.sh:63`의 주석과 `:67`의 입력 판별 정규식 2건이며, 훅이 이 태그를 출력하는 곳은 관측되지 않았습니다(`command grep -c system-reminder CLAUDE.md .claude/settings.json` 결과 0·0). 따라서 이 저장소 훅의 출력은 바뀌지 않습니다. 다만 `claude-md-reinject.sh`가 CLAUDE.md 전문을 `additionalContext`로 재주입하므로, 향후 CLAUDE.md에 이 태그를 쓰면 이스케이프 대상이 됩니다.
|
|
2037
|
+
- CHANGELOG 원문: "Improved tool input handling: Grep accepts `file_path` for `path`, and Write, WebFetch and Read ignore a few stray parameters instead of failing the call"
|
|
2038
|
+
(292) Grep이 `path`의 별칭으로 `file_path`도 받고, Write·WebFetch·Read는 몇몇 불필요한 파라미터를 호출 실패 대신 무시합니다. 룰은 도구 호출 인자를 일부 규정합니다. R008의 required 파라미터 완비 점검(`.claude/rules/MUST-tool-identification.md:38`·`:40`, `:252` "매 도구 호출 직전", `:256`의 예는 AskUserQuestion `questions`)은 모든 도구 호출에 적용됩니다. Agent 호출에 한정해서는 R008 `:97`의 `subagent_type` 일치와 `:101`의 `description` `[N]` 접두사, R009 `.claude/rules/MUST-parallel-execution.md:279`의 `model`, 그리고 `mode`를 다루는 R006 `.claude/rules/MUST-agent-design.md:67`(보이는 예시 줄)·`:470`(`:464`에서 열린 HTML DETAIL 주석 안)과 R010 `.claude/rules/MUST-orchestrator-coordination.md:630`이 있습니다(각 줄 `sed -n`으로 확인). 그러나 Grep·Write·WebFetch·Read의 파라미터 이름(`path`/`file_path`)을 규정한 룰 문장은 관측한 범위에서 없습니다(``git grep -n -E 'file_path|`path`' -- .claude/rules CLAUDE.md`` 3건: `.claude/rules/MAY-optimization.md:148`의 v2.1.229 크래시 노트, `.claude/rules/MUST-agent-design.md:291`의 `FileChanged` 훅 데이터 필드, `:430`의 model escalation 설정 키로 규범 지시가 아닙니다). 위임 프롬프트들은 이번에 조사하지 않았습니다. 따라서 이 수정으로 바꿀 룰 문안은 관측되지 않았습니다. R002 ‡(`.claude/rules/MUST-permissions.md:18`)의 기록, 즉 frontmatter `tools:`에 Grep/Glob을 명시한 `qa-writer` 1건은 전용 도구를 받았고 명시 목록이 없는 메인 세션에는 없었다는 관측과, frontmatter 명시가 `--tools` 명시와 같은 효과라는 일반화는 그 1건에 근거한 추정이라는 서술은 그대로입니다.
|
|
2039
|
+
- CHANGELOG 원문: "Fixed Grep and Glob reporting no matches when the file or folder they were given could not be read; Claude now retries once or tells you"
|
|
2040
|
+
(292) 지정한 파일이나 폴더를 읽을 수 없을 때 Grep과 Glob이 일치 항목 없음으로 보고하던 결함이 수정되어, 이제 Claude가 한 번 재시도하거나 사용자에게 알립니다. R020의 Read-Before-Characterize는 로그를 읽기 전에 특성화하지 않도록 요구하며(`.claude/rules/MUST-completion-verification.md`의 해당 절), 이 수정은 같은 방향의 플랫폼 보완입니다. 구버전 세션에서 "0건"으로 보고된 검색은 읽기 실패였을 가능성이 있으나 [가설 — 과거 세션별 실측 필요], 규칙 문안은 바뀌지 않습니다.
|
|
2041
|
+
- CHANGELOG 원문: "Improved sandbox auto-allow: with strict sandbox mode set in user, managed or --settings settings, an interpreter command with an env var prefix like `FOO=bar python3 app.py` runs unprompted"
|
|
2042
|
+
(292) 사용자·관리형·`--settings` 설정에 strict sandbox 모드가 지정된 경우, `FOO=bar python3 app.py` 같은 환경 변수 접두 인터프리터 명령이 프롬프트 없이 실행됩니다. 원문상 이 동작은 strict sandbox 모드가 사용자·관리형·`--settings` 설정에 있을 때만 해당하므로, 프로젝트 `.claude/settings.json`의 `sandbox` 키 유무는 판단 근거가 되지 않습니다. 사용자·관리형·`--settings` 설정은 이번 검토에서 조사하지 않았으므로 영향 여부는 [가설 — 해당 scope의 strict sandbox 설정 여부로 판정]입니다.
|
|
2043
|
+
|
|
2044
|
+
### MCP
|
|
2045
|
+
|
|
2046
|
+
- CHANGELOG 원문: "Fixed an MCP tool with a name longer than 128 characters making every request fail; that tool is now left out and an MCP error names it"
|
|
2047
|
+
(292) 이름이 128자를 넘는 MCP 도구가 모든 요청을 실패시키던 결함이 수정되어, 해당 도구는 제외되고 MCP 오류가 그 이름을 알립니다. 이 저장소 `.mcp.json`은 서버 2개(`ontology-rag` stdio `.mcp.json:4`, `eraser` http `.mcp.json:16`)를 두며 `.claude/settings.json:26`은 `ontology-rag`만 `enabledMcpjsonServers`에 나열합니다(`:25`의 `enableAllProjectMcpServers`는 true). 도구 이름 길이는 세션 도구 목록으로 잴 수 있습니다. Claude Code 2.1.296 리뷰어 세션에서 가장 긴 `ontology-rag` 도구 이름은 `mcp__ontology-rag__ontology_compare_phases`(42자, 접두 제외 23자)로 관측됐고, 이 절을 정정한 서브에이전트 세션의 지연 도구 목록에서도 같은 이름이 최장이었습니다(python3 `len` 계산). `eraser`는 두 세션 모두 인증 전 도구(`mcp__eraser__authenticate`, `mcp__eraser__complete_authentication`)만 보였으므로, 인증 후 도구 이름 길이는 [가설 — 인증 후 도구 목록으로 판정]입니다.
|
|
2048
|
+
- CHANGELOG 원문: "Improved startup of `claude -p` and SDK sessions: the first turn no longer waits for HTTP and SSE MCP servers to answer `resources/list`"
|
|
2049
|
+
(292) `claude -p`와 SDK 세션의 시작이 빨라져 첫 턴이 HTTP·SSE MCP 서버의 `resources/list` 응답을 기다리지 않습니다. 이 저장소의 http 서버는 `eraser` 하나이며(`.mcp.json:16`), 무인 실행(`.claude/skills/fsd/SKILL.md:133`가 `claude -p`를 언급)에서 이 서버가 로드되는지는 관측하지 못했습니다 [가설 — `enableAllProjectMcpServers: true`(`.claude/settings.json:25`)에 따른 로드 여부 미실측]. 시작 지연 개선이지만, 첫 턴이 HTTP·SSE 서버의 `resources/list` 결과 없이 시작될 수 있는지는 원문이 말하지 않으므로 [가설 — 첫 턴에서 해당 서버 리소스 목록의 유무를 실측하면 판정]입니다.
|
|
2050
|
+
- CHANGELOG 원문: "Changed local (stdio) MCP server connections to negotiate protocol version 2026-07-28 by default on every install, including Bedrock, Vertex and Foundry; `MCP_PROTOCOL_NEGOTIATION=legacy` opts out"
|
|
2051
|
+
(292) 로컬(stdio) MCP 서버 연결이 모든 설치(Bedrock·Vertex·Foundry 포함)에서 기본적으로 프로토콜 버전 2026-07-28을 협상하며, `MCP_PROTOCOL_NEGOTIATION=legacy`로 이전 방식을 선택할 수 있습니다. 이 저장소의 로컬 stdio 서버는 `ontology-rag`이며 `.venv/bin/python -m ontology_rag.mcp_server`로 실행됩니다(`.mcp.json:4`~`:9`). Claude Code 2.1.296 세션에서 `ontology-rag` 도구가 노출된 것은 관측됐습니다(리뷰어 관측이며, 이 절을 정정한 서브에이전트 세션의 지연 도구 목록에도 `mcp__ontology-rag__*` 도구가 있었습니다). 다만 연결 경로가 새 프로토콜 협상인지 아래 항목의 7일 폴백인지는 관측하지 않았습니다 [가설 — 연결 경로 미관측]. R019의 enrichment는 실패 시 조용히 건너뛰도록 규정되어 있습니다(`.claude/rules/SHOULD-ontology-rag-routing.md:39`의 「Failure Handling」 절, 표는 `:41`~`:46`).
|
|
2052
|
+
- CHANGELOG 원문: "Improved startup with local (stdio) MCP servers that ignore the newer protocol check: after one slow connect they are remembered for 7 days and connected the older way without the wait"
|
|
2053
|
+
(292) 새 프로토콜 확인을 무시하는 로컬(stdio) MCP 서버는 한 번 느리게 연결된 뒤 7일 동안 기억되어, 이후 대기 없이 이전 방식으로 연결되므로 시작이 빨라집니다. 이 저장소의 로컬 stdio 서버는 `ontology-rag` 하나이며(`.mcp.json:3`~`:4`), 이 서버가 새 프로토콜 확인을 무시해 이 폴백 대상이 되는지는 관측하지 않았습니다(위 항목의 [가설]과 같은 미관측 사항). 연결 방식의 기본값을 바꾸는 항목이 아니라 시작 지연 개선이므로 룰 변경은 필요하지 않습니다.
|
|
2054
|
+
|
|
2055
|
+
### 무인 실행 · 예약 · 재개
|
|
2056
|
+
|
|
2057
|
+
- CHANGELOG 원문: "Fixed one-shot `claude -p` and Agent SDK runs stopping a background command 5 seconds after the final result, and one-shot `claude -p` runs dropping a scheduled wakeup; both are now waited for"
|
|
2058
|
+
(292) 일회성 `claude -p`와 Agent SDK 실행이 최종 결과 5초 뒤에 백그라운드 명령을 멈추던 결함과, 일회성 `claude -p` 실행이 예약된 wakeup을 버리던 결함이 수정되어, 이제 둘 다 기다립니다. `/fsd`는 `claude -p`·예약 실행 경로를 명시적으로 다루고(`.claude/skills/fsd/SKILL.md:133`, `:172`), R020은 2.1.257의 Monitor 대기 수정을 이미 기록합니다(`.claude/rules/MUST-completion-verification.md:535`). 구버전 `-p` 실행에서 백그라운드 결과의 부재는 조기 종료의 산물일 수 있었습니다 [가설 — 실제 무인 `-p` 실행에서의 효과 미실측].
|
|
2059
|
+
- CHANGELOG 원문: "Fixed plan mode not being restored when resuming a session from the `claude --resume` session picker or with `/resume`"
|
|
2060
|
+
(292) `claude --resume` 세션 선택기나 `/resume`으로 세션을 재개할 때 plan mode가 복원되지 않던 결함이 수정되었습니다. 이 저장소의 에이전트 정의에는 `permissionMode: plan`이 0건입니다(`git grep -h '^permissionMode:' -- '.claude/agents/*.md' | sort | uniq -c`). plan mode에 들어가는 경로로는 사용자가 세션에서 켜는 경우 외에, `structured-dev-cycle` 스킬이 Stage 1을 `EnterPlanMode`에 대응시키고(`.claude/skills/structured-dev-cycle/SKILL.md:134`~`:136`) `research` 스킬이 `EnterPlanMode`를 언급하며(`.claude/skills/research/SKILL.md:384`) R002 Tier 3가 `EnterPlanMode`를 나열합니다(`.claude/rules/MUST-permissions.md:11`). 이 경로로 들어간 plan mode도 재개 시 복원 대상이 되지만, 플랫폼 수정이므로 규칙 변경은 필요하지 않습니다.
|
|
2061
|
+
- CHANGELOG 원문: "Fixed saved scheduled tasks created after `/resume`, `/branch` or `/clear` never firing, and saved tasks ignoring later creates and deletes after two writes to the tasks file milliseconds apart"
|
|
2062
|
+
(292) `/resume`·`/branch`·`/clear` 이후 만든 저장된 예약 작업이 발화하지 않던 결함과, 작업 파일에 몇 밀리초 간격으로 두 번 쓴 뒤 저장된 작업이 이후의 생성·삭제를 무시하던 결함이 수정되었습니다. `/fsd`의 루프 드라이버는 메인 대화 자신이며 `/goal`·`/loop`(ScheduleWakeup) 호출은 필수가 아니라고 규정합니다(`.claude/skills/fsd/SKILL.md:162`). 관측한 범위(위 v2.1.290 절의 예약 경로 `git grep`)에서 이 수정이 닿을 수 있는 경로는 `/fsd`의 선택적 `/loop` 호출과 `claude-native` 스킬의 예약 실행 안내(`.claude/skills/claude-native/SKILL.md:232`~`:240`, `/schedule`·CronCreate)입니다. 두 경로의 실제 사용은 관측하지 않았고, `/schedule` routine이 이 저장된 예약 작업 경로를 쓰는지도 [가설 — 미관측]입니다.
|
|
2063
|
+
- CHANGELOG 원문: "Fixed a background session's `/loop` silently stopping when the session's process restarted (for example after a crash), because its pending wakeup was lost"
|
|
2064
|
+
(292) 백그라운드 세션의 프로세스가 재시작될 때(예: 크래시) 대기 중이던 wakeup이 사라져 `/loop`가 조용히 멈추던 결함이 수정되었습니다. `/fsd`의 `/loop` 반복은 `.claude/skills/fsd/SKILL.md:16`과 `:39`에 정의되어 있습니다. 2.1.293의 클라우드 wakeup 롤백은 대상이 클라우드 컨테이너 재시작이므로 이 항목과 별개 항목으로 판단하며(위 Scope-ceiling과 같은 판단, 코드 경로 동일 여부는 [가설]), 2.1.295의 "Fixed a background session's `/loop` stopping without notice when its next wakeup came due while the session's process was down; the session now says so and Claude is told"는 롤백이 아닌 후속 보완입니다. 현행(2.1.296)에서의 실제 동작은 실행 검증하지 않았습니다.
|
|
2065
|
+
- CHANGELOG 원문: "Added `CLAUDE_CODE_OVERLOADED_RETRY_BASE_DELAY_MS` environment variable to set a longer base delay for the backoff when retrying an overloaded (529) request"
|
|
2066
|
+
(292) 과부하(529) 요청을 재시도할 때의 백오프 기본 지연을 늘리는 환경 변수 `CLAUDE_CODE_OVERLOADED_RETRY_BASE_DELAY_MS`가 추가되었습니다. 측정한 범위에서 이 변수는 `.claude/settings.json`과 `.claude/settings.local.json`에 설정되어 있지 않으며(`command grep -c OVERLOADED .claude/settings.json .claude/settings.local.json` 결과 0·0; `.claude/settings.local.json`은 gitignore 대상이라 `git grep`으로는 볼 수 없습니다), 선택 환경 변수이므로 기본 동작은 바뀌지 않습니다. R004의 "Retry up to 3x with backoff (1s, 2s, 4s)"(`.claude/rules/SHOULD-error-handling.md:25`)는 에이전트 수준 재시도 규정이며 플랫폼 내부 백오프와 별개입니다.
|
|
2067
|
+
|
|
2068
|
+
### 컨텍스트 · 압축 · 입력
|
|
2069
|
+
|
|
2070
|
+
- CHANGELOG 원문: "Fixed "instruction file not loaded" lines going stale or missing after `/cd` or a permission change, and added a transcript line when a nested one isn't loaded"
|
|
2071
|
+
(292) `/cd`나 권한 변경 뒤 "instruction file not loaded" 안내 줄이 오래되거나 누락되던 결함이 수정되었고, 중첩 지시 파일이 로드되지 않을 때 트랜스크립트 줄이 추가되었습니다. `InstructionsLoaded` 훅은 이 저장소에 배선되어 있지 않으므로(CC가 로드하는 `.claude/settings.json`의 `hooks` 키에 없음(jq), `command grep -c InstructionsLoaded .claude/settings.json .claude/settings.local.json` 결과 0·0; `.claude/hooks/hooks.json`은 CC가 직접 로드하지 않는 소스 파일, R021) 훅 동작에는 영향이 없고, 표시와 트랜스크립트 정보가 정확해집니다. 이 저장소에는 중첩 지시 파일 `templates/CLAUDE.md`가 있으므로(v2.1.288·v2.1.293 절) 그것이 로드되지 않는 경우 새 트랜스크립트 줄이 생길 수 있습니다. 트랜스크립트를 파싱하는 스크립트(예: R020 자가 계수용 `scripts/count-r007-r008.sh`)에 이 줄이 영향을 주는지는 [가설 — 새 줄이 포함된 트랜스크립트로 계수 결과를 비교하면 판정]입니다.
|
|
2072
|
+
- CHANGELOG 원문: "Fixed a compaction summary that repeated `/name` letting Claude invoke a skill that is reserved for the user"
|
|
2073
|
+
(292) 압축 요약이 `/name`을 반복하면 사용자 전용 스킬을 Claude가 호출할 수 있던 결함이 수정되었습니다. 이 저장소는 `disable-model-invocation: true` 스킬 10개를 둡니다(`git grep -l -E '^disable-model-invocation: *true' -- '.claude/skills/*/SKILL.md' | wc -l`=10; 예: `.claude/skills/npm-publish/SKILL.md:6`, `.claude/skills/npm-version/SKILL.md:6`, `.claude/skills/sauron-watch/SKILL.md:5`). 구버전에서는 압축 뒤 이 스킬들이 모델에 의해 호출될 여지가 있었으나 [가설 — 실제 호출 사례 미관측], 수정으로 사용자 전용 의도가 압축 후에도 유지됩니다. 규칙 문안 변경은 필요하지 않습니다.
|
|
2074
|
+
- CHANGELOG 원문: "Fixed @-mentioned text files over 256KB being left out silently: Claude is now told the file's size and to read it in portions"
|
|
2075
|
+
(292) 256KB를 넘는 @-멘션 텍스트 파일이 조용히 제외되던 결함이 수정되어, 이제 Claude에게 파일 크기와 분할 읽기가 안내됩니다. 이 가이드(`guides/claude-code/15-version-compatibility.md`)와 미러(`templates/guides/claude-code/15-version-compatibility.md`)는 256KB(262144바이트)를 넘으므로(`wc -c`, 2026-10-13 측정) 직접 해당합니다. 이 가이드를 @-멘션하면 전문이 한 번에 들어오지 않고, 이 수정에 따라 Claude가 파일 크기와 분할 읽기 안내를 받습니다(이 수정 이전에는 조용히 제외되던 조건입니다).
|
|
2076
|
+
- CHANGELOG 원문: "Fixed the Read tool returning only the first entry, with no error, when a PDF's `pages` was a list such as "6,9,15"; it now returns an error saying to read each page or range separately"
|
|
2077
|
+
(292) PDF의 `pages`에 "6,9,15" 같은 목록을 주면 Read가 오류 없이 첫 항목만 반환하던 결함이 수정되어, 이제 각 페이지나 범위를 따로 읽으라는 오류를 반환합니다. `git grep -n -w PDF -- '.claude/skills/*/SKILL.md'` 결과는 2건(`.claude/skills/research/SKILL.md:227`, `.claude/skills/scout/SKILL.md:94`)이며 둘 다 출처 태깅 문구이지 PDF 읽기 지시가 아니므로 영향이 없습니다.
|
|
2078
|
+
|
|
2079
|
+
기타 70건 — 이 저장소 비해당(VSCode·Claude Tag·Code Review·Cloud sessions·Remote Control 전용 항목, 터미널 입력·vim mode·렌더링·/theme·/focus 등 UI 세부, mod·plugin 훅 API(`prompt.autocomplete`, `$.model.complete`, `agent.spawn`, `tool.check`, `tool.call`, `config.set`)와 `claude plugin` 하위 명령, Windows 전용 보안 수정, 샌드박스 읽기 거부 경로·managed 설정·`/ultrareview` 업로드 관련 수정 등 harness 비영향 세부사항이며 이 저장소는 mod·plugin 패널 UI를 개발하지 않습니다). 실측: `gh release view v2.1.292 --repo anthropics/claude-code --json body --jq .body | grep -c '^- '` = 92건 중 위 본문 22건을 다뤘으므로 92 − 22 = 70건입니다. 계수 범위는 해당 릴리즈 노트의 최상위 불릿 줄(`- `로 시작하는 줄)입니다.
|
|
2080
|
+
|
|
2081
|
+
**Action items**:
|
|
2082
|
+
- Agent·권한·훅·MCP·무인 실행·컨텍스트 항목은 이 저장소에 해당 구성이 없거나(`permissionMode: auto`/`plan` 0건, `InstructionsLoaded` 훅 없음, `OVERLOADED` 환경 변수 미설정; strict sandbox는 사용자·관리형·`--settings` scope 사항이라 미조사) 선택 기능 또는 플랫폼 수정이며, 룰·CLAUDE.md·에이전트·훅 변경은 불필요합니다. @-멘션 256KB 항목은 이 가이드 자체가 해당하지만 플랫폼의 안내 개선이므로 역시 룰 변경 사안이 아닙니다.
|
|
2083
|
+
- 룰 변경 제안은 없습니다. 후보로만 보고합니다: Agent 호출 단위 `effort` 파라미터는 `.claude/rules/MUST-parallel-execution.md`의 "Agent Tool Requirements" 목록에 한 줄로 추가할 수 있습니다. Agent 스키마의 `effort` 노출은 관측됐으나(오케스트레이터 세션, Claude Code 2.1.296), frontmatter `effort:`와의 우선순위가 미실측이므로 현재는 보류합니다.
|
|
2084
|
+
|
|
2085
|
+
---
|
|
2086
|
+
|
|
2087
|
+
## v2.1.293 (2026-10-07)
|
|
2088
|
+
|
|
2089
|
+
> Issue: #1849 — Claude Code v2.1.293 compatibility documentation
|
|
2090
|
+
> Scope-ceiling check (R017): 조사 시점(2026-10-13)의 최신 릴리즈는 2.1.296입니다(`claude --version`=2.1.296, `npm view @anthropic-ai/claude-code version`=2.1.296). 이 릴리즈 이후 릴리즈(2.1.294~2.1.296)의 CHANGELOG 절 3개에서 `2.1.293`과 `Revert`를 검색했고(`command grep -nE '2\.1\.293|Revert' section-2.1.294.md section-2.1.295.md section-2.1.296.md`) 출력은 0줄이었습니다. 따라서 이후 릴리즈가 이 릴리즈의 항목을 롤백하거나 좁힌 문장은 관측되지 않았습니다(`command grep -n '2\.1\.29' section-2.1.296.md`의 일치는 절 제목과 gateway 로그인 회귀 1줄이며, 그 줄은 2.1.295 회귀를 다루므로 이 릴리즈와 무관합니다). 이 릴리즈 자체에는 이전 릴리즈의 롤백이 2건 있으며 아래 해당 항목에서 다룹니다. 릴리즈 게시 시각은 2026-10-07T18:10:20Z입니다(`gh release view v2.1.293 -R anthropics/claude-code --json publishedAt`).
|
|
2091
|
+
|
|
2092
|
+
### 모델 · 상태줄
|
|
2093
|
+
|
|
2094
|
+
- CHANGELOG 원문: "Added Claude Haiku 5.5 (`claude-haiku-5-5`), now the default Haiku model on the Anthropic API — 1M context, $0.10/$0.50 per Mtok ($0.50/$2.50 for prompts over 100K)"
|
|
2095
|
+
(293) Haiku 5.5(`claude-haiku-5-5`)가 추가되어 Anthropic API의 기본 Haiku 모델이 되었습니다. R006 Tier-2 표에는 이번 변경에서 `claude-haiku-5-5` 행이 추가되었고(`.claude/rules/MUST-agent-design.md:50`, 기존 `claude-haiku-4-5` 행은 `:49`), `guides/multi-model-routing/README.md:36`에도 같은 모델 행이 추가되었습니다. 이 저장소의 haiku 에이전트 3개는 Tier-1 별칭 `model: haiku`를 씁니다(`.claude/agents/mgr-supplier.md:4`, `.claude/agents/sys-naggy.md:4`, `.claude/agents/tracker-checkpoint.md:4`). Tier-1 별칭은 CC가 해석하므로(R006 Tier 1 단락, `MUST-agent-design.md:33`, `:43`) 이 에이전트들이 실제로 Haiku 5.5로 실행되는지는 스폰 결과의 `resolvedModel`을 실측해야 확정됩니다 [가설 — 스폰 결과의 `resolvedModel` 값이 `claude-haiku-5-5`인지 여부로 판정].
|
|
2096
|
+
- CHANGELOG 원문: "Added `agentType` to the `subagentStatusLine` payload, so scripts can tell custom subagent types apart"
|
|
2097
|
+
(293) `subagentStatusLine` payload에 `agentType`이 추가되어 스크립트가 커스텀 서브에이전트 타입을 구분할 수 있습니다. 관측한 범위에서 `.claude/settings.json`의 상태줄 설정은 `statusLine`(`.claude/settings.json:29`) 하나이고 `subagentStatusLine`은 `.claude`·`templates/.claude`에서 0건이어서(`git grep -n subagentStatusLine -- .claude templates/.claude` 0건, `.claude/settings.local.json`은 `command grep -c` 0) 영향 조건이 관측되지 않았습니다. `.claude/hooks/scripts/audit-log.sh:29`·`:35`의 `agentType`은 Agent 도구 결과 객체(`.tool_response?.agentType?`)를 읽는 별개 표면입니다.
|
|
2098
|
+
|
|
2099
|
+
### 서브에이전트 · 도구 안내
|
|
2100
|
+
|
|
2101
|
+
- CHANGELOG 원문: "Fixed Claude being told to continue or message subagents with `SendMessage` in sessions, including resumed ones, where a host, a permission rule or a `--tools` list removed that tool"
|
|
2102
|
+
(293) 호스트, permission rule, `--tools` 목록이 `SendMessage`를 제거한 세션(재개 세션 포함)에서도 Claude가 `SendMessage`로 서브에이전트를 이어가거나 메시지하라고 안내받던 결함이 수정되었습니다. R018 「멤버 도구 부재 시 대체 규약」(`.claude/rules/MUST-agent-teams.md:490`)은 멤버에게 `SendMessage`가 있다고 가정하지 말되 부재를 전제하지도 말고 먼저 `ToolSearch`로 로드를 시도하라고 규정하며(`:492`), 로드할 수 없을 때의 대체 수단(아티팩트 파일 채널)을 표로 둡니다(`:496`). 이 수정은 도구가 실제로 제거된 세션에서 Claude가 없는 도구를 안내받지 않게 하는 것이며, 그 경우 R018의 대체 표를 따른다는 규범과 충돌하지 않으므로 룰 문안 변경은 필요하지 않습니다.
|
|
2103
|
+
- CHANGELOG 원문: "Fixed subagents and `--agent` sessions being told a built-in tool was disabled for the whole session when only their own tool list left it out"
|
|
2104
|
+
(293) 서브에이전트와 `--agent` 세션이 자신의 도구 목록에서만 빠졌을 뿐인 내장 도구를 "세션 전체에서 비활성"이라고 안내받던 결함이 수정되었습니다. 이 저장소의 에이전트는 frontmatter `tools:`/`disallowedTools:`로 도구를 제한하므로(R010 「Known Limitations (Active Cache)」, `.claude/rules/MUST-orchestrator-coordination.md:811`) 직접 관련됩니다. 이 수정은 모델이 받는 안내 문구를 바로잡는 것이며 위임 전 도구 가용성 점검(R010 Agent Capability Pre-Check, `.claude/rules/MUST-orchestrator-coordination.md:742`)의 필요성을 바꾸지 않습니다.
|
|
2105
|
+
- CHANGELOG 원문: "Fixed Claude sometimes treating its own last actions before a context compaction as done after it, and retracting or redoing finished work"
|
|
2106
|
+
(293) Claude가 컨텍스트 compaction 직전에 자신이 한 마지막 동작을 compaction 이후에 한 일로 취급해, 끝난 작업을 철회하거나 다시 하던 결함이 수정되었습니다(원문 "treating its own last actions before a context compaction as done after it"의 "done after it"을 "compaction 뒤에 수행된 것"으로 읽었습니다). 이 저장소는 compaction 전후 상태 보완용 훅을 배선합니다(PreCompact `task-state-precompact.sh` `.claude/settings.json:396`, PostCompact prompt 훅 `.claude/settings.json:407`). 다만 PreCompact가 저장한 상태의 복원은 PostCompact prompt에 기대며(`.claude/hooks/scripts/task-state-precompact.sh:3` "Pairs with PostCompact prompt that restores this state"), R021은 PostCompact 배선의 효과를 보장되지 않는 것으로 기록합니다(`.claude/rules/MUST-enforcement-policy.md:9`, `:26`; 보장 경로는 `SessionStart` 재주입). 따라서 이 보완이 실제로 복원 효과를 내는지는 [가설 — compact 직후 응답에 저장된 작업 상태가 반영되는지로 판정]입니다. 플랫폼 수정은 같은 문제를 다루는 방향이며 훅·룰 변경은 필요하지 않습니다. 구버전 `/fsd` 세션에서 관측된 작업 재수행이 있다면 일부가 이 결함 때문이었을 수 있으나 [가설 — 해당 세션 트랜스크립트 미조사] R020의 완료 검증 규정 문안은 이 수정으로 바뀌지 않습니다.
|
|
2107
|
+
|
|
2108
|
+
### 컨텍스트 · 룰 로딩
|
|
2109
|
+
|
|
2110
|
+
- CHANGELOG 원문: "Fixed path-scoped rules and nested CLAUDE.md files not loading when Claude views a file with a single-file cat, head, tail, sed -n or grep command in the Bash tool instead of the Read tool"
|
|
2111
|
+
(293) 단일 파일을 대상으로 한 Bash의 cat·head·tail·sed -n·grep 명령으로 파일을 볼 때 path-scoped rule과 중첩 CLAUDE.md가 로드되지 않던 결함이 수정되었습니다. 관측한 범위에서 `.claude/rules/*.md`와 `.claude/skills/*/SKILL.md`의 줄 시작 `paths:`는 `MUST-agent-design.md:632`의 문서 예시 1건뿐이고(`git grep -n -E '^paths:' -- '.claude/rules/*.md' '.claude/skills/*/SKILL.md'`) 실제 룰은 전부 무조건 로드되므로, path-scoped 룰 쪽 절반은 해당하지 않습니다. 반면 중첩 CLAUDE.md 쪽 절반은 해당합니다. 추적된 CLAUDE.md는 루트 `CLAUDE.md`와 `templates/CLAUDE.md` 2개이며(`git ls-files '*CLAUDE.md'`), `templates/` 하위 디렉터리에 있으므로 `templates/CLAUDE.md`가 중첩 CLAUDE.md입니다(위 v2.1.288 절의 같은 판단; 두 파일 내용도 서로 다릅니다, `cmp` 불일치). 따라서 293부터는 `templates/` 아래 파일을 단일 파일 Bash 보기(`cat`·`head`·`tail`·`sed -n`·`grep`)로 열 때도 이 파일이 로드됩니다. 여러 파일을 훑는 `git grep` 전수조사(R005, `.claude/rules/MAY-optimization.md:87`)는 원문의 단일 파일 명령 목록에 없으므로 이 로드와 무관하다고 봅니다 [가설 — `git grep` 단일 경로 지정 시의 로드 여부는 미실측].
|
|
2112
|
+
|
|
2113
|
+
### 권한 · 백그라운드
|
|
2114
|
+
|
|
2115
|
+
- CHANGELOG 원문: "Fixed `claude agents` offering bypass permissions that background sessions then ignored when consent was saved only in `.claude/settings.local.json` or a `--settings` file; it now asks for consent first, and a session that ignores bypass shows a short notice that stays"
|
|
2116
|
+
(293) bypass 동의가 `.claude/settings.local.json`이나 `--settings` 파일에만 저장된 경우, `claude agents`가 bypass permissions를 제공하지만 백그라운드 세션이 이를 무시하던 결함이 수정되었습니다. 이제 먼저 동의를 묻고, bypass를 무시한 세션에는 짧은 안내가 남습니다. R010 「Universal bypassPermissions」는 project·local의 `bypassPermissions` `defaultMode`가 2.1.257부터 무시된다고 이미 기록합니다(`.claude/rules/MUST-orchestrator-coordination.md:588`). 같은 계열이며, 이 저장소의 프로젝트 `.claude/settings.json`은 `permissions.defaultMode: "bypassPermissions"`를 유지하되 신뢰하지 말라는 주석을 둡니다(`jq .permissions .claude/settings.json`의 `_comment_defaultMode`). `.claude/settings.local.json`의 동의 상태는 기기별 설정 파일(gitignore 대상)이라 이번 검토에서 의도적으로 열어 보지 않았으며 [가설 — `claude agents` 실사용 시 동의 프롬프트 표시 여부는 미실측] 룰 변경은 필요하지 않습니다.
|
|
2117
|
+
- CHANGELOG 원문: "Reverted the auto mode denial message change from 2.1.281 that told Claude a denial covers the outcome, not only the exact command"
|
|
2118
|
+
(293) 2.1.281에서 도입된, 거부가 정확한 명령뿐 아니라 그 결과까지 포함한다고 Claude에게 알리던 auto mode 거부 메시지 변경이 롤백되었습니다. 관측한 범위에서 `.claude/rules`와 `CLAUDE.md`에 `2.1.281`을 언급하는 문장은 0건이며(`git grep -n '2\.1\.281' -- .claude/rules CLAUDE.md` rc=1), R010 STOP Protocol은 classifier trip 횟수(2회)만 기준으로 삼고 거부 메시지 문구에 의존하지 않으므로(`.claude/rules/MUST-orchestrator-coordination.md:273`의 trip 계수 서술, 같은 파일 `:254`의 STOP Protocol 절) 영향이 없습니다. 다만 롤백으로 "거부는 결과까지 포함하므로 다른 경로로 우회하지 말라"는 취지를 플랫폼 메시지가 더 이상 전하지 않습니다. 저장소 룰 중 인접한 규범은 적용 범위가 각각 좁습니다. R001의 Ask-before-scan(`.claude/rules/MUST-safety.md:147`)은 크레덴셜 디스커버리 스캔이 classifier에 걸리면 재시도하지 말라고 하고, R001 「Standing User-Deny + Classifier Block」(`:171`, `:177`)은 사용자의 상시 금지("don't touch X")가 있을 때만 차단된 편집을 다른 경로로 재시도하지 말라고 합니다. R010 STOP Protocol(`.claude/rules/MUST-orchestrator-coordination.md:262`)은 서브에이전트의 classifier trip 2회를 다루고, 같은 룰의 git 조항 두 개(`:487` 브랜치 전환 거부 시 `stash`/`reset`/`clean` 자체 우회 금지, `:1004`·`:1014` pre-commit 훅 차단의 `--no-verify` 우회 금지)와 R017의 v2.1.269/271 노트(`.claude/rules/MUST-sync-verification.md:369`, HTML 주석 안 — 낡은 `.git/config.lock`을 `rm`으로 자체 우회하지 말고 보고)는 git 작업에 한정됩니다. R015의 `.claude/rules/MUST-intent-transparency.md:138`은 allow 규칙으로는 classifier 차단이 풀리지 않으므로 사용자가 `!`로 직접 실행하거나 차단 트리거를 제거해야 한다고 적고, 같은 룰의 「Failed Tool Re-Try Discipline」(`:82`)은 사용자가 지정한 도구를 거부 후에도 같은 도구로 재시도하라는 규범이라 방향이 일부 반대이지만, 다른 수단으로 조용히 바꾸지 말라는 같은 방향의 요소도 있습니다(보이는 `:87` "do NOT silently switch", `:84`에서 열린 DETAIL 주석 안 `:85` "do NOT silently switch to a different mechanism"; 둘 다 사용자가 지정한 도구에 한정). R020의 진단 가설 표(`.claude/rules/MUST-completion-verification.md:323`)는 권한·토큰 오류를 플래그·옵션 변경으로 우회하지 말라고 하지만 진단 가설 검증 맥락의 조항입니다. 룰 문장 스윕(`git grep -n -i classifier -- .claude/rules CLAUDE.md`와 ``git grep -n -i -E 'route around|circumvent|우회|another path|different mechanism' -- .claude/rules CLAUDE.md``, HTML 주석 안의 일치 포함)에서 위 조항 외에 일반 auto mode 거부 전반에 대해 "다른 경로로 우회하지 말라"고 규정한 문장은 찾지 못했습니다. 즉 롤백 뒤 그 일반 규범은 플랫폼 메시지에서 빠졌고, 위 스윕 범위의 저장소 룰에서도 확인되지 않습니다. (288) 절 「권한 · auto mode · rm」은 사용자 scope `defaultMode`를 `auto`로 관측했습니다. 세션의 실제 유효 모드는 프로젝트 설정과의 우선순위에 따라 달라지므로(R010 「Universal bypassPermissions」 — `claude -p`에서는 `default` 귀결 실측, 대화형 세션은 [가설]) 이 롤백은 auto mode로 실행되는 세션에 한해 해당합니다.
|
|
2119
|
+
|
|
2120
|
+
### 스케줄링
|
|
2121
|
+
|
|
2122
|
+
- CHANGELOG 원문: "Reverted the 2.1.290 fix for cloud sessions staying asleep after a container restart lost a pending `/loop` wakeup or scheduled task; Claude is no longer told, and the session stays asleep"
|
|
2123
|
+
(293) 컨테이너 재시작으로 대기 중인 `/loop` wakeup이나 예약 작업이 사라진 cloud 세션이 계속 잠든 상태로 남던 문제에 대한 2.1.290 수정(2.1.290 CHANGELOG: "Fixed cloud sessions staying asleep after a container restart lost a pending `/loop` wakeup or scheduled task; Claude is now told and can schedule it again")이 롤백되어, Claude에게 알리지 않으며 세션은 잠든 채로 남습니다. 대상은 cloud 세션입니다. 관측한 범위(v2.1.290 절의 예약 경로 `git grep`)에서 이 저장소가 `/loop`를 쓰는 경로는 `/fsd`의 선택적 self-paced `/loop` 호출입니다(`.claude/skills/fsd/SKILL.md:16`, `:39`, `:162`). self-paced `/loop`도 예약 wakeup을 기다리는 세션 한정 반복 작업으로 다뤄집니다(2.1.290 CHANGELOG "`/loop` and other recurring session-only scheduled tasks", "background sessions waiting on a scheduled wakeup (`/loop`)"). `claude-native` 스킬의 `/schedule` 안내(`.claude/skills/claude-native/SKILL.md:234`~`:237`)는 클라우드 routine을 만드는 경로이며, routine 실행이 이 항목의 cloud 세션 wakeup 경로를 거치는지는 [가설 — 미관측]입니다. `omcustom-loop` 스킬 문서는 SubagentStop prompt 훅을 설명하지만(`.claude/skills/omcustom-loop/SKILL.md:3`, `:13`), v2.1.294 절에 정리한 대로 현재 SubagentStop 훅 5개는 전부 `command` 타입이며(`jq -c '[.hooks.SubagentStop[]?.hooks[]?.type]' .claude/settings.json`; #1631 교체, `.claude/hooks/hooks.json:283`의 description) 스킬 문서가 배선보다 오래된 상태이고, 이 스킬 문서는 `/loop`·`ScheduleWakeup`·`CronCreate`를 언급하지 않습니다(`command grep -c -E '/loop|ScheduleWakeup|CronCreate' .claude/skills/omcustom-loop/SKILL.md` 결과 0). `/fsd`를 cloud 세션에서 돌린 흔적은 관측하지 못했으므로 영향이 없을 것으로 봅니다 [가설 — cloud 세션 사용 여부 미관측]. 2.1.290의 다른 `/loop` 관련 수정(compaction 이후 예약 작업 복원 등)은 이 항목으로 롤백되지 않았습니다.
|
|
2124
|
+
|
|
2125
|
+
### MCP
|
|
1926
2126
|
|
|
1927
|
-
-
|
|
1928
|
-
-
|
|
1929
|
-
- (290) idle 상태에서 백그라운드로 옮긴 세션이 재시작·idle cleanup 후 "no saved transcript"로 열리던 결함이 수정되었으며, 해당 세션은 대화를 재개합니다. 이 저장소의 기존 재개 절차를 바꾸지 않고 실제 재개 검증 여부와 문서 검토를 구분합니다.
|
|
1930
|
-
- (290) 대화 압축 후 재개 시 `/loop` 간격 작업·reminder가 돌아오지 않던 결함이 수정되었습니다. 원문은 이 버전부터 수행한 compaction을 적용 범위로 한정하므로 과거에 압축된 세션까지 복구된다고 확장하지 않습니다.
|
|
1931
|
-
- (290) foreground에서 설정한 작업이 ← 또는 `/background` hand-off 뒤 실행되지 않던 결함과, recurring 작업이 resume·respawn·fork마다 추가 실행되던 결함이 수정되었습니다. 프로젝트의 스케줄러 변경이나 과거 작업 복구 완료를 뜻하지 않습니다.
|
|
2127
|
+
- CHANGELOG 원문: "Fixed a memory leak where an HTTP MCP connection kept every request it had sent until it closed"
|
|
2128
|
+
(293) HTTP MCP 연결이 닫힐 때까지 보낸 모든 요청을 보관하던 메모리 누수가 수정되었습니다. 이 저장소는 `.mcp.json`을 추적합니다(`git ls-files .mcp.json`=1건). 추적된 `.mcp.json`의 서버 2개 중 `eraser`는 `type: "http"`, `ontology-rag`는 `stdio`로 설정되어 있으므로(`git cat-file -p HEAD:.mcp.json`) 설정 기준으로는 HTTP 연결 서버가 있습니다. 다만 Claude Code 2.1.296 리뷰어 세션과 이 정정 세션에서 `eraser`는 인증 전 도구(`authenticate` 계열)만 보였으므로, 장시간 세션에서 실제로 HTTP MCP 요청이 쌓이는지는 [가설 — 인증 후 `eraser` 사용 세션에서 판정]입니다. R013의 메모리 노트(`.claude/rules/SHOULD-ecomode.md:89`, `:101`)와 같은 계열이며 룰 변경은 필요하지 않습니다.
|
|
1932
2129
|
|
|
1933
|
-
(
|
|
2130
|
+
기타 46건 — 이 저장소 비해당(`←` 백그라운드 이동·Esc 처리 등 터미널 UI 동작, Claude in Chrome, `/ultrareview`, Remote Control·cloud 세션 스트리밍, `/model`·`/tui`·`/feedback`·vim 모드·keybindings 등 UI 세부, Windows 전용 수정, claude.ai skill 동기화 주기, `claude purge`·`claude logs`·`claude plugin test`·`claude plugin eval`·Claude apps gateway, mods API(`$.tool.register`), Team·Enterprise 시작 지연, OpenTelemetry·self-hosted runner·`[Claude Tag]`·`[Code Review]` 항목, Bash 편집 diff 안내 문구(다른 프로세스의 쓰기를 포함할 수 있다는 표시) 등 harness 비영향 세부사항이며 이 저장소는 해당 기능을 개발하지 않습니다). 실측: `gh release view v2.1.293 --repo anthropics/claude-code --json body --jq .body | grep -c '^- '` = 56건 중 위 본문 10건을 다뤘으므로 56 − 10 = 46건입니다. 계수 범위는 해당 릴리즈 노트의 최상위 불릿 줄(`- `로 시작하는 줄)입니다.
|
|
1934
2131
|
|
|
1935
|
-
|
|
2132
|
+
**Action items**:
|
|
2133
|
+
- 모델·상태줄, 서브에이전트·도구 안내, 컨텍스트·룰 로딩, 스케줄링, MCP 항목은 이 저장소에 해당 구성(`subagentStatusLine`, path-scoped 룰, cloud `/loop` 사용 흔적)이 없거나 기존 룰의 전제와 같은 방향의 플랫폼 수정이며 룰 문안 변경은 불필요합니다. 권한·백그라운드 중 `claude agents` bypass 동의 항목은 R010의 2.1.257 기록과 같은 계열의 플랫폼 수정입니다. 반면 auto mode 거부 메시지 롤백은 기존 룰을 보강하지 않고, 플랫폼이 전하던 "다른 경로로 우회하지 말라"는 취지를 없애는 변경입니다(아래 결정 후보). 중첩 CLAUDE.md(`templates/CLAUDE.md`)는 이 저장소에 있어 293의 로드 수정이 해당하지만, 로드 범위가 넓어지는 플랫폼 수정이므로 룰 변경 사안이 아닙니다.
|
|
2134
|
+
- 모델 카탈로그 갱신: `claude-haiku-5-5` 행은 이번 변경에서 R006 Tier-2 표(`.claude/rules/MUST-agent-design.md:50`)와 `guides/multi-model-routing/README.md:36`에 추가되었습니다. 이는 모델 목록 행 추가이며 에이전트 행동 규범을 바꾸는 변경은 아닙니다. 위 첫 항목의 "룰 문안 변경은 불필요"는 이 카탈로그 행을 제외한 규범 문안을 가리킵니다.
|
|
2135
|
+
- 결정 후보: 일반 auto mode 거부에 대해 "다른 경로로 우회하지 말라"는 범용 규범은 위 룰 문장 스윕에서 관측되지 않았습니다. 이를 룰로 둘지는 행동을 바꾸는 규범 신설이라 R016 절차의 별도 결정 사안이며, CC 지식을 기록하는 이 가이드에서는 제안하지 않고 후보로만 남깁니다.
|
|
2136
|
+
- 후속 실측 후보는 haiku 에이전트 3개의 `resolvedModel`(Haiku 5.5 여부) 확인입니다. 이 문서의 규범 변경 제안은 없습니다(CC 2.1.293 CHANGELOG 항목 기준).
|
|
2137
|
+
|
|
2138
|
+
---
|
|
2139
|
+
|
|
2140
|
+
## v2.1.294 (2026-10-08)
|
|
2141
|
+
|
|
2142
|
+
> Issue: #1848 — Claude Code v2.1.294 compatibility documentation
|
|
2143
|
+
> Scope-ceiling check (R017): 조사 시점(2026-10-13)의 최신 릴리즈는 2.1.296입니다(`claude --version`=2.1.296, `npm view @anthropic-ai/claude-code version`=2.1.296). 2.1.295·2.1.296 CHANGELOG 절에서 `2.1.294` 문자열과 "Revert"를 검색한 결과, 이 릴리즈의 두 항목을 되돌리거나 좁히는 문장은 관측되지 않았습니다. 같은 영역의 후속 항목으로 295 절 "Fixed web searches and `agent` hook evaluations taking much longer at `xhigh` and `max` effort"와 296 절 "Fixed managed-settings `PreToolUse` hooks that deny a tool call with `"continue": false`, and managed `prompt` hooks that block one, refusing the call but not ending the turn"이 있으나 둘 다 롤백이 아닌 별개 수정입니다. 릴리즈 게시 시각은 2026-10-08T05:03:54Z입니다(`gh release view v2.1.294 -R anthropics/claude-code --json publishedAt`).
|
|
2144
|
+
|
|
2145
|
+
### prompt · agent 훅 판정
|
|
2146
|
+
|
|
2147
|
+
- CHANGELOG 원문: "Fixed `prompt` and `agent` hooks written as instructions (such as "Block commands that...") allowing what they should block"
|
|
2148
|
+
(294) 지시문 형태("Block commands that..." 등)로 작성된 `prompt`·`agent` 훅이 막아야 할 대상을 허용하던 결함이 수정되었습니다. 측정한 범위에서 이 저장소가 설정하는 `prompt` 훅은 1개이며 `agent` 타입 훅은 0개입니다(`jq -c '[.hooks[][]?.hooks[]? | .type] | group_by(.) | map({(.[0]):length}) | add' .claude/settings.json templates/.claude/settings.json` 결과 두 파일 모두 `{"command":63,"prompt":1}`). 그 1개는 PostCompact 이벤트의 컨텍스트 재주입 문안이며(`.claude/hooks/hooks.json:375`, `.claude/settings.json:407`), 무엇을 차단하는 판정 훅이 아닙니다. 스킬·에이전트 frontmatter에는 `hooks:` 블록이 없습니다(`git grep -n -E '^hooks:' -- '.claude/agents/*.md' '.claude/skills/*/SKILL.md'` 결과 0건; 경로를 지정하지 않으면 R006 본문의 frontmatter 예시 줄이 걸립니다). 따라서 이 결함이 이 저장소의 차단 동작에 영향을 주지 않았다고 봅니다. PostCompact `prompt` 훅 문안이 판정 대상 평가를 거치는지는 CHANGELOG가 말하지 않으므로 [가설 — PostCompact prompt 훅의 평가 경로 미실측]입니다.
|
|
2149
|
+
- CHANGELOG 원문: "Improved how `prompt` hooks on Stop and SubagentStop written as instructions (such as "Carry on if the build is broken") are judged, so Claude is less likely to stop early"
|
|
2150
|
+
(294) Stop·SubagentStop의 `prompt` 훅이 지시문 형태로 작성된 경우의 판정이 개선되어 Claude가 일찍 멈출 가능성이 줄었습니다. 이 저장소의 Stop 훅 6개와 SubagentStop 훅 5개는 전부 `command` 타입이며 `prompt` 타입은 없습니다(`jq -c '{stop:[.hooks.Stop[]?.hooks[]?.type], sub:[.hooks.SubagentStop[]?.hooks[]?.type]}' .claude/settings.json`). SubagentStop의 `prompt` 판정 훅은 #1631에서 advisory 전용 command 훅으로 교체되었다고 `.claude/hooks/hooks.json:283`의 description이 기록합니다. 다만 `.claude/skills/omcustom-loop/SKILL.md:3`와 `:13`은 여전히 "SubagentStop prompt hook"으로 자동 이어가기를 설명하고 있어 현재 배선과 문서가 어긋납니다. 이 어긋남은 이번 릴리즈와 무관한 선재 항목이며 이 문서에서는 사실만 기록합니다. 따라서 이 개선은 현재 배선에는 적용 대상이 없고, 훗날 Stop·SubagentStop에 `prompt` 훅을 다시 배선하면 그때 적용됩니다.
|
|
2151
|
+
|
|
2152
|
+
기타 0건 — 이 저장소 비해당 항목은 없습니다. 실측: `gh release view v2.1.294 --repo anthropics/claude-code --json body --jq .body | grep -c '^- '` = 2건 중 위 본문 2건을 다뤘으므로 2 − 2 = 0건입니다. 계수 범위는 해당 릴리즈 노트의 최상위 불릿 줄(`- `로 시작하는 줄)입니다.
|
|
2153
|
+
|
|
2154
|
+
**Action items**:
|
|
2155
|
+
- 훅 설정 변경은 불필요합니다. `agent` 타입 훅은 0개이고, 유일한 `prompt` 훅은 PostCompact 재주입용이며 Stop·SubagentStop은 전부 `command` 훅입니다.
|
|
2156
|
+
- 룰 변경 제안은 없습니다. `omcustom-loop` 스킬 문서와 hooks.json 배선의 어긋남은 이 릴리즈의 조치 사항이 아니라 별도 정리 후보로만 보고합니다.
|
|
2157
|
+
|
|
2158
|
+
---
|
|
2159
|
+
|
|
2160
|
+
## v2.1.295 (2026-10-08)
|
|
2161
|
+
|
|
2162
|
+
> Issue: #1850 — Claude Code v2.1.295 compatibility documentation
|
|
2163
|
+
> Scope-ceiling check (R017): 조사 시점(2026-10-13)의 최신 릴리즈는 2.1.296입니다(`claude --version`=2.1.296, `npm view @anthropic-ai/claude-code version`=2.1.296). 상한 이후 릴리즈는 없으며, 2.1.296 CHANGELOG 절에서 "2.1.295"와 "Revert"를 검색했습니다. 이 릴리즈 항목을 되돌리거나 좁히는 "Revert" 문장은 없었고, "2.1.295"는 한 곳에서만 나타났습니다. 그 문장은 "Fixed a saved Claude apps gateway sign-in being ignored on machines whose managed settings set `forceLoginMethod` to `gateway` with no `forceLoginGatewayUrl` (regression in 2.1.295)"이며, 이 릴리즈의 `forceLoginMethod: "gateway"` 지원(Claude apps gateway) 항목의 회귀 수정으로 이 저장소와 무관합니다. 릴리즈 게시 시각은 2026-10-08T19:48:38Z입니다(`gh release view v2.1.295 -R anthropics/claude-code --json publishedAt`).
|
|
2164
|
+
|
|
2165
|
+
### hooks · 훅 실패 처리
|
|
2166
|
+
|
|
2167
|
+
- CHANGELOG 원문: "Added `onFailure: "block"` for command and HTTP hooks: a hook that can't start, times out, or exits with an unexpected code blocks the action instead of letting it through"
|
|
2168
|
+
(295) `onFailure: "block"` 옵션이 command·HTTP 훅에 추가되어, 훅이 시작하지 못하거나 타임아웃되거나 예상 밖 종료 코드를 내면 동작을 통과시키는 대신 차단할 수 있습니다. 관측한 범위에서 `.claude/settings.json`·`templates/.claude/settings.json`·`.claude/hooks/hooks.json`에는 `onFailure`·`timeout`·`async` 키가 0건이므로(`git grep -c -E '"(onFailure|timeout|async)"' -- .claude/settings.json templates/.claude/settings.json .claude/hooks/hooks.json` 출력 없음, rc=1) 이 세 파일의 훅은 모두 기본 동작을 씁니다. R021은 대부분의 규칙을 advisory-first로 규정하고 그 이유로 "Missing dependencies (jq, etc.) don't break the session"을 듭니다(`.claude/rules/MUST-enforcement-policy.md:79`). `onFailure: "block"`은 옵트인이므로 기본값이 바뀌지 않으며, 기존 advisory 훅에 일괄 적용하면 R021 정책에 반하므로 적용하지 않습니다. 이 옵션을 R021 Hard Block 계층 훅(`.claude/rules/MUST-enforcement-policy.md:19`의 stage-blocker, dev-server tmux, rule-deletion-guard)에 쓸지는 별도 결정 사안이며 이번 반영 범위에 넣지 않습니다.
|
|
2169
|
+
- CHANGELOG 원문: "Fixed an async SessionStart hook's unchanged context being added to the conversation again on every resume"
|
|
2170
|
+
(295) 비동기 SessionStart 훅의 변하지 않은 컨텍스트가 resume마다 대화에 다시 추가되던 결함이 수정되었습니다. 관측한 범위에서 `.claude/hooks/hooks.json:128`의 `SessionStart` 훅 블록에는 `async` 키가 없으므로(위 `git grep` 0건) 이 결함 조건에 해당하지 않습니다.
|
|
2171
|
+
- CHANGELOG 원문: "Fixed variables a SessionStart hook writes to `CLAUDE_ENV_FILE` not reaching the Bash tool after an in-app `/resume` or `/branch`"
|
|
2172
|
+
(295) SessionStart 훅이 `CLAUDE_ENV_FILE`에 쓴 변수가 인앱 `/resume`·`/branch` 이후 Bash 도구에 전달되지 않던 결함이 수정되었습니다. 관측한 범위에서 `.claude/hooks/`와 `.claude/settings.json`에는 `CLAUDE_ENV_FILE` 참조가 없으므로(`git grep -n CLAUDE_ENV_FILE -- .claude/hooks .claude/settings.json` rc=1) 영향 조건이 관측되지 않았습니다.
|
|
2173
|
+
- CHANGELOG 원문: "Fixed an async hook's JSON output being ignored when it is printed over several lines"
|
|
2174
|
+
(295) 여러 줄로 출력된 비동기 훅의 JSON 출력이 무시되던 결함이 수정되었습니다. `async` 훅이 0건이므로(위 `git grep -c` 출력 없음) 영향 조건이 관측되지 않았습니다.
|
|
2175
|
+
- CHANGELOG 원문: "Fixed web searches and `agent` hook evaluations taking much longer at `xhigh` and `max` effort"
|
|
2176
|
+
(295) `xhigh`·`max` effort에서 웹 검색과 `agent` 훅 평가가 훨씬 오래 걸리던 문제가 수정되었습니다. 관측한 범위에서 CC가 로드하는 `.claude/settings.json`의 훅 타입은 `command` 63개와 `prompt` 1개(PostCompact, `.claude/hooks/hooks.json:375`가 소스)이며 `agent` 타입은 없으므로(v2.1.294 절의 jq 타입 집계) `agent` 훅 쪽 영향 조건은 관측되지 않았습니다. `.claude/agents/*.md`에서 `effort: xhigh` 또는 `max` 줄은 `git grep -n -E 'effort: *(xhigh|max)' -- '.claude/agents/*.md'` 0건이므로(경로를 지정하지 않으면 `docs/` 계획 문서와 이 가이드·미러가 걸립니다) 에이전트 frontmatter 경로의 영향은 없고, 세션 수준 effort 설정에 따른 웹 검색 영향은 측정하지 않았습니다.
|
|
2177
|
+
|
|
2178
|
+
### 서브에이전트 · 팀원 · 백그라운드 작업
|
|
2179
|
+
|
|
2180
|
+
- CHANGELOG 원문: "Fixed `CLAUDE_AUTO_BACKGROUND_TASKS` moving a subagent to the background while an edit or shell command waited behind it, which started that call before the subagent finished"
|
|
2181
|
+
(295) `CLAUDE_AUTO_BACKGROUND_TASKS`가 서브에이전트를 백그라운드로 옮길 때, 그 뒤에서 편집이나 셸 명령이 대기하고 있으면 서브에이전트가 끝나기 전에 그 호출이 시작되던 결함이 수정되었습니다. 관측한 범위(`git grep -n CLAUDE_AUTO_BACKGROUND_TASKS -- . ':!guides/claude-code/15-version-compatibility.md' ':!templates/guides/claude-code/15-version-compatibility.md'`)에서 `CLAUDE_AUTO_BACKGROUND_TASKS` 참조는 규칙 노트의 서술(`.claude/rules/MUST-completion-verification.md:559`와 그 `templates/` 미러·`wiki/rules/r020.md` 사본)이며 설정으로 쓰는 곳은 없으므로, 이 환경 변수를 설정한 환경에서만 관련됩니다. R009의 병렬 실행 정책은 바뀌지 않습니다.
|
|
2182
|
+
- CHANGELOG 원문: "Fixed subagents in their own linked worktree being shown the parent session's git branch, status and recent commits"
|
|
2183
|
+
(295) 자신의 linked worktree에서 실행되는 서브에이전트에게 부모 세션의 git 브랜치·상태·최근 커밋이 보이던 결함이 수정되었습니다. 이 저장소는 공유 워크트리의 브랜치 이름이 턴 단위로 바뀔 수 있다고 보고 위임 직전 `git rev-parse --abbrev-ref HEAD` 실측을 요구합니다(R010, `.claude/rules/MUST-orchestrator-coordination.md`의 「사전 실측 리터럴」). 이 수정은 worktree 격리 서브에이전트가 받는 git 컨텍스트만 바로잡으며 이 실측 의무를 바꾸지 않습니다. 관측한 범위(`git grep -n '^isolation:' -- '.claude/agents/*.md'`)에서 에이전트 frontmatter의 `isolation` 값은 `sec-codeql-expert.md:8`의 `sandbox` 한 건이어서 frontmatter로 worktree 격리하는 에이전트는 없습니다. 호출 단위 `isolation: "worktree"` 위임과 `EnterWorktree` 경로는 v2.1.290 절과 같이 [가설]입니다.
|
|
2184
|
+
- CHANGELOG 원문: "Fixed in-process agent teammates failing their first SendMessage call until they loaded the tool through tool search"
|
|
2185
|
+
(295) in-process 에이전트 팀원이 도구 검색으로 `SendMessage`를 로드하기 전에는 첫 `SendMessage` 호출이 실패하던 결함이 수정되었습니다. R018은 `TeamCreate`가 없으면 휴면이며(`.claude/rules/MUST-agent-teams.md:22`의 Detection 행, `:36`의 dormant 문장) 멤버의 `SendMessage`는 부재를 전제하지 말고 `ToolSearch`로 먼저 로드를 시도하라고 규정합니다(같은 파일 `:492`, 「멤버 도구 부재 시 대체 규약」). 이 수정은 그 로드 단계를 생략할 수 있게 하는 방향입니다. 다만 R018은 멤버의 도구 구성이 에이전트 frontmatter와 실행 환경에 좌우된다고 추정하며(`:492`는 이를 추정으로 적고 #1817 "추정 원인 (미검증)"을 인용하며, 실측된 것은 전용 `Glob`/`Grep` 1건), 이 수정이 그 추정을 바꾸지 않으므로 기존 대체 규약은 그대로 둡니다.
|
|
2186
|
+
- CHANGELOG 원문: "Fixed Claude not being told it can resume background subagents with SendMessage after a session was killed and resumed a second time"
|
|
2187
|
+
(295) 세션이 종료된 뒤 두 번째로 resume되었을 때 Claude가 백그라운드 서브에이전트를 `SendMessage`로 재개할 수 있다는 사실을 전달받지 못하던 결함이 수정되었습니다. R018 `SendMessage` resume 관련 노트(`.claude/rules/MUST-agent-teams.md:549`)가 다루는 같은 계열의 신뢰성 수정입니다. 미완 위임을 실측값과 함께 `SendMessage`로 resume하는 R020 「Verification-Delegation Non-Termination」 절차(`.claude/rules/MUST-completion-verification.md:120`)와 보고 본문이 없을 때 `SendMessage`로 재요청하는 R009 결과 수집 절차(`.claude/rules/MUST-parallel-execution.md:368`)는 바뀌지 않습니다.
|
|
2188
|
+
- CHANGELOG 원문: "Fixed a background session's `/loop` stopping without notice when its next wakeup came due while the session's process was down; the session now says so and Claude is told"
|
|
2189
|
+
(295) 세션의 프로세스가 내려가 있는 동안 백그라운드 세션의 `/loop` 다음 wakeup 시각이 지나면 알림 없이 멈추던 결함이 수정되어, 이제 세션이 그 사실을 알리고 Claude도 전달받습니다. `/fsd`는 self-paced `/loop`를 선택적 구동 수단으로 씁니다(`.claude/skills/fsd/SKILL.md:39`, `:172`). 프로세스가 내려갔다 복구되는 구간의 무음 중단을 이제 세션이 알려주므로, 무인 루프 중단을 관측하면 이 알림 유무를 먼저 확인하는 것이 좋습니다. 이 저장소가 백그라운드 세션에서 `/loop`를 실제로 돌리는지는 관측하지 않았습니다 [가설 — 사용자의 `/fsd` 실행이 백그라운드 세션이면 해당].
|
|
2190
|
+
- CHANGELOG 원문: "Fixed a stopped scheduled task coming back on resume after a rewind, and a scheduled task being lost on resume after Esc or a rewind following a compaction"
|
|
2191
|
+
(295) 되감기(rewind) 뒤 중지된 예약 작업이 resume에서 되살아나던 결함과, 압축(compaction) 뒤 Esc나 되감기를 거친 resume에서 예약 작업이 사라지던 결함이 수정되었습니다. `/fsd`·`/loop` 같은 예약·반복 실행과 R011 세션 연속성에 영향이 있을 수 있는 계열입니다. 관측한 범위에서 `.claude/settings.json`·`.claude/skills/fsd`·`.claude/skills/omcustom-loop`에는 `CronCreate` 예약 작업 설정이 없습니다(`git grep -n CronCreate -- .claude/settings.json .claude/skills/fsd .claude/skills/omcustom-loop` 0건). `CronCreate`는 R002 도구 표(`.claude/rules/MUST-permissions.md:14`) 외에 `claude-native` 스킬의 예약 실행 안내(`.claude/skills/claude-native/SKILL.md:232`, `:240`)와 `guides/claude-code/13-cli-flags.md:56`~`:62`, 그리고 이들의 `templates/` 미러·위키 사본과 `docs/superpowers/plans/`의 계획 문서 2건에 나오며(`git grep -n CronCreate`, 이 가이드·미러 제외), `claude-native`의 이 경로를 실제로 쓰는지는 [가설 — 미관측]입니다. 또한 self-paced `/loop`도 예약 wakeup을 기다리는 세션 한정 반복 작업으로 다뤄지고(2.1.290 CHANGELOG "`/loop` and other recurring session-only scheduled tasks", "background sessions waiting on a scheduled wakeup (`/loop`)"), `/fsd`는 `/loop`를 선택적으로 호출합니다(`.claude/skills/fsd/SKILL.md:16`, `:39`, `:162`). 따라서 `/fsd`를 `/loop`로 돌리다 compaction 뒤 Esc·rewind를 거쳐 resume하는 경로에는 이 수정이 해당할 수 있습니다 [가설 — 해당 경로의 실제 발생은 미관측].
|
|
2192
|
+
|
|
2193
|
+
### 무인 · headless(`-p`) 실행
|
|
2194
|
+
|
|
2195
|
+
- CHANGELOG 원문: "Added a line on stderr, when it is a terminal, that says what a `claude -p` run is waiting for when it stays open after its last turn"
|
|
2196
|
+
(295) `claude -p` 실행이 마지막 턴 이후에도 열려 있을 때, 터미널이면 stderr에 무엇을 기다리는지 알려주는 줄이 추가되었습니다. `/fsd`는 무인 실행(`claude -p`, 예약 실행)에서 `/goal`·`/loop`를 권장합니다(`.claude/skills/fsd/SKILL.md:172`). 이 줄은 터미널일 때만 출력되므로 파이프·CI의 stdout 파싱에는 영향이 없다고 보지만 stderr 소비자는 측정하지 않았습니다 [가설 — `claude -p` 실행 스크립트가 stderr를 파싱하지 않으면 영향 없음].
|
|
2197
|
+
- CHANGELOG 원문: "Fixed `claude -p` text output dropping earlier responses when background work started another turn; each turn's response now prints when the turn ends"
|
|
2198
|
+
(295) `claude -p` 텍스트 출력이 백그라운드 작업으로 다른 턴이 시작되었을 때 앞선 응답을 빠뜨리던 결함이 수정되어, 이제 각 턴의 응답이 그 턴이 끝날 때 출력됩니다. 이 저장소는 `-p`로 `/fsd`를 돌릴 수 있고(`.claude/skills/fsd/SKILL.md:172`) 서브에이전트 완료 응답에 의존하므로, 구버전의 `-p` 출력 누락을 "에이전트가 응답하지 않음"으로 오진하지 않도록 이 경계를 기억하는 것이 좋습니다. 이 저장소의 `-p` 출력 파서는 관측하지 못했습니다.
|
|
2199
|
+
- CHANGELOG 원문: "Added `CLAUDE_CODE_RETRY_WATCHDOG_MAX_WAIT_MS` to limit how long unattended retry mode (`CLAUDE_CODE_RETRY_WATCHDOG`) waits out 429 and 529 errors"
|
|
2200
|
+
(295) 무인 재시도 모드(`CLAUDE_CODE_RETRY_WATCHDOG`)가 429·529 오류를 얼마나 오래 기다리는지 제한하는 `CLAUDE_CODE_RETRY_WATCHDOG_MAX_WAIT_MS`가 추가되었습니다. 이 가이드의 (288) 항목이 이미 `CLAUDE_CODE_RETRY_WATCHDOG`를 다루고 있습니다(`guides/claude-code/15-version-compatibility.md:1791`). 새 환경 변수는 옵트인이며, 관측한 범위(`git grep -n RETRY_WATCHDOG -- . ':!guides/claude-code/15-version-compatibility.md' ':!templates/guides/claude-code/15-version-compatibility.md'`)에서 참조는 룰 노트(`.claude/rules/MUST-agent-teams.md:549`와 그 `templates/` 미러·`wiki/rules/r018.md` 사본)뿐이라 이 저장소는 어느 쪽도 설정하지 않습니다.
|
|
2201
|
+
|
|
2202
|
+
### MCP
|
|
2203
|
+
|
|
2204
|
+
- CHANGELOG 원문: "Fixed remote MCP servers in headless and SDK sessions staying disconnected after an outage longer than 15 seconds, or reconnecting in a tight loop to a server that drops each connection right after it connects; repeated drops now back off, up to 30s"
|
|
2205
|
+
(295) headless·SDK 세션에서 원격 MCP 서버가 15초보다 긴 장애 뒤 연결이 끊긴 채 남던 결함과, 연결 직후 매번 끊는 서버에 빠르게 반복 재연결하던 결함이 수정되어, 이제 반복 끊김은 최대 30초까지 backoff합니다. 관측한 범위에서 `.mcp.json:15-16`에 원격 http 서버(`https://app.eraser.io/api/mcp`)가 있으므로 `-p`·SDK로 이를 쓰는 무인 실행에서는 관련될 수 있습니다. `.mcp.json:4`의 다른 서버는 stdio 방식이라 원격 재연결 결함에 해당하지 않습니다.
|
|
2206
|
+
- CHANGELOG 원문: "Changed MCP tool descriptions the model loads through tool search to be cut at 16,384 characters instead of 2,048"
|
|
2207
|
+
(295) 도구 검색으로 로드되는 MCP 도구 설명이 2,048자 대신 16,384자에서 잘리도록 바뀌었습니다. 이는 MCP 서버를 쓰는 세션의 컨텍스트 비용을 늘릴 수 있는 변경입니다. R013의 컨텍스트 예산 임계값은 창 대비 백분율이므로 규칙을 바꾸지 않으며, 설명이 긴 MCP 서버를 쓸 때의 영향은 측정하지 않았습니다 [가설 — `/context`에서 MCP 도구 설명 비중이 2.1.295 전후로 늘었는지 비교하면 판정 가능].
|
|
2208
|
+
|
|
2209
|
+
### 스킬 · 에이전트 frontmatter · 권한
|
|
2210
|
+
|
|
2211
|
+
- CHANGELOG 원문: "Changed subagents to preload at most 32 skills from the `skills` field, each once; a subagent with the Skill tool can still invoke the rest"
|
|
2212
|
+
(295) 서브에이전트가 `skills` 필드에서 미리 로드하는 스킬이 최대 32개로 제한되고 각각 한 번만 로드됩니다. Skill 도구가 있는 서브에이전트는 나머지를 계속 호출할 수 있습니다. 즉 CC는 `skills:`에 나열된 스킬을 서브에이전트에 사전 로드합니다(컨텍스트 비용이 생기고 상한은 32개). 원문의 "can still invoke the rest"는 32개를 넘어 사전 로드되지 않은 나열 스킬을 가리킵니다. 이 필드가 접근 허용 목록이 아니라는 전제는 원문이 아니라 R006의 서술(`.claude/rules/MUST-agent-design.md:199`)에 근거합니다. 관측한 범위(python3로 `.claude/agents/*.md` frontmatter를 파싱)에서 `skills:`를 선언한 에이전트는 37개이고 항목 수 최대값은 4개(`.claude/agents/fe-vercel-agent.md`)이므로 상한 32에 걸리지 않습니다. R006의 `skills:` 설명은 이번 변경에서 사전 로드 사실을 반영해 정정되었습니다(`.claude/rules/MUST-agent-design.md:196`~`:198`의 DETAIL 주석, `:199`의 보이는 문장).
|
|
2213
|
+
- CHANGELOG 원문: "Fixed a skill's `allowed-tools` and `effort` being dropped when the Skill tool finished before the response stream ended, which denied the skill's Bash commands in `-p` runs"
|
|
2214
|
+
(295) Skill 도구가 응답 스트림이 끝나기 전에 끝나면 스킬의 `allowed-tools`와 `effort`가 버려져 `-p` 실행에서 스킬의 Bash 명령이 거부되던 결함이 수정되었습니다. 관측한 범위에서 `.claude/skills/*/SKILL.md`에 `allowed-tools:` 또는 `effort:` 줄이 합계 21건 있으므로(`git grep -n -E '^allowed-tools:|^effort:' -- '.claude/skills/*/SKILL.md'` 21건; 경로를 지정하지 않으면 다른 파일까지 152건이 걸립니다) 해당 스킬을 `-p`로 호출하는 무인 실행에서 관련될 수 있습니다. 구버전에서 `-p` 중 스킬의 Bash가 거부된 사례를 관측하지는 못했습니다.
|
|
2215
|
+
- CHANGELOG 원문: "Fixed Bash permission checks for for-loops over glob patterns, improving permission-check accuracy"
|
|
2216
|
+
(295) for 반복문이 glob 패턴을 순회하는 Bash 명령의 권한 검사가 수정되어 검사 정확도가 개선되었습니다. 원문은 어느 방향의 오류였는지(과허용·과차단)를 밝히지 않으므로 이 저장소에 대한 영향 방향은 단정하지 않습니다 [가설 — 원문 방향 미확정이므로 영향 방향은 알 수 없음]. `.claude/settings.json:2`의 `permissions` 규칙은 이 수정으로 바뀌지 않습니다.
|
|
2217
|
+
- CHANGELOG 원문: "Fixed `--tools` and `--restricted` not applying to built-in tools that register after launch, and deprecated tool names reaching tools outside the caller's tool set"
|
|
2218
|
+
(295) `--tools`와 `--restricted`가 실행 뒤에 등록되는 내장 도구에는 적용되지 않던 결함과, 폐기된 도구 이름으로 호출자의 도구 집합 밖 도구에 닿던 결함이 수정되었습니다. 이 저장소의 도구 제한 전제는 R010 「Known Limitations (Active Cache)」(`.claude/rules/MUST-orchestrator-coordination.md:811`, 예: `arch-documenter`의 `disallowedTools: [Bash]`)와 R002 ‡(`.claude/rules/MUST-permissions.md:18`, frontmatter `tools:` 명시가 `--tools` 명시와 같은 효과라는 일반화는 1건 실측에 근거한 추정)에 기대고 있습니다. 원문 문법상 앞 절은 CLI 플래그(`--tools`·`--restricted`)에 관한 것이고, 뒤 절("deprecated tool names reaching tools outside the caller's tool set")은 플래그에 한정되지 않은 호출자의 도구 집합 일반에 관한 것으로 읽힙니다. 이 수정 이전에는 실행 뒤 등록되는 내장 도구를 통해 `--tools`·`--restricted` 제한이 빠질 수 있었습니다. 뒤 절이 frontmatter `tools:`·`disallowedTools:` 제한에도 적용됐다면, 구버전에서 그런 서브에이전트에 특정 도구가 주어지지 않는다는 전제가 늘 성립했다고 볼 수 없습니다 [가설 — 측정하지 않음]. 위임 전 도구 가용성 점검(R010 Agent Capability Pre-Check, `.claude/rules/MUST-orchestrator-coordination.md:742`)은 그대로 필요하며 룰 문안 변경은 필요하지 않습니다.
|
|
2219
|
+
- CHANGELOG 원문: "Fixed forked skills invoked from Workflow subagents delivering their results to the main conversation instead of the invoking agent"
|
|
2220
|
+
(295) Workflow 서브에이전트가 호출한 forked skill이 결과를 호출한 에이전트가 아니라 메인 대화로 전달하던 결함이 수정되었습니다. 이 저장소는 `context: fork` 스킬을 쓰며 상한이 12개입니다(R006 「Context Fork Criteria」, `.claude/rules/MUST-agent-design.md`). 원문상 이 결함은 Workflow 서브에이전트가 호출한 경우의 결함입니다. 관측한 범위(`git grep -l -E '^context: *fork' -- '.claude/skills/*/SKILL.md'`)에서 `context: fork` 스킬은 10개(`dag-orchestration`, `de-lead-routing`, `deep-plan`, `dev-lead-routing`, `professor-triage`, `qa-lead-routing`, `roundtable-debate`, `secretary-routing`, `task-decomposition`, `worker-reviewer-pipeline`)이며 R006이 이를 다중 에이전트 오케스트레이션용으로 규정하므로 영향은 제한적이라고 봅니다 [가설 — Workflow 서브에이전트가 fork 스킬을 호출하는 경로가 없으면 해당 없음].
|
|
2221
|
+
|
|
2222
|
+
### 환경 · 기타 동작
|
|
2223
|
+
|
|
2224
|
+
- CHANGELOG 원문: "Fixed commands and hooks in background sessions inheriting `FORCE_COLOR=3`, which put color escape codes into the output Claude reads"
|
|
2225
|
+
(295) 백그라운드 세션의 명령과 훅이 `FORCE_COLOR=3`을 상속해 Claude가 읽는 출력에 색상 이스케이프 코드가 섞이던 결함이 수정되었습니다. 이 저장소의 `.husky/pre-commit:67-68`이 이미 `env -u FORCE_COLOR NO_COLOR=1`로 coverage 출력의 ANSI 오염을 막고 있어(#1437) 이 방어는 그대로 유효하며 제거하지 않습니다. 이 수정은 백그라운드 세션 출력의 색상 코드 오염 원인 하나를 줄이는 방향입니다.
|
|
1936
2226
|
|
|
1937
|
-
|
|
1938
|
-
> Sources: [official release](https://github.com/anthropics/claude-code/releases/tag/v2.1.291) · [version CHANGELOG section](https://github.com/anthropics/claude-code/blob/main/CHANGELOG.md#21291)
|
|
2227
|
+
기타 121건 — 이 저장소 비해당(Claude apps gateway 설정·감사·정책, mods·plugin 패널·marketplace·`claude plugin` CLI, 터미널 렌더링·vim 모드·키바인딩·붙여넣기, VSCode·Cloud sessions·Claude Tag·Code Review·self-hosted runner·Desktop 전용 항목, OSC 7501·`/copy` 같은 UI 세부사항, `cat` 같은 Bash 명령 뒤의 파일 읽음 상태 판정·mtime이 바뀌지 않은 변경에 대한 Edit의 전체 읽음 판정 같은 도구 상태 세부, `←`로 백그라운드에 옮긴 self-paced `/loop`의 Esc 중지 등). 실측: `gh release view v2.1.295 --repo anthropics/claude-code --json body --jq .body | grep -c '^- '` = 143건 중 위 본문 22건을 다뤘으므로 143 − 22 = 121건입니다. 계수 범위는 해당 릴리즈 노트의 최상위 불릿 줄(`- `로 시작하는 줄)입니다.
|
|
1939
2228
|
|
|
1940
|
-
|
|
1941
|
-
|
|
2229
|
+
**Action items**:
|
|
2230
|
+
|
|
2231
|
+
- 이 릴리즈에는 결함 수정·옵트인 기능 외에 기본 동작 변경도 있습니다(도구 검색으로 로드되는 MCP 도구 설명의 16,384자 절단, 서브에이전트 `skills` 사전 로드 상한 32개, 터미널일 때 `claude -p`가 stderr에 쓰는 대기 안내 줄). 이 중 `skills` 사전 로드 항목은 R006 `skills:` 설명의 정정(`.claude/rules/MUST-agent-design.md:196`~`:199`)으로 이어졌고, 그 밖에는 관측한 범위에서 룰·CLAUDE.md·에이전트·훅 변경이 필요한 항목을 찾지 못했습니다(R016: CC 지식은 이 가이드에 두고 룰 파일에는 행동 변화가 필요할 때만 1줄).
|
|
2232
|
+
- `onFailure: "block"`을 R021 Hard Block 계층 훅에 적용할지는 별도 결정 사안으로 이월합니다. 위 `git grep -c` 결과상 세 설정 파일(`.claude/settings.json`, `templates/.claude/settings.json`, `.claude/hooks/hooks.json`)의 훅은 `onFailure`·`timeout`·`async`를 쓰지 않습니다.
|
|
2233
|
+
- (295) 항목 중 `[가설 — …]` 표기는 판정 기준을 충족하는 측정이 이루어지기 전에는 결론으로 쓰지 않습니다.
|
|
2234
|
+
|
|
2235
|
+
---
|
|
2236
|
+
|
|
2237
|
+
## v2.1.296 (2026-10-09)
|
|
2238
|
+
|
|
2239
|
+
> Issue: #1851 — Claude Code v2.1.296 compatibility documentation
|
|
2240
|
+
> Scope-ceiling check (R017): 조사 시점(2026-10-13)의 최신 릴리즈는 2.1.296입니다(`claude --version`=2.1.296, `npm view @anthropic-ai/claude-code version`=2.1.296). 이 릴리즈가 스코프 상한이므로 이후 릴리즈의 롤백 확인 대상이 없습니다. 릴리즈 게시 시각은 2026-10-09T19:28:59Z입니다(`gh release view v2.1.296 -R anthropics/claude-code --json publishedAt`).
|
|
2241
|
+
|
|
2242
|
+
### 훅
|
|
2243
|
+
|
|
2244
|
+
- CHANGELOG 원문: "Fixed managed-settings `PreToolUse` hooks that deny a tool call with `"continue": false`, and managed `prompt` hooks that block one, refusing the call but not ending the turn"
|
|
2245
|
+
(296) managed settings의 `PreToolUse` 훅이 `"continue": false`로 도구 호출을 거부하는 경우와 managed `prompt` 훅이 호출을 차단하는 경우에, 호출은 거부되지만 턴이 끝나지 않던 결함이 수정되었습니다. 관측한 범위에서 description이 차단 목적을 밝힌 이 저장소의 PreToolUse 훅은 프로젝트 settings에 배선되어 있으며, 종료 코드는 훅마다 다릅니다. 스크립트 훅 `.claude/hooks/scripts/stage-blocker.sh:13`과 `.claude/hooks/scripts/rule-deletion-guard.sh:32`는 `exit 2`를 씁니다. description이 차단 목적을 적은 인라인 훅 두 개, 곧 `.claude/settings.json:52`(description `:56` "Block dev servers outside tmux - ensures you can access logs")와 `:82`(description `:86` "Block creation of random .md files - keeps docs consolidated")의 명령에는 `exit 1`이 있습니다(`command grep -n 'exit 1' .claude/settings.json`). `"continue": false`나 `permissionDecision`을 출력하는 곳은 없습니다(`git grep -n -E '"continue": *false|continue: *false|permissionDecision' -- .claude/hooks .claude/settings.json` rc=1). R021의 Conversation Block 계층 훅(`context-budget-advisor.sh`, `stuck-detector.sh`, `cost-cap-advisor.sh`)은 `.claude/settings.json:494`~`:495`, `:516`~`:517`, `:527`~`:528`에서 `continueOnBlock: true`로 배선됩니다. managed settings는 저장소 파일이 아니므로 관측 대상이 아니며, 이 저장소가 배포하는 훅은 관측한 범위에서 프로젝트 settings 훅(`.claude/settings.json`과 `templates/` 미러)이고 플러그인 매니페스트는 없으므로(v2.1.290 절의 `git ls-files`·`find` 0건) 이 수정의 대상이 아니라고 봅니다 [가설 — 사용자 환경의 managed settings 훅 유무는 미관측].
|
|
2246
|
+
- CHANGELOG 원문: "Fixed PostToolUse hooks in managed settings not applying `updatedMCPToolOutput` in some sessions"
|
|
2247
|
+
(296) managed settings의 PostToolUse 훅이 일부 세션에서 `updatedMCPToolOutput`을 적용하지 못하던 결함이 수정되었습니다. 이 저장소의 `playwright-compress` 훅이 `updatedMCPToolOutput`을 씁니다(`.claude/hooks/scripts/playwright-compress.sh:81`, 배선 `.claude/settings.json:579`). 다만 그 훅은 managed가 아니라 프로젝트 settings에 있으므로 이 수정의 대상이 아닙니다. 프로젝트 settings 경로에서 같은 증상이 있었는지는 관측하지 못했습니다 [가설 — 증상이 managed 한정이라는 CHANGELOG 문구를 따르면 영향 없음]. 또한 이 훅은 입력 JSON 전체를 되돌려 주면서 `updatedMCPToolOutput`을 최상위 키로 넣으며(`.claude/hooks/scripts/playwright-compress.sh:81`의 jq 식), 다른 훅이 쓰는 `hookSpecificOutput` 객체 형태(예: `.claude/hooks/scripts/claude-md-reinject.sh:74`)와 다릅니다. CC가 최상위 위치의 이 키를 적용하는지는 실측하지 않았습니다 [가설 — 훅 적용 전후 MCP 도구 결과를 비교하면 판정].
|
|
2248
|
+
- CHANGELOG 원문: "Fixed hook output being altered when it contained text resembling a plugin hint tag"
|
|
2249
|
+
(296) 훅 출력에 플러그인 힌트 태그와 비슷한 텍스트가 있으면 출력이 변형되던 결함이 수정되었습니다. 이 저장소의 advisory 훅은 stdout·stderr로 규칙 경고를 전달하므로(R021 Advisory 계층) 이론상 해당될 수 있으나, 관측한 범위에서 저장소에 `plugin hint` 문자열은 0건입니다(`git grep -n 'plugin hint' -- . ':!guides/claude-code/15-version-compatibility.md' ':!templates/guides/claude-code/15-version-compatibility.md'` rc=1). 훅 출력이 실행 시점에 이런 텍스트를 포함하는지는 관측하지 않았으므로, 영향은 없을 것으로 보되 [가설 — 실제 훅 출력 내용으로 판정]입니다.
|
|
2250
|
+
- CHANGELOG 원문: "Fixed Esc or an interrupt during a `UserPromptSubmit` hook or a mod's `prompt.submit` hook ending headless sessions, clearing the typed prompt, or letting the unchecked prompt through"
|
|
2251
|
+
(296) `UserPromptSubmit` 훅이나 mod의 `prompt.submit` 훅이 실행되는 동안의 Esc·인터럽트가 headless 세션을 끝내거나 입력한 프롬프트를 지우거나 검사되지 않은 프롬프트를 통과시키던 결함이 수정되었습니다. 이 저장소는 `UserPromptSubmit` 훅 4개(`user-prompt-preprocessor.sh`, `r007-r008-drift-advisor.sh`, `session-autofix-prompt.sh`, `fail-axis-cause-advisor.sh`)를 배선합니다(`.claude/settings.json:233`). 특히 R007/R008 drift advisor와 원인 되묻기 advisor가 이 이벤트에 걸려 있으므로, 구버전의 인터럽트 시 "검사되지 않은 프롬프트 통과"는 advisory 전달 누락의 가능한 경로였습니다 [가설 — 해당 인터럽트 시나리오의 실제 발생은 미관측]. 룰 변경은 필요하지 않습니다.
|
|
2252
|
+
- CHANGELOG 원문: "Fixed SessionStart hooks of a plugin loaded after a headless session starts being skipped when a different plugin with the same name, or another spelling of it, had already run"
|
|
2253
|
+
(296) headless 세션 시작 후 로드된 플러그인의 SessionStart 훅이, 같은 이름(또는 다른 표기)의 다른 플러그인이 이미 실행됐다는 이유로 건너뛰어지던 결함이 수정되었습니다. 원문의 대상은 플러그인의 SessionStart 훅이며, 이 저장소의 SessionStart 재주입(R021, `.claude/settings.json:161`)은 프로젝트 settings 훅이라 원문 대상에 들지 않습니다. 이 저장소가 사용하는 플러그인(superpowers 등)의 훅이 영향을 받았는지는 관측하지 못했습니다 [가설 — 플러그인 SessionStart 훅 발화 로그로 판정].
|
|
2254
|
+
- CHANGELOG 원문: "Fixed a late-loading plugin's SessionStart hook output reaching the new conversation after `/clear` in headless sessions"
|
|
2255
|
+
(296) headless 세션에서 늦게 로드된 플러그인의 SessionStart 훅 출력이 `/clear` 이후의 새 대화에 전달되던 결함이 수정되었습니다. 위 항목과 같은 플러그인 훅 경로의 수정이며, 원문상 프로젝트 SessionStart 훅은 대상이 아닙니다.
|
|
2256
|
+
- CHANGELOG 원문: "Improved `--debug` output for hooks: command hooks on tool calls, prompts, SessionStart and Stop now log their command, plugin, outcome and duration when they finish, so a slow hook is identifiable"
|
|
2257
|
+
(296) `--debug` 출력이 개선되어 도구 호출·프롬프트·SessionStart·Stop의 command 훅이 종료 시 명령, 플러그인, 결과, 소요 시간을 기록하므로 느린 훅을 식별할 수 있습니다. 이 저장소는 훅 핸들러 64개를 프로젝트 settings에 배선하므로(`jq '[.hooks[][]?.hooks[]?] | length' .claude/settings.json`=64) 훅 지연이나 발화 여부를 진단할 때 쓸 수 있는 새 수단입니다. 훅 진단을 R021의 "배선 확인 ≠ 전달 확인 ≠ 발화 확인 ≠ 로드 확인" 원칙(`.claude/rules/MUST-enforcement-policy.md:38`)으로 실측할 때 `--debug` 로그를 증거로 추가할 수 있으나 룰 변경은 필요하지 않습니다.
|
|
2258
|
+
|
|
2259
|
+
### 에이전트 · 서브에이전트
|
|
2260
|
+
|
|
2261
|
+
- CHANGELOG 원문: "Added `autoCompactWindow` to subagent frontmatter and `--agents` definitions, so a subagent can auto-compact earlier than the main conversation's window"
|
|
2262
|
+
(296) 서브에이전트 frontmatter와 `--agents` 정의에 `autoCompactWindow`가 추가되어, 서브에이전트가 메인 대화의 창보다 일찍 auto-compact할 수 있습니다. 관측한 범위에서 `autoCompactWindow`는 이 가이드 밖에서 0건이며(`git grep -n autoCompactWindow -- . ':!guides/claude-code/15-version-compatibility.md' ':!templates/guides/claude-code/15-version-compatibility.md'` rc=1) R006 「Optional Frontmatter」 목록(`.claude/rules/MUST-agent-design.md:179`)에도 없습니다. 같은 명령 결과상 에이전트 파일 중 이 필드를 쓰는 것이 없으므로 영향 조건이 관측되지 않았고, 긴 작업을 하는 에이전트의 컨텍스트 사용량을 낮추는 선택 수단으로 남습니다(턴 수 한도인 `maxTurns`와는 별개입니다) [가설 — 에이전트에 적용했을 때의 효과는 미실측].
|
|
2263
|
+
- CHANGELOG 원문: "Improved `--debug` output to name unrecognized frontmatter fields in custom agent files, with a hint for likely typos"
|
|
2264
|
+
(296) `--debug` 출력이 커스텀 에이전트 파일의 인식되지 않는 frontmatter 필드를 이름으로 알려 주고, 오타로 보이는 경우 힌트를 제공합니다. 이 저장소의 에이전트 frontmatter는 R006이 선택 필드로 나열한 `limitations`(13개 파일), `domain`(49개 파일), `soul`(1개 파일)을 씁니다(`.claude/agents/arch-documenter.md:5`, `:8`, `.claude/agents/lang-golang-expert.md`; R006 목록 `MUST-agent-design.md:179`). 또한 `.claude/agents/fe-design-expert.md:19`의 `source:`(외부 출처 메타데이터 블록)는 R006 선택 필드 목록에도 없는 필드입니다(`git grep -n -E '^source:' -- '.claude/agents/*.md'` 1건). 이 필드들이 CC의 인식 필드인지는 관측하지 못했으므로 `--debug`가 이들을 "unrecognized"로 보고할 수 있습니다 [가설 — `claude --debug`로 에이전트 로드 시 출력 실측으로 판정].
|
|
2265
|
+
- CHANGELOG 원문: "Fixed resumed subagents being told that the user rejected a tool call that a session shutdown had interrupted"
|
|
2266
|
+
(296) 세션 종료로 중단된 도구 호출에 대해, 재개된 서브에이전트가 사용자가 그 호출을 거부했다고 안내받던 결함이 수정되었습니다. 이 저장소는 절단되거나 정체된 서브에이전트를 재개할 때 실측값을 동봉하라고 규정합니다(`.claude/rules/MUST-completion-verification.md:127`). 구버전에서 재개된 에이전트가 "사용자 거부"로 오인해 작업을 중단했을 가능성이 있으나 [가설 — 해당 세션 미조사] 룰 변경은 필요하지 않습니다.
|
|
2267
|
+
- CHANGELOG 원문: "Added `CLAUDE_CODE_WORKFLOW_SUBAGENT_MODEL` to run every workflow agent on one model while other subagents keep theirs"
|
|
2268
|
+
(296) `CLAUDE_CODE_WORKFLOW_SUBAGENT_MODEL`이 추가되어 모든 workflow 에이전트를 하나의 모델로 실행하고 다른 서브에이전트는 자기 모델을 유지합니다. 이 저장소는 Workflow 스크립트 규약을 두지만(R023 `.claude/rules/SHOULD-verification-ladder.md:302`) 이 env는 `.claude/settings.json`, `templates/.claude/settings.json`, `.claude/settings.local.json`에서 0건으로 설정돼 있지 않습니다(`command grep -c CLAUDE_CODE_WORKFLOW_SUBAGENT_MODEL` 세 파일 모두 0). 설정하지 않으면 동작이 바뀌지 않으며, 설정 시 R006의 Tier-2 핀과 어긋날 수 있어 [가설 — 설정했을 때 에이전트 frontmatter 핀과의 우선순위는 미실측] 사용 전 측정이 필요합니다.
|
|
2269
|
+
|
|
2270
|
+
### 권한 · 파일 편집
|
|
2271
|
+
|
|
2272
|
+
- CHANGELOG 원문: "Fixed Bash permission checks auto-approving some commands that assign the `BASH_ARGV0` shell variable and then use it; these now prompt for approval"
|
|
2273
|
+
(296) `BASH_ARGV0` 셸 변수를 할당한 뒤 사용하는 일부 명령을 Bash 권한 검사가 자동 승인하던 결함이 수정되어, 이제 승인을 요청합니다. 관측한 범위에서 이 가이드와 미러를 제외한 저장소에 `BASH_ARGV0`은 0건이며(`git grep -n BASH_ARGV0 -- . ':!guides/claude-code/15-version-compatibility.md' ':!templates/guides/claude-code/15-version-compatibility.md'`) 프로젝트 allow 규칙(`.claude/settings.json`의 `permissions.allow`)은 `Bash(git:*)` 같은 접두 규칙입니다. 위 명령 결과상 이 변수를 쓰는 추적 스크립트가 없으므로 영향 조건이 관측되지 않았습니다.
|
|
2274
|
+
- CHANGELOG 원문: "Fixed Edit and NotebookEdit replacing every non-ASCII character in files that are not valid UTF-8 (Windows-1252, Shift-JIS, GBK); such edits are now refused"
|
|
2275
|
+
(296) UTF-8이 아닌 파일(Windows-1252, Shift-JIS, GBK)에서 Edit·NotebookEdit가 모든 non-ASCII 문자를 바꿔 버리던 결함이 수정되어, 이제 그런 편집은 거부됩니다. 이 저장소의 추적된 `*.md`·`*.ts`·`*.sh`·`*.json`·`*.yaml`·`*.yml` 1431개 파일을 UTF-8로 디코드해 측정한 결과(`git ls-files -z -- '*.md' '*.ts' '*.sh' '*.json' '*.yaml' '*.yml'` 목록을 python3로 `decode('utf-8')`) UTF-8이 아닌 파일은 0개였으므로, 이 수정으로 편집이 거부될 대상 파일은 관측되지 않았습니다.
|
|
2276
|
+
|
|
2277
|
+
### 컨텍스트 · 비용 · 모델
|
|
2278
|
+
|
|
2279
|
+
- CHANGELOG 원문: "Updated `/cost`, the status line, `--max-budget-usd` and the SDK's cost figures to price Sonnet 5.5 cache reads at $0.10 per million tokens (was $0.20)"
|
|
2280
|
+
(296) `/cost`, 상태줄, `--max-budget-usd`, SDK의 비용 수치가 Sonnet 5.5 cache read를 100만 토큰당 $0.10(이전 $0.20)으로 계산하도록 갱신되었습니다. R006 Tier-2 표의 `claude-sonnet-5-5` 행(`.claude/rules/MUST-agent-design.md:52`)과 `guides/multi-model-routing/README.md:38`의 같은 모델 행은 이전 값 `$0.20`을 적고 있었으나, 이번 변경에서 CC 비용 수치의 $0.10(v2.1.296, 이전 $0.20)으로 함께 정정되었습니다. `claude-opus-5-5`의 `$0.20/Mtok cache reads`(`MUST-agent-design.md:56`)는 이 항목 대상이 아니며 변경 여부는 관측하지 못했습니다. `guides/claude-code/15-version-compatibility.md`의 2.1.28x 절 원문 인용은 당시 릴리즈 노트의 역사 기록이므로 정정 대상이 아닙니다. 이 저장소의 상태줄은 CC가 상태줄 입력으로 주는 `.cost.total_cost_usd`를 읽고(`.claude/statusline.sh:102`) 그 값을 `/tmp/.claude-cost-${PPID}` 브리지 파일에 씁니다(`:122`~`:124`). 비용 훅 `cost-cap-advisor.sh`는 이 브리지 파일을 읽으며(`.claude/hooks/scripts/cost-cap-advisor.sh:10`, `:43`), 두 스크립트에 단가 하드코딩은 없습니다(`git grep -n -E '0\.20|0\.10' -- .claude/statusline.sh .claude/hooks/scripts` 출력 없음). 따라서 이 갱신은 두 스크립트에 별도 수정 없이 반영됩니다.
|
|
2281
|
+
- CHANGELOG 원문: "Fixed token counts for Haiku 5.5 and other models that take only adaptive thinking, which failed behind some gateways and were counted with budget thinking elsewhere"
|
|
2282
|
+
(296) Haiku 5.5처럼 adaptive thinking만 받는 모델의 토큰 수 계산이, 일부 gateway 뒤에서는 실패하고 다른 곳에서는 budget thinking으로 계산되던 결함이 수정되었습니다. 원문의 "elsewhere"는 실패하던 일부 gateway 밖, 즉 Anthropic API 직접 사용을 포함한 그 밖의 경로를 뜻하므로, budget thinking으로 계산되던 뒤쪽 결함은 gateway를 쓰지 않는 환경에도 해당합니다. 이 저장소의 haiku 에이전트 3개(`.claude/agents/mgr-supplier.md:4`, `.claude/agents/sys-naggy.md:4`, `.claude/agents/tracker-checkpoint.md:4`)는 Tier-1 별칭 `model: haiku`를 쓰므로, 이들이 Haiku 5.5로 해석되면 구버전의 토큰 수 계산이 부정확했을 수 있습니다 [가설 — 스폰 결과의 `resolvedModel`이 `claude-haiku-5-5`이면 해당, 2.1.293 절과 같은 판정 기준].
|
|
2283
|
+
- CHANGELOG 원문: "Added an `allow_large` option to the Read tool so Claude can read a text file past the usual size limits in one call when it needs the whole file and the context has room"
|
|
2284
|
+
(296) Read 도구에 `allow_large` 옵션이 추가되어, 전체 파일이 필요하고 컨텍스트에 여유가 있을 때 통상 크기 한도를 넘는 텍스트 파일을 한 번에 읽을 수 있습니다. R005는 "필요한 파일만 읽는다"를 지연 로딩 전략으로 규정합니다(`.claude/rules/MAY-optimization.md:11`). 이 옵션은 컨텍스트 비용을 키우므로 R013의 예산 임계값(`.claude/rules/SHOULD-ecomode.md:87`)이 계속 적용됩니다. 룰 변경은 필요하지 않습니다.
|
|
2285
|
+
- CHANGELOG 원문: "Changed the default limit on MCP tool descriptions sent up front and on MCP server instructions from 2,048 to 4,096 characters"
|
|
2286
|
+
(296) 미리 전달되는 MCP 도구 설명과 MCP 서버 안내문의 기본 한도가 2,048자에서 4,096자로 바뀌었습니다. 이 저장소의 가이드는 2,048자 상한을 280 절에서 기록합니다(`guides/claude-code/15-version-compatibility.md:1339`, `:1340`). 그 기록은 당시 사실이며 현재 기본값이 아니므로 읽을 때 참고해야 합니다. `CLAUDE_CODE_MAX_MCP_DESCRIPTION_LENGTH`는 저장소 settings에 0건으로 설정돼 있지 않아(`command grep -c CLAUDE_CODE_MAX_MCP_DESCRIPTION_LENGTH .claude/settings.json templates/.claude/settings.json .claude/settings.local.json` 모두 0) 저장소 설정 범위에서는 기본값이 적용됩니다. 한도가 두 배가 되어 MCP 서버 안내문이 더 길게 주입되므로 컨텍스트 고정비가 늘 수 있습니다 [가설 — 실제 서버 안내문 길이와 증가분은 미실측].
|
|
2287
|
+
- CHANGELOG 원문: "Added `CLAUDE_CODE_OVERLOADED_RETRY_MAX_DELAY_MS` environment variable to set a longer maximum delay for the backoff when retrying an overloaded (529) request"
|
|
2288
|
+
(296) 과부하(529) 요청을 재시도할 때 백오프의 최대 지연을 더 길게 정하는 `CLAUDE_CODE_OVERLOADED_RETRY_MAX_DELAY_MS` env가 추가되었습니다. R004의 Retryable 전략은 "최대 3회, 1s·2s·4s 백오프"를 규정하며(`.claude/rules/SHOULD-error-handling.md:25`) 플랫폼 재시도와 별개 층입니다. 이 env는 저장소 settings에 설정되어 있지 않아(`command grep -c OVERLOADED_RETRY_MAX .claude/settings.json templates/.claude/settings.json .claude/settings.local.json` 모두 0) 저장소 설정 범위에서는 동작이 바뀌지 않습니다.
|
|
2289
|
+
|
|
2290
|
+
### MCP · headless
|
|
2291
|
+
|
|
2292
|
+
- CHANGELOG 원문: "Fixed headless sessions starting a folder's `.mcp.json` or plugin MCP server that was switched off for that folder, after changing directory or reloading plugins"
|
|
2293
|
+
(296) headless 세션이 디렉토리 변경이나 플러그인 재로드 후에, 해당 폴더에서 꺼 둔 `.mcp.json` 또는 플러그인 MCP 서버를 시작하던 결함이 수정되었습니다. 이 저장소는 `.mcp.json`을 추적하며 서버 2개(`ontology-rag`는 stdio, `eraser`는 http)를 둡니다(`git cat-file -p HEAD:.mcp.json`). `-p`/`/fsd` 무인 실행에서 꺼 둔 서버가 되살아나던 경로가 닫힌 것입니다. 프로젝트 scope는 `.claude/settings.json`에서 `enableAllProjectMcpServers: true`, `enabledMcpjsonServers: ["ontology-rag"]`이고 `disabledMcpjsonServers` 키는 없습니다(`jq -c '{enableAllProjectMcpServers, enabledMcpjsonServers, disabledMcpjsonServers}' .claude/settings.json`, `.claude/settings.local.json`도 `command grep -c disabledMcpjsonServers` 0). 기기별 로컬 승인 상태(사용자 `~/.claude.json` 등)는 관측하지 않았습니다 [가설 — 로컬 scope의 서버 비활성 여부 미관측].
|
|
2294
|
+
- CHANGELOG 원문: "Fixed `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` re-running a finished turn after a restart when an MCP tool result had ended that turn"
|
|
2295
|
+
(296) 재시작 후 MCP 도구 결과가 턴을 끝낸 경우에도 `CLAUDE_CODE_RESUME_INTERRUPTED_TURN`이 이미 끝난 턴을 다시 실행하던 결함이 수정되었습니다. 관측한 범위에서 이 env는 이 가이드 밖에서 0건으로 저장소에 설정돼 있지 않습니다(`git grep -n CLAUDE_CODE_RESUME_INTERRUPTED_TURN -- . ':!guides/claude-code/15-version-compatibility.md' ':!templates/guides/claude-code/15-version-compatibility.md'` rc=1, `.claude/settings.local.json`은 `command grep -c` 0). 설정할 경우의 무인 루프 재개 시나리오에만 관련됩니다.
|
|
2296
|
+
- CHANGELOG 원문: "Fixed secret redaction in shared transcripts and debug logs missing some values that follow a key with no value, including in JSON written inside a shell string"
|
|
2297
|
+
(296) 공유 transcript와 debug 로그에서, 값이 없는 키 뒤에 오는 일부 값(셸 문자열 안에 쓰인 JSON 포함)이 마스킹되지 않던 결함이 수정되었습니다. R001은 시크릿 노출을 금지하며(`.claude/rules/MUST-safety.md:9`) 이 저장소는 `secret-filter.sh` 훅을 배선합니다(`.claude/settings.json:548`). 플랫폼 마스킹은 이 훅과 별개의 층이며, 이 수정은 공유·debug 산출물의 방어를 보강합니다. 훅이나 룰 변경은 필요하지 않습니다.
|
|
2298
|
+
|
|
2299
|
+
### 백그라운드
|
|
2300
|
+
|
|
2301
|
+
- CHANGELOG 원문: "Changed `←`: a turn or `!` command started while the session moves to the background is now stopped instead of finishing out of sight"
|
|
2302
|
+
(296) `←`: 세션이 백그라운드로 이동하는 동안 시작된 턴이나 `!` 명령이 이제 보이지 않는 곳에서 끝나지 않고 중지됩니다. R010 「Background Agent Permission Mode (`/bg` flow)」(`.claude/rules/MUST-orchestrator-coordination.md:642`)는 `/bg`·`←←`로 백그라운드로 가는 에이전트의 permission mode 보존을 다루며 이 항목은 그 서술을 바꾸지 않습니다. 원문의 대상은 "started while the session moves to the background"인 턴이나 `!` 명령입니다. `←`는 대화형 키이므로, 사용자가 `/fsd` 세션을 `←`로 백그라운드로 보내는 도중에 시작된 턴은 중지될 수 있으며, 그 경우 시작한 작업이 중지되었는지 확인하고, 중지되었다면 필요에 따라 다시 실행하는 것이 좋습니다 [가설 — 중지 대상 범위는 원문 외 미실측].
|
|
2303
|
+
|
|
2304
|
+
기타 57건 — 이 저장소 비해당(Claude apps gateway(`managed.policies[].code`, `allowedProviders`, `forceLoginMethod`)·`claude self-hosted-runner`·Cloud sessions·`[Claude Tag]`·`[Code Review]` 항목, VSCode 전용 항목, Windows 전용 수정, mods·plugin API(`$.agent.register`, `$.http.fetch`, plugin marketplace·secret) 및 `/plugin` 표시, 터미널 렌더링·복사·toast·fullscreen·transcript 토글·`/diff`·`←` 세부 UI, `--teleport`, claude.ai synced skill·plugin, `claude purge`, OpenTelemetry `git_commit_id`, 번들 dataviz skill, `/code-review` 출력 형식, `CLAUDE_CODE_TRANSCRIPT_LOCAL_GC`, Workflow 스크립트의 깊은 중첩·CRLF 처리 등 harness 비영향 세부사항이며 이 저장소는 해당 기능을 개발하거나 사용하지 않습니다). 실측: `gh release view v2.1.296 --repo anthropics/claude-code --json body --jq .body | grep -c '^- '` = 79건 중 위 본문 22건을 다뤘으므로 79 − 22 = 57건입니다. 계수 범위는 해당 릴리즈 노트의 최상위 불릿 줄(`- `로 시작하는 줄)입니다.
|
|
2305
|
+
|
|
2306
|
+
**Action items**:
|
|
2307
|
+
- 훅(managed 훅·플러그인 SessionStart·`--debug`), 에이전트·서브에이전트, 권한·파일 편집, MCP·headless, 백그라운드 항목은 이 저장소에 해당 구성(managed settings, `autoCompactWindow`, 비UTF-8 파일, 관련 env)이 없거나 기존 룰이 이미 다루는 전제를 보강하는 항목이며 룰 문안 변경은 불필요합니다.
|
|
2308
|
+
- 후속 실측 후보: (1) `claude --debug`로 에이전트 로드 시 `limitations`·`domain`·`soul`·`source`가 unrecognized로 보고되는지 확인합니다. (2) haiku 에이전트 3개의 `resolvedModel`을 확인합니다(2.1.293 절과 같은 후보). (3) `playwright-compress.sh`의 최상위 `updatedMCPToolOutput` 키가 적용되는지 확인합니다.
|
|
2309
|
+
- 모델 카탈로그 셀 정정: Sonnet 5.5 cache read 비용 표기는 이번 변경에서 R006 Tier-2 표(`.claude/rules/MUST-agent-design.md:52`)와 `guides/multi-model-routing/README.md:38`에 정정되었습니다. 이는 카탈로그 값 정정이며 에이전트 행동 규범을 바꾸는 변경은 아닙니다. 위 첫 항목의 "룰 문안 변경은 불필요"는 이 카탈로그 셀을 제외한 규범 문안을 가리킵니다.
|
|
2310
|
+
- 이 문서의 규범 변경 제안은 없습니다(CC 2.1.296 CHANGELOG 항목 기준).
|
|
2311
|
+
|
|
2312
|
+
---
|
|
2313
|
+
|
|
2314
|
+
## v2.1.299 (2026-10-14)
|
|
2315
|
+
|
|
2316
|
+
> Issue: #1861 — Claude Code v2.1.299 compatibility documentation
|
|
2317
|
+
> Scope-ceiling check (R017): 조사 시점(2026-10-25)의 최신 릴리즈는 2.1.310입니다(`claude --version`=2.1.310, `npm view @anthropic-ai/claude-code version`=2.1.310). 상한 이후 릴리즈 2.1.300~2.1.310의 CHANGELOG 절을 각각 잘라 "2.1.299"와 "Revert"를 검색했습니다. "2.1.299"는 11개 절에서 한 번도 나타나지 않았습니다(절마다 `awk -v v="<버전>" '/^## /{p=($2==v)} p' CHANGELOG.md`로 자른 파일에 `grep -c '2\.1\.299'` = 0). 대소문자를 무시한 "revert"는 2곳에서 나타났으며 둘 다 git의 revert 상태 감지에 관한 문장입니다. 2.1.300의 "Fixed the diff view in Claude Desktop and Remote Control sessions not noticing a conflicted cherry-pick or revert in reftable repositories"와 2.1.301의 "Fixed `/diff` not noticing a conflicted cherry-pick or revert in reftable repositories when one of its git checks timed out or failed"이며, 이 릴리즈 항목을 되돌리거나 좁히는 문장은 관측한 범위에서 찾지 못했습니다. 릴리즈 게시 시각은 2026-10-14T02:49:42Z입니다(`gh release view v2.1.299 -R anthropics/claude-code --json publishedAt`).
|
|
2318
|
+
|
|
2319
|
+
### 훅 · 프롬프트 제출 순서
|
|
2320
|
+
|
|
2321
|
+
- CHANGELOG 원문: "Changed `UserPromptSubmit` hooks to run before a skill or custom slash command expands, so a hook that blocks the prompt now also stops its embedded shell commands"
|
|
2322
|
+
(299) `UserPromptSubmit` 훅이 스킬이나 사용자 정의 슬래시 커맨드가 확장되기 전에 실행되도록 바뀌어, 프롬프트를 차단하는 훅이 이제 그 커맨드에 포함된 셸 명령도 멈춥니다. CC가 로드하는 `.claude/settings.json:233`의 `UserPromptSubmit`에는 command 훅 4개(`user-prompt-preprocessor.sh`, `r007-r008-drift-advisor.sh`, `session-autofix-prompt.sh`, `fail-axis-cause-advisor.sh`)가 배선되어 있습니다(`jq -c '[(.hooks.PreToolUse | length), ([.hooks.PreToolUse[] | .hooks[]] | length), ([.hooks.UserPromptSubmit[] | .hooks[]] | length)]' .claude/settings.json` = `[11,14,4]`). 이 중 세 스크립트는 `"decision": "block"`을 내보내지 않도록 주석으로 명시합니다(`.claude/hooks/scripts/user-prompt-preprocessor.sh:28`, `.claude/hooks/scripts/r007-r008-drift-advisor.sh:442`, `.claude/hooks/scripts/fail-axis-cause-advisor.sh:20`). R021은 이 중 `r007-r008-drift-advisor.sh`와 `fail-axis-cause-advisor.sh`를 Advisory 계층으로 분류합니다(`.claude/rules/MUST-enforcement-policy.md:23`, `:25`). 네 스크립트를 세 가지로 조회했습니다(각각 `-- <네 스크립트 경로>`): `git grep -n -i -E 'decision|block'`, `git grep -n -E 'exit [1-9]|"continue"|continue *:|stopReason'`, `git grep -n -E 'exit +"?\$'`. 앞의 두 조회에서 나온 히트는 주석 줄(예: `.claude/hooks/scripts/r007-r008-drift-advisor.sh:117`~`:119`, `:442`, `.claude/hooks/scripts/user-prompt-preprocessor.sh:28`, `:97`, `.claude/hooks/scripts/fail-axis-cause-advisor.sh:20`, `:130`)과 `r007-r008-drift-advisor.sh`에서 content block을 다루는 jq 줄(`:266`~`:309`)이었습니다. 셋째 조회는 출력이 없었고(rc=1), `session-autofix-prompt.sh`에서는 세 조회 어디에서도 히트가 나오지 않았습니다. 따라서 관측한 범위(위 세 조회)에서 이 네 훅은 명시적인 차단 출력(`decision`·`continue`·`stopReason` 키)이나 명시적인 차단 종료 코드(`exit 2`)를 내지 않습니다. 다만 세 스크립트는 `set -euo pipefail`로 실행되므로(`.claude/hooks/scripts/fail-axis-cause-advisor.sh:41`, `.claude/hooks/scripts/user-prompt-preprocessor.sh:41`, `.claude/hooks/scripts/r007-r008-drift-advisor.sh:129`; `session-autofix-prompt.sh`에는 `git grep -n -E '^set -'` 히트 없음) 보호되지 않은 명령이 실패하면 그 명령의 종료 코드로 끝날 수 있고, 이 `set -e` 경로는 조회하지 않았습니다. 차단 시 셸 명령도 멈춘다는 변경은 명시적 차단 경로 기준으로 이 훅들에 해당하지 않으며, `set -e` 경로까지 포함한 판정은 [가설 — 각 스크립트에서 보호 없이 실패할 수 있는 명령이 종료 코드 2로 끝날 수 있는지 확인하면 판정 가능]로 남깁니다. 두 스크립트는 훅 입력의 `.prompt`를 읽습니다(`.claude/hooks/scripts/user-prompt-preprocessor.sh:54`, `.claude/hooks/scripts/fail-axis-cause-advisor.sh:54`). 훅이 확장 전에 실행되므로 `/fsd` 같은 스킬 호출에서 `.prompt`가 확장 전 원문을 담을 수 있습니다 [가설 — 2.1.299 전후로 `/<skill>` 프롬프트의 훅 stdin `.prompt`를 캡처해 비교하면 판정 가능]. 스킬 본문의 셸 주입 표기는 ``git grep -c -E '!`' -- '.claude/skills/*/SKILL.md'`` 출력 1줄(`.claude/skills/omcustom-release-notes/SKILL.md:1`)이며, 그 줄(`:164`)은 커밋 메시지의 `!` breaking 표기 설명이라 셸 주입 구문이 아닙니다.
|
|
2323
|
+
- CHANGELOG 원문: "Changed a skill's own front-matter `UserPromptSubmit` hook to first run on the prompt after the one that invokes the skill"
|
|
2324
|
+
(299) 스킬 frontmatter에 선언된 `UserPromptSubmit` 훅이 그 스킬을 호출한 프롬프트가 아니라 그다음 프롬프트에서 처음 실행되도록 바뀌었습니다. 관측한 범위에서 `.claude/skills/*/SKILL.md`에는 `hooks:` frontmatter 줄과 `UserPromptSubmit` 문자열이 나타나지 않으므로(`git grep -n -E '^hooks:' -- '.claude/skills/*/SKILL.md'`와 `git grep -n UserPromptSubmit -- '.claude/skills/*/SKILL.md'` 둘 다 출력 없음) 이 저장소 스킬에는 해당하지 않습니다.
|
|
2325
|
+
- CHANGELOG 원문: "Fixed plan mode running a write (an MCP tool's, a file's, a shell command's) that a `PreToolUse` hook or a mod's `tool.check` hook allowed"
|
|
2326
|
+
(299) `PreToolUse` 훅이나 mod의 `tool.check` 훅이 허용한 쓰기(MCP 도구·파일·셸 명령)를 plan mode가 실행하던 결함이 수정되었습니다. `.claude/settings.json:37`의 `PreToolUse`에는 matcher 그룹 11개와 훅 명령 14개가 있습니다(위 `jq -c` 출력 `[11,14,4]`의 앞 두 값). 관측한 범위에서 이 훅들은 `permissionDecision`을 출력하지 않으므로(`git grep -n permissionDecision -- .claude/settings.json .claude/hooks templates/.claude/settings.json` rc=1) 훅이 명시적으로 허용하는 경로는 관측되지 않았습니다. 종료 코드 0으로 끝나는 훅이 결함 조건의 "allowed"에 해당했는지는 원문이 밝히지 않습니다 [가설 — 구버전 plan mode에서 exit 0으로 끝나는 `PreToolUse` 훅 뒤의 Write가 실행되는지 재현하면 판정 가능]. 에이전트 frontmatter에서 `plan` permission mode나 `opusplan` 모델은 관측되지 않았습니다(`git grep -n -E '^permissionMode:|^model: *opusplan' -- '.claude/agents/*.md'` 49줄이 모두 `permissionMode: bypassPermissions`). R006 Permission Mode 표는 `plan`을 "Require plan approval"로 설명합니다(`.claude/rules/MUST-agent-design.md:382`). 사용자가 대화형 세션에서 plan mode를 쓸 때의 영향은 측정하지 않았습니다.
|
|
2327
|
+
|
|
2328
|
+
### 서브에이전트 · SendMessage · 백그라운드 알림
|
|
2329
|
+
|
|
2330
|
+
- CHANGELOG 원문: "Fixed background subagents in auto mode sometimes sending their final report twice, once as the result and once as a message"
|
|
2331
|
+
(299) auto mode의 백그라운드 서브에이전트가 때때로 최종 보고를 결과로 한 번, 메시지로 한 번, 두 번 보내던 결함이 수정되었습니다. R009는 완료 알림에 보고 본문이 없으면 한 턴 기다린 뒤 산출물을 실측하고 `SendMessage`로 재요청하도록 규정합니다(`.claude/rules/MUST-parallel-execution.md:368`). 구버전에서 같은 보고가 두 번 도착하면 별개의 완료나 재요청에 대한 응답으로 오인할 수 있으므로, 보고 횟수가 아니라 산출물 실측으로 완료를 판정하는 R020 원칙을 그대로 적용합니다. 저장소가 추적하는 permission mode 값은 project `.claude/settings.json:23`의 `"defaultMode": "bypassPermissions"`입니다(`git ls-files .claude/settings.local.json` 출력 없음, `git check-ignore -v --no-index .claude/settings.local.json` = `.gitignore:40:.claude/*`). 유지보수자 기기에서는 `jq -r '.permissions.defaultMode // "unset"' ~/.claude/settings.json .claude/settings.json .claude/settings.local.json`의 출력이 `auto`, `bypassPermissions`, `bypassPermissions`로 관측되었으며, user·local 값은 기기 로컬 값입니다. R010은 user `auto`와 project·local `bypassPermissions` 조합이 `claude -p`에서 `default`로 시작한다고 기록하고, 같은 문단에서 대화형 TTY 세션은 2026-09-02 기록("auto mode is active")과 조정되지 않은 `[가설]`로 남깁니다(`.claude/rules/MUST-orchestrator-coordination.md:588`). 대화형 세션이 auto mode로 실행되는지는 측정하지 않았습니다 [가설 — 세션의 실제 permission mode 표시로 판정].
|
|
2332
|
+
- CHANGELOG 원문: "Fixed `SendMessage` not finding a subagent by name after the CLI restarted and resumed the session (names given before the last compaction still need the agent ID)"
|
|
2333
|
+
(299) CLI가 재시작되어 세션을 resume한 뒤 `SendMessage`가 이름으로 서브에이전트를 찾지 못하던 결함이 수정되었습니다. 원문 괄호는 이 수정의 예외로, 재시작·resume 뒤에도 마지막 compaction 이전에 붙인 이름은 여전히 agent ID가 필요하다고 적습니다. R018은 이름을 붙인 `Agent` 스폰이 세션의 암묵적 팀의 팀원을 만든다고 기록하고(`.claude/rules/MUST-agent-teams.md:22`), R009는 보고가 빠진 위임을 `SendMessage`로 재요청하도록 규정합니다(`.claude/rules/MUST-parallel-execution.md:368`). 따라서 재시작·resume를 거친 세션에서 마지막 compaction 이전에 붙인 이름의 위임을 이어갈 때는 agent ID로 `SendMessage`를 보내야 합니다. 재시작 없이 compaction(아래 idle compaction 포함)만 거친 세션의 이름 조회는 원문이 다루지 않습니다 [가설 — 재시작 없이 compaction된 세션에서 compaction 이전 이름으로 `SendMessage`를 보내 보면 판정 가능]. 그 경우에도 agent ID 사용을 예방 조치로 권합니다. 이 저장소 위임에서 이름 기반 `SendMessage`를 얼마나 쓰는지는 측정하지 않았습니다.
|
|
2334
|
+
- CHANGELOG 원문: "Improved background agent notifications: they now say when an agent is only waiting on its own background work, got a message too late for its result, or was stopped by a usage limit"
|
|
2335
|
+
(299) 백그라운드 에이전트 알림이 이제 에이전트가 자기 백그라운드 작업을 기다리고 있을 뿐인 경우, 결과에 반영되기에는 늦게 메시지를 받은 경우, 사용량 한도로 멈춘 경우를 알려줍니다. 새 문구는 실측할 대상을 고르는 신호로 쓸 수 있지만 완료 증거는 아닙니다. R018 「Member Completion Verification」(`.claude/rules/MUST-agent-teams.md:501`의 제목, `:503`의 본문)과 R009 결과 수집 절차(`.claude/rules/MUST-parallel-execution.md:368`)의 ground-truth 실측 의무는 바뀌지 않습니다.
|
|
2336
|
+
- CHANGELOG 원문: "Changed agent `tools:` lists to take only the named MCP server's tools; list a server whose name contains `__` as `mcp__<whole name>__*`"
|
|
2337
|
+
(299) 에이전트 `tools:` 목록이 이름으로 지정한 MCP 서버의 도구만 받도록 바뀌었고, 이름에 `__`가 들어 있는 서버는 `mcp__<whole name>__*`로 적어야 합니다. 관측한 범위에서 `.claude/agents/*.md`에는 `mcp__` 항목이나 `mcpServers:` 줄이 없으므로(`git grep -n -E 'mcp__|^mcpServers:' -- '.claude/agents/*.md'` 출력 없음) 이 저장소 에이전트 정의에는 해당하지 않습니다.
|
|
2338
|
+
|
|
2339
|
+
### 권한 · MCP 규칙 · settings
|
|
2340
|
+
|
|
2341
|
+
- CHANGELOG 원문: "Changed MCP allow rules to reach only the server they name: `mcp__a` no longer allows a server named `a__b` or `a_`; write `mcp__<server>__*` with the server's whole normalized name"
|
|
2342
|
+
(299) MCP allow 규칙이 이름으로 지정한 서버에만 적용되도록 바뀌어, `mcp__a`가 더 이상 `a__b`나 `a_`라는 서버를 허용하지 않습니다. 관측한 범위(`git grep -n -E 'mcp__|enabledMcpjsonServers|disabledMcpjsonServers|enableAllProjectMcpServers' -- .claude/settings.json templates/.claude/settings.json`)에서 두 설정 파일의 `mcp__` 문자열은 `PostToolUse` 훅의 `"matcher"` 값(`.claude/settings.json:582`, `templates/.claude/settings.json:548`)이며 permission 규칙이 아닙니다. 유지보수자 기기의 gitignore된 `.claude/settings.local.json`(저장소 추적 대상 아님)에서 관측한 `mcp__`도 훅 `"matcher"` 값이었습니다(`command grep -n -E 'mcp__|McpjsonServers' .claude/settings.local.json`). `.mcp.json`의 서버 이름은 `ontology-rag`(`.mcp.json:3`)와 `eraser`(`.mcp.json:14`)이고(`jq -c '.mcpServers | to_entries | map({name: .key, type: (.value.type // "stdio")})' .mcp.json` 출력 2개 항목) `__`나 끝의 `_`를 포함하지 않습니다. 따라서 이 변경의 영향 조건은 관측되지 않았습니다.
|
|
2343
|
+
- CHANGELOG 원문: "Fixed deny and ask rules for an MCP server (`mcp__<server>`) not applying when the server's normalized name contains a double underscore"
|
|
2344
|
+
(299) 정규화된 서버 이름에 이중 밑줄이 들어 있으면 그 MCP 서버의 deny·ask 규칙(`mcp__<server>`)이 적용되지 않던 결함이 수정되었습니다. 바로 위 항목의 근거대로 관측한 범위의 설정 파일에는 `mcp__` permission 규칙이 없고 `.mcp.json` 서버 이름에 `__`가 없으므로 영향 조건이 관측되지 않았습니다.
|
|
2345
|
+
- CHANGELOG 원문: "Fixed a settings file being ignored when `enabledMcpjsonServers` or `disabledMcpjsonServers` held a single server name (letters, digits, - or _) as a plain string"
|
|
2346
|
+
(299) `enabledMcpjsonServers`나 `disabledMcpjsonServers`가 서버 이름 하나를 일반 문자열로 담으면 그 설정 파일이 무시되던 결함이 수정되었습니다. `.claude/settings.json:26`~`:28`의 `enabledMcpjsonServers`는 배열(`["ontology-rag"]`)입니다. 유지보수자 기기의 gitignore된 `.claude/settings.local.json`(`git check-ignore -v --no-index .claude/settings.local.json` = `.gitignore:40:.claude/*`)에서도 이 키가 배열로 시작하는 것을 관측했습니다. `templates/.claude/settings.json`에는 이 키가 나타나지 않습니다(위 `git grep`). 관측한 값이 문자열이 아니므로 결함 조건에 해당하지 않습니다.
|
|
2347
|
+
- CHANGELOG 원문: "Fixed `claude mcp list`, `claude mcp get` and subagent MCP servers starting a server that a policy check blocks; it is now reported as blocked without being started"
|
|
2348
|
+
(299) `claude mcp list`·`claude mcp get`과 서브에이전트 MCP 서버가 정책 검사로 차단된 서버를 시작하던 결함이 수정되어, 이제 시작하지 않고 blocked로 보고합니다. 서브에이전트 소절의 `tools:` 항목에서 실행한 `git grep -n -E 'mcp__|^mcpServers:' -- '.claude/agents/*.md'`(출력 없음)대로 에이전트 frontmatter에 `mcpServers:` 줄이 없으므로 서브에이전트 MCP 서버 경로는 관측되지 않았고, managed 정책 설정은 확인하지 않았습니다.
|
|
2349
|
+
- CHANGELOG 원문: "Fixed MCP connections over HTTP hanging for 30 seconds and failing when a server never ends the body of its reply to a notification (anthropics/claude-code#99014)"
|
|
2350
|
+
(299) 서버가 알림에 대한 응답 본문을 끝내지 않으면 HTTP 기반 MCP 연결이 30초 동안 멈췄다가 실패하던 결함이 수정되었습니다. `.mcp.json:14`~`:16`의 `eraser`는 `"type": "http"` 서버이므로 이 결함 조건에 들어갈 수 있는 연결입니다 [가설 — `eraser` 서버가 알림 응답 본문을 끝내지 않는지는 미관측이며, 2.1.299 미만에서 `eraser` 연결 시 30초 정지 후 실패가 재현되면 판정 가능]. v2.1.295 절의 원격 MCP 재연결 항목도 같은 `eraser` http 서버를 관련 연결로 다뤘습니다. 다만 그 항목의 원문은 headless·SDK 세션의 원격 MCP 서버에 한정되었고, 이번 수정의 원문은 세션 종류를 한정하지 않습니다. `ontology-rag`는 `.mcp.json:4`의 `"type": "stdio"`이므로 HTTP 연결 조건에 해당하지 않습니다.
|
|
2351
|
+
- CHANGELOG 원문: "Fixed rm prompts on shell `-c` scripts that don't run `rm`. An rm built at run time in a script Claude Code can't read no longer prompts unless `CLAUDE_CODE_STRICT_INLINE_SHELL_RM_PROMPT=1`"
|
|
2352
|
+
(299) `rm`을 실행하지 않는 셸 `-c` 스크립트에 rm 확인 프롬프트가 뜨던 결함이 수정되었습니다. 또한 Claude Code가 읽을 수 없는 스크립트 안에서 실행 시점에 조립된 rm은 `CLAUDE_CODE_STRICT_INLINE_SHELL_RM_PROMPT=1`이 아니면 더 이상 프롬프트를 띄우지 않습니다. R005는 즉석 순회를 `xargs`·배열·`bash -c`로 쓰도록 권하므로(`.claude/rules/MAY-optimization.md:43`) 앞 절은 이 형태의 불필요한 프롬프트를 줄이는 방향입니다. 뒤 절은 확인 프롬프트 하나를 기본으로 없애는 방향이며, 관측한 범위(`git grep -n STRICT_INLINE_SHELL -- . ':!guides/claude-code/15-version-compatibility.md' ':!templates/guides/claude-code/15-version-compatibility.md'` rc=1)에서 이 저장소는 그 환경 변수를 설정하지 않습니다. R006 표에 따르면 `bypassPermissions`는 "Skip all permission prompts"이므로(`.claude/rules/MUST-agent-design.md:381`) 이 변경은 다른 permission mode로 실행되는 세션에서 관련됩니다. 위 서브에이전트 항목에서 유지보수자 기기로 관측한 조합(user `auto` + project·local `bypassPermissions`)은 R010 기록상 `claude -p`에서 `default`로 시작하므로(`.claude/rules/MUST-orchestrator-coordination.md:588`) 그런 기기의 무인 실행에도 관련될 수 있습니다. 이 저장소의 파괴적 명령 방어에는 CC 프롬프트와 별개로 `PreToolUse` Bash 훅(`destructive-git-guard.sh`, `rule-deletion-guard.sh`)도 있지만, 이 훅들이 실행 시점에 조립된 rm을 잡는지는 측정하지 않았습니다 [가설 — 합성 입력으로 두 훅을 재현하면 판정 가능].
|
|
2353
|
+
|
|
2354
|
+
### 컨텍스트 · compaction · 상태줄
|
|
2355
|
+
|
|
2356
|
+
- CHANGELOG 원문: "Added idle compaction in the terminal: a 200K+ token conversation left idle for about 54 minutes is compacted before its one-hour prompt cache expires, so your next message doesn't reprocess it all"
|
|
2357
|
+
(299) 터미널에서 200K 토큰 이상인 대화가 약 54분 동안 유휴 상태로 남으면, 1시간 prompt cache가 만료되기 전에 compact해 다음 메시지가 전체를 다시 처리하지 않도록 하는 idle compaction이 추가되었습니다. compact된 뒤에는 R010 「Session Continuity」의 CLAUDE.md 재독 의무(`.claude/rules/MUST-orchestrator-coordination.md:848`의 제목, `:850`의 본문)와 R021의 `SessionStart` 재주입 경로(`.claude/rules/MUST-enforcement-policy.md:9`의 각주, `claude-md-reinject.sh`)가 적용됩니다. 위 `SendMessage` 항목의 제한(재시작·resume 뒤 마지막 compaction 이전 이름은 agent ID 필요, 재시작 없는 compaction은 [가설])과 아래 `/reload-skills` 항목도 함께 관련됩니다. R013의 컨텍스트 예산은 사용량 기준입니다(`.claude/rules/SHOULD-ecomode.md:172`의 보이는 제목 "R013 context budget (usage-based)", `:181`의 DETAIL 주석). 같은 파일의 DETAIL 주석(`:174`~`:182`)에 있는 Token Guardian 행은 "1h cache TTL idle detection"을 트리거로 적고 있어(`:179`) idle compaction과 같은 유휴 구간을 겨냥합니다 [가설 — cc-token-saver 설치 여부와 실제 동작은 미관측이며, 두 장치가 함께 켜진 환경에서 유휴 구간 동작을 관찰하면 판정 가능]. 원문이 "in the terminal"로 한정하므로 `claude -p` 무인 실행에 적용되는지는 확인하지 않았습니다.
|
|
2358
|
+
- CHANGELOG 원문: "Added `CLAUDE_CODE_IDLE_COMPACT_MIN_TOKENS` to change idle compaction's 200K-token minimum; `"idleCompaction": false` in settings.json turns it off. Both need v2.1.290 or later"
|
|
2359
|
+
(299) `CLAUDE_CODE_IDLE_COMPACT_MIN_TOKENS`로 idle compaction의 200K 토큰 하한을 바꿀 수 있고, settings.json의 `"idleCompaction": false`로 끌 수 있습니다. 원문은 둘 다 v2.1.290 이상이 필요하다고 적습니다. 관측한 범위(`git grep -n -i -E 'idleCompaction|IDLE_COMPACT' -- . ':!guides/claude-code/15-version-compatibility.md' ':!templates/guides/claude-code/15-version-compatibility.md'` rc=1)에서 이 저장소는 어느 쪽도 설정하지 않으므로 터미널 세션에서는 기본 동작을 따릅니다 [가설 — 기본 활성 여부는 원문의 "turns it off"에서 추론했으며, 200K 토큰을 넘긴 세션을 54분 이상 두어 compaction 발생을 관찰하면 판정 가능].
|
|
2360
|
+
- CHANGELOG 원문: "Fixed replies cut off at the output token limit ending the turn silently, with no retry or error, after a request fell back to non-streaming mode"
|
|
2361
|
+
(299) non-streaming 모드로 폴백한 요청에서 출력 토큰 한도에 걸려 잘린 응답이 재시도나 오류 없이 턴을 조용히 끝내던 결함이 수정되었습니다. R004는 v2.1.246·v2.1.257의 자동 이어감 경계를 기록하고(`.claude/rules/SHOULD-error-handling.md:28`, `:30`), 서브에이전트 중간 종료를 진단할 때 R020 「maxTurns 절단 실증」의 turn 한도를 먼저 확인하도록 안내합니다(`:30`). 2.1.299 미만 세션에서 표시 없이 끝난 응답은 turn 한도나 네트워크 절단이 아니라 이 결함이었을 수 있으므로 진단 후보에 포함합니다 [가설 — non-streaming 폴백 여부를 트랜스크립트에서 확인해야 판정 가능].
|
|
2362
|
+
- CHANGELOG 원문: "Improved `/reload-skills` to say it re-sends the full skill list to Claude, which is how to get skills back after compaction"
|
|
2363
|
+
(299) `/reload-skills`가 전체 스킬 목록을 Claude에게 다시 보낸다고 안내하도록 개선되었으며, 원문은 이것이 compaction 뒤 스킬을 되찾는 방법이라고 적습니다. 이 저장소는 스킬 114개를 추적합니다(`git ls-files '.claude/skills/*/SKILL.md' | wc -l` = 114). R013의 v2.1.261 노트는 `/skill-doctor`를 스킬 컨텍스트 비용 진단 수단으로 기록합니다(`.claude/rules/SHOULD-ecomode.md:97`). `/reload-skills`는 사용자가 입력하는 슬래시 커맨드이므로, 대화형 세션에서 compaction(위 idle compaction 포함) 뒤 스킬을 찾지 못할 때 복구 수단이 됩니다. 무인 `claude -p` 실행에서 이 커맨드를 쓸 수 있는지는 확인하지 않았습니다. compaction 뒤 이 저장소 세션에서 스킬 목록이 실제로 빠졌는지는 관측하지 않았습니다.
|
|
2364
|
+
- CHANGELOG 원문: "Fixed `/usage`, the approaching-limit warning (terminal and VS Code) and the status line sometimes showing more than 100% used (anthropics/claude-code#92238)"
|
|
2365
|
+
(299) `/usage`, 한도 근접 경고(터미널·VS Code), 상태줄이 때때로 사용량을 100% 넘게 표시하던 결함이 수정되었습니다. R012 상태줄 스크립트는 `rate_limits.five_hour.used_percentage`와 `rate_limits.seven_day.used_percentage`를 읽고(`.claude/statusline.sh:103`~`:104`) 정수로 바꾼 값을 상한 없이 `RL:${rl_5h_int}%`로 표시합니다(`:350`~`:351`). 원문의 "the status line"이 상태줄 명령에 전달되는 `rate_limits` 값까지 포함한다면, 구버전에서 RL 세그먼트에 나타난 100% 초과 값은 스크립트가 아니라 플랫폼 값에서 왔을 수 있습니다 [가설 — 구버전 상태줄 stdin의 `used_percentage`가 100을 넘었는지 캡처하면 판정 가능].
|
|
2366
|
+
|
|
2367
|
+
### 무인 · headless(`-p`) 실행
|
|
2368
|
+
|
|
2369
|
+
- CHANGELOG 원문: "Fixed `claude -p` saying nothing when a settings file fails validation: text-output runs now list the file and the invalid entry on stderr"
|
|
2370
|
+
(299) 설정 파일이 검증에 실패해도 `claude -p`가 아무것도 알리지 않던 결함이 수정되어, 이제 텍스트 출력 실행은 stderr에 그 파일과 잘못된 항목을 표시합니다. `/fsd`는 `claude -p`·예약 실행 같은 무인 경로를 다루고(`.claude/skills/fsd/SKILL.md:133`, `:172`), R010은 유효 permission mode를 `claude -p` init 값으로 실측한 기록에 기대고 있습니다(`.claude/rules/MUST-orchestrator-coordination.md:588`). 이 저장소의 `.claude/settings.json`은 `_comment_defaultMode` 같은 주석용 키를 담고 있습니다(`.claude/settings.json:22`). 2.1.299 이상에서 이 파일이 검증 오류를 내는지는 실행해 보지 않았습니다 [가설 — `claude -p` 텍스트 출력 실행의 stderr를 확인하면 판정 가능].
|
|
2371
|
+
- CHANGELOG 원문: "Fixed a regression in 2.1.296 where cloud and headless sessions could run an approved tool call twice if a new message arrived as the session resumed after a restart"
|
|
2372
|
+
(299) 2.1.296에서 생긴 회귀로, cloud·headless 세션이 재시작 후 resume되는 동안 새 메시지가 도착하면 승인된 도구 호출을 두 번 실행할 수 있던 결함이 수정되었습니다. 영향 구간은 2.1.296 이상 2.1.299 미만이며, 원문의 발생 조건은 재시작, 그 뒤의 resume, resume 도중 새 메시지 도착의 세 가지입니다. `/fsd`를 `claude -p`로 돌리는 경로(`.claude/skills/fsd/SKILL.md:172`)에서 이 구간에 세 조건이 함께 일어났다면 `git commit`·`gh issue create` 같은 비멱등 호출이 중복되었을 수 있으므로, 그 구간의 무인 실행 결과는 중복 커밋·이슈 여부를 실측으로 확인하는 것이 좋습니다 [가설 — 해당 구간에서 세 조건이 함께 발생했는지는 미관측].
|
|
2373
|
+
- CHANGELOG 원문: "Fixed MCP tool calls in headless and SDK sessions sometimes failing or running twice when a background reconnect closed the connection they were running on"
|
|
2374
|
+
(299) headless·SDK 세션에서 백그라운드 재연결이 실행 중인 연결을 닫으면 MCP 도구 호출이 때때로 실패하거나 두 번 실행되던 결함이 수정되었습니다. `.mcp.json`에는 stdio 서버 `ontology-rag`(`:3`~`:4`)와 원격 http 서버 `eraser`(`:14`~`:16`)가 있으며, 이 항목은 v2.1.295 절에서 다룬 원격 MCP 재연결 수정과 같은 계열입니다. 무인 실행에서 `eraser`의 생성 도구가 두 번 실행되면 중복 산출물이 생길 수 있습니다 [가설 — 무인 실행에서 `eraser` 도구 사용은 미관측]. R019는 enrichment 실패 시 조용히 건너뛰도록 규정하므로(`.claude/rules/SHOULD-ontology-rag-routing.md:39`의 「Failure Handling」 제목, `:43`의 "MCP server unavailable" 행, `:48`) `ontology-rag` 호출 실패는 라우팅을 막지 않습니다.
|
|
2375
|
+
|
|
2376
|
+
### 예약 작업 · `/loop`
|
|
2377
|
+
|
|
2378
|
+
- CHANGELOG 원문: "Fixed scheduled tasks and loops firing again after every turn, or firing early, during the repeated hour when daylight saving time ends"
|
|
2379
|
+
(299) 서머타임이 끝나 같은 시각이 반복되는 한 시간 동안 예약 작업과 루프가 매 턴 뒤 다시 발화하거나 일찍 발화하던 결함이 수정되었습니다. 원문은 세션 종류를 한정하지 않습니다. `/fsd`는 self-paced `/loop`를 반복 수단의 하나로 설명하고(`.claude/skills/fsd/SKILL.md:39`), 무인 실행(`claude -p`, 예약 실행)에서 `/goal`·`/loop` 호출을 권장합니다(`:172`). 따라서 서머타임 종료 구간에 `/loop`로 `/fsd`를 돌린 경우 반복이 매 턴 뒤 다시 발화하거나 일찍 발화했을 수 있습니다 [가설 — 원문의 "loops"가 self-paced `/loop`를 포함하는지와 서머타임 종료 구간의 `/fsd` 실행 사례는 미관측].
|
|
2380
|
+
- CHANGELOG 원문: "Fixed scheduled tasks being announced for the wrong minute: the scheduling tools now report each job's actual next run time"
|
|
2381
|
+
(299) 예약 작업의 공지 시각이 잘못된 분(minute)으로 표시되던 결함이 수정되어, 이제 예약 도구가 각 작업의 실제 다음 실행 시각을 보고합니다. 원문은 세션 종류를 한정하지 않습니다. 관측한 범위(`git grep -n -E 'ScheduleWakeup|CronCreate' -- .claude/skills`)에서 이 저장소 스킬의 예약 도구 언급은 `/fsd`의 `/loop`(ScheduleWakeup) 설명(`.claude/skills/fsd/SKILL.md:162`)과 `claude-native` 스킬의 `CronCreate` 예약 실행 안내(`.claude/skills/claude-native/SKILL.md:232`, `:240`)입니다. 이 경로로 예약한 작업은 2.1.299 미만에서 보고된 다음 실행 시각이 실제와 분 단위로 어긋났을 수 있습니다 [가설 — ScheduleWakeup이 원문의 "scheduling tools"에 포함되는지와 두 경로의 실제 사용은 미관측].
|
|
2382
|
+
|
|
2383
|
+
### 스킬 로딩 · Read/Write 도구
|
|
2384
|
+
|
|
2385
|
+
- CHANGELOG 원문: "Changed skill and command loading: one whose file or folder name has hidden, direction-changing or blank-like characters, `<` or `>` is no longer offered until renamed; such a `name:` is ignored"
|
|
2386
|
+
(299) 파일·폴더 이름에 숨김·방향 전환·공백 유사 문자나 `<`·`>`가 들어 있는 스킬과 커맨드는 이름을 바꿀 때까지 제공되지 않고, 그런 `name:`은 무시됩니다. 관측한 범위(python3 `os.walk` 검사)에서 `.claude/skills`와 `templates/.claude/skills` 아래 디렉토리·파일 이름 538개와 각 `SKILL.md`의 `name:` 값 가운데 출력 가능한 ASCII(0x21–0x7E) 밖 문자나 `<`·`>`를 포함한 항목은 0건이었고 `.claude/commands`는 존재하지 않으므로, 이 변경의 영향 조건은 관측되지 않았습니다.
|
|
2387
|
+
- CHANGELOG 원문: "Fixed Read garbling UTF-16LE files with a byte-order mark, and Write dropping byte-order marks or silently converting Windows-1252, Shift-JIS, GBK or UTF-16BE files to UTF-8 (now refused)"
|
|
2388
|
+
(299) BOM이 있는 UTF-16LE 파일을 Read가 깨뜨리던 결함과, Write가 BOM을 빠뜨리거나 Windows-1252·Shift-JIS·GBK·UTF-16BE 파일을 UTF-8로 조용히 변환하던 결함이 수정되었으며, 후자는 이제 거부됩니다. `git ls-files -z`가 나열한 1,578개 경로 중 1개(`docs/plans/refs/latest`)는 심볼릭 링크이므로(`git ls-files -s`의 mode 120000 줄 1개) tracked 일반 파일은 1,577개입니다. python3 검사에서 앞 8,000바이트에 NUL이 없는 tracked 일반 파일 가운데 BOM이 있는 파일과 UTF-8로 디코드되지 않는 파일은 각각 0건이었으므로, 관측한 범위에서 tracked 텍스트 파일 편집에서 Write 거부가 생길 조건은 관측되지 않았습니다. NUL이 있어 바이너리로 분류한 파일(BOM 없는 UTF-16 파일이 섞여 있을 수 있음)은 인코딩 판정에서 제외했습니다.
|
|
2389
|
+
|
|
2390
|
+
기타 165건 — 이 저장소 비해당(mods·plugin API와 `claude plugin` eval·test·validate, Claude apps gateway·서드파티 `ANTHROPIC_BASE_URL`·managed settings 전달, Cowork·cloud sessions·Remote Control·self-hosted runner, VSCode·Windows·WSL·Claude Tag·Code Review 전용 항목, 터미널 렌더링·CJK 줄바꿈·붙여넣기·fullscreen UI, sandbox 경로 규칙, worktree·reftable, SDK·IDE·remote-control 세션의 `ScheduleWakeup` 결함, SDK·headless의 auto mode 모델 전환, `/btw`·`/ultrareview`·Artifact 도구·Claude in Chrome, 이미지·PDF·문서 첨부 처리, debug 로그 메모리, description 없이 시작한 팀원의 자격증명 표시, `/usage` 경고·plan mode 안내 줄 같은 안내 문구 등). 실측: `gh release view v2.1.299 --repo anthropics/claude-code --json body --jq .body | grep -c '^- '` = 190건 중 위 본문 25건을 다뤘으므로 190 − 25 = 165건입니다. 계수 범위는 해당 릴리즈 노트의 최상위 불릿 줄(`- `로 시작하는 줄)입니다.
|
|
2391
|
+
|
|
2392
|
+
**Action items**:
|
|
2393
|
+
|
|
2394
|
+
- 관측한 범위에서 이 릴리즈의 기본 동작 변경 중 이 저장소와 맞닿는 것에는 터미널 idle compaction(기본 동작, 위 [가설] 참조), `UserPromptSubmit` 훅의 실행 시점 이동, 실행 시점에 조립된 rm의 확인 프롬프트 제거(`CLAUDE_CODE_STRICT_INLINE_SHELL_RM_PROMPT=1`로 옛 동작 복원)가 있습니다. `idleCompaction`·`CLAUDE_CODE_IDLE_COMPACT_MIN_TOKENS` 설정 여부는 별도 결정 사안으로 이월합니다.
|
|
2395
|
+
- 재시작·resume를 거친 세션에서는 마지막 compaction 이전에 붙인 이름 대신 agent ID로 `SendMessage`를 보냅니다. 재시작 없이 compaction만 거친 세션에서도 예방 조치로 agent ID를 씁니다. 대화형 세션에서 compaction 뒤 스킬이 보이지 않으면 `/reload-skills`를 씁니다. 관측한 범위에서 룰·CLAUDE.md·에이전트·훅 파일의 변경을 확정한 항목은 찾지 못했습니다(R016: CC 지식은 이 가이드에 두고 룰 파일에는 행동 변화가 필요할 때 1줄).
|
|
2396
|
+
- 2.1.296 이상 2.1.299 미만으로 `claude -p` 무인 실행을 했고 그 실행에서 재시작, resume, resume 도중 새 메시지 도착이 함께 일어났다면, 승인된 도구 호출의 중복 실행 회귀가 남긴 중복 커밋·이슈가 있는지 실측으로 확인합니다.
|
|
2397
|
+
- (299) 항목 중 `[가설 — …]` 표기는 판정 기준을 충족하는 측정이 이루어지기 전에는 결론으로 쓰지 않습니다.
|
|
2398
|
+
|
|
2399
|
+
---
|
|
1942
2400
|
|
|
1943
|
-
|
|
2401
|
+
## v2.1.300 (2026-10-14)
|
|
2402
|
+
|
|
2403
|
+
> Issue: #1862 — Claude Code v2.1.300 compatibility documentation
|
|
2404
|
+
> Scope-ceiling check (R017): 조사 시점(2026-10-25)의 최신 릴리즈는 2.1.310입니다(`claude --version`=2.1.310, `npm view @anthropic-ai/claude-code version`=2.1.310). 2.1.301~2.1.310 CHANGELOG 절을 각각 잘라 `2.1.300` 문자열과 "Revert"(대소문자 무시)를 검색했습니다(`grep -n -i -E '2\.1\.300|revert' section-<버전>.md`). "2.1.300"은 305 절 한 곳에서 나타났으며, 그 문장은 "Self-hosted runner: Fixed a start script that shares only its stdout with the runner or orchestrator failing with `Resource temporarily unavailable` when `TERM` is set (a 2.1.300 regression)"입니다. 이 문장은 이 릴리즈의 self-hosted runner 항목 계열의 회귀 수정이며 이 저장소는 self-hosted runner를 쓰지 않으므로 무관합니다. "revert"는 301 절 "Fixed `/diff` not noticing a conflicted cherry-pick or revert in reftable repositories when one of its git checks timed out or failed" 한 곳에서만 나타났고, 이는 git revert 상태 감지 수정이지 롤백 문장이 아닙니다. 같은 영역의 후속 항목으로 302 절 "Changed prompt and agent hooks so that at most 12 of one event run at a time; the rest wait their turn", 304 절 "Changed tool search to be on by default behind a custom `ANTHROPIC_BASE_URL`; a 400 or 422 from the gateway is retried without it", 305 절 "Fixed every request failing on Vertex, Bedrock and other providers when the endpoint or a gateway rejects tool search, and behind gateways with ToolSearch disallowed or left out of `--tools` (a 2.1.304 regression): Claude Code now retries without it"가 있으나 모두 이 릴리즈 항목을 되돌리는 문장이 아닌 별개 변경입니다. artifact 갱신 영역의 301 절 항목은 아래 「Artifact 도구」 소절에서 다룹니다. 릴리즈 게시 시각은 2026-10-14T18:24:25Z입니다(`gh release view v2.1.300 -R anthropics/claude-code --json publishedAt`).
|
|
2405
|
+
|
|
2406
|
+
### 훅
|
|
2407
|
+
|
|
2408
|
+
- CHANGELOG 원문: "Fixed SessionEnd hooks sometimes not running when you exit while a background command is still running"
|
|
2409
|
+
(300) 백그라운드 명령이 아직 실행 중일 때 종료하면 SessionEnd 훅이 때때로 실행되지 않던 결함이 수정되었습니다. 이 저장소의 두 settings 파일에는 SessionEnd 훅이 배선되어 있지 않습니다(`jq -c '.hooks.SessionEnd // "absent"' .claude/settings.json templates/.claude/settings.json` 결과 두 파일 모두 `"absent"`). R011 Session-End Auto-Save는 사용자 발화("끝", "종료" 등)로 세션 종료를 감지한다고 규정하므로(`.claude/rules/SHOULD-memory-integration.md:445`) 이 수정의 직접 대상이 아니라고 봅니다.
|
|
2410
|
+
- CHANGELOG 원문: "Fixed agent hooks ignoring their `model`: aliases like `haiku` now resolve, a subagent's model no longer overrides it, and an unavailable model falls back to the caller's instead of allowing the action"
|
|
2411
|
+
(300) `agent` 훅이 자신의 `model` 설정을 무시하던 결함이 수정되었습니다. 이제 `haiku` 같은 별칭이 해석되고, 서브에이전트의 모델이 훅의 모델을 덮어쓰지 않으며, 사용할 수 없는 모델은 동작을 허용하는 대신 호출자의 모델로 폴백합니다. 이 저장소의 두 settings 파일에서 훅 타입 분포는 `{"command":63,"prompt":1}`이고 `agent` 타입 훅은 0개입니다(`jq -c '[.hooks[][]?.hooks[]? | .type] | group_by(.) | map({(.[0]):length}) | add' .claude/settings.json templates/.claude/settings.json`; `git grep -n -E '"type": *"agent"' -- .claude templates/.claude` rc=1). 따라서 현재 배선에는 적용 대상이 없습니다. 원문의 마지막 절은 구버전에서 사용할 수 없는 모델을 지정한 `agent` 훅이 판정 없이 동작을 허용했다는 뜻이므로, 훗날 `agent` 훅을 차단 용도로 배선한다면 2.1.300 이상을 전제로 해야 한다고 봅니다.
|
|
2412
|
+
- CHANGELOG 원문: "Changed hooks: `updatedInput` from PreToolUse and PermissionRequest hooks is now validated like Claude's own input: unknown keys are dropped, and input the tool rejects denies the call"
|
|
2413
|
+
(300) PreToolUse·PermissionRequest 훅이 돌려주는 `updatedInput`이 이제 Claude 자신의 입력과 같은 방식으로 검증됩니다. 원문은 결과를 두 갈래로 나눕니다. 알 수 없는 키는 버려지고, 도구가 거부하는 입력은 호출 자체를 거부합니다. 키가 버려진 뒤의 처리는 원문이 말하지 않습니다. 남은 입력이 도구 검증을 통과하면 그 키만 빠진 채 진행되고, 필수 키를 오타 내 그 키가 버려지면 남은 입력이 도구 검증에 걸려 거부될 수 있다고 봅니다 [가설 — 키가 버려진 뒤 호출이 진행되는지 거부되는지를 측정하지 않음]. 이 저장소의 훅은 `updatedInput`을 출력하지 않고 PermissionRequest 훅도 배선하지 않습니다(`git grep -n -E 'updatedInput|PermissionRequest' -- .claude/hooks .claude/settings.json templates/.claude/settings.json` rc=1). 따라서 이 동작 변경은 현재 배선에 영향을 주지 않습니다. 앞으로 입력을 고쳐 쓰는 PreToolUse 훅을 추가한다면 훅 검증 픽스처를 두 갈래로 나눠야 합니다. 선택 키를 오타 내면 그 키가 오류 없이 버려져 의도한 수정이 조용히 빠질 수 있고, 필수 키를 오타 내면 남은 입력이 도구 검증에 걸려 거부될 수 있으며, 도구 스키마에 맞지 않는 값은 호출 거부로 이어집니다.
|
|
2414
|
+
|
|
2415
|
+
### 백그라운드 · 프로세스
|
|
2416
|
+
|
|
2417
|
+
- CHANGELOG 원문: "Fixed Claude polling a background command's output file or sleeping while it runs"
|
|
2418
|
+
(300) 백그라운드 명령이 실행되는 동안 Claude가 그 출력 파일을 폴링하거나 sleep하던 결함이 수정되었습니다. 이 저장소의 릴리즈 대기 지침은 Bash 타임아웃 안의 유한 폴링이나 단일 `gh run watch <run-id> --exit-status`(선택적으로 `run_in_background`)를 무한 수동 폴링 루프보다 우선하라고 적고 있습니다(`.claude/skills/pipeline/workflows/auto-dev.yaml:1536`~`:1539`, #1711). 이 수정은 모델 쪽 행동에 관한 것이며 이 지침과 충돌하지 않으므로 지침 변경은 필요하지 않습니다. 구버전 세션 기록에서 백그라운드 명령을 기다리며 출력 파일을 반복 Read한 흔적은 위임 프롬프트 결함이 아니라 이 플랫폼 결함의 산물일 수 있습니다 [가설 — 해당 기간 트랜스크립트에서 반복 Read 패턴과 CC 버전을 대조하지 않음].
|
|
2419
|
+
- CHANGELOG 원문: "Changed exit to force-kill background commands still running 1.5 seconds after being asked to stop; in fullscreen mode they could previously be left running"
|
|
2420
|
+
(300) 종료 시 정지 요청 후 1.5초가 지나도 실행 중인 백그라운드 명령을 강제 종료하도록 바뀌었습니다. 이전에는 fullscreen 모드에서 그런 명령이 남아 있을 수 있었습니다. 이 저장소의 R005는 프로세스를 띄운 스크립트를 정리한 직후 `pgrep -f <패턴> | wc -l`로 잔여 개수를 확인하라고 규정합니다(`.claude/rules/MAY-optimization.md:43`). 이 변경은 세션 종료 시점의 잔여를 줄이는 방향이지만 세션 도중 정리의 대체 수단은 아니므로 그 확인 절차는 그대로 유지합니다.
|
|
2421
|
+
- CHANGELOG 원문: "Changed background sessions to resume a carried workflow through the Workflow tool's approval instead of running it from the handoff file"
|
|
2422
|
+
(300) 백그라운드 세션이 넘겨받은 workflow를 handoff 파일에서 바로 실행하는 대신 Workflow 도구의 승인을 거쳐 재개하도록 바뀌었습니다. 이 저장소의 두 스킬은 신규 DAG·오케스트레이션 작업에 네이티브 Workflow tool을 우선 쓰라고 권장합니다(`.claude/skills/dag-orchestration/SKILL.md:11`, `.claude/skills/task-decomposition/SKILL.md:11`). 관측한 범위(`git grep -n -i -E 'workflow tool|workflow script|workflow\(' -- .claude/skills`)에서 그 밖의 일치는 CI workflow 스크립트를 다루는 `.claude/skills/pipeline/workflows/auto-dev.yaml:851` 한 곳이므로, 스킬은 Workflow 도구 사용을 권장하지만 호출 절차나 스크립트를 정의하지는 않습니다. Workflow 스크립트에 대한 규범은 R023 「Workflow Script Sanity Check」(`.claude/rules/SHOULD-verification-ladder.md:320` 제목, `:322`부터 본문)에 있습니다. 무인 백그라운드 실행에서 workflow 재개가 승인 단계에서 멈출 수 있는지는 permission mode에 따라 달라질 것으로 보입니다 [가설 — 백그라운드 세션의 Workflow 승인 프롬프트를 permission mode별로 실측하지 않음].
|
|
2423
|
+
|
|
2424
|
+
### headless · resume · 트랜스크립트
|
|
2425
|
+
|
|
2426
|
+
- CHANGELOG 원문: "Fixed resuming a headless or Agent SDK session losing the recent messages a compaction had kept, when the compaction followed a reply cut at the output token limit (compactions from this version on)"
|
|
2427
|
+
(300) 출력 토큰 한도에서 잘린 응답 뒤에 compaction이 일어난 경우, headless 또는 Agent SDK 세션을 재개하면 compaction이 보존한 최근 메시지가 사라지던 결함이 수정되었습니다. 원문의 괄호("compactions from this version on")대로 이 수정은 2.1.300 이후에 일어난 compaction에만 적용됩니다. 이 저장소의 무인 실행 경로에는 `claude -p`를 쓰는 측정 절차(`.claude/rules/MUST-orchestrator-coordination.md:588`)와 리뷰어 호출(`.claude/skills/agora/SKILL.md:18`)이 있습니다. 출력 토큰 한도에서 잘린 응답 뒤에 2.1.300 이전 버전에서 compaction된 headless·Agent SDK 세션을 재개할 때는 여전히 compaction이 보존한 최근 메시지가 빠질 수 있다고 전제합니다.
|
|
2428
|
+
- CHANGELOG 원문: "Fixed resuming a headless or Agent SDK session losing its compaction summary or bringing back pre-compaction history, when the compaction followed a retried or unfinished reply in the same turn"
|
|
2429
|
+
(300) 같은 턴에서 재시도되었거나 끝나지 않은 응답 뒤에 compaction이 일어난 경우, headless 또는 Agent SDK 세션을 재개하면 compaction 요약이 사라지거나 compaction 이전 기록이 되살아나던 결함이 수정되었습니다. R004는 비대화형 세션의 중단 응답 자동 이어감(v2.1.246+)을 기록하고 있으므로(`.claude/rules/SHOULD-error-handling.md:28`), 재시도·미완료 응답과 compaction이 겹치는 조합은 무인 루프에서 나타날 수 있습니다 [가설 — 이 저장소 무인 세션에서 해당 조합의 발생 빈도를 측정하지 않음]. 같은 턴의 재시도·미완료 응답 뒤에 compaction된 headless·Agent SDK 세션을 구버전에서 재개했을 때 compaction 요약이 빠졌거나 이미 요약된 이전 기록이 되살아난 것처럼 보였다면 이 결함이 원인 후보입니다.
|
|
2430
|
+
- CHANGELOG 원문: "Fixed the first transcript entry written after resuming a session being lost when a crash had cut the transcript's last line short"
|
|
2431
|
+
(300) 크래시로 트랜스크립트의 마지막 줄이 잘린 상태에서 세션을 재개하면, 재개 후 처음 기록되는 트랜스크립트 항목이 사라지던 결함이 수정되었습니다. 이 저장소에서 `transcript_path`를 언급하는 훅 스크립트는 3개입니다(`git grep -n -l 'transcript_path' -- .claude/hooks` 결과 `r007-r008-drift-advisor.sh`, `session-env-check.sh`, `task-outcome-recorder.sh`; `session-env-check.sh`의 언급은 `:48` 주석 1곳입니다). R020 「Self-Violation Counting Is Also Diagnosis」(`.claude/rules/MUST-completion-verification.md:381` 제목)는 위반 계수를 트랜스크립트 파싱으로 하라고 요구하므로, 구버전 크래시 후 재개 세션의 트랜스크립트로 계수할 때는 재개 직후 1건이 누락되었을 수 있음을 함께 적습니다.
|
|
2432
|
+
- CHANGELOG 원문: "Changed local session transcripts to also record each API request's system prompt, tools and parameters, so a transcript you choose to share can reproduce a request exactly"
|
|
2433
|
+
(300) 로컬 세션 트랜스크립트가 각 API 요청의 시스템 프롬프트, 도구, 파라미터도 기록하도록 바뀌었습니다. 유지보수자 기기의 로컬 트랜스크립트로 레코드 형태를 측정했습니다(17:22 KST, `~/.claude/projects/<프로젝트>/` 바로 아래 `*.jsonl` 중 2026-10-25 측정 세션(유지보수자 기기, 트랜스크립트 `version` 필드 최댓값 2.1.302)의 트랜스크립트 1개, 계수만 출력하는 스크립트로 측정; 세션이 진행 중이라 수치는 측정 시점 값입니다). 이 파일에는 `api-request` 52줄, `api-request-blob` 56줄, `api-request-shape` 2줄이 별도 최상위 줄로 기록되어 있었습니다. `version` 최댓값이 2.1.288·2.1.289·2.1.294인 같은 디렉토리 트랜스크립트 5개에는 세 타입이 0줄이었고, 2.1.300·2.1.301 트랜스크립트는 이 디렉토리에 없었습니다. `api-request-blob` 56줄은 모두 `.message.role`을 가졌고(system 41, assistant 11, user 4이며 user 4줄 중 `tool_result` 블록이 없는 줄은 1줄), `isSidechain` 키는 56줄 모두 없었습니다. role이 assistant인 blob 11줄의 content에는 모두 `tool_use` 블록이 있었고 그중 6줄에는 `text` 블록도 있었습니다. 같은 시점 `tail -n 200` 창(isSidechain 필터 후)에서 role이 assistant인 줄 23개 중 4개가 `api-request-blob`이었습니다. `r007-r008-drift-advisor.sh`는 레코드 최상위 `.type`을 보지 않고 `.message.role`로 줄을 고릅니다(`.type?`은 content 블록 판별에만 씁니다). assistant 줄 인덱스 목록 생성(`.claude/hooks/scripts/r007-r008-drift-advisor.sh:232`)과 그 마지막 원소를 마지막 assistant 줄로 고르는 선택(`:235`), 턴 경계 판정(`:249`~`:251`, content가 문자열이거나 `tool_result` 블록이 없는 user 줄을 경계로 봄), 턴 구성(`:265`)이 그렇고, `:229`의 필터는 `isSidechain`이 없는 줄을 통과시킵니다. 창은 `:339`에서 `tail -n 200`으로 읽고 `:340`에서 그 줄 수를 세어 `:343`에서 `$wlc`로 넘깁니다. `:262`는 창 안에 경계가 하나도 없고(`$bi`가 비어 있음) 창이 포화(`$wlc >= 200`)일 때에만 판정을 건너뜁니다. 따라서 blob 줄이 실제 응답 줄과 함께 턴으로 묶여 `tool_use`·announce가 이중 계수되거나, `tool_result`가 없는 user blob이 턴 경계로 잡힐 수 있습니다. 또한 추가된 줄이 실제 경계를 창 밖으로 밀어내 "경계 없음 + 포화" 조건이 더 자주 성립해 판정이 건너뛰어질 수 있습니다(반대로 `tool_result`가 없는 user blob은 창 안에 경계를 더할 수 있습니다) [가설 — 이 경로의 실제 오탐·미탐 발화는 관측되지 않음(not observed); 판정 기준은 2.1.300 이상 트랜스크립트에서 advisory 출력과 blob 줄을 제외한 재계산을 대조하는 것]. 또한 트랜스크립트 파일 크기가 커지므로, 트랜스크립트를 공유하거나 이슈에 첨부할 때 시스템 프롬프트 전문이 포함된다는 점을 확인합니다.
|
|
2434
|
+
|
|
2435
|
+
### MCP · 도구 검색
|
|
2436
|
+
|
|
2437
|
+
- CHANGELOG 원문: "Fixed automatic tool search (`ENABLE_TOOL_SEARCH=auto`) turning off part-way through a conversation, for example while MCP servers reconnect after a resume"
|
|
2438
|
+
(300) 자동 도구 검색(`ENABLE_TOOL_SEARCH=auto`)이 대화 도중, 예를 들어 resume 뒤 MCP 서버가 다시 연결되는 동안 꺼지던 결함이 수정되었습니다. 이 저장소는 `ENABLE_TOOL_SEARCH`를 설정하지 않으며(`git grep -n 'ENABLE_TOOL_SEARCH' -- . ':!guides/claude-code/15-version-compatibility.md' ':!templates/guides/claude-code/15-version-compatibility.md'` rc=1, `jq -c '.env // {}' .claude/settings.json` = `{}`), tracked 파일 `.mcp.json`에는 `eraser`·`ontology-rag` 두 서버가 있습니다(`git show HEAD:.mcp.json | jq -c '.mcpServers|keys'`; 이 파일은 `.gitignore:49` 패턴에도 걸리지만 `git ls-files`에 포함되며 작업트리와 HEAD의 차이는 없습니다, `git diff --quiet HEAD -- .mcp.json` rc=0). R005의 DETAIL 주석(자동 주입되지 않음)은 도구 부재를 결론짓기 전에 `ToolSearch`로 실측하라고 적고 있습니다(`.claude/rules/MAY-optimization.md:140`). 도구 검색 자체는 동작이 관측되었습니다. 2026-10-25 측정 세션(유지보수자 기기, 트랜스크립트 `version` 2.1.302)의 위임 에이전트 컨텍스트에 지연 도구 목록과 `ToolSearch`로 로드하라는 안내가 있었고, R018은 `ToolSearch` 지연 로드 실측을 기록합니다(`.claude/rules/MUST-agent-teams.md:492`). 측정하지 않은 것은 그 도구 검색이 `auto` 모드로 동작하는지 여부입니다. 따라서 구버전에서 resume 뒤 MCP 서버가 다시 연결되는 동안 지연 도구가 지연 처리 없이 노출되던 현상이 있었다면 이 결함의 산물일 수 있습니다 [가설 — 이 저장소 세션의 도구 검색 모드가 `auto`인지 측정하지 않음].
|
|
2439
|
+
- CHANGELOG 원문: "Fixed Claude not being told about an MCP server's tools and instructions until its next tool call, when the server finished connecting after a compaction"
|
|
2440
|
+
(300) compaction 뒤에 연결을 마친 MCP 서버의 도구와 지침이 다음 도구 호출 전까지 Claude에게 알려지지 않던 결함이 수정되었습니다. R019는 `ontology-rag` MCP 서버를 쓸 수 없으면 조용히 건너뛰라고 규정합니다(`.claude/rules/SHOULD-ontology-rag-routing.md:43`). 구버전 장기 세션에서 compaction 직후 라우팅 enrichment가 건너뛰어졌다면, 서버 부재가 아니라 이 고지 지연이 원인이었을 수 있습니다 [가설 — compaction 직후 `get_agent_for_task` 호출 가능 여부를 측정하지 않음].
|
|
2441
|
+
- CHANGELOG 원문: "Fixed a conversation failing on every turn with a 400 error when the API rejected an MCP tool's input schema; Claude Code now sends that tool without parameters for the rest of the conversation"
|
|
2442
|
+
(300) API가 어떤 MCP 도구의 입력 스키마를 거부하면 대화가 매 턴 400 오류로 실패하던 결함이 수정되었고, 이제 그 도구는 남은 대화 동안 파라미터 없이 전송됩니다. 결과어에 주의해야 합니다. 대화는 계속되지만 해당 MCP 도구는 파라미터 없이 노출되므로 정상 호출이 되지 않을 수 있습니다. R004 「Recovery」의 Retryable 행(`.claude/rules/SHOULD-error-handling.md:25`, 3회 backoff 재시도)으로는 이런 매 턴 400이 해소되지 않았을 것이며 [가설 — 구버전에서 재시도 결과를 측정하지 않음], 구버전에서 이 증상은 설정 오류가 아니라 특정 MCP 도구 스키마 거부였을 수 있습니다.
|
|
2443
|
+
- CHANGELOG 원문: "Fixed Claude searching for deferred tools already loaded earlier in the conversation when a session resumes a history that never listed them"
|
|
2444
|
+
(300) 지연 도구를 한 번도 나열하지 않은 기록을 재개한 세션에서, Claude가 대화 앞부분에서 이미 로드한 지연 도구를 다시 검색하던 결함이 수정되었습니다. R018 「멤버 도구 부재 시 대체 규약」은 `SendMessage`를 `ToolSearch`(query "select:SendMessage")로 지연 로드한 실측을 기록합니다(`.claude/rules/MUST-agent-teams.md:492`). 이 수정은 중복 검색 비용을 줄이는 방향이며 `SendMessage` 부재를 전제하기 전에 먼저 로드를 시도하라는 그 규약의 절차를 바꾸지 않습니다.
|
|
2445
|
+
|
|
2446
|
+
### 모니터링 (OpenTelemetry)
|
|
2447
|
+
|
|
2448
|
+
- CHANGELOG 원문: "Added `cache_creation_5m_tokens` and `cache_creation_1h_tokens` to the OpenTelemetry `api_request` event, splitting cache writes by lifetime"
|
|
2449
|
+
(300) OpenTelemetry `api_request` 이벤트에 `cache_creation_5m_tokens`와 `cache_creation_1h_tokens`가 추가되어 캐시 쓰기를 수명별로 나눠 볼 수 있습니다. 이 저장소의 `monitoring-setup` 스킬은 OpenTelemetry console 출력으로 API 요청 이벤트를 포함한 사용 지표를 보여 준다고 설명합니다(`.claude/skills/monitoring-setup/SKILL.md:11`). 스킬 절차 자체는 바뀌지 않으며, 캐시 TTL 관련 비용을 진단할 때 이 두 필드를 근거로 쓸 수 있습니다. 상태줄과 훅은 캐시 쓰기 토큰을 직접 읽지 않습니다(`git grep -n -E 'cache_creation' -- .claude/hooks .claude/statusline.sh` rc=1).
|
|
2450
|
+
|
|
2451
|
+
### 도구 동작
|
|
2452
|
+
|
|
2453
|
+
- CHANGELOG 원문: "Fixed Claude naming files in the session scratchpad by a bare filename or relative path instead of their full path"
|
|
2454
|
+
(300) Claude가 세션 scratchpad의 파일을 전체 경로가 아니라 파일 이름만 또는 상대 경로로 부르던 결함이 수정되었습니다. 이 저장소의 auto-dev 파이프라인은 위임이 만드는 임시 파일을 `$TMPDIR`나 세션 scratchpad 아래의 에이전트별 고유 경로에 두라고 요구합니다(`.claude/skills/pipeline/workflows/auto-dev.yaml:835`~`:836`). 구버전 서브에이전트 보고에서 scratchpad 파일이 이름만으로 언급되었다면 저장소 루트 기준 상대 경로로 오독될 수 있었으므로, 보고된 경로는 `ls`로 실재를 확인한 뒤 사용합니다.
|
|
2455
|
+
|
|
2456
|
+
### Artifact 도구
|
|
2457
|
+
|
|
2458
|
+
- CHANGELOG 원문: "Improved artifact updates: Claude now applies a small change and republishes the artifact in one call, and makes larger edits and republishes within a single response"
|
|
2459
|
+
(300) artifact 갱신 방식이 바뀌어, 작은 변경은 한 번의 호출로 적용해 다시 게시하고 큰 편집은 한 응답 안에서 편집과 재게시를 함께 합니다. 바로 다음 릴리즈인 2.1.301 절에는 "Fixed artifact updates being refused where a PreToolUse hook covers Edit or Write; Claude now edits the file and then republishes instead of changing it in the publish call"이 있습니다. 이 저장소의 PreToolUse 훅 matcher에는 Edit·Write를 덮는 항목이 여럿 있습니다(`jq -c '[.hooks.PreToolUse[]? | .matcher]' .claude/settings.json` 결과에 `"Write|Edit"`, `"Write"`, `"Edit|Write"`, `"Edit"`, `"Write|Edit|Bash"` 포함). 따라서 이 저장소에서 Artifact 도구로 artifact를 갱신한 세션은 2.1.301 수정 이전에 그 거부 조건에 해당했을 수 있습니다. CHANGELOG는 301 항목을 회귀로 표시하지 않으므로, 300의 한 번 호출 갱신 방식이 그 거부를 낳았다는 인과는 [가설 — 2.1.300과 2.1.301에서 같은 PreToolUse 훅 아래 artifact 갱신을 재현해 비교하지 않음]입니다. 관측한 범위(`git grep -n -l -E 'Artifact tool|Artifact\(|action: *"?publish' -- .claude/skills .claude/agents` rc=1)에서 이 저장소의 스킬·에이전트는 Artifact 도구 사용을 정의하지 않습니다.
|
|
2460
|
+
|
|
2461
|
+
기타 71건 — 이 저장소 비해당(mods API(`virtualText`, `$.ui.view`, `Text`의 `dir`, `agent.spawn`·`prompt.change`·`prompt.edit`·`prompt.submit` 훅, 핫 리로드 안내), Claude Platform on AWS의 `/advisor`, OpenTelemetry GenAI 속성·`git_commit_id`·`user_prompt` 이벤트, cloud sessions·Cowork·Remote Control·`claude remote-control`·`claude daemon`·self-hosted runner 항목, `claude agents` 화면·`/tasks`·breadcrumb·agents view 입력 처리 같은 UI 세부, `--worktree`·reftable 저장소·plugin `WorktreeCreate`/`WorktreeRemove` 훅, `forceLoginOrgUUID`·`forceLoginGatewayUrl`·`claude gateway`·`CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST`, `/autocompact` 경고 문구, `claude --help`의 `--restricted` 설명, `/branch`·`claude purge`의 U+2028/U+2029 처리, gzip 요청 압축, 번들 `claude-api`·`plugin-authoring` 스킬, Artifact 도구 진행 표시, Claude 3 모델의 PDF 안내, TLS 검사 프록시 뒤 feature flag, 어두운 ANSI 테마, `/sandbox` 문구, VSCode·Windows·`[Cloud sessions]`·`[Remote Control]`·`[Claude Tag]`·`[Code Review]` 항목). 실측: `gh release view v2.1.300 --repo anthropics/claude-code --json body --jq .body | grep -c '^- '` = 88건 중 위 본문 17건을 다뤘으므로 88 − 17 = 71건입니다. 계수 범위는 해당 릴리즈 노트의 최상위 불릿 줄(`- `로 시작하는 줄)입니다.
|
|
2462
|
+
|
|
2463
|
+
**Action items**:
|
|
2464
|
+
- 훅 설정 변경은 필요하지 않습니다. 위 jq·`git grep` 결과상 두 settings 파일에는 SessionEnd 훅과 `agent` 타입 훅이 없고, 훅이 `updatedInput`을 출력하지 않습니다.
|
|
2465
|
+
- 측정한 트랜스크립트 1개(기기 로컬, 2.1.302)에서는 트랜스크립트 기록 확장으로 생긴 `api-request-blob` 줄이 모두 `.message.role`을 가졌으므로, 그런 줄은 `r007-r008-drift-advisor.sh`의 role 기반 선택(`:232`, `:249`~`:251`, `:265`)에 섞일 수 있습니다. 레코드 형태는 위와 같이 측정했으나 실제 오판 발화는 관측되지 않았으므로 영향은 [가설]로 남기고, advisory 출력과 blob 제외 재계산을 대조한 뒤 판단합니다.
|
|
2466
|
+
- (300) 항목 중 `[가설 — …]` 표기는 판정 기준을 충족하는 측정이 이루어지기 전에는 결론으로 쓰지 않습니다.
|
|
2467
|
+
|
|
2468
|
+
---
|
|
2469
|
+
|
|
2470
|
+
## v2.1.301 (2026-10-15)
|
|
2471
|
+
|
|
2472
|
+
> Issue: #1863 — Claude Code v2.1.301 compatibility documentation
|
|
2473
|
+
> Scope-ceiling check (R017): 조사 시점(2026-10-25)의 최신 릴리즈는 2.1.310입니다(`claude --version`=2.1.310, `npm view @anthropic-ai/claude-code version`=2.1.310). 상한 이후 릴리즈 2.1.302~2.1.310의 CHANGELOG 절을 각각 잘라 "2.1.301"과 "Revert"를 검색했으며(`awk -v v="<버전>" '/^## /{p=($2==v)} p' CHANGELOG.md`로 자른 절마다 `grep -c -F`), 두 문자열 모두 9개 절에서 0건이었습니다. 따라서 이 릴리즈 항목을 되돌리거나 회귀로 지목하는 문장은 관측한 범위에서 없습니다. 릴리즈 게시 시각은 2026-10-15T19:22:06Z입니다(`gh release view v2.1.301 -R anthropics/claude-code --json publishedAt`).
|
|
2474
|
+
|
|
2475
|
+
### 훅
|
|
2476
|
+
|
|
2477
|
+
- CHANGELOG 원문: "Fixed artifact updates being refused where a PreToolUse hook covers Edit or Write; Claude now edits the file and then republishes instead of changing it in the publish call"
|
|
2478
|
+
(301) Edit나 Write를 대상으로 하는 PreToolUse 훅이 있는 환경에서 artifact 갱신이 거부되던 결함이 수정되어, 이제 Claude가 게시 호출 안에서 파일을 바꾸는 대신 파일을 편집한 뒤 다시 게시합니다. 이 저장소는 matcher에 Edit 또는 Write가 들어간 PreToolUse 항목 5개를 프로젝트 settings에 배선하므로(`.claude/settings.json:45` `Write|Edit`, `:85` `Write`, `:95` `Edit|Write`, `:105` `Edit`, `:115` `Write|Edit|Bash`; `jq -r '.hooks.PreToolUse[].matcher' .claude/settings.json`) 원문의 조건에 해당합니다. 2.1.300 CHANGELOG의 "Improved artifact updates: Claude now applies a small change and republishes the artifact in one call, and makes larger edits and republishes within a single response"가 게시 호출 하나로 바꾸는 경로를 도입한 것으로 읽힙니다. 이 수정의 원문은 새 동작("Claude now edits the file and then republishes instead of changing it in the publish call")이 PreToolUse 훅 환경에만 적용되는지, 모든 artifact 갱신에 적용되는지 명시하지 않습니다. 다만 CHANGELOG는 이 결함을 2.1.300의 회귀로 명시하지 않으므로 두 항목의 인과는 확정하지 않습니다. 이 저장소 세션의 artifact 게시가 실제로 거부됐는지는 관측하지 못했습니다 [가설 — 판정 범위를 우선 2.1.300 세션으로 좁혀, 그 트랜스크립트의 artifact 게시 거부 기록으로 판정. 작성 기기의 이 프로젝트 트랜스크립트 디렉토리에는 `version` 최댓값이 2.1.300·2.1.301인 파일이 없으므로(2026-10-25 17:50 KST, 파일별 `version` 최댓값 계수), 해당 버전 트랜스크립트가 없는 기기에서는 같은 PreToolUse 훅 구성으로 2.1.300과 2.1.301에서 artifact 게시를 재현해 비교].
|
|
2479
|
+
- CHANGELOG 원문: "Fixed quitting removing a worktree made by a `WorktreeCreate` hook without asking when it may hold unpushed commits"
|
|
2480
|
+
(301) `WorktreeCreate` 훅이 만든 worktree를, 푸시되지 않은 커밋이 있을 수 있는데도 종료 시 묻지 않고 제거하던 결함이 수정되었습니다. R006은 이 이벤트를 훅 이벤트 카탈로그에 나열하지만(`.claude/rules/MUST-agent-design.md:255`, DETAIL 주석 — 자동 주입되지 않음; 보이는 요약은 `:257`의 "33개 이벤트 타입"), 프로젝트 settings와 templates 미러의 `hooks` 키에는 `WorktreeCreate`가 0건입니다(`jq -r '.hooks|keys[]' <파일> | grep -c WorktreeCreate`를 `.claude/settings.json`과 `templates/.claude/settings.json`에 각각 실행해 둘 다 0). 따라서 이 저장소 설정 범위에서는 영향 조건이 관측되지 않았습니다.
|
|
2481
|
+
- CHANGELOG 원문: "Fixed the permission prompt for a plugin or skill hook's `ask` decision not showing which plugin or skill the hook comes from"
|
|
2482
|
+
(301) 플러그인이나 스킬 훅이 `ask` 결정을 낼 때의 권한 프롬프트가 그 훅의 출처 플러그인·스킬을 보여 주지 않던 결함이 수정되었습니다. 관측한 범위에서 이 저장소의 스킬·에이전트 frontmatter에는 `hooks:` 필드가 없고(`git grep -l -E '^hooks:' -- '.claude/skills/*/SKILL.md' '.claude/agents/*.md'` 출력 없음), 프로젝트 훅에서 `permissionDecision`을 출력하는 곳도 없습니다(`git grep -n -E 'permissionDecision' -- .claude/hooks .claude/settings.json` rc=1). 위 두 측정 범위에서 이 저장소가 배포하는 스킬·훅은 이 수정의 대상이 아니며, 사용 중인 외부 플러그인(superpowers 등) 훅이 `ask`를 내는지는 관측하지 않았습니다 [가설 — 플러그인 훅 소스의 `ask` 출력 여부로 판정].
|
|
2483
|
+
|
|
2484
|
+
### 스킬 · Workflow
|
|
2485
|
+
|
|
2486
|
+
- CHANGELOG 원문: "Fixed skills and commands with very many or very long argument names stalling for seconds when invoked; only the first 64 names, each up to 64 characters, are now filled in"
|
|
2487
|
+
(301) 인자 이름이 매우 많거나 긴 스킬·커맨드가 호출 시 수 초간 멈추던 결함이 수정되어, 이제 앞의 64개 이름(각 64자까지)만 채워집니다. 이름 붙은 인자를 선언하는 `arguments:` frontmatter는 이 저장소 스킬에서 0건이며(`git grep -c -E '^arguments:' -- '.claude/skills/*/SKILL.md'` 출력 없음), 추적된 SKILL.md 114개 중 50개는 표시용 `argument-hint:`를 씁니다(`git grep -l -E '^argument-hint:' -- '.claude/skills/*/SKILL.md' | wc -l`=50, `git ls-files -- '.claude/skills/*/SKILL.md' | wc -l`=114). 따라서 64개 상한에 걸리는 스킬은 관측되지 않았습니다.
|
|
2488
|
+
- CHANGELOG 원문: "Fixed skills, commands and hooks using very large amounts of memory when their arguments fill many placeholders"
|
|
2489
|
+
(301) 인자가 많은 자리표시자를 채울 때 스킬·커맨드·훅이 매우 많은 메모리를 쓰던 결함이 수정되었습니다. 이 저장소에서 자리표시자 후보 문자열(`$ARGUMENTS` 또는 `$<숫자>`)이 있는 스킬 파일은 8개이며(`git grep -l -P '\$ARGUMENTS|\$[0-9]\b' -- '.claude/skills/*/SKILL.md' | wc -l`=8), 이 수에는 셸 예시 코드의 `$1` 같은 비자리표시자도 섞여 있을 수 있습니다. `$ARGUMENTS`를 쓰는 파일은 1개입니다(`git grep -c -P '\$ARGUMENTS' -- '.claude/skills/*/SKILL.md'` 1건, `.claude/skills/ambiguity-gate/SKILL.md`). "많은 자리표시자" 조건에 해당하는 스킬이 있는지는 판정하지 못했습니다 [가설 — 스킬 호출 전후 프로세스 메모리 측정으로 판정].
|
|
2490
|
+
- CHANGELOG 원문: "Fixed skills no longer being listed to the model after using `/rewind`"
|
|
2491
|
+
(301) `/rewind` 사용 후 스킬 목록이 모델에게 더 이상 제공되지 않던 결함이 수정되었습니다. 이 저장소 세션은 추적된 SKILL.md 114개(`git ls-files -- '.claude/skills/*/SKILL.md' | wc -l`=114)의 라우팅 스킬과 슬래시 커맨드 스킬을 모델이 볼 수 있는 스킬 목록에 의존하므로, 구버전에서 `/rewind` 뒤에 스킬 라우팅이 실패했다면 그 원인이 이 결함일 수 있습니다 [가설 — 2.1.301 미만에서 `/rewind` 직후 Skill 호출 실패 기록으로 판정].
|
|
2492
|
+
- CHANGELOG 원문: "Fixed workflow agents sometimes skipping their step, and the run still reporting success, after reading the harness note that their task text carries no user authority"
|
|
2493
|
+
(301) workflow 에이전트가 자기 작업 텍스트에 사용자 권한이 없다는 하네스 안내문을 읽은 뒤 가끔 단계를 건너뛰고, 실행은 여전히 성공으로 보고되던 결함이 수정되었습니다. R023은 Workflow 스크립트 실행 전 결정론적 점검을 규정하고(`.claude/rules/SHOULD-verification-ladder.md:322`), R020은 "실행함"과 "성공함"을 구분합니다. 원문의 "sometimes"대로 구버전 Workflow 실행의 성공 보고는 각 단계의 실제 수행을 보장하지 않았으므로, 그 산출물은 결정론적 ground-truth로 다시 확인하는 것이 좋습니다. `dag-orchestration`·`task-decomposition` 스킬은 신규 작업에 네이티브 Workflow tool을 권장합니다(`.claude/skills/dag-orchestration/SKILL.md:11`, `.claude/skills/task-decomposition/SKILL.md:11`). 관측한 범위(`git ls-files | grep -i -E 'workflow.*\.(js|mjs)$'` 출력 없음)에서 추적된 Workflow 스크립트 파일은 없습니다. 이름에 workflow가 들어간 `.claude/skills/pipeline/workflows/auto-dev.yaml`은 pipeline 스킬의 YAML 정의이며, 스킬 파일 중 Workflow tool이나 `scriptPath`를 언급하는 것은 위 두 스킬이고 pipeline 스킬은 들어 있지 않습니다(`git grep -n -i -P 'Workflow tool|scriptPath' -- '.claude/skills/*/SKILL.md'`).
|
|
2494
|
+
- CHANGELOG 원문: "Fixed workflow scripts asking for permission or being refused when read, edited or re-run after a Bash `cd` in the same session"
|
|
2495
|
+
(301) 같은 세션에서 Bash `cd` 뒤에 workflow 스크립트를 읽거나 편집하거나 다시 실행할 때 권한을 묻거나 거부되던 결함이 수정되었습니다. R005는 Bash `cd`가 세션 cwd로 남아 상대 경로가 어긋날 수 있다며 지속 `cd`를 금지합니다(`.claude/rules/MAY-optimization.md:89`, #1778, #1767). 이 수정은 workflow 스크립트 경로에 한정되며 다른 스크립트·도구의 상대 경로 문제를 다루지 않으므로, R005의 지속 `cd` 금지는 그대로 유효합니다.
|
|
2496
|
+
|
|
2497
|
+
### 도구 동작 · 권한
|
|
2498
|
+
|
|
2499
|
+
- CHANGELOG 원문: "Fixed Grep and Glob reporting no matches when the search program failed unexpectedly before returning any results; they now return an error saying the search failed"
|
|
2500
|
+
(301) 검색 프로그램이 결과를 내기 전에 예기치 않게 실패했을 때 Grep·Glob이 "일치 없음"으로 보고하던 결함이 수정되어, 이제 검색 실패 오류를 반환합니다. 관측한 범위(`git grep -l -P '^\s*-\s*(Grep|Glob)\s*$|^tools:.*\b(Grep|Glob)\b' -- '.claude/agents/*.md' | wc -l`=50, 에이전트 파일 50개)에서 모든 에이전트 파일이 `tools:`에 Grep 또는 Glob을 명시하며, R002는 이렇게 명시한 `qa-writer` 1건이 전용 `Grep`/`Glob`을 받았다는 실측을 기록하고, 다른 에이전트로의 일반화는 추정으로 둡니다(`.claude/rules/MUST-permissions.md:18`). 따라서 2.1.301 미만에서 서브에이전트가 보고한 Grep·Glob의 0건 결과는 검색 실패가 위장된 것일 수 있었습니다. R005의 2.1.275 노트(`.claude/rules/MAY-optimization.md:120`, DETAIL 주석 — 자동 주입되지 않음)는 재확인 대상을 "대용량 출력 탐색"의 0건 결과로 한정하므로, 이 항목은 그 노트가 이미 덮는 경우가 아닙니다. 같은 재확인 원칙(0건 결과를 `git grep` 등 독립 경로로 다시 확인)을 검색 프로그램 실패 경로로 확장 적용하는 근거로 기록합니다. 보이는 R005 본문은 저장소 전수조사에 `git grep`을 표준으로 둡니다(`.claude/rules/MAY-optimization.md:87`).
|
|
2501
|
+
- CHANGELOG 원문: "Fixed the Read tool reading binary files such as .xlsm, .parquet, .epub and .heic as text"
|
|
2502
|
+
(301) Read 도구가 .xlsm, .parquet, .epub, .heic 같은 바이너리 파일을 텍스트로 읽던 결함이 수정되었습니다. 이 저장소에서 이 네 확장자의 추적 파일은 0개이므로(`git ls-files -- '*.xlsm' '*.parquet' '*.epub' '*.heic' | wc -l`=0) 저장소 파일 범위에서는 영향 조건이 관측되지 않았습니다.
|
|
2503
|
+
- CHANGELOG 원문: "Fixed a tool call cut off by a message sent mid-turn during its permission check being reported to the model as rejected by the user"
|
|
2504
|
+
(301) 권한 검사 중에 턴 도중 보낸 메시지로 끊긴 도구 호출이 모델에게 "사용자가 거부함"으로 보고되던 결함이 수정되었습니다. R020은 비파괴 맥락에서 인터럽트 직후 직전 요청을 "취소"로 단정하지 말라고 규정하며(`.claude/rules/MUST-completion-verification.md:307`, 적용 범위는 `:293`의 "비파괴 한정"이고 파괴적 작업은 `:299`의 Safety Carve-Out이 정지를 우선합니다), R015는 사용자 지정 도구가 실패해도 같은 도구를 재시도하라고 규정합니다(`.claude/rules/MUST-intent-transparency.md:87`). 구버전에서 모델이 받은 "사용자 거부" 신호는 실제 거부가 아니라 턴 도중 메시지에 의한 절단이었을 수 있으므로, 그 신호를 근거로 작업을 포기하거나 다른 도구로 바꾼 사례는 재해석 대상입니다 [가설 — 해당 세션 트랜스크립트에서 거부 직전 사용자 메시지 유무로 판정].
|
|
2505
|
+
|
|
2506
|
+
### 컨텍스트 · 모델 · headless
|
|
2507
|
+
|
|
2508
|
+
- CHANGELOG 원문: "Added `CLAUDE_CODE_RETRY_WATCHDOG_MAX_USAGE_LIMIT_WAIT_MS` so unattended retry mode (`CLAUDE_CODE_RETRY_WATCHDOG`) ends a request at a usage limit that resets too far away instead of waiting"
|
|
2509
|
+
(301) 무인 재시도 모드(`CLAUDE_CODE_RETRY_WATCHDOG`)가 너무 먼 시점에 초기화되는 사용량 한도에서 기다리지 않고 요청을 끝내도록 하는 `CLAUDE_CODE_RETRY_WATCHDOG_MAX_USAGE_LIMIT_WAIT_MS`가 추가되었습니다. 이 저장소는 무인 `claude -p` 실행에서 `/fsd`를 쓸 수 있다고 안내하지만(`.claude/skills/fsd/SKILL.md:172`), `RETRY_WATCHDOG` 계열 env는 추적되는 프로젝트 settings와 templates 미러에서 0건입니다(`grep -c RETRY_WATCHDOG .claude/settings.json templates/.claude/settings.json` 모두 0). 새 env도 이 가이드 밖의 추적 파일에서 0건이므로(`git grep -n RETRY_WATCHDOG_MAX -- . ':!guides/claude-code/15-version-compatibility.md' ':!templates/guides/claude-code/15-version-compatibility.md'` rc=1) 저장소 설정 범위에서는 동작이 바뀌지 않습니다. 작성 기기의 `.claude/settings.local.json`은 추적되지 않는 gitignore 대상이므로(`git ls-files -- .claude/settings.local.json` 출력 없음, `git check-ignore -v --no-index .claude/settings.local.json` = `.gitignore:40:.claude/*`) 저장소 근거에서 뺐으며, 그 파일에서도 0건이었던 것은 로컬 관측일 뿐입니다.
|
|
2510
|
+
- CHANGELOG 원문: "Fixed the `fable` (and `best`) model alias erroring on the Anthropic API when the newest Fable model is not available to your organization: Claude Code now retries once on the previous Fable model"
|
|
2511
|
+
(301) 조직에서 최신 Fable 모델을 쓸 수 없을 때 `fable`(및 `best`) 별칭이 Anthropic API에서 오류를 내던 결함이 수정되어, 이제 이전 Fable 모델로 한 번 재시도합니다. R006은 `fable`을 Agent 도구 `model` 파라미터의 Tier-3 값으로 둡니다(`.claude/rules/MUST-agent-design.md:70`). 에이전트 frontmatter에서 Fable을 지정한 파일은 관측한 범위에서 0개입니다(`git grep -n -E '^model: *(claude-)?fable' -- '.claude/agents/*.md'` rc=1). 이 수정 이후 `model: "fable"` 스폰은 오류 대신 이전 Fable 모델로 실행될 수 있으므로, 실행 모델이 중요한 위임에서는 스폰 결과의 실제 모델을 확인하는 것이 좋습니다 [가설 — 최신 Fable을 쓸 수 없는 조직에서 스폰 결과의 `resolvedModel`로 판정].
|
|
2512
|
+
- CHANGELOG 원문: "Improved switching to a model with a smaller context window: a conversation too long for the new model is now summarized by the previous model first"
|
|
2513
|
+
(301) 컨텍스트 창이 더 작은 모델로 바꿀 때, 새 모델에 너무 긴 대화를 이전 모델이 먼저 요약하도록 개선되었습니다. R006과 R013은 `CLAUDE_CODE_DISABLE_1M_CONTEXT` 설정 여부에 따라 1M 창 모델이 실효 200K로 동작할 수 있다고 기록합니다(`.claude/rules/MUST-agent-design.md:85`, DETAIL 주석 — 자동 주입되지 않음; `.claude/rules/SHOULD-ecomode.md:91`). 1M 창 세션에서 더 작은 창의 모델로 `/model` 전환하면 이 요약이 개입할 수 있습니다 [가설 — 이 저장소 세션의 모델 전환 사례는 미관측].
|
|
2514
|
+
- CHANGELOG 원문: "Fixed a case where switching to a model with a smaller context window could spend usage credits on a summary by the previous model without asking first"
|
|
2515
|
+
(301) 더 작은 창의 모델로 전환할 때 이전 모델의 요약에 묻지 않고 사용 크레딧을 쓸 수 있던 경우가 수정되었습니다. 이전 모델이 요약하는 동작은 전체 CHANGELOG에서 2.1.301 절의 이 항목과 위 항목 두 줄에만 나타나므로(`grep -c -F 'by the previous model' CHANGELOG.md`=2, 두 줄 모두 2.1.301 절 범위 안), 그 동작이 언제부터 있었는지는 CHANGELOG로 확정할 수 없습니다. 비용 상한 advisory 훅 `cost-cap-advisor.sh`는 상태줄 브리지 파일 `/tmp/.claude-cost-${PPID}`의 누적 비용을 읽으므로(`.claude/hooks/scripts/cost-cap-advisor.sh:10`, `:43`), 그 동작이 있던 버전에서는 모델 전환 직후의 비용 증가가 이 요약 비용이었을 수 있습니다 [가설 — 먼저 해당 버전에 이전 모델 요약 동작이 있었는지 확인하고, 있었다면 전환 전후 `/cost` 차이로 판정].
|
|
2516
|
+
- CHANGELOG 원문: "Fixed conversations being compacted over and over, on a model you didn't pick, behind an LLM gateway whose responses name a different model than the one requested"
|
|
2517
|
+
(301) 요청한 모델과 다른 모델 이름을 응답에 적는 LLM gateway 뒤에서, 대화가 고르지 않은 모델로 반복 compaction되던 결함이 수정되었습니다. `ANTHROPIC_BASE_URL`은 추적되는 프로젝트 settings와 templates 미러에서 0건이므로(`grep -c ANTHROPIC_BASE_URL .claude/settings.json templates/.claude/settings.json` 모두 0) 저장소가 추적하는 설정은 gateway를 지정하지 않습니다. 사용자 셸 env, user scope 설정, gitignore된 로컬 settings의 gateway 사용 여부는 저장소 사실이 아니어서 판정에서 뺐습니다 [가설 — 실행 환경의 `ANTHROPIC_BASE_URL` 설정 여부로 판정].
|
|
2518
|
+
|
|
2519
|
+
### 텔레메트리
|
|
2520
|
+
|
|
2521
|
+
- CHANGELOG 원문: "Added `classifier_verdict` and `permission_mode` to OpenTelemetry `tool_decision` events, so auto mode classifier decisions can be told apart from permission rules"
|
|
2522
|
+
(301) OpenTelemetry `tool_decision` 이벤트에 `classifier_verdict`와 `permission_mode`가 추가되어, auto mode 분류기의 결정을 권한 규칙과 구분할 수 있습니다. `monitoring-setup` 스킬은 `claude_code.tool_decision` 이벤트를 관측 대상으로 나열합니다(`.claude/skills/monitoring-setup/SKILL.md:182`). R010 Self-Check 항목 1은 무인 실행 전에 유효 permission mode를 settings 파일과 실행 플래그로 실측하라고 규정하며(`.claude/rules/MUST-orchestrator-coordination.md:606`), 이 속성은 그 실측을 도구 호출 단위로 보강하는 관측 수단이 될 수 있습니다 [가설 — `permission_mode` 값이 R010이 정의하는 유효 모드와 같은지는 미실측, 같은 세션에서 `claude -p` init `permissionMode`와 대조해 판정].
|
|
2523
|
+
- CHANGELOG 원문: "Added `classifier_category` to OpenTelemetry `tool_decision` events, naming the built-in rule a classifier block matched, when `OTEL_LOG_TOOL_DETAILS=1`"
|
|
2524
|
+
(301) `OTEL_LOG_TOOL_DETAILS=1`일 때 OpenTelemetry `tool_decision` 이벤트에 분류기 차단이 일치한 내장 규칙 이름인 `classifier_category`가 추가되었습니다. R010 STOP Protocol은 서브에이전트가 safety classifier에 2회 걸리면 중단하고 재설계하라고 규정하고(`.claude/rules/MUST-orchestrator-coordination.md:262`), 같은 파일의 2.1.268 노트는 auto mode 거부 화면에 규칙 이름이 표시된다고 기록합니다(`:731`, DETAIL 주석 — 자동 주입되지 않음). 이 속성은 차단 사유를 텔레메트리에도 규칙 단위로 남기므로 재설계 범위를 정할 때 증거로 쓸 수 있으나, 2.1.282부터 project·local settings의 `OTEL_LOG_*` 변수는 무시되므로 user scope 설정이나 셸 export가 필요합니다(`.claude/skills/monitoring-setup/SKILL.md:24`).
|
|
2525
|
+
|
|
2526
|
+
기타 33건 — 이 저장소 비해당(mods API(`Input`의 `rows`, `$.model.fork`, 훅 `.catch`, `$.env.set`, 질문 대화상자 위 트리)·`claude-api` 번들 스킬의 OpenTelemetry 안내와 CMEK 문구·Self-hosted runner·`[VSCode]`·Windows 전용 항목, vim mode(`%` motion, INSERT 유지, AskUserQuestion Esc), 터미널 렌더링(VTE·iTerm2 잔여 문자, 어두운 ANSI 테마, 헤더 행만 있는 Markdown 표, fullscreen compaction 정지, 장시간 서브에이전트 진행 표시 렌더링), artifact 페이지의 sticky header 위 띠 칠하기, 로그인·디스크 가득 참 오류 문구·토큰 갱신 시간 초과, `awsAuthRefresh`, 재개 세션의 compaction 행 안내, "/clear" 힌트, reftable 저장소의 `/diff` 등 harness 비영향 세부사항으로 분류했습니다 [가설 — 범주별 저장소 사용 여부는 개별 실측하지 않음]). 실측: `gh release view v2.1.301 --repo anthropics/claude-code --json body --jq .body | grep -c '^- '` = 51건 중 위 본문 18건을 다뤘으므로 51 − 18 = 33건입니다. 계수 범위는 해당 릴리즈 노트의 최상위 불릿 줄(`- `로 시작하는 줄)입니다.
|
|
2527
|
+
|
|
2528
|
+
**Action items**:
|
|
2529
|
+
- 이 문서의 규범 변경 제안은 없습니다(CC 2.1.301 CHANGELOG 항목 기준). 위 항목 대부분은 저장소가 추적하는 구성에서 해당 조건(`WorktreeCreate` 훅, 스킬·에이전트 `hooks:`, `arguments:` frontmatter, gateway 설정, watchdog env, 대상 바이너리 확장자 파일)이 관측되지 않았거나, 본문이 인용한 기존 룰(R002, R005, R006, R010, R013, R015, R020, R023)의 전제를 보강하는 항목입니다. 예외는 네 항목입니다. artifact 항목은 저장소가 원문 조건에 해당하며(PreToolUse matcher 5개) 룰 인용 없이 아래 후속 후보 (3)으로 추적합니다. `/rewind` 항목과 모델 전환 크레딧 항목은 룰 인용 없이 [가설]로 남긴 회고 판정이며, 자리표시자 항목은 조건에 해당하는 스킬이 있는지 판정하지 못했습니다.
|
|
2530
|
+
- 후속 실측 후보: (1) OpenTelemetry `tool_decision`의 `permission_mode` 값과 `claude -p` init `permissionMode`를 같은 세션에서 대조합니다. (2) 최신 Fable을 쓸 수 없는 조직에서 `model: "fable"` 스폰의 `resolvedModel`을 확인합니다. (3) 2.1.300 세션 트랜스크립트에서 PreToolUse 훅 환경의 artifact 게시 거부 기록을 확인하고, 기기에 해당 버전 트랜스크립트가 없으면 같은 훅 구성으로 2.1.300과 2.1.301에서 재현해 비교합니다.
|
|
2531
|
+
|
|
2532
|
+
---
|
|
2533
|
+
|
|
2534
|
+
## v2.1.302 (2026-10-16)
|
|
2535
|
+
|
|
2536
|
+
> Issue: #1864 — Claude Code v2.1.302 compatibility documentation
|
|
2537
|
+
> Scope-ceiling check (R017): 조사 시점(2026-10-25)의 최신 릴리즈는 2.1.310입니다(`claude --version`=2.1.310, `npm view @anthropic-ai/claude-code version`=2.1.310). 상한 이후 릴리즈 2.1.303~2.1.310의 CHANGELOG 절을 각각 잘라 "2.1.302"와 "Revert"를 검색했으며(`awk -v v="<버전>" '/^## /{p=($2==v)} p' CHANGELOG.md`로 자른 절마다 `grep -c -F`), 두 문자열 모두 8개 절에서 0건이었습니다. 같은 범위의 "regression" 문장은 2.1.305 절의 두 건이며, 각각 "(a 2.1.304 regression)"과 "(a 2.1.300 regression)"을 지목하므로 이 릴리즈의 회귀 수정이 아닙니다. 따라서 이 릴리즈 항목을 되돌리거나 회귀로 지목하는 문장은 관측한 범위에서 없습니다. 릴리즈 게시 시각은 2026-10-16T20:53:06Z입니다(`gh release view v2.1.302 -R anthropics/claude-code --json publishedAt`).
|
|
2538
|
+
|
|
2539
|
+
### 에이전트 · 서브에이전트
|
|
2540
|
+
|
|
2541
|
+
- CHANGELOG 원문: "Changed fork subagents (`subagent_type: "fork"`) to be on by default in `claude -p`, the Agent SDK, the desktop app and VS Code, as they already are in the terminal; `CLAUDE_CODE_FORK_SUBAGENT=0` turns them off, and `claude mcp serve` never offers them"
|
|
2542
|
+
(302) fork 서브에이전트(`subagent_type: "fork"`)가 터미널과 같이 `claude -p`, Agent SDK, 데스크톱 앱, VS Code에서도 기본으로 켜지도록 바뀌었으며, `CLAUDE_CODE_FORK_SUBAGENT=0`으로 끌 수 있고 `claude mcp serve`는 이를 제공하지 않습니다. R009의 2.1.232 노트는 fork가 전체 대화와 prompt cache를 상속하므로 "Instance independence — Isolated context, no shared state" 행이 fork에는 성립하지 않는다고 기록합니다(`.claude/rules/MUST-parallel-execution.md:200`, DETAIL 주석 — 자동 주입되지 않음). 그 노트는 실행 환경을 구분하지 않지만, 원문("as they already are in the terminal")에 따르면 이 변경 전에는 `claude -p`에서 fork가 기본으로 켜져 있지 않았습니다. 이 변경으로 무인 `claude -p`에서 도는 `/fsd`(`.claude/skills/fsd/SKILL.md:172`)에서도 그 노트의 전제가 기본으로 적용됩니다. `CLAUDE_CODE_FORK_SUBAGENT`는 이 가이드 밖의 추적 파일에서 0건이므로(`git grep -c -F CLAUDE_CODE_FORK_SUBAGENT -- . ':!guides/claude-code/15-version-compatibility.md' ':!templates/guides/claude-code/15-version-compatibility.md'` 출력 없음) 저장소 설정으로 끄지 않습니다.
|
|
2543
|
+
- CHANGELOG 원문: "Changed the desktop app and VS Code to always run the main conversation's subagents in the background, as the terminal does, rather than let Claude choose; a subagent's own Agent calls in `claude -p`, the Agent SDK, the desktop app and VS Code now run in the foreground by default"
|
|
2544
|
+
(302) 데스크톱 앱과 VS Code가 터미널처럼 메인 대화의 서브에이전트를 항상 백그라운드로 실행하도록 바뀌었고, `claude -p`·Agent SDK·데스크톱 앱·VS Code에서 서브에이전트 자신의 Agent 호출은 이제 기본으로 포그라운드에서 실행됩니다. R009의 2.1.232 노트는 백그라운드 스폰의 반환이 완료 신호가 아니라고 기록하며(`.claude/rules/MUST-parallel-execution.md:200`, DETAIL 주석 — 자동 주입되지 않음), 이 변경은 그 전제를 데스크톱 앱과 VS Code로 넓힙니다. 뒤쪽 절의 "서브에이전트 자신의 Agent 호출"은 R010 Core Rule이 프로젝트 정책으로 금지하는 경로이므로(`.claude/rules/MUST-orchestrator-coordination.md:7`, "Subagents MUST NOT spawn other subagents") 이 정책을 따르는 위임 흐름에는 해당하지 않습니다. 서브에이전트가 정책을 어기고 Agent를 호출한 경우의 포그라운드 실행 영향은 관측하지 않았습니다 [가설 — 해당 위반 사례의 트랜스크립트로 판정].
|
|
2545
|
+
- CHANGELOG 원문: "Fixed worktree isolation refusing to create or resume worktrees under git 2.56 or later when a stray `.git` file points at a directory that doesn't exist"
|
|
2546
|
+
(302) git 2.56 이상에서 존재하지 않는 디렉토리를 가리키는 남은 `.git` 파일이 있을 때 worktree isolation이 worktree 생성·재개를 거부하던 결함이 수정되었습니다. 작성 기기의 git은 2.52.0으로(`git --version`, 로컬 관측) 원문의 버전 조건에 들지 않으며, CI 러너와 사용자 환경의 git 버전은 관측하지 않았습니다. 에이전트 frontmatter의 `isolation:`은 관측한 범위에서 `sandbox` 1건이며(`git grep -n -E '^isolation:' -- '.claude/agents/*.md'` → `.claude/agents/sec-codeql-expert.md:8`) `worktree` 값은 없습니다. 다만 가이드는 에이전트 frontmatter `isolation: worktree`를 선택지로 안내하고(`guides/git-worktree-workflow/README.md:89`, `guides/worktree-lifecycle/README.md:81`), `omcustom-auto-improve` 스킬은 `EnterWorktree` 도구를 씁니다(`.claude/skills/omcustom-auto-improve/SKILL.md:59`). 그 안내를 따른 에이전트와 `EnterWorktree`가 원문의 "worktree isolation"에 포함되는지는 관측하지 못했습니다 [가설 — git 2.56 이상 환경에서 남은 `.git` 파일을 둔 채 `isolation: worktree` 에이전트 스폰과 `EnterWorktree` 호출을 각각 실행해 판정].
|
|
2547
|
+
|
|
2548
|
+
### 권한 · permission mode
|
|
2549
|
+
|
|
2550
|
+
- CHANGELOG 원문: "Changed `claude -p` and Agent SDK sessions with no permission mode to start in `default` mode on third-party providers, with telemetry off or on a fresh install; `--permission-mode auto` keeps auto"
|
|
2551
|
+
(302) permission mode가 지정되지 않은 `claude -p`·Agent SDK 세션이 서드파티 provider에서, 텔레메트리를 끈 환경에서, 또는 새로 설치한 환경에서 `default` 모드로 시작하도록 바뀌었고, `--permission-mode auto`는 auto를 유지합니다. 원문의 "on third-party providers, with telemetry off or on a fresh install"은 세 조건을 선택지로 나열한 것으로 읽었습니다. 같은 CHANGELOG의 다른 항목이 텔레메트리 꺼짐을 provider와 별개 범주로 나열하기 때문입니다(2.1.304 "now also available on Bedrock, Vertex, Foundry, Claude apps gateway and telemetry-disabled sessions", 2.1.310 "on Bedrock, Vertex, and Foundry, and when telemetry or nonessential traffic is disabled"). 서드파티 provider이면서 텔레메트리가 꺼졌거나 새로 설치한 경우만 해당한다는 결합 독해도 문법상 배제되지 않습니다 [가설 — 서드파티 provider 없이 텔레메트리만 끈 1st-party `claude -p` 세션의 init `permissionMode`가 `default`인지로 판정]. R010 「Universal bypassPermissions」 본문은 2.1.212 이상에서 부모 모드가 `permissions.defaultMode`(managed·local·project·user)와 `--permission-mode` 같은 실행 플래그에서 온다고 기록하고, 2.1.257부터 project·local의 `bypassPermissions`가 무시되어 그 범위가 `default`로 귀결한다는 실측 규칙을 적습니다(`.claude/rules/MUST-orchestrator-coordination.md:588`, Self-Check 항목 1 `:606`). 저장소가 추적하는 값은 프로젝트 settings의 `bypassPermissions`와 templates 미러의 미설정입니다(`jq -r '.permissions.defaultMode // "unset"' .claude/settings.json templates/.claude/settings.json` = `bypassPermissions`, `unset`). 따라서 init으로 templates를 받은 프로젝트에서 local·user·managed 범위의 `defaultMode`와 실행 플래그도 비어 있으면, 위 조건의 `claude -p`는 이 변경의 "no permission mode" 세션에 들 수 있습니다 [가설 — 그 구성에서 위 세 조건별 init `permissionMode`로 판정]. 이 저장소 자체의 `bypassPermissions`가 무시된 상태를 CC가 "no permission mode"로 취급하는지는 실측하지 않았으며, R010 `:588`의 규칙대로라면 그 경우에도 `default`로 귀결하므로 결과는 같을 것으로 봅니다 [가설 — 같은 판정 기준]. `packages/serve/src/lib/server/claude-cli.ts`의 `claude -p … --no-input` 호출 4곳(`:40`, `:86`, `:117`, `:174`)은 `--permission-mode`를 넘기지 않으며(`git grep -n -F 'claude -p' -- packages/` 4건, `git grep -n -F -e '--permission-mode' -- packages/` 출력 없음), 각 호출은 `cwd: root` 또는 `cwd: projectRoot`(`:44`, `:90`, `:121`, `:178`)에서 실행되므로, 실행 플래그가 없는 이 호출의 모드는 그 디렉토리의 project·local settings와 user·managed settings, 곧 R010 `:588`이 나열한 네 범위가 정합니다. 이 호출이 도구 승인을 필요로 하는지는 관측하지 않았습니다. 작성 기기의 로컬 관측은 저장소 사실이 아니며, user scope `auto`와 추적되지 않는 `.claude/settings.local.json`(`git check-ignore -v --no-index .claude/settings.local.json` = `.gitignore:40:.claude/*`)의 `bypassPermissions`입니다. R010 `:588`의 규칙대로라면 이 조합의 `claude -p`는 이 변경과 무관하게 이미 `default`로 시작합니다. 서드파티 provider env는 추적되는 프로젝트 settings와 templates 미러에서 0건입니다(`grep -c -E 'ANTHROPIC_BASE_URL|CLAUDE_CODE_USE_(BEDROCK|VERTEX|FOUNDRY)' .claude/settings.json templates/.claude/settings.json` 모두 0). 무인 `/fsd`를 위 세 조건 중 하나에서 돌릴 때는 R010 Self-Check대로 `claude -p` init `permissionMode`를 먼저 실측합니다.
|
|
2552
|
+
- CHANGELOG 원문: "Added `CLAUDE_CODE_AUTO_MODE_MODEL` to choose the model the client-side auto mode classifier uses; it does not change the model for server-side auto mode"
|
|
2553
|
+
(302) 클라이언트 측 auto mode 분류기가 쓰는 모델을 고르는 `CLAUDE_CODE_AUTO_MODE_MODEL`이 추가되었으며, 서버 측 auto mode의 모델은 바꾸지 않습니다. 저장소가 추적하는 settings는 `auto`를 지정하지 않습니다(위 `jq` 결과 `bypassPermissions`, `unset`). 작성 기기의 user scope 값은 `auto`이지만(로컬 관측), R010 `:588`의 실측 규칙에 따르면 무시된 project `bypassPermissions`가 `claude -p`에서 그 값을 `default`로 덮으며, 대화형 TTY 세션의 결과는 같은 단락이 `[가설]`로 남긴 미조정 상태입니다. 이 env는 이 가이드 밖의 추적 파일에서 0건이므로(`git grep -c -F CLAUDE_CODE_AUTO_MODE_MODEL -- . ':!guides/claude-code/15-version-compatibility.md' ':!templates/guides/claude-code/15-version-compatibility.md'` 출력 없음) 저장소 설정 범위에서는 분류기 모델이 바뀌지 않습니다. auto mode가 활성인 세션에서 클라이언트 측과 서버 측 중 어느 분류기가 쓰이는지는 관측하지 못했습니다 [가설 — OpenTelemetry `tool_decision` 이벤트의 `classifier_verdict`·`permission_mode` 속성(2.1.301)으로 판정].
|
|
2554
|
+
- CHANGELOG 원문: "Improved auto mode with the server-side classifier: a conversation too long for the safety check is now compacted, instead of every checked tool call being denied"
|
|
2555
|
+
(302) 서버 측 분류기를 쓰는 auto mode에서, 안전 검사에 너무 긴 대화는 이제 검사 대상 도구 호출을 모두 거부하는 대신 compaction됩니다. R010 STOP Protocol은 서브에이전트가 safety classifier에 2회 걸리면 중단하고 범위를 좁혀 재설계하라고 규정합니다(`.claude/rules/MUST-orchestrator-coordination.md:262`). 구버전의 긴 세션에서 연속 거부가 났다면 그 원인은 작업 범위가 아니라 대화 길이였을 수 있으므로, 그 거부 횟수를 STOP 판정의 trip으로 셀 때는 거부 사유를 먼저 확인하는 것이 좋습니다 [가설 — 거부 메시지의 규칙 이름이나 `classifier_category`로 판정].
|
|
2556
|
+
|
|
2557
|
+
### 훅
|
|
2558
|
+
|
|
2559
|
+
- CHANGELOG 원문: "Changed prompt and agent hooks so that at most 12 of one event run at a time; the rest wait their turn"
|
|
2560
|
+
(302) prompt 훅과 agent 훅이 한 이벤트당 동시에 최대 12개까지 실행되고 나머지는 차례를 기다리도록 바뀌었습니다. 이 저장소의 prompt·agent 타입 훅은 프로젝트 settings와 templates 미러에서 각각 1개이며(`jq -r '[.hooks[][]?.hooks[]? | select(.type=="prompt" or .type=="agent")] | length' .claude/settings.json templates/.claude/settings.json` = 1, 1), 그 1개는 PostCompact 이벤트(키 `.claude/settings.json:403`)의 prompt 훅입니다(`"type": "prompt"`는 `.claude/settings.json:407`, templates 미러 `templates/.claude/settings.json:373`). 소스 `.claude/hooks/hooks.json`에서도 같은 타입은 1개입니다(`jq -r '[.. | objects | select(has("type")) | .type | select(.=="prompt" or .=="agent")] | length' .claude/hooks/hooks.json` = 1). 위 세 파일에서 한 이벤트에 12개를 넘는 prompt·agent 훅은 관측되지 않았으므로 이 상한은 저장소가 배선한 훅의 실행 순서를 바꾸지 않습니다(외부 플러그인 훅은 측정 범위 밖입니다). command 훅은 원문 대상이 아닙니다.
|
|
2561
|
+
|
|
2562
|
+
### 컨텍스트 · compaction · 도구
|
|
2563
|
+
|
|
2564
|
+
- CHANGELOG 원문: "Added an `Idle compaction` row to `/config` for turning idle compaction off or back on; the notices shown after an idle compaction now say how to turn it off"
|
|
2565
|
+
(302) idle compaction을 끄거나 다시 켜는 `Idle compaction` 행이 `/config`에 추가되었고, idle compaction 후 표시되는 안내가 끄는 방법을 알려 줍니다. 관측한 범위에서 저장소에는 idle compaction 관련 문자열이 0건입니다(`git grep -n -i 'idle compaction' -- . ':!guides/claude-code/15-version-compatibility.md' ':!templates/guides/claude-code/15-version-compatibility.md'` rc=1). R013의 컨텍스트 예산 임계값은 컨텍스트 사용 비율 기준이므로(`.claude/rules/SHOULD-ecomode.md:87` 제목 줄, 임계값 상세는 같은 파일 `:103`의 DETAIL 주석 — 자동 주입되지 않음), 유휴 시간에 의한 compaction은 그 임계값과 별개로 일어날 수 있습니다 [가설 — idle compaction의 발동 조건은 원문에 없어 미실측].
|
|
2566
|
+
- CHANGELOG 원문: "Fixed a "Prompt is too long" error when stopping a turn while the conversation was being compacted"
|
|
2567
|
+
(302) 대화가 compaction되는 동안 턴을 멈추면 "Prompt is too long" 오류가 나던 결함이 수정되었습니다. R013의 2.1.274 노트는 훅 주도 세션의 "Prompt is too long" 종료 결함 수정을 기록합니다(`.claude/rules/SHOULD-ecomode.md:101`). 이 항목은 다른 경로(compaction 중 턴 중지)의 같은 오류이므로, 2.1.302 미만에서 사용자가 compaction 중에 턴을 멈춘 뒤 이 오류가 났다면 컨텍스트 초과가 아니라 이 결함이었을 수 있습니다 [가설 — 오류 직전 compaction 진행 여부로 판정].
|
|
2568
|
+
- CHANGELOG 원문: "Fixed a prompt cache miss when a tool added mid-session was loaded again through ToolSearch or after compaction"
|
|
2569
|
+
(302) 세션 도중 추가된 도구(원문 "a tool added mid-session")가 ToolSearch로 다시 로드되거나 compaction 후에 다시 로드될 때 prompt cache miss가 나던 결함이 수정되었습니다. 원문은 어떤 도구가 세션 도중 추가되는지 예를 들지 않습니다. 작성자 예시로, 이 저장소는 `.mcp.json`에 MCP 서버 2개를 두므로(`git cat-file -p HEAD:.mcp.json`) 그 서버가 세션 중에 늦게 연결된 경우 그 도구가 원문 범위에 들 수 있습니다 [가설 — 서버 연결 시점과 재로드 전후 `prompt_cache` 필드로 판정]. 이 저장소의 룰은 `SendMessage` 같은 지연 내장 도구를 `ToolSearch`로 로드하는 절차를 기록하지만(`.claude/rules/MUST-agent-teams.md:492`), 지연 내장 도구가 원문의 "a tool added mid-session"에 해당하는지는 원문에 없어 판정하지 못했습니다 [가설 — 지연 내장 도구 재로드 전후 `prompt_cache` 필드로 판정]. R012는 상태줄의 `prompt_cache` 필드가 cache miss의 가능한 원인을 표시한다고 기록합니다(`.claude/rules/SHOULD-hud-statusline.md:65`).
|
|
2570
|
+
- CHANGELOG 원문: "Fixed the Read tool loading an image file of any size, or a pipe or device named like an image, entirely into memory; image sources over 128 MB are now refused"
|
|
2571
|
+
(302) Read 도구가 크기와 무관하게 이미지 파일, 또는 이미지처럼 이름 붙은 파이프·장치를 통째로 메모리에 올리던 결함이 수정되어, 이제 128 MB를 넘는 이미지 소스는 거부됩니다. 이 저장소의 추적 이미지 14개 중 가장 큰 파일은 1,294,475바이트입니다(`git ls-files -z -- '*.png' '*.jpg' '*.jpeg' '*.gif' '*.webp' '*.svg' | xargs -0 stat -f '%z %N' | sort -n | tail -1` → `assets/diagrams/03-routing-architecture.png`). 따라서 추적 이미지 범위에서는 거부 대상이 관측되지 않았습니다.
|
|
2572
|
+
|
|
2573
|
+
### MCP · 설정 쓰기 · 텔레메트리
|
|
2574
|
+
|
|
2575
|
+
- CHANGELOG 원문: "Fixed MCP servers showing no tools, or every tool call failing, when the server negotiates protocol version 2026-07-28 but omits `resultType`, `ttlMs` or `cacheScope`"
|
|
2576
|
+
(302) 서버가 프로토콜 버전 2026-07-28로 협상하면서 `resultType`, `ttlMs`, `cacheScope`를 빠뜨리면 MCP 서버의 도구가 보이지 않거나 모든 도구 호출이 실패하던 결함이 수정되었습니다. 이 저장소는 `.mcp.json`에 서버 2개(`ontology-rag`는 stdio, `eraser`는 http)를 둡니다(`git cat-file -p HEAD:.mcp.json`). R019는 MCP 서버를 쓸 수 없거나 결과가 비면 enrichment 없이 조용히 진행하라고 규정하므로(`.claude/rules/SHOULD-ontology-rag-routing.md:43`, `:45`), 구버전에서 이 결함으로 도구가 사라졌다면 라우팅 enrichment가 경고 없이 빠졌을 수 있습니다. 두 서버가 협상한 프로토콜 버전은 관측하지 못했습니다 [가설 — MCP 초기화 응답의 `protocolVersion`으로 판정].
|
|
2577
|
+
- CHANGELOG 원문: "Fixed `claude plugin` and other subcommands sometimes exiting before a queued settings or config write finished, which could lose the change or leave a `.tmp` file behind"
|
|
2578
|
+
(302) `claude plugin`과 다른 서브커맨드가 대기 중인 settings·config 쓰기가 끝나기 전에 가끔 종료되어, 변경이 유실되거나 `.tmp` 파일이 남을 수 있던 결함이 수정되었습니다. 이 저장소 문서는 설정을 쓰는 서브커맨드를 안내하며, 아래는 예시입니다(후보 전체는 `git grep -n -E 'claude (mcp|plugin) (add|install|remove|enable|disable|marketplace)' -- . ':!guides/claude-code/15-version-compatibility.md' ':!templates/**' ':!wiki/**'` 출력). `claude mcp add semble -- semble mcp`는 `.claude/skills/semble-integration/SKILL.md:67`과 `guides/token-efficiency/semble.md:71`에 있습니다. `claude mcp add-json aws-mcp --scope user …`는 HTML 주석 밖의 에이전트 정의 본문 `.claude/agents/infra-aws-expert.md:81`과 `guides/aws/index.yaml:47`에 있고, `CLAUDE.md:275`·`:279`의 같은 계열 명령(`claude mcp add`·`claude mcp add-json`)은 HTML 주석 안이라 자동 주입되지 않습니다. `claude plugin marketplace add`와 `claude plugin install cc-token-saver`는 `guides/cc-token-saver/README.md:9`, `:10`에 있습니다. 원문은 `claude plugin`을 명명하지만 `claude mcp add`가 원문의 "other subcommands"에 드는지는 원문에 없습니다 [가설 — 2.1.302 미만에서 `claude mcp add` 직후 설정 파일의 서버 항목 기록 여부와 `.tmp` 잔존 여부로 판정]. 구버전에서 이런 명령을 실행했다면 `claude mcp list`나 `claude plugin list`로 등록 결과를 실측하는 것이 R020의 "실행함 ≠ 성공함" 원칙에 맞습니다.
|
|
2579
|
+
- CHANGELOG 원문: "Fixed `classifier_category` missing from OpenTelemetry `tool_decision` events for most auto mode classifier blocks, and new `tool_decision` attributes pushing out `tool_use_id`, `tool_source` and `tool_parameters` when `OTEL_LOGRECORD_ATTRIBUTE_COUNT_LIMIT` is low"
|
|
2580
|
+
(302) 대부분의 auto mode 분류기 차단에서 OpenTelemetry `tool_decision` 이벤트에 `classifier_category`가 빠지던 결함과, `OTEL_LOGRECORD_ATTRIBUTE_COUNT_LIMIT`가 낮을 때 새 `tool_decision` 속성이 `tool_use_id`, `tool_source`, `tool_parameters`를 밀어내던 결함이 수정되었습니다. 2.1.301에서 추가된 속성의 후속 수정이므로, 2.1.301 단독 환경의 `classifier_category` 부재는 차단이 없었다는 증거가 아닙니다. `monitoring-setup` 스킬은 `claude_code.tool_decision`을 관측 대상으로 나열하며(`.claude/skills/monitoring-setup/SKILL.md:182`), `OTEL_LOGRECORD_ATTRIBUTE_COUNT_LIMIT`는 이 가이드 밖의 추적 파일에서 0건입니다(`git grep -n OTEL_LOGRECORD_ATTRIBUTE_COUNT_LIMIT -- . ':!guides/claude-code/15-version-compatibility.md' ':!templates/guides/claude-code/15-version-compatibility.md'` rc=1).
|
|
2581
|
+
|
|
2582
|
+
기타 49건 — 이 저장소 비해당(`[Cloud sessions]`·`[Claude Tag]`·`[Code Review]`·`[Remote Control]`·`[VSCode]`·Self-hosted runner·Windows 전용 항목, 태그 없는 cloud session 비용·사용량 재시작 수정, `/design-sync`·`/design-login`·`/design consent` 등 Claude Design 안내, Vertex·Bedrock 전환 오류와 gateway의 Opus 4 접두사 모델명, plugin marketplace의 reftable 재복제·`claude plugin details <name>@builtin` 안내·plugin이 많을 때의 시작 시간·PowerShell 도구, 데스크톱 앱의 MCP 인증 안내, artifact 빈 편집 목록 게시, agents view 빈 행과 `← for agents` 힌트, `claude remote-control --help`, prompt suggestions의 크레딧 과금, 백틱 URL·이모지 줄바꿈 렌더링, 배경 세션의 LLM gateway 안내, Claude in Chrome 안내문 위치, `/feedback` 정책 안내 등 harness 비영향 세부사항으로 분류했습니다 [가설 — 범주별 저장소 사용 여부는 개별 실측하지 않음]). 실측: `gh release view v2.1.302 --repo anthropics/claude-code --json body --jq .body | grep -c '^- '` = 63건 중 위 본문 14건을 다뤘으므로 63 − 14 = 49건입니다. 계수 범위는 해당 릴리즈 노트의 최상위 불릿 줄(`- `로 시작하는 줄)입니다.
|
|
2583
|
+
|
|
2584
|
+
**Action items**:
|
|
2585
|
+
- 이 문서의 규범 변경 제안은 없습니다(CC 2.1.302 CHANGELOG 항목 기준). fork 서브에이전트의 `-p` 기본 활성화와 permission mode 기본값 변경은 R009·R010이 이미 다루는 전제(fork 컨텍스트 상속, 유효 모드 실측)를 무인 실행 경로로 넓히는 항목입니다.
|
|
2586
|
+
- 후속 실측 후보: (1) `defaultMode`와 `--permission-mode` 없이 서드파티 provider, 텔레메트리를 끈 1st-party, 새 설치 각각에서 `claude -p` init `permissionMode`를 실측합니다(templates 미러의 `defaultMode` 미설정 구성 포함). (2) 무인 `claude -p`에서 `subagent_type: "fork"`가 도구 목록에 노출되는지 확인합니다. (3) `.mcp.json` 두 서버의 협상 `protocolVersion`을 확인합니다.
|
|
2587
|
+
|
|
2588
|
+
---
|
|
2589
|
+
|
|
2590
|
+
## v2.1.303 (2026-10-18)
|
|
2591
|
+
|
|
2592
|
+
> Issue: #1865 — Claude Code v2.1.303 compatibility documentation
|
|
2593
|
+
> Scope-ceiling check (R017): 조사 시점(2026-10-25)의 최신 릴리즈는 2.1.310입니다(`claude --version`=2.1.310, `npm view @anthropic-ai/claude-code version`=2.1.310). 2.1.304~2.1.310 CHANGELOG 절을 각각 잘라 `2.1.303` 문자열과 "Revert"(대소문자 무시)를 검색한 결과(`grep -n -i -E '2\.1\.303|revert' section-<버전>.md`), 일곱 절 모두에서 일치하는 줄이 관측되지 않았습니다. 따라서 이 릴리즈를 되돌리거나 그 회귀를 고치는 문장은 상한까지 관측되지 않았습니다. 릴리즈 게시 시각은 2026-10-18T22:26:54Z입니다(`gh release view v2.1.303 -R anthropics/claude-code --json publishedAt`).
|
|
2594
|
+
|
|
2595
|
+
### 일반 수정
|
|
2596
|
+
|
|
2597
|
+
- CHANGELOG 원문: "Bug fixes and reliability improvements"
|
|
2598
|
+
(303) 이 릴리즈의 노트는 일반적인 버그 수정과 안정성 개선이라는 한 문장으로만 구성되며 개별 변경을 명시하지 않습니다(`gh release view v2.1.303 --repo anthropics/claude-code --json body --jq .body | grep -c '^- '` = 1). 따라서 훅, 서브에이전트, 권한, headless 실행 등 이 저장소 하네스의 어떤 동작이 바뀌었는지는 노트로 판정할 수 없습니다 [가설 — 판정하려면 2.1.302와 2.1.303에서 같은 훅·`claude -p` 실행의 출력을 비교해야 합니다]. 이 릴리즈를 근거로 룰·훅·설정을 바꾸지 않으며, 2.1.302와 2.1.303 사이에서 동작 차이가 관측되면 이 릴리즈를 원인 후보로 함께 기록합니다.
|
|
2599
|
+
|
|
2600
|
+
기타 0건 — 이 저장소 비해당 항목은 없습니다. 실측: `gh release view v2.1.303 --repo anthropics/claude-code --json body --jq .body | grep -c '^- '` = 1건 중 위 본문 1건을 다뤘으므로 1 − 1 = 0건입니다. 계수 범위는 해당 릴리즈 노트의 최상위 불릿 줄(`- `로 시작하는 줄)입니다.
|
|
2601
|
+
|
|
2602
|
+
**Action items**:
|
|
2603
|
+
- 룰·훅·설정 변경은 필요하지 않습니다. 노트가 개별 변경을 명시하지 않으므로 조치 근거가 되는 항목이 없습니다.
|
|
2604
|
+
|
|
2605
|
+
---
|
|
2606
|
+
|
|
2607
|
+
## v2.1.304 (2026-10-19)
|
|
2608
|
+
|
|
2609
|
+
> Issue: #1866 — Claude Code v2.1.304 compatibility documentation
|
|
2610
|
+
> Scope-ceiling check (R017): 조사 시점(2026-10-25)의 최신 릴리즈는 2.1.310입니다(`claude --version`=2.1.310, `npm view @anthropic-ai/claude-code version`=2.1.310). 2.1.305~2.1.310의 CHANGELOG 절을 각각 잘라 "2.1.304"와 "Revert"를 검색했습니다. "Revert"는 여섯 절 모두에서 0건이었고, "2.1.304"는 2.1.305 절의 한 문장에서 나타났습니다. 그 문장은 "Fixed every request failing on Vertex, Bedrock and other providers when the endpoint or a gateway rejects tool search, and behind gateways with ToolSearch disallowed or left out of `--tools` (a 2.1.304 regression): Claude Code now retries without it"이며, 도구 검색과 관련된 2.1.304 회귀를 고친 문장입니다. 원문은 회귀를 일으킨 2.1.304 변경을 특정하지 않으며, 실패 조건에는 Vertex·Bedrock 등 provider와 `ToolSearch`를 금지하거나 `--tools`에서 뺀 게이트웨이가 들어 있습니다. 2.1.304 절에서 도구 검색을 다루는 최상위 불릿은 아래 「컨텍스트 · compaction · 도구 검색」 소절의 custom `ANTHROPIC_BASE_URL` 항목 하나입니다(`awk -v v=2.1.304 '/^## /{p=($2==v)} p' CHANGELOG.md | grep -c -i -E 'tool ?search'` = 1). 다만 그 항목이 이 회귀의 원인인지는 원문으로 확인되지 않습니다 [가설 — 이후 CHANGELOG나 이슈에서 원인 변경이 명시되면 판정]. 릴리즈 게시 시각은 2026-10-19T21:34:39Z입니다(`gh release view v2.1.304 -R anthropics/claude-code --json publishedAt`). 릴리즈 노트의 최상위 불릿 76줄은 CHANGELOG 2.1.304 절의 최상위 불릿 76줄과 순서까지 같습니다(python3 목록 비교 결과 identical).
|
|
2611
|
+
|
|
2612
|
+
### 훅 · 스킬
|
|
2613
|
+
|
|
2614
|
+
- CHANGELOG 원문: "Fixed a PreToolUse hook's deny reason being replaced by a timeout error when an Agent SDK callback hook on the same tool call timed out"
|
|
2615
|
+
(304) 같은 도구 호출에 걸린 Agent SDK 콜백 훅이 타임아웃되면 PreToolUse 훅의 거부 사유가 타임아웃 오류로 바뀌던 결함이 수정되었습니다. 이 저장소의 PreToolUse 훅은 `.claude/settings.json`에 배선된 11개 블록입니다(`jq '.hooks.PreToolUse | length' .claude/settings.json` = 11). 관측한 범위에서 저장소 코드에는 Agent SDK 의존성이 보이지 않으므로(`git grep -n -E 'claude-agent-sdk|claude-code-sdk' -- package.json src packages` rc=1) SDK 콜백 훅이 같은 도구 호출에 겹치는 조건은 관측되지 않았습니다.
|
|
2616
|
+
- CHANGELOG 원문: "[VSCode] Fixed one cause of sessions failing to start with "Subprocess initialization did not complete within 60000ms": time a SessionStart command hook spends running no longer counts toward the limit, up to 10 minutes in total"
|
|
2617
|
+
(304) VSCode에서 세션이 "Subprocess initialization did not complete within 60000ms"로 시작에 실패하던 원인 하나가 수정되어, SessionStart command 훅이 실행되는 시간은 합계 10분까지 이 제한에 포함되지 않습니다. 이 저장소는 `.claude/settings.json`의 SessionStart에 command 훅 7개를 배선하며, 그 훅들에는 개별 `timeout`이 없습니다(`jq -c '[.hooks.SessionStart[].hooks[] | .type] | group_by(.) | map({(.[0]): length}) | add' .claude/settings.json` = `{"command":7}`, `jq -c '[.hooks.SessionStart[].hooks[] | .timeout // null]'` = null 7개). 원문에 따르면 수정 전 버전에서는 이 훅들의 실행 시간이 60초 시작 제한에 포함되었으므로, VSCode 확장으로 이 저장소를 여는 환경에서는 시작 실패에 기여했을 수 있습니다 [가설 — 7개 훅의 실행 시간 합계와 VSCode 시작 실패 발생 여부는 미관측]. VSCode 전용 항목이며 CLI 세션과 `claude -p`에는 해당하지 않습니다.
|
|
2618
|
+
- CHANGELOG 원문: "Fixed a skill's `once` hook also removing another skill's identical hook after it ran"
|
|
2619
|
+
(304) 한 스킬의 `once` 훅이 실행된 뒤 다른 스킬의 동일한 훅까지 제거하던 결함이 수정되었습니다. 관측한 범위에서 `.claude/skills` 아래 파일에는 `hooks:` 키가 0건이므로(`git grep -n -E '^[[:space:]]*hooks:' -- .claude/skills` rc=1) 스킬 훅 경로의 영향 조건은 관측되지 않았습니다.
|
|
2620
|
+
- CHANGELOG 원문: "Changed skill hooks: the skills of one source (a repo, your own folder, or a plugin) can register at most 1,024 hooks and 16,384 matcher characters per session"
|
|
2621
|
+
(304) 한 출처(저장소, 사용자 폴더, 플러그인)의 스킬이 세션당 등록할 수 있는 훅이 최대 1,024개, matcher 문자 수가 최대 16,384자로 제한됩니다. 위 `git grep` 결과(rc=1)에 따르면 이 저장소의 스킬은 훅을 선언하지 않으므로 이 상한과 관계가 관측되지 않았습니다. 원문의 대상은 스킬 훅이며, 프로젝트 settings 훅이 이 계수에 들어가는지는 원문이 밝히지 않습니다. 들어가더라도 `.claude/settings.json`의 훅은 64개(command 63, prompt 1)이므로(`jq '[.hooks[][].hooks[]] | length' .claude/settings.json` = 64) 1,024개 상한 아래이고, matcher 문자 수 합계도 374자로(`jq '[.hooks[][].matcher // ""] | add | length' .claude/settings.json` = 374) 16,384자 상한 아래입니다.
|
|
2622
|
+
- CHANGELOG 원문: "Changed skills under a policy that allows hooks from plugins only: a skill used in the main conversation whose hooks are kept out no longer gets its `allowed-tools`"
|
|
2623
|
+
(304) 플러그인 훅만 허용하는 정책 아래에서, 훅이 배제된 스킬을 메인 대화에서 쓰면 그 스킬의 `allowed-tools`가 더 이상 부여되지 않습니다. 이 저장소에서 `allowed-tools`를 선언한 스킬은 `.claude/skills/diagram-design/SKILL.md:12`와 `.claude/skills/profile/SKILL.md:7`의 두 개입니다(`git grep -n -E '^allowed-tools:' -- '.claude/skills/*/SKILL.md'`). 두 스킬에는 `hooks:` 키가 없으므로(위 `git grep` rc=1) 원문의 "hooks are kept out" 조건에 해당하지 않는다고 봅니다 [가설 — 훅을 선언하지 않은 스킬도 이 조건에 드는지는 원문이 밝히지 않으며, 해당 managed 정책을 켠 환경에서 두 스킬의 도구 허용을 실측하면 판정]. 정책 자체는 managed settings 사안이라 저장소 파일에서는 관측 대상이 아닙니다.
|
|
2624
|
+
- CHANGELOG 원문: "Changed compaction to send Claude the skill list again afterwards; `/reload-skills` now sends only new or changed skills"
|
|
2625
|
+
(304) compaction 뒤에 스킬 목록을 Claude에 다시 보내도록 바뀌었고, `/reload-skills`는 새로 추가되거나 바뀐 스킬만 보냅니다. 이 저장소의 `.claude/skills/`에는 스킬 디렉토리 114개가 있습니다(`command ls -d .claude/skills/*/ | wc -l` = 114). 이 중 init이 설치하는 것은 `scope: package` 6개를 뺀 108개입니다(`src/core/scope-filter.ts:36`의 `return scope !== 'package';`, `git grep -l -E '^scope: package' -- '.claude/skills/*/SKILL.md' | wc -l` = 6). 따라서 compaction 직후의 컨텍스트 사용량(R013 임계값, statusline CTX%)에는 그 세션이 로드한 스킬 목록 크기가 다시 더해집니다 [가설 — compaction 직전·직후의 `/context` 출력과 statusline CTX%를 비교하면 판정]. R013의 v2.1.261 노트는 이 저장소의 스킬 열거 블록을 "115개"로 적고 있으나(`.claude/rules/SHOULD-ecomode.md:97`) 위 디렉토리 계수는 114개입니다.
|
|
2626
|
+
- CHANGELOG 원문: "Fixed resumed and cloud sessions sending Claude the whole skill list again each time plugins reloaded at startup"
|
|
2627
|
+
(304) 재개된 세션과 cloud 세션이 시작할 때 플러그인이 다시 로드될 때마다 전체 스킬 목록을 Claude에 다시 보내던 결함이 수정되었습니다. 스킬 디렉토리 114개(위 계수)를 둔 이 저장소에서 `--resume`으로 재개한 세션에서는 이 중복이 컨텍스트 비용을 늘렸을 수 있습니다 [가설 — 수정 전 버전으로 재개한 세션의 트랜스크립트에서 스킬 목록 반복 횟수를 세면 판정].
|
|
2628
|
+
|
|
2629
|
+
### 서브에이전트 · 팀원 · headless
|
|
2630
|
+
|
|
2631
|
+
- CHANGELOG 원문: "Fixed a plugin keeping a headless run going past `--max-turns`, Stop, or ended input by spawning subagents or re-running a finished one"
|
|
2632
|
+
(304) 플러그인이 서브에이전트를 스폰하거나 끝난 서브에이전트를 다시 실행해 headless 실행을 `--max-turns`·Stop·입력 종료 뒤까지 이어가던 결함이 수정되었습니다. 원문의 주체는 플러그인입니다. 관측한 범위에서 이 저장소의 `.claude/`와 `CLAUDE.md`에는 `--max-turns` 사용이 보이지 않으며(`git grep -n -E -- '--max-turns' -- .claude CLAUDE.md` rc=1), 무인 `/fsd`의 `claude -p` 경로는 `OMCUSTOM_UNATTENDED=1`로 무인 실행을 표시합니다(`.claude/skills/fsd/SKILL.md:133`). 이 저장소는 프로젝트 settings에서 플러그인을 켜지 않으며(`jq -c '.enabledPlugins // null' .claude/settings.json` = null), 사용자 수준에서 켠 플러그인이 이 결함을 일으켰는지는 관측하지 않았습니다 [가설 — headless 실행 트랜스크립트에서 Stop 이후의 서브에이전트 스폰이 보이면 판정].
|
|
2633
|
+
- CHANGELOG 원문: "Fixed self-paced `/loop` wakeups scheduled at the 1-hour maximum firing just after the 1-hour prompt cache expired, so those wakeups no longer re-read the conversation uncached"
|
|
2634
|
+
(304) 1시간 최대치로 예약된 self-paced `/loop` wakeup이 1시간 prompt cache가 만료된 직후에 발동하던 결함이 수정되어, 그런 wakeup은 더 이상 대화를 캐시 없이 다시 읽지 않습니다. `/fsd` 스킬은 반복 단위를 `/loop` recurrence, 곧 모델이 주기를 정하는 self-paced loop로 기술하고(`.claude/skills/fsd/SKILL.md:39`), 무인(`claude -p`, 예약 실행) 세션에서 `/goal`·`/loop`를 호출하는 경로를 권장합니다(`.claude/skills/fsd/SKILL.md:172`). 그 경로의 wakeup이 1시간 최대치로 예약된 적이 있다면, 수정 전 버전에서는 그런 wakeup마다 대화를 캐시 없이 다시 읽는 비용이 들었을 수 있습니다 [가설 — 무인 `/fsd` 실행 기록에서 1시간 최대치 wakeup의 발생 여부와 그 요청의 cache read 토큰으로 판정].
|
|
2635
|
+
- CHANGELOG 원문: "Fixed subagents sometimes forgetting their most recent work when they were messaged or resumed right after finishing"
|
|
2636
|
+
(304) 서브에이전트가 끝난 직후에 메시지를 받거나 재개되면 가장 최근 작업을 때때로 잊던 결함이 수정되었습니다. R009는 완료 알림에 보고 본문이 없으면 한 턴 기다리고, 그래도 없으면 산출물을 실측한 뒤 `SendMessage`로 재요청하도록 안내합니다(`.claude/rules/MUST-parallel-execution.md:368`). 수정 전 버전에서는 이 재요청을 받은 서브에이전트가 직전 작업을 잊은 채 답했을 수 있습니다 [가설 — 수정 전 버전의 재요청 응답과 실제 산출물을 대조한 기록은 미관측]. 재요청 응답도 결정론적 ground-truth로 대조한다는 원칙(R018 「Member Completion Verification」, 제목 `.claude/rules/MUST-agent-teams.md:501`)은 그대로입니다.
|
|
2637
|
+
- CHANGELOG 원문: "Fixed agent teams: approving a shutdown request from the main session no longer exits the whole CLI"
|
|
2638
|
+
(304) 메인 세션에서 shutdown 요청을 승인하면 CLI 전체가 종료되던 agent teams 결함이 수정되었습니다. 이 환경에서 R018은 `TeamCreate` 부재로 비활성입니다(`.claude/rules/MUST-agent-teams.md:22`, `:30`). 같은 파일 `:22`는 이름 붙인 `Agent` 스폰이 세션의 암묵적 팀의 팀원이 된다고 기록하지만, 그 팀원에게서 shutdown 요청이 오는지는 관측하지 않았습니다 [가설 — 이름 붙인 팀원의 shutdown 요청을 메인에서 승인한 뒤 CLI가 유지되는지로 판정].
|
|
2639
|
+
- CHANGELOG 원문: "Improved responsiveness and throughput when many subagents are running at the same time"
|
|
2640
|
+
(304) 많은 서브에이전트가 동시에 실행될 때의 응답성과 처리량이 개선되었습니다. R009의 동시 실행 상한 "5 concurrent (soft default: 4)"(`.claude/rules/MUST-parallel-execution.md:190`)는 프로젝트 정책이므로 이 개선으로 바뀌지 않으며, 같은 파일의 Stability Testing Protocol(제목 `:256`, 본문 `:258`)이 정한 축소 기준도 그대로입니다.
|
|
2641
|
+
- CHANGELOG 원문: "Improved the `claude -p` invalid-settings warning: a file that did not load lists only what stopped it, and long lists are capped per file"
|
|
2642
|
+
(304) `claude -p`의 잘못된 settings 경고가 개선되어, 로드되지 않은 파일은 로드를 막은 원인만 나열하고 긴 목록은 파일별로 상한을 둡니다. 이 저장소의 `playwright-compress` 훅은 훅 안에서 `claude -p`를 호출하지만 stderr를 `2>/dev/null`로 버리므로(`.claude/hooks/scripts/playwright-compress.sh:54`) 이 경고의 형식 변경은 그 훅의 출력에 닿지 않습니다. R010이 기록한 project/local `defaultMode: "bypassPermissions"` 무시 WARN(`.claude/rules/MUST-orchestrator-coordination.md:625`, `--debug-file` 실측, DETAIL 주석 안)이 이 경고와 같은 출력인지는 관측하지 않았습니다 [가설 — `claude -p`로 무시 WARN을 재현해 stderr와 debug 파일의 형식을 대조하면 판정].
|
|
2643
|
+
|
|
2644
|
+
### 컨텍스트 · compaction · 도구 검색
|
|
2645
|
+
|
|
2646
|
+
- CHANGELOG 원문: "Fixed a "Context limit reached" or "Prompt is too long" error after stopping a turn while Claude Code was compacting a conversation the API had rejected as too long"
|
|
2647
|
+
(304) API가 너무 길다고 거부한 대화를 Claude Code가 compaction하는 도중 턴을 중지하면 "Context limit reached" 또는 "Prompt is too long" 오류가 나던 결함이 수정되었습니다. R013은 같은 "Prompt is too long" 계열 수정을 v2.1.269/273·v2.1.274 노트로 기록하고 있으며(`.claude/rules/SHOULD-ecomode.md:99`, `:101`), 이번 수정은 그중 턴 중지 경로를 다룹니다. 무인 `/fsd` 실행은 사람이 턴을 중지하지 않으므로 이 경로의 대상이 아니라고 봅니다 [가설 — 무인 실행 중 compaction 도중의 인터럽트 발생 기록으로 판정].
|
|
2648
|
+
- CHANGELOG 원문: "Fixed `CLAUDE_CODE_AUTO_COMPACT_WINDOW=200k` silently setting a 100K window: the variable now accepts `k` and `M` suffixes like `--autocompact`, and warns when a value is out of range or ignored"
|
|
2649
|
+
(304) `CLAUDE_CODE_AUTO_COMPACT_WINDOW=200k`가 조용히 100K 창을 설정하던 결함이 수정되어, 이제 이 변수가 `--autocompact`처럼 `k`·`M` 접미사를 받고 범위를 벗어나거나 무시되는 값에는 경고합니다. 관측한 범위에서 이 저장소에는 이 변수와 `--autocompact` 사용이 보이지 않습니다(`git grep -n -E 'CLAUDE_CODE_AUTO_COMPACT_WINDOW|--autocompact' -- . ':!guides/claude-code/15-version-compatibility.md' ':!templates/guides/claude-code/15-version-compatibility.md'` rc=1). R013의 백분율 임계값은 창 크기에 따라 절대 토큰량이 달라지므로(`.claude/rules/SHOULD-ecomode.md:91`), 사용자 환경에서 이 변수에 접미사 값을 넣었다면 수정 전 버전의 실효 창은 원문 예시처럼 의도와 달랐을 수 있습니다 [가설 — 사용자 환경의 변수 값은 미관측].
|
|
2650
|
+
- CHANGELOG 원문: "Changed tool search to be on by default behind a custom `ANTHROPIC_BASE_URL`; a 400 or 422 from the gateway is retried without it"
|
|
2651
|
+
(304) custom `ANTHROPIC_BASE_URL` 뒤에서도 도구 검색이 기본으로 켜지고, 게이트웨이가 400 또는 422를 돌려주면 도구 검색 없이 재시도합니다. 이 저장소의 두 settings에는 `ANTHROPIC_BASE_URL` 설정이 보이지 않습니다(`git grep -n 'ANTHROPIC_BASE_URL' -- .claude/settings.json templates/.claude/settings.json .claude/hooks` rc=1, 두 파일의 `jq -c '.env // {} | keys'` = `[]`). 관측한 범위(`git grep -n 'ANTHROPIC_BASE_URL' -- . ':!guides/claude-code/15-version-compatibility.md' ':!templates/guides/claude-code/15-version-compatibility.md'`)에서 그 밖의 참조는 룰 버전 노트 서술 네 곳(`.claude/rules/MUST-orchestrator-coordination.md:663`, `:665`, `.claude/rules/MUST-safety.md:55`, `.claude/rules/MAY-optimization.md:120` — 네 곳 모두 HTML 주석 안)과 그 `templates/` 미러, 그리고 `wiki/rules/r005.md:74`·`:129`의 요약입니다. 2.1.305는 도구 검색과 관련된 2.1.304 회귀를 수정했으나 원문은 대상 변경을 특정하지 않으므로, 이 항목과의 연결은 위 Scope-ceiling check에 적은 대로 [가설]입니다. R002 § 각주(`.claude/rules/MUST-permissions.md:20`)는 `ToolSearch`가 실행 환경에 없을 수 있다는 전제를 이미 두고 있습니다.
|
|
2652
|
+
|
|
2653
|
+
### Bash · 도구 · worktree
|
|
2654
|
+
|
|
2655
|
+
- CHANGELOG 원문: "Fixed Bash and PowerShell deleting a large command's output file when it could not be copied to the session's tool-results folder, unless the disk is full"
|
|
2656
|
+
(304) 큰 명령 출력 파일을 세션의 tool-results 폴더로 복사하지 못했을 때 Bash·PowerShell이 그 출력 파일을 삭제하던 결함이 수정되었습니다(디스크가 가득 찬 경우는 제외). R013의 v2.1.261 노트는 command 출력이 인라인 상한을 넘으면 파일로 저장된다는 전제에서 `bashOutputMaxChars`를 기본값으로 올리지 않고 독립적인 exit-code 조회를 우선하도록 안내합니다(`.claude/rules/SHOULD-ecomode.md:97`). 수정 전 버전에서는 파일로 넘어간 큰 출력이 복사 실패 시 사라질 수 있었으므로, 같은 줄의 exit-code 우선 지침은 그 경우에도 판정 근거를 남깁니다.
|
|
2657
|
+
- CHANGELOG 원문: "Fixed `rm -r` of a mounted drive or a folder at its top level (`/Volumes`, `/media`, WSL's `/mnt/c`) not getting the safety prompt that `rm -rf /Applications` gets"
|
|
2658
|
+
(304) 마운트된 드라이브나 그 최상위 폴더(`/Volumes`, `/media`, WSL의 `/mnt/c`)에 대한 `rm -r`이 `rm -rf /Applications`가 받는 안전 프롬프트를 받지 못하던 결함이 수정되었습니다. R001은 광범위 삭제를 금지 작업으로 둡니다(`.claude/rules/MUST-safety.md:11`). 이 플랫폼 프롬프트는 R001의 v2.1.261 노트(`.claude/rules/MUST-safety.md:59`, DETAIL 주석 안)가 서술한 위험 `rm` 프롬프트와 같은 defense-in-depth 성격이며, R001의 사전 확인·승인 의무를 대체하지 않습니다.
|
|
2659
|
+
- CHANGELOG 원문: "Fixed `claude --worktree` removing the worktree and its branch without asking at exit when HEAD was detached or on another branch, which could lose commits"
|
|
2660
|
+
(304) HEAD가 detached이거나 다른 브랜치에 있을 때 `claude --worktree`가 종료 시 묻지 않고 worktree와 그 브랜치를 제거해 커밋을 잃을 수 있던 결함이 수정되었습니다. 관측한 범위에서 이 저장소의 `.claude/`와 `CLAUDE.md`에는 `claude --worktree` 호출이 보이지 않습니다(`git grep -n -F 'claude --worktree' -- .claude CLAUDE.md` rc=1). 더 넓은 검색 `git grep -n -E 'isolation: *"?worktree|--worktree|EnterWorktree' -- .claude CLAUDE.md`에서 `--worktree`에 걸리는 줄은 `.claude/hooks/scripts/destructive-git-guard.sh:34`이며, 이 줄의 `--worktree`는 `git restore`의 플래그를 가리는 가드 패턴입니다. 같은 검색에서 worktree를 만드는 스킬 경로는 `omcustom-auto-improve`의 `EnterWorktree` 사용입니다(`.claude/skills/omcustom-auto-improve/SKILL.md:59`). `EnterWorktree` 경로가 같은 종료 처리를 거치는지는 관측하지 않았습니다 [가설 — `EnterWorktree`로 만든 worktree에서 브랜치를 바꾼 뒤 종료해 브랜치가 남는지로 판정]. 이 결함은 R001의 미병합 브랜치 삭제 승인 의무(「Destructive Git Commands」, 제목 `.claude/rules/MUST-safety.md:14`)와 같은 위험 부류입니다.
|
|
2661
|
+
- CHANGELOG 원문: "Fixed `claude --help` text for `--tools`, `--resume`, `--debug`, `--json-schema`, `--disable-slash-commands`, `--system-prompt-snapshot` and `claude update` to match actual behavior"
|
|
2662
|
+
(304) `--tools`·`--resume`·`--debug` 등의 `claude --help` 설명이 실제 동작에 맞게 고쳐졌습니다. R010은 `--dangerously-skip-permissions`의 의미를 CC 2.1.289의 `claude --help` 출력으로 인용하는데(`.claude/rules/MUST-orchestrator-coordination.md:588`), 이 플래그는 원문의 정정 목록에 들어 있지 않습니다. R002 ‡ 각주의 `--tools` 근거는 help 텍스트가 아니라 CHANGELOG 2.1.162 문장입니다(`.claude/rules/MUST-permissions.md:18`). 따라서 두 인용의 근거는 이번 정정으로 바뀌지 않습니다.
|
|
2663
|
+
- CHANGELOG 원문: "Removed the notes from `claude plugin validate` that predicted where a mod's hooks would run"
|
|
2664
|
+
(304) `claude plugin validate`가 mod 훅이 실행될 위치를 예측해 보여 주던 안내가 제거되었습니다. R017은 스킬 추가·수정 후 `claude plugin validate`를 개수 대조와 함께 실행하도록 안내합니다(`.claude/rules/MUST-sync-verification.md:533`). 제거된 것은 mod 훅에 관한 안내이며, 관측한 범위에서 저장소에는 mod 디렉토리가 보이지 않습니다(`git ls-files | grep -i -E '(^|/)mods?/'` 0줄). 따라서 R017 검증 출력의 개수 대조에는 영향이 없다고 봅니다 [가설 — mod의 배치 위치 규약은 확인하지 않았으며, 2.1.303과 2.1.304의 검증 출력을 비교하면 판정].
|
|
2665
|
+
|
|
2666
|
+
기타 55건 — 이 저장소 비해당으로 판단한 항목입니다: mods·plugin API(`tool.check`의 `decider: "person"`·`e.isReadOnly`, `settings.read` 계층, mod 재로드·버튼·공유, 먼저 실행된 플러그인이 mod 훅을 건너뛸 때의 transcript 줄), `/auto-mode-setup`, `/claude-api` 스킬 갱신, Pro·Max 재개 사용량 경고, 조직 정책 갱신·Consumer Terms·`/privacy-settings`, Linux sandbox `denyRead` glob, `CLAUDE_CODE_TRANSCRIPT_LOCAL_GC`, Cowork·Remote Control·Claude Desktop 전용 항목, SDK·desktop 세션의 context usage 확인 대기, LLM gateway `context_management` 오류, server-managed settings로 전달된 OpenTelemetry 설정, Write 결과의 경로 표시, 이미지 이름의 idle pipe를 기다리는 Read의 인터럽트, `/effort` 표시, 다중 선택 질문 메모 절단·transcript `{`/`}`·agents view Ctrl+C·compaction 요약의 도구 이름 표시 같은 터미널 UI, `/usage`·`/artifacts`·`/fast` 표시, auto mode 세션 파일 크기, SDK·headless의 큰 compacted 세션 재개 속도, 긴 대화의 메모리 사용, 나머지 VSCode 항목과 Self-hosted runner·Windows·Cloud sessions·Claude Tag·Code Review 항목. 기능어 표본 검색(`git grep -n -i -o -E 'auto-mode-setup|managed-agents|TRANSCRIPT_LOCAL_GC|remote.control|denyRead|privacy-settings|context_management|OTEL_|OpenTelemetry|Cowork|tool\.check|settings\.read|reload-skills|/effort|/usage|/artifacts|/fast([^a-z]|$)|isReadOnly|cleanupPeriodDays|self-hosted' -- .claude CLAUDE.md .github package.json`)의 히트 파일은 `.claude/rules/` 아래 11개와, 룰 밖의 다섯 파일입니다. 룰 밖 히트 가운데 OpenTelemetry는 `monitoring-setup` 스킬과 그 메타데이터(`.claude/ontology/skills.yaml`, `.claude/skills/intent-detection/patterns/agent-triggers.yaml`)입니다. 그 스킬은 2.1.282 미만에서는 `.claude/settings.local.json`(`.claude/skills/monitoring-setup/SKILL.md:34`), 2.1.282 이상에서는 user-scope `~/.claude/settings.json`과 셸 export(`:73`, `:74`)를 안내하며, 2.1.282부터 project·local 설정에 적힌 OpenTelemetry 변수가 무시된다고 적습니다(`:24`의 마스터 스위치·endpoint·내용 캡처 변수, `:60`). 따라서 그 스킬이 안내하는 경로들은 이 항목의 대상인 server-managed settings 경로와 다릅니다. 나머지 두 파일은 부분 문자열 일치입니다(`.claude/skills/research/SKILL.md:292`, `:294`의 "risks/efforts"·"risk/effort", `CLAUDE.md:245`의 cc-token-saver `/usage-view`). 룰 파일 11개의 히트는 문맥별로 판정하지 않았고, 기능어가 없는 성능·표시 항목도 검색으로 판정하지 않았습니다 [가설 — 항목별 저장소 측정은 위 본문 항목에 한해 실행했습니다]. 실측: `gh release view v2.1.304 --repo anthropics/claude-code --json body --jq .body | grep -c '^- '` = 76건 중 위 본문 21건을 다뤘으므로 76 − 21 = 55건입니다. 계수 범위는 해당 릴리즈 노트의 최상위 불릿 줄(`- `로 시작하는 줄)입니다.
|
|
2667
|
+
|
|
2668
|
+
**Action items**:
|
|
2669
|
+
- 관측한 범위에서 행동 변화를 위해 룰·CLAUDE.md·에이전트·훅을 바꿔야 한다고 확정한 항목은 없습니다(R016: CC 지식은 이 가이드에 두고 룰 파일에는 행동 변화가 필요할 때만 1줄). 위 compaction 항목에 적은 R013의 "115개"와 디렉토리 계수 114개의 차이는 카운트 동기화 사안(R017 「Count Sync」)이며 이 절의 반영 범위에 넣지 않습니다. 위 `[가설 — …]` 표기는 판정 기준을 충족하는 측정이 이루어지기 전에는 결론으로 쓰지 않습니다.
|
|
2670
|
+
|
|
2671
|
+
---
|
|
2672
|
+
|
|
2673
|
+
## v2.1.305 (2026-10-20)
|
|
2674
|
+
|
|
2675
|
+
> Issue: #1868 — Claude Code v2.1.305 compatibility documentation
|
|
2676
|
+
> Scope-ceiling check (R017): 조사 시점(2026-10-25)의 최신 릴리즈는 2.1.310입니다(`claude --version`=2.1.310, `npm view @anthropic-ai/claude-code version`=2.1.310). 2.1.306~2.1.310의 CHANGELOG 절을 각각 잘라 "2.1.305"와 "Revert"를 검색했습니다. "Revert"는 다섯 절 모두에서 0건이었고, "2.1.305"는 2.1.307 절의 한 문장에서 나타났습니다. 그 문장은 "Changed the `axScreenReader` setting and `CLAUDE_AX_SCREEN_READER` in a settings `env` block to apply only from user, managed or `--settings` settings (since 2.1.305)"이며, 스크린 리더 설정의 적용 범위를 좁히는 내용이라 아래 본문 항목을 되돌리거나 좁히지 않습니다. 이 저장소의 두 settings에는 `env` 키가 없습니다(`jq -c '.env // {} | keys'` = `[]`, `.claude/settings.json`·`templates/.claude/settings.json`). 릴리즈 게시 시각은 2026-10-20T20:46:50Z입니다(`gh release view v2.1.305 -R anthropics/claude-code --json publishedAt`). 릴리즈 노트의 최상위 불릿 38줄은 CHANGELOG 2.1.305 절의 최상위 불릿 38줄과 순서까지 같습니다(python3 목록 비교 결과 identical).
|
|
2677
|
+
|
|
2678
|
+
### 도구 검색 · 설정 · MCP · 시작 경고
|
|
2679
|
+
|
|
2680
|
+
- CHANGELOG 원문: "Fixed every request failing on Vertex, Bedrock and other providers when the endpoint or a gateway rejects tool search, and behind gateways with ToolSearch disallowed or left out of `--tools` (a 2.1.304 regression): Claude Code now retries without it"
|
|
2681
|
+
(305) 2.1.304의 회귀로, 엔드포인트나 게이트웨이가 도구 검색을 거부하는 Vertex·Bedrock 등 provider에서, 그리고 `ToolSearch`를 금지하거나 `--tools`에서 뺀 게이트웨이 뒤에서 모든 요청이 실패하던 결함이 수정되었고, 이제 도구 검색 없이 재시도합니다. 원문은 회귀를 일으킨 2.1.304 변경을 특정하지 않습니다. 이 저장소의 두 settings에는 provider나 게이트웨이를 고르는 `env` 설정이 보이지 않으며(위 `jq` 결과 `[]`), `.claude/settings.json`의 permission `deny` 규칙도 0개입니다(`jq -c '.permissions.deny // [] | length' .claude/settings.json` = 0). 사용자 환경이 2.1.304에서 이 조건에 해당했는지는 관측하지 않았습니다.
|
|
2682
|
+
- CHANGELOG 원문: "Fixed `/effort` and `/autocompact` settings not applying when the model name differed from a `modelOverrides` value by letter case or a `[1m]` tag"
|
|
2683
|
+
(305) 모델 이름이 `modelOverrides` 값과 대소문자나 `[1m]` 태그에서 다를 때 `/effort`·`/autocompact` 설정이 적용되지 않던 결함이 수정되었습니다. 이 저장소의 두 settings에는 `modelOverrides`가 보이지 않습니다(`git grep -n modelOverrides -- .claude/settings.json templates/.claude/settings.json` rc=1). R006은 `[1m]` 접미사를 1M 컨텍스트 표기로 안내하므로(`.claude/rules/MUST-agent-design.md:62`), `modelOverrides`를 쓰는 사용자 환경에서는 이 표기 차이가 결함 조건이었을 수 있습니다 [가설 — 사용자 환경의 `modelOverrides` 값은 미관측].
|
|
2684
|
+
- CHANGELOG 원문: "Improved MCP consent dialogs so an Enter meant for the prompt is less likely to be taken as Accept"
|
|
2685
|
+
(305) 프롬프트에 입력하려던 Enter가 MCP 동의 대화상자의 Accept로 받아들여질 가능성이 줄었습니다. 이 저장소는 `.mcp.json`에 프로젝트 MCP 서버 2개를 두며(`jq -c '.mcpServers | keys' .mcp.json` = `["eraser","ontology-rag"]`), `.claude/settings.json`에서 `enableAllProjectMcpServers: true`와 `enabledMcpjsonServers: ["ontology-rag"]`를 설정합니다(`jq -c '{enableAllProjectMcpServers, enabledMcpjsonServers}' .claude/settings.json`). 이 설정이 적용되는 환경에서는 프로젝트 MCP 서버의 동의 대화상자가 뜨지 않는다고 봅니다 [가설 — 프로젝트 settings의 이 두 키가 현재 CC에서 적용되는지는 미관측이며, 새 클론에서 대화형 세션을 시작해 동의 대화상자 표시 여부로 판정].
|
|
2686
|
+
- CHANGELOG 원문: "Fixed startup warnings printing as raw text above the logo: they now go to the debug log, and permission rules that restrict nothing show as warning rows under the banner"
|
|
2687
|
+
(305) 시작 경고가 로고 위에 원문 텍스트로 찍히던 문제가 수정되어 이제 debug log로 가고, 아무것도 제한하지 않는 permission 규칙은 배너 아래 경고 행으로 표시됩니다. R010이 기록한 project/local `defaultMode: "bypassPermissions"` 무시 WARN은 `claude -p --debug-file`의 debug 파일에서 관측된 것입니다(`.claude/rules/MUST-orchestrator-coordination.md:625`, DETAIL 주석 안). 그 WARN이 대화형 시작 화면에도 찍혔는지는 관측하지 않았으므로, 이 변경 뒤에도 해당 확인은 debug 파일로 합니다 [가설 — 대화형 시작 화면과 debug log를 함께 보면 판정]. 이 저장소의 `.claude/settings.json` permission은 allow 17개·deny 0개·ask 0개입니다(`jq -c '.permissions | {allowN:(.allow//[]|length), denyN:(.deny//[]|length), askN:(.ask//[]|length)}' .claude/settings.json`). R010에 따르면 2.1.257부터 project/local의 `defaultMode: "bypassPermissions"`는 무시됩니다(`.claude/rules/MUST-orchestrator-coordination.md:588`). 같은 줄의 `claude -p` 실측 규칙에 따르면, 이 저장소처럼 project에 그 값이 있으면(`jq -r '.permissions.defaultMode' .claude/settings.json` = bypassPermissions) 그 범위는 `default`로 귀결되어 user 값이 `bypassPermissions`가 아닌 한 `default`가 되고, user가 `bypassPermissions`이면 `bypassPermissions`로 남습니다. local 범위의 다른 값(같은 줄의 실측은 `default`, `acceptEdits`이며 `auto`는 무시, `plan`·`dontAsk`는 미측정)은 여전히 적용되어 project·user 값보다 우선하며, managed 설정과 실행 플래그도 원천입니다. 따라서 유효 모드는 기기마다 다르며, 대화형 세션의 결과는 R010이 `-p` 결과와 조정하지 않은 `[가설]`로 둡니다. 이 allow 규칙이 "restrict nothing" 경고 행으로 표시되는지는 관측하지 않았습니다 [가설 — 유효 모드를 기록한 대화형 세션의 시작 배너 경고 행으로 판정].
|
|
2688
|
+
|
|
2689
|
+
### 서브에이전트 · 팀원 · worktree · Workflow
|
|
2690
|
+
|
|
2691
|
+
- CHANGELOG 원문: "Fixed new worktrees in a bare repository sometimes starting from local HEAD instead of the default branch, and unchanged subagent worktrees sometimes not being cleaned up"
|
|
2692
|
+
(305) bare 저장소의 새 worktree가 기본 브랜치 대신 로컬 HEAD에서 때때로 시작하던 결함과, 바뀌지 않은 서브에이전트 worktree가 때때로 정리되지 않던 결함이 수정되었습니다. 이 저장소는 bare 저장소가 아닙니다(`git rev-parse --is-bare-repository` = false). 관측한 범위에서 frontmatter로 worktree 격리하는 에이전트는 보이지 않으며(`git grep -n -E '^isolation:' -- '.claude/agents/*.md'` 결과는 `.claude/agents/sec-codeql-expert.md:8`의 `sandbox` 한 건), 작성 기기의 작업 트리에서 조사 시점에 관측한 `git worktree list`는 1줄(메인 작업 트리)이었으며, 이 값은 체크아웃마다 다른 로컬 상태입니다. 서브에이전트 worktree 정리 결함은 호출 단위 `isolation: "worktree"` 위임에서 관련된다고 봅니다 [가설 — 호출 단위 worktree 위임 뒤 `git worktree list`의 잔존 줄로 판정].
|
|
2693
|
+
- CHANGELOG 원문: "Fixed Claude naming the wrong model for a subagent's work after the subagent switched to a fallback model"
|
|
2694
|
+
(305) 서브에이전트가 fallback 모델로 바뀐 뒤 Claude가 그 서브에이전트 작업의 모델을 잘못 말하던 결함이 수정되었습니다. R009는 병렬 스폰 표시에 `[N] {subagent_type}:{model}` 형식을 쓰고(`.claude/rules/MUST-parallel-execution.md:290`), R006의 v2.1.247 버전 노트(`.claude/rules/MUST-agent-design.md:81`, HTML 주석 안)는 서브에이전트가 첫 호출의 model 404에서 세션의 fallback model chain을 쓴다고 기록합니다. 스폰 표시의 모델은 요청한 모델이며, 수정 전 버전에서는 fallback 전환 뒤 Claude가 서술한 실행 모델이 틀렸을 수 있습니다 [가설 — 서브에이전트 트랜스크립트의 `message.model` 값과 Claude의 서술을 대조하면 판정].
|
|
2695
|
+
- CHANGELOG 원문: "Fixed cloud sessions and teammates not telling Claude when a compaction had to leave the oldest messages out of its summary to fit"
|
|
2696
|
+
(305) compaction이 요약 크기에 맞추려고 가장 오래된 메시지를 요약에서 빼야 했을 때 cloud 세션과 팀원이 이를 Claude에 알리지 않던 결함이 수정되었습니다. 이 환경에서 팀원은 이름 붙인 `Agent` 스폰으로 생깁니다(`.claude/rules/MUST-agent-teams.md:22`). 수정 전 버전에서는 오래 실행된 팀원 세션의 Claude가, compaction이 초기 위임 지시를 포함할 수 있는 가장 오래된 메시지를 요약에서 뺀 사실을 통보받지 못했을 수 있습니다 [가설 — 팀원 compaction에서 메시지 누락이 실제로 일어났는지는 미관측]. R018의 결정론적 완료 검증 원칙(「Member Completion Verification」, 제목 `.claude/rules/MUST-agent-teams.md:501`)은 그대로입니다.
|
|
2697
|
+
- CHANGELOG 원문: "Fixed Workflow resume re-running already-completed `pipeline()` and `parallel()` agents instead of serving them from the run's journal"
|
|
2698
|
+
(305) Workflow resume이 이미 완료된 `pipeline()`·`parallel()` agent를 실행 journal에서 제공하지 않고 다시 실행하던 결함이 수정되었습니다. R009의 v2.1.269/271 버전 노트(`.claude/rules/MUST-parallel-execution.md:206`, HTML 주석 안)는 Workflow 스크립트 내부의 `parallel()`/`pipeline()` fan-out을 `CLAUDE_CODE_WORKFLOW_MAX_CONCURRENT_AGENTS`가 규율한다고 적습니다. 관측한 범위에서 `.claude/skills`에는 `pipeline(`·`parallel(` 호출이 보이지 않으므로(`git grep -n -E '(^|[^[:alnum:]_])(pipeline|parallel)\(' -- .claude/skills` rc=1) 스킬이 배포하는 Workflow 스크립트 경로의 영향은 관측되지 않았습니다. 사용자가 작성한 Workflow 스크립트를 수정 전 버전에서 resume했다면 완료된 agent가 다시 실행되어 비용과 부수효과가 중복되었을 수 있습니다 [가설 — 해당 Workflow의 resume 기록으로 판정].
|
|
2699
|
+
|
|
2700
|
+
### 무인 실행 · Bash
|
|
2701
|
+
|
|
2702
|
+
- CHANGELOG 원문: "Added `CLAUDE_CODE_RETRY_WATCHDOG_USAGE_LIMIT_RECHECK_MS` so unattended retry mode (`CLAUDE_CODE_RETRY_WATCHDOG`) notices a usage limit that was lifted before its reset"
|
|
2703
|
+
(305) 무인 재시도 모드(`CLAUDE_CODE_RETRY_WATCHDOG`)가 리셋 전에 해제된 사용량 한도를 알아차리도록 `CLAUDE_CODE_RETRY_WATCHDOG_USAGE_LIMIT_RECHECK_MS`가 추가되었습니다. 관측한 범위에서 이 저장소의 settings와 스킬은 `CLAUDE_CODE_RETRY_WATCHDOG`를 설정하지 않습니다(`git grep -n -E 'CLAUDE_CODE_RETRY_WATCHDOG' -- .claude/skills .claude/settings.json templates/.claude/settings.json` rc=1). 관측한 범위(`git grep -n 'RETRY_WATCHDOG' -- . ':!guides/claude-code/15-version-compatibility.md' ':!templates/guides/claude-code/15-version-compatibility.md'`)에서 그 밖의 참조는 R018 v2.1.260 버전 노트 서술(`.claude/rules/MUST-agent-teams.md:549`, HTML 주석 안)과 그 `templates/` 미러, 그리고 `wiki/rules/r018.md:161`의 영어 요약입니다. 무인 `/fsd`를 이 재시도 모드로 실행하는 사용자 환경에서 관련된다고 봅니다 [가설 — 사용자 환경의 환경 변수 설정은 미관측].
|
|
2704
|
+
- CHANGELOG 원문: "Fixed Bash commands on a full disk failing with a raw `ENOSPC` file path: the error now says the disk is full and that nothing ran"
|
|
2705
|
+
(305) 디스크가 가득 찬 상태의 Bash 명령이 원시 `ENOSPC` 파일 경로로 실패하던 문제가 수정되어, 이제 디스크가 가득 찼고 아무것도 실행되지 않았다고 알립니다. R020 「Failure/Interrupt Report ≠ Actual Failure」(제목 `.claude/rules/MUST-completion-verification.md:524`)는 도구의 실패·중단 보고도 ground-truth로 확인하도록 요구합니다. 원문에 따르면 이 오류에서는 명령이 실행되지 않았으므로, 이 메시지를 받은 경우 그 명령의 부분 산출물보다 디스크 여유 공간을 먼저 확인합니다. 실행 도중 디스크가 차서 끊긴 명령은 별개 경우이며, 2.1.309 CHANGELOG의 "a Bash command cut off by a full disk now says so and names the folder to free up" 문장이 다룹니다. 그 경우에는 명령이 부분 실행되었으므로 부분 산출물이 확인 대상입니다.
|
|
2706
|
+
|
|
2707
|
+
기타 28건 — 이 저장소 비해당으로 판단한 항목입니다: Linux `sandbox.allowNestedUserNamespaces`, cloud session·SDK `setMcpServers`의 MCP 서버 교체, 예약된 Cowork cloud 세션의 WebFetch 승인 대기, Remote Control `/resume` 항목·spawn-mode 안내, `/usage`·스크린 리더·`/artifacts` 같은 터미널 UI, mod `Image`·docked pane, managed `allowedMcpServers`의 `managed-mcp.json` 필터, Claude Desktop이 경로로 마운트한 플러그인의 `allowManagedPermissionRulesOnly` 처리, Self-hosted runner·VSCode·Cloud sessions·Claude Tag·Code Review 항목. 기능어 표본 검색(`git grep -n -i -o -E 'allowNestedUserNamespaces|setMcpServers|allowedMcpServers|deniedMcpServers|managed-mcp|allowManagedPermissionRulesOnly|spinnerVerbs|axScreenReader|screen reader|iTerm|docked pane|Cowork|remote.control|/usage|/artifacts|self-hosted|alwaysLoad' -- .claude CLAUDE.md .github package.json`)의 히트 파일은 `.claude/rules/` 아래 9개와 `CLAUDE.md` 하나이며, `CLAUDE.md:245`의 히트는 cc-token-saver `/usage-view`의 부분 문자열 일치입니다. 룰 파일 9개의 히트는 문맥별로 판정하지 않았고, 기능어가 없는 표시 항목도 검색으로 판정하지 않았습니다 [가설 — 항목별 저장소 측정은 위 본문 항목에 한해 실행했습니다]. 실측: `gh release view v2.1.305 --repo anthropics/claude-code --json body --jq .body | grep -c '^- '` = 38건 중 위 본문 10건을 다뤘으므로 38 − 10 = 28건입니다. 계수 범위는 해당 릴리즈 노트의 최상위 불릿 줄(`- `로 시작하는 줄)입니다.
|
|
2708
|
+
|
|
2709
|
+
**Action items**:
|
|
2710
|
+
- 관측한 범위에서 행동 변화를 위해 룰·CLAUDE.md·에이전트·훅을 바꿔야 한다고 확정한 항목은 없습니다(R016: CC 지식은 이 가이드에 두고 룰 파일에는 행동 변화가 필요할 때만 1줄). 위 `[가설 — …]` 표기는 판정 기준을 충족하는 측정이 이루어지기 전에는 결론으로 쓰지 않습니다.
|
|
1944
2711
|
|
|
1945
2712
|
## Known Platform Issues & Workarounds
|
|
1946
2713
|
|
|
@@ -1995,6 +2762,20 @@ Opus 4.8에서 thinking blocks가 수정되어 API 오류가 발생하던 버그
|
|
|
1995
2762
|
- #1766 — Claude Code v2.1.287 compatibility documentation
|
|
1996
2763
|
- #1790 — Claude Code v2.1.288 compatibility documentation
|
|
1997
2764
|
- #1791 — Claude Code v2.1.289 compatibility documentation
|
|
2765
|
+
- #1845 — Claude Code v2.1.290 compatibility documentation
|
|
2766
|
+
- #1844 — Claude Code v2.1.291 compatibility documentation
|
|
2767
|
+
- #1847 — Claude Code v2.1.292 compatibility documentation
|
|
2768
|
+
- #1849 — Claude Code v2.1.293 compatibility documentation
|
|
2769
|
+
- #1848 — Claude Code v2.1.294 compatibility documentation
|
|
2770
|
+
- #1850 — Claude Code v2.1.295 compatibility documentation
|
|
2771
|
+
- #1851 — Claude Code v2.1.296 compatibility documentation
|
|
2772
|
+
- #1861 — Claude Code v2.1.299 compatibility documentation
|
|
2773
|
+
- #1862 — Claude Code v2.1.300 compatibility documentation
|
|
2774
|
+
- #1863 — Claude Code v2.1.301 compatibility documentation
|
|
2775
|
+
- #1864 — Claude Code v2.1.302 compatibility documentation
|
|
2776
|
+
- #1865 — Claude Code v2.1.303 compatibility documentation
|
|
2777
|
+
- #1866 — Claude Code v2.1.304 compatibility documentation
|
|
2778
|
+
- #1868 — Claude Code v2.1.305 compatibility documentation
|
|
1998
2779
|
- `.claude/skills/claude-native/` — auto-generation source
|
|
1999
2780
|
- `.claude/rules/SHOULD-hud-statusline.md` — R012 statusline integration
|
|
2000
2781
|
- `.claude/rules/MUST-agent-design.md` — R006 agent frontmatter spec
|