oh-my-customcode 1.1.15 → 1.1.17

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 CHANGED
@@ -241,7 +241,7 @@ var init_package = __esm(() => {
241
241
  workspaces: [
242
242
  "packages/*"
243
243
  ],
244
- version: "1.1.15",
244
+ version: "1.1.17",
245
245
  description: "Batteries-included agent harness for Claude Code",
246
246
  type: "module",
247
247
  bin: {
package/dist/index.js CHANGED
@@ -2031,7 +2031,7 @@ var package_default = {
2031
2031
  workspaces: [
2032
2032
  "packages/*"
2033
2033
  ],
2034
- version: "1.1.15",
2034
+ version: "1.1.17",
2035
2035
  description: "Batteries-included agent harness for Claude Code",
2036
2036
  type: "module",
2037
2037
  bin: {
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "workspaces": [
4
4
  "packages/*"
5
5
  ],
6
- "version": "1.1.15",
6
+ "version": "1.1.17",
7
7
  "description": "Batteries-included agent harness for Claude Code",
8
8
  "type": "module",
9
9
  "bin": {
@@ -222,7 +222,7 @@
222
222
  "matcher": "*",
223
223
  "hooks": [
224
224
  {
225
- "type": "prompt",
225
+ "type": "command",
226
226
  "command": "bash .claude/hooks/scripts/session-autofix-prompt.sh"
227
227
  }
228
228
  ],
@@ -1,15 +1,15 @@
1
1
  #!/bin/bash
2
2
  # Stage-blocking hook: blocks Write/Edit in non-implement stages
3
3
  # Mutual Exclusion: This hook is mutually exclusive with autonomous mode (R010).
4
- # When /tmp/.claude-dev-stage exists, autonomous mode cannot be activated.
4
+ # When /tmp/.claude-dev-stage-$PPID exists, autonomous mode cannot be activated.
5
5
  # When /tmp/.claude-autonomous-$PPID exists, /structured-dev-cycle should not be started.
6
6
  # See: MUST-orchestrator-coordination.md "Autonomous Execution Mode" section.
7
- if [ -f /tmp/.claude-dev-stage ]; then
8
- stage=$(cat /tmp/.claude-dev-stage | tr -d '[:space:]')
7
+ if [ -f /tmp/.claude-dev-stage-$PPID ]; then
8
+ stage=$(cat /tmp/.claude-dev-stage-$PPID | tr -d '[:space:]')
9
9
  if [ -z "$stage" ]; then exit 0; fi
10
10
  case "$stage" in
11
11
  plan|verify-plan|verify-impl|compound|done)
12
- echo "⛔ BLOCKED: Write/Edit disabled in '$stage' stage. Only allowed during 'implement' stage. Use 'echo implement > /tmp/.claude-dev-stage' to transition."
12
+ echo "⛔ BLOCKED: Write/Edit disabled in '$stage' stage. Only allowed during 'implement' stage. Use 'echo implement > /tmp/.claude-dev-stage-$PPID' to transition."
13
13
  exit 2
14
14
  ;;
15
15
  esac
@@ -20,7 +20,7 @@ collect_state() {
20
20
  [ -f "/tmp/.claude-autonomous-$PPID" ] && autonomous="true"
21
21
 
22
22
  # Dev stage (structured-dev-cycle)
23
- [ -f "/tmp/.claude-dev-stage" ] && dev_stage=$(cat "/tmp/.claude-dev-stage" 2>/dev/null)
23
+ [ -f "/tmp/.claude-dev-stage-$PPID" ] && dev_stage=$(cat "/tmp/.claude-dev-stage-$PPID" 2>/dev/null)
24
24
 
25
25
  # Tool call counter
26
26
  [ -f "/tmp/claude-tool-count-$PPID" ] && tool_count=$(cat "/tmp/claude-tool-count-$PPID" 2>/dev/null)
@@ -49,12 +49,13 @@ Extended context suffix: `[1m]` (e.g., `claude-opus-4-6[1m]`) — enables 1M tok
49
49
 
50
50
  This is a settings-level resilience mechanism, distinct from the per-agent `model:` frontmatter. It complements the `model-escalation` skill (outcome-based escalation) by handling availability/overload failover at the platform level.
51
51
 
52
- > **v2.1.178+**: Compaction now honors the `fallbackModel` chain — on overload or model-availability errors during context compaction, CC falls back to the configured fallback model instead of failing the compaction. Extends the v2.1.166 `fallbackModel` resilience to the compaction path.
52
+ <!-- ARCHIVED CC version note (historical): > **v2.1.178+**: Compaction now honors the `fallbackModel` chain — on overload or model-availability errors during context compaction, CC falls back to the configured fallback model instead of failing the compaction. Extends the v2.1.166 `fallbackModel` resilience to the compaction path. -->
53
53
 
54
54
  ### Thinking Toggle (CC v2.1.166+)
55
55
 
56
56
  > **v2.1.166+**: `MAX_THINKING_TOKENS=0`, `--thinking disabled`, and the per-model thinking toggle disable thinking on models that think by default via the Claude API (3rd-party providers unchanged). Relevant when an agent's `effort` is low and thinking overhead is undesirable.
57
57
 
58
+ <!-- ARCHIVED CC version notes (historical):
58
59
  > **v2.1.183+**: CC now warns (stderr, in `-p` print mode) when the requested model is deprecated or auto-updated to a newer model — and this warning now ALSO covers models set in agent frontmatter (`model:`). Relevant to the Model Aliases table above: a stale/deprecated `model:` value in agent frontmatter now surfaces a deprecation warning instead of silently resolving. Separately, v2.1.183 fixes `thinking.disabled.display: Extra inputs are not permitted` 400 errors on subagent spawns and session-title generation — extends the v2.1.166 toggle above; subagent spawns with thinking disabled no longer 400.
59
60
 
60
61
  > **v2.1.187+**: Org-configured model restrictions now apply to the model picker, `--model`, `/model`, and `ANTHROPIC_MODEL` (a restricted model shows "restricted by your organization's settings"). Extends the v2.1.175 `enforceAvailableModels` scope to per-agent `model:` override entry points — a managed model allowlist now also constrains the picker/env paths. Also fixed `--json-schema` / workflow `agent({schema})` structured output: the model can no longer re-call `StructuredOutput` indefinitely after a successful call, and follow-up turns reliably return structured output — relevant to schema-constrained subagent spawns.
@@ -62,14 +63,17 @@ This is a settings-level resilience mechanism, distinct from the per-agent `mode
62
63
  > **v2.1.196+**: 조직 기본 모델(org default models)이 추가되어 관리자가 org 콘솔에서 조직 전체 기본 모델을 설정하며, 사용자가 직접 선택하지 않으면 `/model`에 "Org default"(또는 "Role default")로 표시됩니다. v2.1.175 `enforceAvailableModels`/v2.1.187 org model restriction의 연장선 — 조직 관리 설정이 기본 모델 해석까지 관여합니다. 또한 백그라운드 세션 turn 이후 중복 recap 라인 문제를 수정 — schema-rejected된 StructuredOutput 시도가 재시도와 나란히 렌더되지 않습니다(schema-constrained subagent spawn / Workflow `agent({schema})`에 관련).
63
64
 
64
65
  > **v2.1.198+**: 내장 Explore 에이전트가 이제 main session의 모델을 상속합니다(opus로 cap; 이전에는 haiku 고정) — Explore 기반 검색 subagent의 추론 품질이 향상됩니다. 또한 subagent와 context compaction이 session의 extended thinking 설정을 상속하여, 위임된 작업의 출력 품질이 세션 설정과 정합됩니다. R009/R018 병렬 subagent 위임 품질에 관련.
66
+ -->
65
67
 
66
68
  ### Safe Mode & Bundled Skill Control (CC v2.1.169+)
67
69
 
68
70
  > **v2.1.169+**: `--safe-mode` (and `CLAUDE_CODE_SAFE_MODE`) starts Claude Code with ALL customizations disabled (CLAUDE.md, plugins, skills, hooks, MCP servers) — use it to isolate whether a project customization (agent/skill/hook) causes a regression. The `disableBundledSkills` setting (and `CLAUDE_CODE_DISABLE_BUNDLED_SKILLS` env) hides bundled skills, workflows, and built-in slash commands from the model — useful when bundled skills conflict with or duplicate project skills (R006 skill-surface management). Note: `disableBundledSkills` hides skills from the model but is a CC platform setting, distinct from the advisory `skills:` frontmatter field (which is documentation metadata, not a runtime allowlist).
69
71
 
72
+ <!-- ARCHIVED CC version notes (historical):
70
73
  > **v2.1.172+**: `availableModels` restrictions now apply to subagent `model:` overrides, the agent dispatch model picker, and the advisor model. `availableModels` allowlists using version-specific IDs (e.g. `claude-opus-4-8`) no longer hide the Opus/Sonnet 1M picker rows, and model IDs no longer receive a doubled 1M suffix (`[1M][1m]`) when `ANTHROPIC_DEFAULT_OPUS_MODEL` already includes one. Relevant when restricting per-agent model overrides via `availableModels`.
71
74
 
72
75
  > **v2.1.175+**: The `enforceAvailableModels` managed setting — when enabled, the `availableModels` allowlist also constrains the **Default** model: a Default that would resolve to a disallowed model now falls back to the first allowed model, and user or project settings can no longer widen a managed `availableModels` list. Extends the v2.1.172 `availableModels` scope (subagent `model:` overrides, dispatch picker, advisor model) to the Default model itself. Relevant when an enterprise/managed config pins the allowed model set — per-agent `model:` overrides AND the resolved Default both honor it.
76
+ -->
73
77
 
74
78
  ### Optional Frontmatter
75
79
 
@@ -206,6 +210,7 @@ Agent frontmatter `hooks:` now fire when the agent runs as a main-thread agent v
206
210
 
207
211
  > **Note**: `/reload-plugins` now auto-installs missing plugin dependencies from added marketplaces (v2.1.116+).
208
212
 
213
+ <!-- ARCHIVED CC version notes (historical):
209
214
  > **v2.1.157+**: `settings.json` `agent` field is now honored for dispatched sessions (with `--agent <name>` override). `EnterWorktree` can switch between Claude-managed worktrees mid-session, and worktrees are left unlocked when the agent finishes (enabling `git worktree remove`/`prune` cleanup).
210
215
 
211
216
  > **v2.1.191+**: Hooks with comma-separated matchers (e.g. `"Bash,PowerShell"`) now fire correctly — previously such matchers silently never fired. Relevant when authoring `.claude/hooks/` entries that target multiple tools in one matcher.
@@ -213,6 +218,7 @@ Agent frontmatter `hooks:` now fire when the agent runs as a main-thread agent v
213
218
  > **v2.1.195+**: 하이픈이 포함된 hook matcher 식별자(예: `code-reviewer`, `mcp__brave-search`)가 이제 substring이 아니라 exact-match됩니다(이전에는 부분 문자열로 우연히 매칭). 하이픈 포함 MCP 서버의 모든 tool을 매칭하려면 `mcp__brave-search__.*` 형식을 사용하세요. 참고: oh-my-customcode의 `hooks.json`은 `*` / `mcp_tool_name matches "..."` / `tool == "..."` 형식을 사용하므로 이 변경의 영향을 받지 않습니다 — 다만 하이픈 포함 tool-name matcher를 새로 추가할 때 exact-match 시맨틱을 고려해야 합니다.
214
219
 
215
220
  > **v2.1.199+**: SessionStart/Setup/SubagentStart hook이 exit code 2로 종료할 때 stderr를 조용히 숨기던 문제가 수정되어 이제 오류가 표시됩니다. `.claude/hooks.json`의 hard-block/advisory hook 디버깅 가시성이 향상됩니다(R021 Enforcement Tiers 관측성과 정합).
221
+ -->
216
222
 
217
223
  > **v2.1.204+**: headless 세션의 SessionStart hook 중 hook 이벤트가 스트리밍되지 않아 remote worker가 hook 도중 idle-reap되던 문제가 수정되었습니다. Hook Event Types/SessionStart 관련.
218
224
 
@@ -412,11 +418,13 @@ Key optional fields: `scope`, `context`, `version`, `effort`, `model`, `agent`,
412
418
 
413
419
  > **v2.1.163+**: In skill `command` bodies, use `\$` to emit a literal `$` before a number (e.g., `\$1`) — previously ambiguous with shell variable expansion. Relevant when authoring skills with `shell:` or inline command steps that include dollar signs not intended as variables.
414
420
 
421
+ <!-- ARCHIVED CC version notes (historical):
415
422
  > **v2.1.178+**: Skills in nested `.claude/skills` directories now load when working on files in that subtree; on a name clash with a higher-scope skill, the nested skill is surfaced as `<dir>:<name>` so both remain invokable. Directory-qualified nested skills also no longer trigger permission prompts in non-interactive runs. Additionally, MCP-spec entries (`mcp__server`, `mcp__server__*`, `mcp__*`) in a subagent's `disallowedTools` are now honored (previously silently ignored) — relevant to the Optional Frontmatter `disallowedTools` field. oh-my-customcode keeps a flat `.claude/skills/` layout, but the `<dir>:<name>` disambiguation matters if a nested project subtree introduces a same-named skill.
416
423
 
417
424
  > **v2.1.178+**: When names collide across nested `.claude/` directories, the agent, workflow, and output-style CLOSEST to the working directory now wins; project-scope workflow saves target the closest existing `.claude/workflows/`. Relevant to multi-`.claude/` layouts — project-root `.claude/` definitions are overridden by a nested `.claude/` when working inside that subtree.
418
425
 
419
426
  > **v2.1.199+**: 스택된 slash-skill 호출(`/skill-a /skill-b do XYZ`)이 이제 leading skill을 최대 5개까지 모두 로드합니다(이전에는 첫 번째만 로드). oh-my-customcode의 라우팅 스킬 체이닝(예: `/omcustom:fsd`가 여러 스킬을 연쇄 호출하는 패턴)에서 다중 스킬 스택 호출 시 컨텍스트 손실이 줄어듭니다. 또한 subagent 조회 중 `/model`·`/fast`를 입력하면 lead의 model picker가 열리며 notice가 표시됩니다.
427
+ -->
420
428
 
421
429
  <!-- DETAIL: Skill Optional Fields (full yaml block)
422
430
  ```yaml
@@ -50,7 +50,10 @@ These are distinct mechanisms. Agent Teams `SendMessage` requires `TeamCreate` a
50
50
 
51
51
  This hardens cross-session coordination (claude-peers-mcp `send_message`, see Scope table above) against privilege escalation — a relayed message from session A cannot grant session B permissions the user did not authorize on B. Aligns with R001 (credential/privileged-scope guardrails) and R010 (out-of-scope privileged chaining). Intra-session Agent Teams `SendMessage` between peers in the same session is unaffected.
52
52
 
53
+ <!-- ARCHIVED CC version note (historical):
53
54
  > **v2.1.183+**: Fixed tmux teammate panes failing to launch when the shell has slow rc-file initialization — a slow `.zshrc`/`.bashrc` no longer prevents Agent Teams teammate panes from launching in tmux. Also fixed WebSearch returning empty results in subagents: a subagent (including a Teams member) using WebSearch now returns results instead of silently empty.
55
+ -->
56
+
54
57
 
55
58
  ## Self-Check (Before Agent Tool)
56
59
 
@@ -384,7 +387,10 @@ Cross-reference: R020 ("actual outcome ≠ attempt" — verifying that a command
384
387
 
385
388
  Observed instance: v0.159.0 release (session 105) — members assigned to disjoint-file cleanup tasks went idle without executing; deterministic git-diff check exposed the gap; work was reassigned to standalone parallel Agents. References: #1261, #1262.
386
389
 
390
+ <!-- ARCHIVED CC version note (historical):
387
391
  > **v2.1.186+**: Added the `teammateMode: "iterm2"` setting (warns when auto mode cannot find the `it2` CLI), and added status filtering (press `f`) to the `/workflows` agent detail view. Relevant to Agent Teams teammate launch configuration (cf. v2.1.183 tmux teammate-pane fix).
392
+ -->
393
+
388
394
 
389
395
  ## Member Prompt Size Cap
390
396
 
@@ -179,7 +179,7 @@ When the user explicitly signals full-delegation intent, the orchestrator operat
179
179
  ### Activation Protocol
180
180
 
181
181
  1. User gives explicit autonomous signal (not inferred from task complexity)
182
- 2. Verify stage-blocker is NOT active (`/tmp/.claude-dev-stage` must not exist)
182
+ 2. Verify stage-blocker is NOT active (`/tmp/.claude-dev-stage-$PPID` must not exist)
183
183
  3. Create marker: `echo 1 > /tmp/.claude-autonomous-$PPID`
184
184
  4. Announce: `[Autonomous Mode] Activated for current task scope`
185
185
 
@@ -211,7 +211,7 @@ When the user explicitly signals full-delegation intent, the orchestrator operat
211
211
  ### Mutual Exclusion
212
212
 
213
213
  - Autonomous mode and `/structured-dev-cycle` (stage-blocker) are **mutually exclusive**
214
- - If `/tmp/.claude-dev-stage` exists → autonomous mode CANNOT be activated
214
+ - If `/tmp/.claude-dev-stage-$PPID` exists → autonomous mode CANNOT be activated
215
215
  - If autonomous mode is active → `/structured-dev-cycle` should not be started
216
216
 
217
217
  ### Self-Check
@@ -225,7 +225,7 @@ When the user explicitly signals full-delegation intent, the orchestrator operat
225
225
  ║ NO → Do NOT activate ║
226
226
  ║ ║
227
227
  ║ 2. Is stage-blocker inactive? ║
228
- ║ (/tmp/.claude-dev-stage does NOT exist) ║
228
+ ║ (/tmp/.claude-dev-stage-$PPID does NOT exist) ║
229
229
  ║ YES → Continue ║
230
230
  ║ NO → Cannot activate (mutually exclusive) ║
231
231
  ║ ║
@@ -310,7 +310,10 @@ Before spawning any agent:
310
310
 
311
311
  ### Background Agent Permission Mode (`/bg` flow)
312
312
 
313
+ <!-- ARCHIVED CC version note (historical):
313
314
  > **v2.1.141+**: Background agents launched via `/bg` or `←←` now preserve the current session's permission mode instead of reverting to default. Previously, detaching a session could cause `bypassPermissions` to be lost, triggering unexpected permission prompts in unattended flows.
315
+ -->
316
+
314
317
 
315
318
  | CC Version | `/bg` permission behavior |
316
319
  |------------|--------------------------|
@@ -319,6 +322,7 @@ Before spawning any agent:
319
322
 
320
323
  `mode: "bypassPermissions"` on every Agent tool call is still required (applies to Agent tool, not `/bg` shell command).
321
324
 
325
+ <!-- ARCHIVED CC version note (historical):
322
326
  > **v2.1.172+**: Fixed background agents potentially reading another directory's project settings (`.mcp.json` approvals, trust) when dispatched onto a pre-warmed worker. Strengthens background-agent isolation — a `/bg`-dispatched agent now reads the correct project's settings.
323
327
 
324
328
  > **v2.1.174+**: Fixed background sessions inheriting another session's `ANTHROPIC_*` provider env (gateway URL, custom headers, `/model` aliases) from the shell that started the background daemon. Further strengthens background-agent isolation (cf. v2.1.172 project-settings isolation): a `/bg`-dispatched agent no longer picks up a foreign session's provider configuration. Also fixed pre-warmed background workers failing with "Could not resolve authentication method" when claimed after sitting idle. `mode: "bypassPermissions"` on every Agent tool call remains required regardless.
@@ -340,6 +344,7 @@ Before spawning any agent:
340
344
  > **v2.1.196+**: 백그라운드 작업을 wake할 때 transcript probe가 실제 transcript를 오독하여 대화를 영구 삭제하고 원 프롬프트를 재실행하던 문제를 수정 — 이제 파일을 삭제하지 않고 따로 보관합니다(transcript 의존 스킬 `homework`/`episodic-memory`에 관련). `claude agents --dangerously-skip-permissions`가 조용히 auto mode로 폴백하던 문제를 수정하여 bypass 고지를 표시하고 spawned agent에도 bypass 모드를 적용합니다(R010 Universal bypassPermissions와 정합). 또한 `claude agents` 사이드 패널 문제들(에이전트 열 때 키보드 포커스 고착, 열 때마다 백그라운드 작업의 subagent type 유실, 활성 실행 중 잘못된 상태 표시)을 수정. `mode: "bypassPermissions"`는 여전히 필수입니다.
341
345
 
342
346
  > **v2.1.198+**: `claude agents`에서 launch된 background agent가 worktree에서 code 작업을 완료하면 이제 멈춰서 묻지 않고 commit·push·draft PR open을 자동 수행합니다. 또한 응답 중 일시적 network 오류(ECONNRESET 등)로 turn이 abort되던 문제가 backoff retry로 수정되었고, web/desktop/VS Code task panel에서 background task가 완료 후에도 "Running"으로 멈춰있던 문제가 수정되었습니다. background agent의 자동 commit/PR 자동화가 강화되었으므로, `mode: "bypassPermissions"`는 여전히 필수입니다.
347
+ -->
343
348
 
344
349
  > **v2.1.199+**: subagent가 rate limit이나 server error로 잘리면 이제 조용히 실패하는 대신 partial work를 parent에 반환합니다. background-agent daemon(Linux)이 unclean shutdown 후 corrupted worker record로 ~50초마다 자신과 모든 agent를 죽이던 문제, macOS SSH cold-start "Could not switch to audit session" 문제, `claude stop`이 background-agent respawn과 race하면 조용히 무효화되던 문제(이제 respawn이 stop을 존중), background job progress indicator가 긴 명령 중 멈춰있던 문제가 수정되었습니다. background-agent lifecycle 견고성이 추가로 강화되었으며, `mode: "bypassPermissions"`는 여전히 필수입니다.
345
350
 
@@ -35,7 +35,7 @@ On insufficient permission: do not attempt, notify user, suggest alternative.
35
35
 
36
36
  ## Deny Rule Glob Patterns (CC v2.1.166+)
37
37
 
38
- > **v2.1.166+**: Deny rules support glob patterns in the tool-name position — `"*"` in a deny rule denies all tools. Allow rules reject non-MCP globs (only MCP tool-name globs are accepted in the allow position). Unknown tool names in deny rules emit a startup warning.
38
+ <!-- ARCHIVED CC version note (historical): v2.1.166+: Deny rules support glob patterns in the tool-name position — `"*"` in a deny rule denies all tools. Allow rules reject non-MCP globs (only MCP tool-name globs are accepted in the allow position). Unknown tool names in deny rules emit a startup warning. -->
39
39
 
40
40
  | Position | Glob support |
41
41
  |----------|-------------|
@@ -47,17 +47,17 @@ Use a `"*"` deny rule in `settings.json` to enforce a deny-by-default posture, t
47
47
 
48
48
  > **v2.1.178+**: Permission rules now support `Tool(param:value)` syntax to match a tool's input parameters, with `*` wildcard — e.g. `Agent(model:opus)` denies Opus subagents, or a parameter glob to constrain a tool's arguments. This extends the v2.1.166 tool-name glob support down to per-parameter granularity. Relevant to the Agent Tool Permission Mode below: a deny rule can now block specific subagent models/parameters at the platform level, complementing `availableModels` (R006) and the universal `mode: "bypassPermissions"` requirement (R010). A `Agent(model:...)` parameter deny is evaluated by the CC platform independent of the advisory tier table.
49
49
 
50
- > **v2.1.183+**: Fixed MCP servers requiring authentication exposing auth-stub tools to the model in headless/SDK mode — unauthenticated MCP auth-stub tools are no longer surfaced to the model in `-p` / SDK runs (they would fail on call). Relevant to the Tier-6 MCP tier: a headless run no longer offers auth-stub MCP tools. Separately, v2.1.181 added the `sandbox.allowAppleEvents` opt-in setting, letting sandboxed commands send Apple Events on macOS (default off) — a deliberate sandbox-scope widening, complementing the Tier-based policy above.
50
+ <!-- ARCHIVED CC version note (historical): v2.1.183+: Fixed MCP servers requiring authentication exposing auth-stub tools to the model in headless/SDK mode — unauthenticated MCP auth-stub tools are no longer surfaced to the model in `-p` / SDK runs (they would fail on call). Relevant to the Tier-6 MCP tier: a headless run no longer offers auth-stub MCP tools. Separately, v2.1.181 added the `sandbox.allowAppleEvents` opt-in setting, letting sandboxed commands send Apple Events on macOS (default off) — a deliberate sandbox-scope widening, complementing the Tier-based policy above. -->
51
51
 
52
- > **v2.1.186+**: Added `claude mcp login <name>` / `claude mcp logout <name>` to authenticate MCP servers from the CLI without the interactive `/mcp` menu (`--no-browser` stdin redirect for SSH). Also fixed `Agent(type)` deny rules and `Agent(x,y)` allowed-types restrictions not being enforced for named subagent spawns — extends the v2.1.178 `Tool(param:value)` per-parameter permission syntax (Agent model/param deny) to reliable enforcement on named spawns. Relevant to Tier-6 MCP and the Agent Tool Permission Mode section.
52
+ <!-- ARCHIVED CC version note (historical): v2.1.186+: Added `claude mcp login <name>` / `claude mcp logout <name>` to authenticate MCP servers from the CLI without the interactive `/mcp` menu (`--no-browser` stdin redirect for SSH). Also fixed `Agent(type)` deny rules and `Agent(x,y)` allowed-types restrictions not being enforced for named subagent spawns — extends the v2.1.178 `Tool(param:value)` per-parameter permission syntax (Agent model/param deny) to reliable enforcement on named spawns. Relevant to Tier-6 MCP and the Agent Tool Permission Mode section. -->
53
53
 
54
54
  > **v2.1.187+**: Org-configured model restrictions now apply to the model picker, `--model`, `/model`, and `ANTHROPIC_MODEL`, surfacing a "restricted by your organization's settings" message for a restricted model. Extends the v2.1.175 `enforceAvailableModels` managed-setting scope to the model picker/env entry points. Also added the `sandbox.credentials` setting (blocks sandboxed reads of credential files/secret env) — cross-ref R001.
55
55
 
56
- > **v2.1.191+**: Sandbox network permission dialog now REMEMBERS hosts allowed with "Yes" for the rest of the session (no per-connection re-prompt). Also: `/permissions` Recently-denied tab now PERSISTS an approved denial on close (previously discarded); managed `forceRemoteSettingsRefresh` now takes effect via MDM/file policy with `Cache-Control: no-cache`; MCP capability discovery (`tools/list`/`prompts/list`/`resources/list`) and OAuth token requests now retry transient network errors with backoff (headless skips the browser popup). Relevant to Tier-4/Tier-6 (sandbox network + MCP) permission flows.
56
+ <!-- ARCHIVED CC version note (historical): v2.1.191+: Sandbox network permission dialog now REMEMBERS hosts allowed with "Yes" for the rest of the session (no per-connection re-prompt). Also: `/permissions` Recently-denied tab now PERSISTS an approved denial on close (previously discarded); managed `forceRemoteSettingsRefresh` now takes effect via MDM/file policy with `Cache-Control: no-cache`; MCP capability discovery (`tools/list`/`prompts/list`/`resources/list`) and OAuth token requests now retry transient network errors with backoff (headless skips the browser popup). Relevant to Tier-4/Tier-6 (sandbox network + MCP) permission flows. -->
57
57
 
58
- > **v2.1.193+**: `autoMode.classifyAllShell` 설정은 모든 Bash/PowerShell 명령(Tier-4)을 arbitrary-code-execution 패턴만이 아니라 전부 auto-mode classifier로 보냅니다. auto-mode 거부 사유가 transcript / 거부 토스트 / `/permissions` recent denials에 노출됩니다. MCP 서버가 인증이 필요하면 시작 시 `/mcp`를 가리키는 알림을 표시하고, MCP `headersHelper` 인증은 tool 호출이 401/403을 반환하면 자동 재실행·재연결합니다(Tier-6). 이 섹션의 tier 기반 정책과 병존하는 플랫폼-레벨 동작입니다.
58
+ <!-- ARCHIVED CC version note (historical): v2.1.193+: `autoMode.classifyAllShell` 설정은 모든 Bash/PowerShell 명령(Tier-4)을 arbitrary-code-execution 패턴만이 아니라 전부 auto-mode classifier로 보냅니다. auto-mode 거부 사유가 transcript / 거부 토스트 / `/permissions` recent denials에 노출됩니다. MCP 서버가 인증이 필요하면 시작 시 `/mcp`를 가리키는 알림을 표시하고, MCP `headersHelper` 인증은 tool 호출이 401/403을 반환하면 자동 재실행·재연결합니다(Tier-6). 이 섹션의 tier 기반 정책과 병존하는 플랫폼-레벨 동작입니다. -->
59
59
 
60
- > **v2.1.195+**: 프로젝트 `.claude/settings.json`으로만 활성화된 외부 플러그인이 이제 모든 loader 경로에서 명시적 설치 동의를 요구합니다(이전에는 일부 경로에서 우회됨). Tier-6 MCP/플러그인 신뢰 경계 강화.
60
+ <!-- ARCHIVED CC version note (historical): v2.1.195+: 프로젝트 `.claude/settings.json`으로만 활성화된 외부 플러그인이 이제 모든 loader 경로에서 명시적 설치 동의를 요구합니다(이전에는 일부 경로에서 우회됨). Tier-6 MCP/플러그인 신뢰 경계 강화. -->
61
61
 
62
62
  > **v2.1.196+**: 조직 기본 모델(org default models)이 추가되어 관리자가 org 콘솔에서 설정하며, 사용자가 직접 고르지 않으면 `/model`에 "Org default"(또는 "Role default")로 표시됩니다 — v2.1.187 org model restriction 범위를 기본 모델 해석까지 확장(cross-ref R006). 보안: `claude mcp list`/`get`이 self-approved `.mcp.json` 서버를 spawn하지 않고 신뢰되지 않은 워크스페이스는 `⏸ Pending approval` 표시(Tier-6, cross-ref R001). 또한 `claude agents --dangerously-skip-permissions`가 조용히 auto mode로 폴백하던 문제를 수정 — 이제 bypass 고지를 표시하고 spawned agent에도 bypass 모드를 적용합니다(R010 Universal bypassPermissions와 정합).
63
63
 
@@ -100,7 +100,10 @@ Cross-reference: R010 Subagent Scope-Creep STOP Protocol, R002 (permission tiers
100
100
 
101
101
  > **v2.1.187+**: Added the `sandbox.credentials` setting — blocks sandboxed commands from reading credential files and secret environment variables. Platform-level complement to this section's credential guardrails (the model still never echoes secret values; CC now also blocks sandboxed reads of credential files/secret env at the platform level) — defense-in-depth.
102
102
 
103
+ <!-- ARCHIVED CC version note (historical):
103
104
  > **v2.1.191+**: Sandbox network permission "Yes" approvals are remembered per-session (cf. R002). Reduces re-prompts but means an allowed host stays allowed for the session — scope network allows deliberately.
105
+ -->
106
+
104
107
 
105
108
  > **v2.1.193+**: `autoMode.classifyAllShell` 설정은 arbitrary-code-execution 패턴만이 아니라 **모든** Bash/PowerShell 명령을 auto-mode classifier로 라우팅합니다. 이 섹션의 파괴적/자격증명 가드에 대한 플랫폼-레벨 보완입니다(모델은 여전히 명령 전 파괴적 작업을 열거하고 승인을 요청 — model-level; CC가 모든 shell을 classifier로 게이팅 — platform-level, 방어심층). auto-mode 거부 사유가 transcript, 거부 토스트, `/permissions` recent denials에 표시됩니다.
106
109
 
@@ -15,17 +15,17 @@
15
15
 
16
16
  Format: `─── [Spawn] {subagent_type}:{model} | {description} ───` — implemented in `.claude/hooks/hooks.json` (PreToolUse → Agent/Task matcher). Display for multi-step/parallel/long-running ops only.
17
17
 
18
- > **v2.1.141+**: Hook JSON output can include `terminalSequence` field to emit window title changes or terminal bells without terminal control. Complementary to HUD stderr channel — e.g., update window title on task completion or ring bell after long parallel run. Modifying `.claude/hooks/` requires explicit user approval (R001).
18
+ <!-- ARCHIVED CC version note (historical): v2.1.141+ — Hook JSON output can include `terminalSequence` field to emit window title changes or terminal bells without terminal control. Complementary to HUD stderr channel — e.g., update window title on task completion or ring bell after long parallel run. Modifying `.claude/hooks/` requires explicit user approval (R001). -->
19
19
 
20
- > **v2.1.157+**: `tool_decision` telemetry events now include `tool_parameters` (bash commands, MCP/skill names) when `OTEL_LOG_TOOL_DETAILS=1`. Complements R012 observability — enables per-tool parameter tracking in monitoring dashboards. See `monitoring-setup` skill.
20
+ <!-- ARCHIVED CC version note (historical): v2.1.157+ — `tool_decision` telemetry events now include `tool_parameters` (bash commands, MCP/skill names) when `OTEL_LOG_TOOL_DETAILS=1`. Complements R012 observability — enables per-tool parameter tracking in monitoring dashboards. See `monitoring-setup` skill. -->
21
21
 
22
- > **v2.1.161+**: `OTEL_RESOURCE_ATTRIBUTES` values are now emitted as labels on metric datapoints — usage metrics can be sliced by custom dimensions (e.g., team, repo). Extends R012 observability from per-tool parameters (v2.1.157) to per-dimension metric slicing; configure via the `monitoring-setup` skill's `OTEL_RESOURCE_ATTRIBUTES` env. Separately, `claude agents` rows now show `done/total` progress before the detail when work is fanned out, and peek surfaces the longest-running item — complements the HUD parallel-spawn display and R009 `[N]` correlation.
22
+ <!-- ARCHIVED CC version note (historical): v2.1.161+ — `OTEL_RESOURCE_ATTRIBUTES` values are now emitted as labels on metric datapoints — usage metrics can be sliced by custom dimensions (e.g., team, repo). Extends R012 observability from per-tool parameters (v2.1.157) to per-dimension metric slicing; configure via the `monitoring-setup` skill's `OTEL_RESOURCE_ATTRIBUTES` env. Separately, `claude agents` rows now show `done/total` progress before the detail when work is fanned out, and peek surfaces the longest-running item — complements the HUD parallel-spawn display and R009 `[N]` correlation. -->
23
23
 
24
- > **v2.1.174+**: The `/usage` (Account & usage) dialog now shows usage attribution — cache misses, long context, subagents, and per-skill/agent/plugin/MCP breakdowns over the last 24h or 7d (surfaced in the VSCode integration). Extends R012 observability from OTEL metric slicing (v2.1.161) to an interactive in-client attribution view — complements the `monitoring-setup` skill by giving per-skill/agent/plugin/MCP cost visibility without standing up an OTEL backend.
24
+ <!-- ARCHIVED CC version note (historical): v2.1.174+ — The `/usage` (Account & usage) dialog now shows usage attribution — cache misses, long context, subagents, and per-skill/agent/plugin/MCP breakdowns over the last 24h or 7d (surfaced in the VSCode integration). Extends R012 observability from OTEL metric slicing (v2.1.161) to an interactive in-client attribution view — complements the `monitoring-setup` skill by giving per-skill/agent/plugin/MCP cost visibility without standing up an OTEL backend. -->
25
25
 
26
- > **v2.1.176+**: Added the `footerLinksRegexes` setting — regex-matched link badges rendered in the footer row, configurable via user or managed settings. Relevant to R012 statusline composition: the footer can now surface contextual link badges alongside the `.claude/statusline.sh` segments. Also in v2.1.176, session titles are generated in the conversation's language (pin via the `language` setting).
26
+ <!-- ARCHIVED CC version note (historical): v2.1.176+ — Added the `footerLinksRegexes` setting — regex-matched link badges rendered in the footer row, configurable via user or managed settings. Relevant to R012 statusline composition: the footer can now surface contextual link badges alongside the `.claude/statusline.sh` segments. Also in v2.1.176, session titles are generated in the conversation's language (pin via the `language` setting). -->
27
27
 
28
- > **v2.1.172+**: Added a `model` attribute to the `claude_code.lines_of_code.count` OTEL metric — lines-of-code telemetry can now be sliced by model. Extends the per-dimension metric slicing (v2.1.161) in the `monitoring-setup` skill.
28
+ <!-- ARCHIVED CC version note (historical): v2.1.172+ — Added a `model` attribute to the `claude_code.lines_of_code.count` OTEL metric — lines-of-code telemetry can now be sliced by model. Extends the per-dimension metric slicing (v2.1.161) in the `monitoring-setup` skill. -->
29
29
 
30
30
  > **v2.1.193+**: `claude_code.assistant_response` OpenTelemetry 로그 이벤트가 추가되어 모델의 응답 텍스트를 포함합니다. `OTEL_LOG_ASSISTANT_RESPONSES=1`이 아니면 redacted 되지만, 이 변수가 unset이면 `OTEL_LOG_USER_PROMPTS`를 따릅니다 — **보안 주의: 이미 프롬프트 내용을 로깅하는 배포는 업그레이드 즉시 응답 내용도 수신하기 시작합니다. 프롬프트만 유지하려면 `OTEL_LOG_ASSISTANT_RESPONSES=0`으로 설정하세요.** v2.1.157 tool_parameters / v2.1.161 metric slicing에 이은 `monitoring-setup` 스킬 OTEL 관측성 확장이며, 응답 텍스트 로깅은 명시적 opt-out이 필요한 민감 항목입니다.
31
31
 
@@ -70,43 +70,11 @@ Profile: web-app
70
70
  Disable: codex, ralph-wiggum, agent-sdk-dev, ...
71
71
  ```
72
72
 
73
- 6. Apply changes via /tmp script:
73
+ 6. Apply changes via direct Edit on `~/.claude/settings.json` (`mode: "bypassPermissions"`, CC v2.1.121+):
74
+ - Read `~/.claude/settings.json`, merge the computed diff into `enabledPlugins` (set enabled plugins to `true`, disabled plugins to `false`), then Write the updated JSON back.
74
75
 
75
- ```bash
76
- cat > /tmp/profile-apply-$$.sh << 'APPLY'
77
- #!/usr/bin/env python3
78
- import json, sys
79
-
80
- settings_path = "/Users/<user>/.claude/settings.json" # resolve from $HOME
81
- with open(settings_path) as f:
82
- settings = json.load(f)
83
-
84
- profile_path = ".claude/profiles/<name>.json"
85
- with open(profile_path) as f:
86
- profile = json.load(f)
87
-
88
- for plugin in profile["plugins"]["enabled"]:
89
- settings.setdefault("enabledPlugins", {})[plugin] = True
90
- for plugin in profile["plugins"]["disabled"]:
91
- settings.setdefault("enabledPlugins", {})[plugin] = False
92
-
93
- with open(settings_path, "w") as f:
94
- json.dump(settings, f, indent=2)
95
- f.write("\n")
96
-
97
- print("Settings updated.")
98
- APPLY
99
- python3 /tmp/profile-apply-$$.sh
100
- ```
101
-
102
- 7. Write active marker via /tmp script:
103
-
104
- ```bash
105
- cat > /tmp/profile-marker-$$.sh << 'MARKER'
106
- echo "<name>" > .claude/profiles/.active
107
- MARKER
108
- bash /tmp/profile-marker-$$.sh
109
- ```
76
+ 7. Write active marker via direct Write on `.claude/profiles/.active` (`mode: "bypassPermissions"`):
77
+ - Write the profile `<name>` as plain text content to `.claude/profiles/.active`.
110
78
 
111
79
  8. Confirm:
112
80
 
@@ -118,7 +86,7 @@ IMPORTANT: Restart this Claude Code session for plugin changes to take effect.
118
86
 
119
87
  ## Workflow: `/profile reset`
120
88
 
121
- 1. Remove `.claude/profiles/.active` marker via /tmp script
89
+ 1. Remove `.claude/profiles/.active` marker via direct `Bash: /bin/rm .claude/profiles/.active` (`mode: "bypassPermissions"`)
122
90
  2. Print: `[Done] Profile marker removed. Full plugin set will be active after restart.`
123
91
  3. Note: does NOT revert `~/.claude/settings.json` — user should re-run `/profile load <other>` or manually restore
124
92
 
@@ -127,7 +95,7 @@ IMPORTANT: Restart this Claude Code session for plugin changes to take effect.
127
95
  - Profile changes to `~/.claude/settings.json` take effect only after session restart
128
96
  - Profiles define a subset: plugins not listed in `enabled` or `disabled` keep their current state
129
97
  - Profile JSON `enabled`/`disabled` lists use full plugin keys: `<name>@<marketplace>` format
130
- - All `.claude/` writes use the /tmp bypass pattern (see Implementation rules above)
98
+ - All `.claude/` writes use direct Write/Edit/Bash (CC v2.1.121+, no `/tmp` wrapping — see Implementation rules above)
131
99
 
132
100
  ## Manifest Profile Integration
133
101
 
@@ -46,13 +46,13 @@ Stage state is tracked via a marker file for hook enforcement:
46
46
 
47
47
  ```bash
48
48
  # Set stage (used by orchestrator or skill)
49
- echo "plan" > /tmp/.claude-dev-stage
49
+ echo "plan" > /tmp/.claude-dev-stage-$PPID
50
50
 
51
51
  # Valid stage values (all block Write/Edit except 'implement'):
52
52
  # plan, verify-plan, implement, verify-impl, compound, done
53
53
 
54
54
  # Clear stage (disable blocking)
55
- rm -f /tmp/.claude-dev-stage
55
+ rm -f /tmp/.claude-dev-stage-$PPID
56
56
  ```
57
57
 
58
58
  A PreToolUse hook in `.claude/hooks/hooks.json` checks this marker and blocks Write/Edit tools during non-implementation stages.
@@ -140,7 +140,7 @@ Stage 1 (Plan) maps to Claude Code's `EnterPlanMode`. When the structured cycle
140
140
  Stage 2 (Verify Plan) and Stage 4 (Verify Implementation) can invoke the `multi-model-verification` skill for comprehensive review.
141
141
 
142
142
  ### With PreToolUse Hooks
143
- The stage marker file (`/tmp/.claude-dev-stage`) is read by a PreToolUse hook that enforces tool restrictions. This provides a safety net beyond instruction-based compliance.
143
+ The stage marker file (`/tmp/.claude-dev-stage-$PPID`) is read by a PreToolUse hook that enforces tool restrictions. This provides a safety net beyond instruction-based compliance.
144
144
 
145
145
  ### With Agent Teams
146
146
  For complex tasks, Agent Teams is **preferred** when available (R018):
@@ -165,19 +165,19 @@ When Agent Teams is enabled AND task involves 3+ agents or review→fix cycles,
165
165
 
166
166
  ```bash
167
167
  # Orchestrator manages transitions:
168
- echo "plan" > /tmp/.claude-dev-stage # Enter planning
169
- echo "verify-plan" > /tmp/.claude-dev-stage # Enter plan verification
170
- echo "implement" > /tmp/.claude-dev-stage # Enter implementation
171
- echo "verify-impl" > /tmp/.claude-dev-stage # Enter impl verification
172
- echo "compound" > /tmp/.claude-dev-stage # Enter compound testing
173
- echo "done" > /tmp/.claude-dev-stage # Mark done
174
- rm -f /tmp/.claude-dev-stage # Clear (disable blocking)
168
+ echo "plan" > /tmp/.claude-dev-stage-$PPID # Enter planning
169
+ echo "verify-plan" > /tmp/.claude-dev-stage-$PPID # Enter plan verification
170
+ echo "implement" > /tmp/.claude-dev-stage-$PPID # Enter implementation
171
+ echo "verify-impl" > /tmp/.claude-dev-stage-$PPID # Enter impl verification
172
+ echo "compound" > /tmp/.claude-dev-stage-$PPID # Enter compound testing
173
+ echo "done" > /tmp/.claude-dev-stage-$PPID # Mark done
174
+ rm -f /tmp/.claude-dev-stage-$PPID # Clear (disable blocking)
175
175
  ```
176
176
 
177
177
  ## Limitations
178
178
 
179
- - **Single session**: The fixed path `/tmp/.claude-dev-stage` does not support concurrent Claude Code sessions. Running multiple sessions simultaneously may cause stage state conflicts.
180
- - **World-writable path**: The `/tmp/` directory is accessible to all users. For multi-user environments, consider using a user-scoped path like `/tmp/.claude-dev-stage-$(id -u)`.
179
+ - **Session scoping**: The marker path is scoped by parent PID (`/tmp/.claude-dev-stage-$PPID`), so concurrent Claude Code sessions use distinct markers and do not conflict. The reader hooks (`stage-blocker.sh`, `task-state-precompact.sh`) and the writer commands above all resolve `$PPID` to the same Claude Code process, keeping the gate consistent.
180
+ - **World-writable path**: The `/tmp/` directory is accessible to all users. The `-$PPID` suffix isolates per-session state but does not restrict filesystem permissions; avoid storing sensitive data in the marker file.
181
181
 
182
182
  ## Permission Mode
183
183
 
@@ -97,6 +97,7 @@ oh-my-customcode로 구동됩니다.
97
97
 
98
98
  ### 슬래시 커맨드 (스킬 기반)
99
99
 
100
+ <!-- METADATA (command catalog, advisory only — use /omcustom:lists for the live full list):
100
101
  | 카테고리 | 대표 커맨드 | 설명 |
101
102
  |----------|------------|------|
102
103
  | 프로젝트 관리 | `/omcustom:analysis`, `/omcustom:create-agent`, `/omcustom:audit-agents` | 분석, 에이전트/스킬 생성, 감사 |
@@ -106,6 +107,7 @@ oh-my-customcode로 구동됩니다.
106
107
  | 리서치 | `/research`, `/scout`, `/deep-plan` | 병렬 분석, URL 평가, 연구 계획 |
107
108
  | 최적화 | `/token-efficiency-audit` | 토큰 효율 감사 (5계층 방어 스택) |
108
109
  | 시스템 | `/omcustom:lists`, `/omcustom:status`, `/omcustom:help` | 전체 목록, 상태, 도움말 |
110
+ -->
109
111
 
110
112
  > 전체 커맨드 목록 (60+ 커맨드): `/omcustom:lists` 실행
111
113
 
@@ -161,6 +163,7 @@ oh-my-customcode는 소프트웨어 컴파일과 동일한 구조를 따릅니
161
163
 
162
164
  ## 에이전트 요약
163
165
 
166
+ <!-- METADATA (agent roster by type, advisory only — use /omcustom:lists or wiki/agents/ for the live full catalog):
164
167
  | 타입 | 수량 | 에이전트 |
165
168
  |------|------|----------|
166
169
  | SW Engineer/Language | 6 | lang-golang-expert, lang-python-expert, lang-rust-expert, lang-kotlin-expert, lang-typescript-expert, lang-java-expert |
@@ -175,7 +178,9 @@ oh-my-customcode는 소프트웨어 컴파일과 동일한 구조를 따릅니
175
178
  | QA Team | 3 | qa-planner, qa-writer, qa-engineer |
176
179
  | Manager | 6 | mgr-creator, mgr-updater, mgr-supplier, mgr-gitnerd, mgr-sauron, mgr-claude-code-bible |
177
180
  | System | 4 | sys-memory-keeper, sys-naggy, tracker-checkpoint, wiki-curator |
178
- | **총계** | **49** | |
181
+ -->
182
+
183
+ 총 **49개** 에이전트 (타입별 상세는 `/omcustom:lists` 또는 wiki/agents/ 참조)
179
184
 
180
185
  ## Agent Teams (MUST when enabled)
181
186
 
@@ -216,6 +221,10 @@ Claude Code의 Agent Teams 기능이 활성화되어 있으면 (`CLAUDE_CODE_EXP
216
221
 
217
222
  ## 외부 의존성
218
223
 
224
+ 필수/권장 플러그인·MCP 서버 카탈로그 및 설치 명령어는 1회성 설정 정보로 아래 HTML 주석에 보존됨(Read 도구로 확인 가능). 요약: 필수 5종(superpowers, superpowers-developing-for-claude-code, elements-of-style, obsidian-skills, context7), 권장 플러그인 4종, 권장 MCP 서버 3종(code-review-graph, semble, aws-mcp).
225
+
226
+ <!-- METADATA (plugin/MCP catalog + install commands, advisory only — one-time setup, not needed every session):
227
+
219
228
  ### 필수 플러그인
220
229
 
221
230
  `/plugin install <이름>`으로 설치:
@@ -269,6 +278,7 @@ claude mcp add semble -- semble mcp
269
278
  claude mcp add-json aws-mcp --scope user '{"command":"uvx","args":["mcp-proxy-for-aws@latest","https://aws-mcp.us-east-1.api.aws/mcp","--metadata","AWS_REGION=us-west-2"]}'
270
279
  # 사전요건: AWS IAM 자격증명 구성. 가용 리전: us-east-1, eu-central-1 (API 호출은 전 리전)
271
280
  ```
281
+ -->
272
282
 
273
283
  <!-- omcustom:git-workflow -->
274
284
 
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.1.15",
2
+ "version": "1.1.17",
3
3
  "lastUpdated": "2026-07-14T00:00:00.000Z",
4
4
  "omcustomMinClaudeCode": "2.1.121",
5
5
  "omcustomMinClaudeCodeReason": "Sensitive-path direct Write/Edit on .claude/** under bypassPermissions (R010 deprecation, #1101)",