Skip to content

feat(claude-code): sync settings and keybindings to Claude Code v2.1.220 - #6131

Merged
github-actions[bot] merged 5 commits into
SchemaStore:masterfrom
miteshashar:claude-code-schema-2.1.220
Jul 27, 2026
Merged

feat(claude-code): sync settings and keybindings to Claude Code v2.1.220#6131
github-actions[bot] merged 5 commits into
SchemaStore:masterfrom
miteshashar:claude-code-schema-2.1.220

Conversation

@miteshashar

@miteshashar miteshashar commented Jul 25, 2026

Copy link
Copy Markdown
Contributor

Syncs claude-code-settings.json and claude-code-keybindings.json from the last synced v2.1.195 (#5867) up to v2.1.220. Supersedes #5891 (v2.1.200), whose changes are included here in full.

v2.1.220 itself is "Bug fixes and reliability improvements" with no settings surface; the last version carrying schema-affecting changes in this range is v2.1.219.

Additions were reconciled against the full settings.md and env-vars.md reference tables, not just the changelog — that sweep surfaced a number of documented keys that predate this window.

Schema

New settings properties

  • askUserQuestionTimeout (enum 60s/5m/10m/never, default never) — idle timeout before an unanswered AskUserQuestion auto-continues, per settings#available-settings (v2.1.200).
  • workflowSizeGuideline (enum unrestricted/small/medium/large, default unrestricted) per workflows#set-a-size-guideline (v2.1.202).
  • teammateDefaultModel (string|null) per agent-teams.
  • enableArtifact (boolean) per artifacts (v2.1.196). No default — the docs state that when unset it follows per-account availability; the table's true is an Example, not a default.
  • emojiCompletionEnabled (boolean, default true) per interactive-mode#emoji-shortcodes (v2.1.217).
  • vimInsertModeRemaps (object, two-character keys) per interactive-mode#remap-insert-mode-key-sequences (v2.1.208). Values are typed as plain strings rather than const: "<Esc>" — the docs say entries with a different target are ignored, not rejected, so a const would fail configs that Claude Code accepts.
  • processWrapper (string) per corporate-launcher (v2.1.210).
  • diffTool (enum auto/terminal, default auto), externalEditorContext, autoConnectIde, autoInstallIdeExtension, permissionExplainerEnabled per settings#global-config-settings.
  • Managed-settings-only keys: disableSideloadFlags (v2.1.193), forceLoginGatewayUrl, browserExternalPageTools (enum disabled), disableBrowserExternalNavigation, disableMobileSimulatorTools, requireCoworkFullVmSandbox.

Two of these appear in no reference table at all, and were found by auditing which documentation pages no part of my sync tooling currently reads:

  • requireCoworkFullVmSandbox — documented only at desktop-ios-simulator#turn-off-simulator-access: "runs Claude's tools inside an isolated virtual machine instead of on your Mac, disables the simulator pane and Claude's simulator tools entirely".
  • CLAUDE_CODE_ENABLE_SDK_FILE_CHECKPOINTING — documented only at agent-sdk/file-checkpointing, and required for a non-interactive claude -p --resume --rewind-files run. Absent from env-vars.md.

Sandbox

Hooks

  • DirectoryAddedUNDOCUMENTED, from changelog v2.1.219; fires after /add-dir or the SDK register_repo_root control request registers a new working directory mid-session. Not in the hooks.md lifecycle table.

Accuracy fixes

  • fastMode: default model is Opus 5 as of v2.1.219 (was Opus 4.8). Opus 4.7 fast mode was removed on 2026-07-24 and is no longer listed as supported — per fast-mode.
  • forceLoginMethod: add "gateway" per authentication#restrict-login-to-your-organization (v2.1.212).
  • forceLoginOrgUUID: now oneOf string|array — the docs accept an array of UUIDs, with an empty array failing closed. The previous string-only schema rejected valid managed configs.
  • disableDeepLinkRegistration: protocol handler is claude-cli://, not claude:// (verified against deep-links, incl. the HKEY_CURRENT_USER\Software\Classes\claude-cli registry key).
  • permissionRule pattern: add Artifact, EnterWorktree, ShareOnboardingGuide, Workflow — all four are listed "Permission required: Yes" in tools-reference. Partially addresses the pattern staleness deferred in feat(claude-code): sync settings and keybindings to Claude Code v2.1.200 #5891.
  • CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT: stdio servers are no longer exempt (since v2.1.203); documents the per-transport defaults (300000ms network / 1800000ms stdio), the .mcp.json per-server floor, and the IDE/SDK in-process exemption.
  • CLAUDE_CODE_SCROLL_SPEED: the documented range allows fractional values below 1, so the previous "(1-20)" was wrong.
  • CLAUDE_CODE_BRIDGE_SESSION_ID: restores the unset-on-disconnect behavior and the correspondence with the session's claude.ai/code URL.
  • Remove CLAUDE_CODE_OPUS_4_6_FAST_MODE_OVERRIDEenv-vars marks it removed in v2.1.160 and a no-op; the schema described it as functional.
  • Vertex terminology: the docs page is now "Google Cloud's Agent Platform (formerly Vertex AI)". Applied to the seven descriptions that name the provider as a product (CLAUDE_CODE_USE_VERTEX, CLAUDE_CODE_SKIP_VERTEX_AUTH, ANTHROPIC_VERTEX_BASE_URL, ANTHROPIC_VERTEX_PROJECT_ID, CLOUD_ML_REGION, GOOGLE_APPLICATION_CREDENTIALS, ENABLE_TOOL_SEARCH) plus VERTEX_REGION_CLAUDE_5_SONNET, which also carried an undocumented CLOUD_ML_REGION=global clause. The VERTEX_REGION_CLAUDE_* region entries keep the old phrasing, matching their variable names.

Marketplaces

  • extraKnownMarketplaces.*.source: add skipLfs to the github and git variants per settings#available-settings (v2.1.153).
  • extraKnownMarketplaces.*.source: add the inline "settings" source variant (name + plugins), which previously failed validation outright against every existing anyOf branch. Nested plugins[].source follows the plugin-marketplaces#plugin-sources table — github, url, git-subdir, npm, each with ref/sha where documented. Note that git is a marketplace source type, not a plugin source type; relative-path sources are excluded because the docs require inline plugins to reference external sources.

Environment variables

Add 22 documented environment variables to $.env.properties:

  • Subagents: CLAUDE_CODE_MAX_CONCURRENT_SUBAGENTS (v2.1.217), CLAUDE_CODE_MAX_SUBAGENTS_PER_SESSION (v2.1.212), CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH (v2.1.217), CLAUDE_CODE_ENABLE_APPEND_SUBAGENT_PROMPT (v2.1.205), CLAUDE_CODE_FORWARD_SUBAGENT_TEXT (v2.1.211) per sub-agents.
  • Providers: ANTHROPIC_FOUNDRY_AUTH_TOKEN (v2.1.203), CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS and CLAUDE_CODE_SKIP_AWS_CRED_CACHE (v2.1.207), CLAUDE_CODE_DISABLE_BEDROCK_CONTENT_TYPE_GUARD (v2.1.208), VERTEX_REGION_CLAUDE_5_OPUS (v2.1.219), CLAUDE_CODE_SKIP_FAST_MODE_NETWORK_ERRORS, CLAUDE_CODE_SKIP_FAST_MODE_ORG_CHECK.
  • Telemetry: CLAUDE_CODE_OTEL_CONTENT_MAX_LENGTH, OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT (v2.1.214) per monitoring-usage#common-configuration-variables.
  • Other: CLAUDE_CODE_ENABLE_SDK_FILE_CHECKPOINTING, CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS (v2.1.212), CLAUDE_CODE_MAX_WEB_SEARCHES_PER_SESSION (v2.1.212), CLAUDE_CODE_TEAM_TEARDOWN_PARK_TIMEOUT_MS (v2.1.206), CLAUDE_CODE_RESUME_INTERRUPTED_TURN_MAX_AGE_MS (v2.1.211), CLAUDE_CODE_PROCESS_WRAPPER (v2.1.208), CLAUDE_PID (v2.1.214), FORCE_HYPERLINK.

Keybindings

  • builtinAction: add footer:dismiss (bound to Backspace and Delete in the Footer context in the generated v2.1.219 defaults).
  • builtinAction/context: remove doctor:fix and Doctorkeybindings documents these as having existed only before v2.1.205, and they are absent from the generated v2.1.219 defaults.

Tests

  • modern-complete-config.json: all 17 new top-level properties, the four sandbox sub-properties, and the DirectoryAdded hook. Non-default values are used throughout to satisfy the coverage gate's default-value check.
  • enum-coverage.json, edge-cases.json, basic-config.json: remaining enum values for forceLoginMethod, askUserQuestionTimeout, workflowSizeGuideline, diffTool, browserExternalPageTools, and the opposite 0/1 values for the new boolean-style environment variables — closes the coverage gate's enum check.
  • env-variables.json: all 21 new environment variables.
  • hooks-complete.json: DirectoryAdded handler.
  • permissions-advanced.json: rules for the four newly permission-gated tools.
  • marketplace-host-pattern.json: skipLfs on both a git and a github marketplace source, plus an inline "settings" marketplace exercising github, npm, and git-subdir plugin sources.
  • claude-code-keybindings/all-contexts.json, current-actions.json: drop the Doctor blocks; add footer:dismiss on Backspace/Delete in the Footer context.

Negative tests

  • invalid-enum-values.json: invalid values for askUserQuestionTimeout, workflowSizeGuideline, diffTool, browserExternalPageTools, and the six new boolean-style environment variables.
  • invalid-inline-marketplace-source.json (new): inline "settings" marketplace missing the required plugins array.
  • invalid-inline-marketplace-plugin-source.json (new): nested plugin using source: "git", which is a marketplace source type rather than a plugin source type.
  • invalid-vim-insert-mode-remap.json (new): a three-character remap key, violating the documented two-character rule.
  • invalid-tls-terminate-property.json (new): unknown property inside sandbox.network.tlsTerminate.
  • claude-code-keybindings/removed-doctor-action.json, removed-doctor-context.json (new): assert that the removed doctor:fix action and Doctor context are now rejected.

Skipped

  • Marketplace .git-suffix relaxation for git repository URLs — covered by @esp0's open PR feat(claude-code-settings): allow git marketplace URLs without .git suffix #5874, which I independently re-verified as correct against plugin-marketplaces. The \.git$ pattern is left untouched here so as not to conflict with it.
  • Removal of the global leftArrowOpensAgents key — covered by @l46983284-cpu's open PR fix(claude-code-settings): drop global leftArrowOpensAgents key #6127. I confirmed the key is absent from the settings.md properties table (it is a /config preference stored in ~/.claude.json), so the removal is correct; leaving it here so fix(claude-code-settings): drop global leftArrowOpensAgents key #6127 lands on its own merit.
  • ultracode setting — settings.md states the key "isn't read from settings.json" and is set via /effort ultracode, --settings, or an SDK control request. Same treatment as effortLevel: max.
  • Environment variables the docs mark removed or deprecated: CLAUDE_CODE_CONNECT_TIMEOUT_MS (removed v2.1.186), CLAUDE_CODE_ENABLE_OPUS_4_7_FAST_MODE (removed v2.1.142), ENABLE_PROMPT_CACHING_1H_BEDROCK (deprecated alias for ENABLE_PROMPT_CACHING_1H).
  • Cd, KillShell, and MultiEdit in the permissionRule pattern no longer appear in tools-reference. Retained rather than removed — dropping them would break existing permission rules, and their absence from the table may be a documentation gap rather than a removal.
  • agents, skills, and mcp from the settings.md sweep — these are rows in the "where things live" and configuration-scope tables, not settings.json keys.

🤖 Generated with Claude Code

miteshashar and others added 3 commits July 4, 2026 02:38
- Fix wrong schema key: rename maxSkillDescriptionChars -> skillListingMaxDescChars
  to match documented settings.json field name (was breaking real validation)
- Add "manual" as accepted alias for permissions.defaultMode/"default" (v2.1.200;
  UI now labels this mode "Manual"; permission-modes.md docs lag the changelog)
- Add attribution.sessionUrl property (settings.md#attribution-settings);
  supersedes SchemaStore#5833 with verbatim doc wording
- Add 14 documented env vars: OTEL per-signal mTLS certs (LOGS/METRICS/TRACES
  CLIENT_KEY/CLIENT_CERTIFICATE), CLAUDE_AFK_COUNTDOWN_MS/TIMEOUT_MS,
  CLAUDE_CODE_BRIDGE_SESSION_ID, CLAUDE_CODE_DISABLE_BG_EXIT_HANDOFF,
  CLAUDE_CODE_DISABLE_EXPLORE_PLAN_AGENTS, CLAUDE_CODE_DISABLE_NOTIFICATION_PRESENCE_CHECK,
  CLAUDE_DISABLE_ADOPT, VERTEX_REGION_CLAUDE_5_SONNET
- Add app:diffFileListUp/app:diffFileListDown to keybindings builtinAction enum
  (confirmed against generated v2.1.200 defaults, undocumented on keybindings.md)
- Accuracy fixes: autoMemoryEnabled storage path, CLAUDE_ENABLE_STREAM_WATCHDOG
  default behavior (on-by-default since v2.1.196), CLAUDE_CODE_DEBUG_LOGS_DIR
  (file not directory), API_TIMEOUT_MS max value, outputStyle missing "Proactive",
  CLAUDE_CODE_DISABLE_MOUSE_CLICKS incorrectly marked UNDOCUMENTED (now documented)
- Doc link upgrades: sandbox.enableWeakerNetworkIsolation, ANTHROPIC_BEDROCK_SERVICE_TIER,
  several plugin/marketplace env vars, CLAUDE_CODE_SCROLL_SPEED/DISABLE_MOUSE

Skipped
- marketplace .git-suffix relaxation — already covered by open PR SchemaStore#5874
  (independently verified correct against plugin-marketplaces.md)
- permissionRule tool-name pattern staleness (~18 missing/3 stale tool names)
  — large surface, deferred to a dedicated follow-up sync

Supersedes SchemaStore#5833

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Schema:
- Add 17 settings properties: askUserQuestionTimeout, workflowSizeGuideline,
  teammateDefaultModel, enableArtifact, emojiCompletionEnabled,
  vimInsertModeRemaps, processWrapper, diffTool, externalEditorContext,
  autoConnectIde, autoInstallIdeExtension, permissionExplainerEnabled,
  disableSideloadFlags, forceLoginGatewayUrl, browserExternalPageTools,
  disableBrowserExternalNavigation, disableMobileSimulatorTools
- Add sandbox.credentials.allowPlaintextInject, sandbox.filesystem.disabled,
  sandbox.network.tlsTerminate; add sandbox.network.strictAllowlist and the
  DirectoryAdded hook as UNDOCUMENTED (changelog v2.1.219 only)
- Add 21 documented environment variables to $.env.properties; remove
  CLAUDE_CODE_OPUS_4_6_FAST_MODE_OVERRIDE, removed in v2.1.160 and now a no-op
- Fix fastMode (Opus 5 default since v2.1.219; Opus 4.7 fast mode removed),
  forceLoginMethod (add gateway), forceLoginOrgUUID (accepts an array),
  disableDeepLinkRegistration (claude-cli:// scheme),
  CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT (stdio no longer exempt since v2.1.203),
  CLAUDE_CODE_SCROLL_SPEED (fractional values allowed),
  CLAUDE_CODE_BRIDGE_SESSION_ID, and Vertex AI naming
- Add Artifact, EnterWorktree, ShareOnboardingGuide and Workflow to the
  permissionRule pattern, partially addressing the staleness deferred in SchemaStore#5891
- Add marketplace source skipLfs and the inline "settings" source variant,
  whose nested plugins[].source follows the documented plugin source types
- Keybindings: add footer:dismiss; remove doctor:fix and the Doctor context,
  which existed only before v2.1.205

Tests:
- modern-complete-config.json: every new property, using non-default values
- enum-coverage.json, edge-cases.json, basic-config.json: remaining enum values
- env-variables.json, hooks-complete.json, permissions-advanced.json,
  marketplace-host-pattern.json: coverage for the new surfaces
- claude-code-keybindings: drop Doctor blocks, bind footer:dismiss

Negative tests:
- invalid-enum-values.json: new enums and boolean-style environment variables
- Add invalid-inline-marketplace-source.json,
  invalid-inline-marketplace-plugin-source.json,
  invalid-vim-insert-mode-remap.json, invalid-tls-terminate-property.json
- Add removed-doctor-action.json and removed-doctor-context.json

Co-Authored-By: Claude Opus 5 <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.

miteshashar and others added 2 commits July 25, 2026 15:50
…eckpointing var

Both are documented but appear in neither the settings.md nor env-vars.md
reference tables, so table-based sweeps miss them. Found by auditing which
documentation pages no schema-sync agent currently owns.

- requireCoworkFullVmSandbox: managed-settings policy key that runs Claude's
  tools in an isolated VM and disables the iOS Simulator pane, documented on
  desktop-ios-simulator.md
- CLAUDE_CODE_ENABLE_SDK_FILE_CHECKPOINTING: enables file checkpointing for a
  non-interactive `claude -p --rewind-files` run, documented on
  agent-sdk/file-checkpointing.md

Tests: modern-complete-config.json, env-variables.json

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…ected

The v2.1.220 sync added `tabs:previous` and `footer:openSelected` to the
`builtinAction` enum but no positive test fixture exercised them, so the
enum coverage check failed:

  #$defs/builtinAction — positive_uncovered — [tabs:previous, footer:openSelected]

Add both to the Scroll context block in the exhaustive-coverage fixture.
Keybindings coverage now reports 7 passed, 0 failed, 1 skipped (the skip
is Default Value Coverage, which is not applicable — the schema declares
no defaults).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@domdomegg

Copy link
Copy Markdown
Contributor

LGTM

@github-actions
github-actions Bot merged commit 2f74efc into SchemaStore:master Jul 27, 2026
4 checks passed
@github-actions

Copy link
Copy Markdown
Contributor

Merging because @domdomegg is a code-owner of all the changes - thanks!

@esherman-credo

Copy link
Copy Markdown

@miteshashar @domdomegg thank you both for maintaining these schemas on schema store

I'm building a tool that supports enterprise AI governance admins in configuring their organization's Claude usage. The tool does policy (i.e. org intent) to configuration translation and outputs settings + a plugin that aim to enforce the policy. Having the settings schema is super helpful for validating the outputs before admins distribute them in their org.

I'm wondering if there are plans to also update/maintain the plugin schema that @dhollman originally added back in #5603. I have been doing my best to keep my plugin validator up to date based on a periodic agent-driven scan of the markdown docs on the anthropic website, but a formal schema would obviously be more effective.

TYIA

@miteshashar
miteshashar deleted the claude-code-schema-2.1.220 branch July 30, 2026 01:56
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.

3 participants