Skip to content

feat(claude-code-settings): sync to Claude Code v2.1.112#5585

Open
miteshashar wants to merge 2 commits intoSchemaStore:masterfrom
miteshashar:claude-code-schema-2.1.112
Open

feat(claude-code-settings): sync to Claude Code v2.1.112#5585
miteshashar wants to merge 2 commits intoSchemaStore:masterfrom
miteshashar:claude-code-schema-2.1.112

Conversation

@miteshashar
Copy link
Copy Markdown
Contributor

Syncs claude-code-settings.json from v2.1.76 (previous sync) to v2.1.112. Subsumes the contributions in open PRs #5483 (large v2.1.81 sync) and #5583 (hookCommand fields). Resulting diff reflects a deep review of live docs at https://code.claude.com/docs/en with multi-pass verification and matching with docs and Changelog.

Schema

New hookCommand fields

New hook event

  • Add StopFailure — runs when a turn ends due to an API error (matcher values: rate_limit, authentication_failed, billing_error, invalid_request, server_error, max_output_tokens, unknown), per hooks documentation (v2.1.84)

Top-level properties (17)

  • agent — run the main thread as a named subagent, per settings documentation
  • allowedChannelPlugins — managed-only allowlist of plugins that may push channel notifications when channelsEnabled is true
  • autoMemoryDirectory — custom auto-memory storage path, per memory documentation
  • autoMode — auto-mode classifier prompt customization (allow/soft_deny/environment), per permissions documentation. Description warns that allow/soft_deny entirely replace classifier defaults.
  • channelsEnabled — Teams/Enterprise opt-in for channel notifications
  • defaultShell (enum bash|powershell) — default shell for input-box ! commands; notes that powershell requires CLAUDE_CODE_USE_POWERSHELL_TOOL=1 with pwsh on PATH
  • disableDeepLinkRegistration ("disable") — prevents claude:// protocol handler registration (managed-only)
  • disableSkillShellExecution — disable inline shell execution in skills and custom slash commands (v2.1.91)
  • forceRemoteSettingsRefresh — fail-closed managed-only bootstrap policy (v2.1.92)
  • minimumVersion — prevents downgrades when switching release channels
  • showClearContextOnPlanAccept — adds clear-context option on plan approval dialog
  • showThinkingSummaries — restore thinking summaries in transcript view (off by default, v2.1.89)
  • skipDangerousModePermissionPrompt — tracks bypass-permissions opt-in dialog acceptance
  • strictPluginOnlyCustomization — managed-only; locks customization surfaces (skills/agents/hooks/mcp) to plugin sources
  • tui (enum fullscreen|default) — flicker-free alt-screen vs classic renderer (v2.1.110)
  • useAutoModeDuringPlan — apply auto-mode classifier during plan mode
  • viewMode (enum default|verbose|focus) — transcript view mode (focus is the Ctrl+O toggle)
  • voiceEnabled — push-to-talk dictation (see voice-dictation docs)

Nested additions

Enum extensions

  • effortLevel: add xhigh (Opus 4.7, v2.1.111) and max; description rewritten to match model-config documentation for per-model/plan defaults and max session-only behavior
  • permissionRule pattern: add Monitor and PowerShell tools

Tightenings

  • cleanupPeriodDays minimum: 01 — v2.1.89 validator explicitly rejects 0 (previously silently disabled cleanup)

Doc-anchor fixes

  • hooks-guide#filter-hooks-with-ifhooks-guide#filter-hooks-with-matchers
  • hooks#http-hookshooks#http-hook-fields
  • memory#exclude-specific-claudemd-filesmemory#exclude-specific-claude-md-files
  • settings#tools-available-to-claude/docs/en/tools-reference (canonical tool list page)

Tests

  • modern-complete-config.json — exercises every new property for full coverage
  • complete-config.json — adds effortLevel: medium and viewMode: default for enum-value spread
  • edge-cases.json — updates cleanupPeriodDays: 01 (forced by tightened minimum)
  • New enum-coverage.json — filename/concept taken from feat(claude-code): update settings schema to match v2.1.81 #5483 by @r-johnv; content adapted to our schema to cover alternate enum values (bash, fullscreen, xhigh, verbose) and fill positive-coverage gaps across the new enums

Negative tests

Coverage helper

  • src/helpers/coverage.js — adds a deep name-based fallback for $defs-path resolution in collectValuesByPath so enum/required checks match values exercised via $ref. Included from feat(claude-code): update settings schema to match v2.1.81 #5483 by @r-johnv to extend the coverage gate so the #$defs/hookCommand.shell check passes in this sync (would otherwise fail the gate). Committed separately to preserve authorship.

Skipped

🤖 Generated with Claude Code

miteshashar and others added 2 commits April 17, 2026 06:33
Subsumes open PRs SchemaStore#5483 and SchemaStore#5583 (credited; coverage.js changes
deferred to a separate follow-up PR).

Schema:
- Add hookCommand fields: asyncRewake (command-only), shell (command-only,
  enum bash|powershell), if (filter on tool-related events). Omit `once`
  since docs scope it to skill frontmatter, not settings.json.
- Add hook events: StopFailure (API-error matcher values documented)
- Add 17 top-level properties: agent, allowedChannelPlugins, autoMemoryDirectory,
  autoMode (with allow/soft_deny/environment classifier customization),
  channelsEnabled, defaultShell, disableDeepLinkRegistration,
  disableSkillShellExecution, forceRemoteSettingsRefresh, minimumVersion,
  showClearContextOnPlanAccept, showThinkingSummaries,
  skipDangerousModePermissionPrompt, strictPluginOnlyCustomization, tui,
  useAutoModeDuringPlan, viewMode, voiceEnabled
- Add permissions.disableAutoMode (nested, mirrors disableBypassPermissionsMode)
- Add sandbox.network.allowMachLookup (macOS XPC/Mach service allowlist)
- Add sandbox.ripgrep custom-binary configuration
- Add statusLine.refreshInterval (min 1)
- Add pluginConfigs.*.options (non-sensitive plugin userConfig values)
- Extend effortLevel enum with xhigh (Opus 4.7) and max
- Extend permissionRule pattern with Monitor and PowerShell tools
- Tighten cleanupPeriodDays minimum from 0 to 1 (v2.1.89 validator rejects 0)
- Fix stale doc anchors: hooks-guide#filter-hooks-with-matchers,
  hooks#http-hook-fields, memory#exclude-specific-claude-md-files,
  tools-reference (canonical page for tool list)

Tests:
- modern-complete-config.json: cover all new properties
- complete-config.json: cover effortLevel medium and viewMode default
- edge-cases.json: update cleanupPeriodDays 0 -> 1
- New enum-coverage.json: cover alternate enum values (bash, fullscreen,
  xhigh, verbose) for full positive coverage across new enums

Negative tests:
- invalid-enum-values.json: add invalid values for defaultShell,
  disableDeepLinkRegistration, permissions.disableAutoMode, tui, viewMode
- New invalid-hook-shell.json: exercise hookCommand.shell invalid enum

Excluded:
- coverage.js \$defs-path fix from SchemaStore#5483 (scheduled for a separate PR
  crediting @r-johnv). Consequence: the #\$defs/hookCommand.shell enum
  coverage gate fails here; will be resolved when that PR lands.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Path-based traversal in collectValuesByPath cannot match $defs paths
(e.g., "#$defs/hookCommand.shell") against test data because the path
references the schema definition, not the test structure. Adds a deep
name-based search fallback for the terminal property name so test files
exercising the property via $ref usage are still matched.

Included from SchemaStore#5483 by @r-johnv to extend the coverage gate so this
sync PR can land without skipping the #\$defs/hookCommand.shell check.

Co-Authored-By: Rohit John Varghese <rohit@contoro.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@github-actions
Copy link
Copy Markdown
Contributor

Thanks for the PR!

This section of the codebase is owned by @domdomegg, @bogini, and @sarahdeaton - if they write a comment saying "LGTM" then it will be merged.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant