From 994d57e32a67aa911c44263e3bff112ef572b12f Mon Sep 17 00:00:00 2001 From: Mitesh Ashar Date: Mon, 29 Jun 2026 23:40:42 +0530 Subject: [PATCH] feat(claude-code): sync settings and keybindings to Claude Code v2.1.195 Schema: - effortLevel: remove session-only "max" from enum (settings file accepts only low/medium/high/xhigh); refresh model/default notes (Fable 5, Opus 4.8) - fastMode: Opus 4.8 default since v2.1.154; available on Opus 4.8 and 4.7 - teammateMode: add "iterm2" (v2.1.186); default auto -> in-process (v2.1.179) - hooks: command/http/mcp_tool timeout default corrected to 600 (lowered to 30 on UserPromptSubmit, 10 on MessageDisplay); add MessageDisplay event (v2.1.195) - allowedChannelPlugins: items string -> {marketplace, plugin} objects - theme: enum incl. auto + custom: pattern - add 41 documented top-level properties (advisorModel ... workflowKeywordTriggerEnabled), plus sandbox.credentials, sandbox.allowAppleEvents, worktree.symlinkDirectories, autoMode.classifyAllShell (UNDOCUMENTED), Cd and MultiEdit permission rules (MultiEdit incorporates #5701) - add 151 documented environment variables (3 UNDOCUMENTED) to $.env.properties (now 305, sorted): provider config (Bedrock/Vertex/Foundry/Claude-Platform-on-AWS, 14 VERTEX_REGION_CLAUDE_*), prompt caching, full OpenTelemetry surface, MCP timeouts, model-display overrides, watchdog/streaming, command/feature toggles; deprecation/description corrections across existing vars - mark ANTHROPIC_SMALL_FAST_MODEL deprecated; fix many descriptions and doc-link anchors verbatim against settings.md/env-vars.md/monitoring-usage.md - remove duplicate undocumented env var CLAUDE_CODE_SESSION_END_HOOKS_TIMEOUT_MS (keep documented spelling CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS) - keybindings builtinAction: add app:toggleBrief, app:openArtifact, chat:workflowKeywordToggle; remove app:toggleTeammatePreview, settings:close - register claude-code-keybindings.json in schema-validation.jsonc and add a coverage.js fallback so builtinAction/context enum coverage runs Tests: - modern-complete-config, env-variables, enum-coverage, edge-cases, notifications, basic-config, complete-config, model-opus, with-schema: exercise new properties, enum values and env vars (pass enum/default coverage gate) - keybindings all-contexts.json: bind every builtinAction across every context (enable keybinding enum coverage gate) - keybindings current-actions.json: add the three new action bindings; replace removed settings:close with select:accept - permissions-advanced.json: add MultiEdit and MultiEdit(~/projects/**) (incorporating #5701) Negative tests: - invalid-enum-values.json: invalid values for theme, preferredNotifChannel, editorMode, voice.mode, disableAutoMode, sandbox.credentials mode, OTEL protocol/temporality, CLAUDE_EFFORT, and the new boolean/enum env vars (pass enum coverage gate) Supersedes #5723. Co-Authored-By: Claude Opus 4.8 --- src/helpers/coverage.js | 49 +- .../invalid-enum-values.json | 96 ++ src/schema-validation.jsonc | 4 + src/schemas/json/claude-code-keybindings.json | 5 +- src/schemas/json/claude-code-settings.json | 1202 ++++++++++++++++- .../claude-code-keybindings/all-contexts.json | 135 +- .../current-actions.json | 7 +- .../claude-code-settings/basic-config.json | 2 + .../claude-code-settings/complete-config.json | 2 + src/test/claude-code-settings/edge-cases.json | 13 +- .../claude-code-settings/enum-coverage.json | 95 +- .../claude-code-settings/env-variables.json | 158 ++- src/test/claude-code-settings/model-opus.json | 6 +- .../modern-complete-config.json | 115 +- .../claude-code-settings/notifications.json | 2 +- .../permissions-advanced.json | 2 + .../claude-code-settings/with-schema.json | 2 +- 17 files changed, 1790 insertions(+), 105 deletions(-) diff --git a/src/helpers/coverage.js b/src/helpers/coverage.js index 63047dea54f..f52d4c3c483 100644 --- a/src/helpers/coverage.js +++ b/src/helpers/coverage.js @@ -84,6 +84,24 @@ function collectValuesByPath(data, path) { } } deepCollect(data) + // If name-based search found nothing (def is used as array items or + // additionalProperties values, not as a named key), fall back to all + // string values in the data. Covers permissionRule, builtinAction, etc. + if (values.length === 0) { + function collectAllStrings(current) { + if (typeof current === 'string') { + values.push(current) + return + } + if (!current || typeof current !== 'object') return + if (Array.isArray(current)) { + for (const item of current) collectAllStrings(item) + return + } + for (const val of Object.values(current)) collectAllStrings(val) + } + collectAllStrings(data) + } return values } @@ -226,10 +244,25 @@ function walkProperties(schema, currentPath = '') { if (defs && typeof defs === 'object' && !Array.isArray(defs)) { for (const [defName, defSchema] of Object.entries(defs)) { if (defSchema && typeof defSchema === 'object') { + const defPath = `#${defsKey}/${defName}` + // Emit the def itself if it is a leaf schema (enum/pattern/type + // directly on the def, not via child properties). This covers + // reusable string-enum defs like context or builtinAction. + if ( + Array.isArray(defSchema.enum) || + typeof defSchema.pattern === 'string' || + (defSchema.type && !defSchema.properties) + ) { + results.push({ + path: defPath, + name: defName, + propSchema: /** @type {Record} */ (defSchema), + }) + } results.push( ...walkProperties( /** @type {Record} */ (defSchema), - `#${defsKey}/${defName}`, + defPath, ), ) } @@ -367,7 +400,7 @@ export function checkDescriptionCoverage(schema) { status: missing.length === 0 ? 'pass' : 'fail', totalProperties: nonDefProps.length, missingCount: missing.length, - missing: missing.slice(0, 20).map((p) => p.path), + missing: missing.map((p) => p.path), } } @@ -438,7 +471,7 @@ export function checkEnumCoverage(schema, positiveTests, negativeTests) { issues.push({ path: ePath, type: 'positive_uncovered', - values: uncovered.slice(0, 10), + values: uncovered, testedFiles, }) } @@ -457,7 +490,7 @@ export function checkEnumCoverage(schema, positiveTests, negativeTests) { return { status: issues.length === 0 ? 'pass' : 'fail', totalEnums: enums.length, - issues: issues.slice(0, 20), + issues: issues, } } @@ -536,7 +569,7 @@ export function checkPatternCoverage(schema, positiveTests, negativeTests) { return { status: issues.length === 0 ? 'pass' : 'fail', totalPatterns: patterns.length, - issues: issues.slice(0, 20), + issues: issues, } } @@ -588,7 +621,7 @@ export function checkRequiredCoverage(schema, negativeTests) { status: issues.length === 0 ? 'pass' : 'warn', totalRequiredGroups: requiredGroups.length, note: 'Heuristic: name-based matching, not path-aware', - uncovered: issues.slice(0, 20), + uncovered: issues, } } @@ -649,7 +682,7 @@ export function checkDefaultCoverage(schema, positiveTests) { return { status: issues.length === 0 ? 'pass' : 'fail', totalDefaults: defaults.length, - issues: issues.slice(0, 20), + issues: issues, } } @@ -820,7 +853,7 @@ export function checkNegativeIsolation(schema, negativeTests) { status: multiViolationFiles.length === 0 ? 'pass' : 'warn', totalNegativeTests: negativeTests.size, note: 'Heuristic — all checks match by property name, not JSON path. When the same name (e.g., "source", "type") appears at different schema depths with different constraints, violations may be misattributed. For each flagged file, verify that reported violation types reflect intentional test inputs at the correct nesting level, not collisions between unrelated schema depths', - multiViolationFiles: multiViolationFiles.slice(0, 20), + multiViolationFiles: multiViolationFiles, } } diff --git a/src/negative_test/claude-code-settings/invalid-enum-values.json b/src/negative_test/claude-code-settings/invalid-enum-values.json index 5ed0d2d0b1e..676b3456fd5 100644 --- a/src/negative_test/claude-code-settings/invalid-enum-values.json +++ b/src/negative_test/claude-code-settings/invalid-enum-values.json @@ -1,26 +1,39 @@ { "autoUpdatesChannel": "beta", "defaultShell": "zsh", + "disableAutoMode": "enabled", "disableDeepLinkRegistration": "enabled", + "editorMode": "emacs", "effortLevel": "extreme", "env": { "ANTHROPIC_BEDROCK_SERVICE_TIER": "turbo", "CCR_FORCE_BUNDLE": "true", + "CLAUDECODE": "yes", "CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS": "yes", "CLAUDE_AGENT_SDK_MCP_NO_PREFIX": "true", "CLAUDE_AUTO_BACKGROUND_TASKS": "on", + "CLAUDE_AX_SCREEN_READER": "yes", "CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR": "yes", "CLAUDE_CODE_ACCESSIBILITY": "enable", "CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD": "on", + "CLAUDE_CODE_ALT_SCREEN_FULL_REPAINT": "yes", + "CLAUDE_CODE_ALWAYS_ENABLE_EFFORT": "yes", + "CLAUDE_CODE_ARTIFACT_AUTO_OPEN": "yes", "CLAUDE_CODE_ATTRIBUTION_HEADER": "yes", "CLAUDE_CODE_AUTO_CONNECT_IDE": "1", + "CLAUDE_CODE_CHILD_SESSION": "yes", "CLAUDE_CODE_DEBUG_LOG_LEVEL": "trace", "CLAUDE_CODE_DISABLE_1M_CONTEXT": "yes", "CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING": "true", + "CLAUDE_CODE_DISABLE_ADVISOR_TOOL": "yes", + "CLAUDE_CODE_DISABLE_AGENT_VIEW": "yes", "CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN": "yes", + "CLAUDE_CODE_DISABLE_ARTIFACT": "yes", "CLAUDE_CODE_DISABLE_ATTACHMENTS": "off", "CLAUDE_CODE_DISABLE_AUTO_MEMORY": "yes", "CLAUDE_CODE_DISABLE_BACKGROUND_TASKS": "true", + "CLAUDE_CODE_DISABLE_BG_SHELL_PRESSURE_REAP": "yes", + "CLAUDE_CODE_DISABLE_BUNDLED_SKILLS": "yes", "CLAUDE_CODE_DISABLE_CLAUDE_MDS": "2", "CLAUDE_CODE_DISABLE_CRON": "off", "CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS": "true", @@ -30,6 +43,7 @@ "CLAUDE_CODE_DISABLE_GIT_INSTRUCTIONS": "true", "CLAUDE_CODE_DISABLE_LEGACY_MODEL_REMAP": "no", "CLAUDE_CODE_DISABLE_MOUSE": "nope", + "CLAUDE_CODE_DISABLE_MOUSE_CLICKS": "yes", "CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "false", "CLAUDE_CODE_DISABLE_NONSTREAMING_FALLBACK": "on", "CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL": "yes", @@ -37,7 +51,9 @@ "CLAUDE_CODE_DISABLE_TERMINAL_TITLE": "true", "CLAUDE_CODE_DISABLE_THINKING": "false", "CLAUDE_CODE_DISABLE_VIRTUAL_SCROLL": "off", + "CLAUDE_CODE_DISABLE_WORKFLOWS": "yes", "CLAUDE_CODE_EFFORT_LEVEL": "extreme", + "CLAUDE_CODE_ENABLE_AUTO_MODE": "yes", "CLAUDE_CODE_ENABLE_AWAY_SUMMARY": "yes", "CLAUDE_CODE_ENABLE_BACKGROUND_PLUGIN_REFRESH": "on", "CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL": "enabled", @@ -46,7 +62,10 @@ "CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION": "1", "CLAUDE_CODE_ENABLE_TASKS": "enable", "CLAUDE_CODE_ENABLE_TELEMETRY": "yes", + "CLAUDE_CODE_ENHANCED_TELEMETRY_BETA": "yes", "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "enable", + "CLAUDE_CODE_FORCE_SESSION_PERSISTENCE": "yes", + "CLAUDE_CODE_FORCE_STRIKETHROUGH": "yes", "CLAUDE_CODE_FORCE_SYNC_OUTPUT": "enabled", "CLAUDE_CODE_FORK_SUBAGENT": "true", "CLAUDE_CODE_GLOB_HIDDEN": "1", @@ -55,20 +74,26 @@ "CLAUDE_CODE_IDE_SKIP_AUTO_INSTALL": "yes", "CLAUDE_CODE_IDE_SKIP_VALID_CHECK": "true", "CLAUDE_CODE_MCP_ALLOWLIST_ENV": "all", + "CLAUDE_CODE_NATIVE_CURSOR": "yes", "CLAUDE_CODE_NEW_INIT": "start", "CLAUDE_CODE_NO_FLICKER": "maybe", "CLAUDE_CODE_OPUS_4_6_FAST_MODE_OVERRIDE": "yes", + "CLAUDE_CODE_OTEL_DIAG_STDERR": "yes", "CLAUDE_CODE_PACKAGE_MANAGER_AUTO_UPDATE": "auto", "CLAUDE_CODE_PERFORCE_MODE": "on", "CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE": "always", "CLAUDE_CODE_PLUGIN_PREFER_HTTPS": "yes", "CLAUDE_CODE_POWERSHELL_RESPECT_EXECUTION_POLICY": "yes", + "CLAUDE_CODE_PROPAGATE_TRACEPARENT": "yes", "CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST": "true", "CLAUDE_CODE_PROXY_RESOLVES_HOSTS": "true", "CLAUDE_CODE_REMOTE": "1", "CLAUDE_CODE_RESUME_INTERRUPTED_TURN": "always", + "CLAUDE_CODE_RETRY_WATCHDOG": "yes", + "CLAUDE_CODE_SAFE_MODE": "yes", "CLAUDE_CODE_SIMPLE": "on", "CLAUDE_CODE_SIMPLE_SYSTEM_PROMPT": "enabled", + "CLAUDE_CODE_SKIP_ANTHROPIC_AWS_AUTH": "yes", "CLAUDE_CODE_SKIP_BEDROCK_AUTH": "always", "CLAUDE_CODE_SKIP_FOUNDRY_AUTH": "skip", "CLAUDE_CODE_SKIP_MANTLE_AUTH": "true", @@ -76,15 +101,65 @@ "CLAUDE_CODE_SKIP_VERTEX_AUTH": "yes", "CLAUDE_CODE_SUBPROCESS_ENV_SCRUB": "clean", "CLAUDE_CODE_SYNC_PLUGIN_INSTALL": "always", + "CLAUDE_CODE_SYNC_SKILLS": "yes", "CLAUDE_CODE_SYNTAX_HIGHLIGHT": "0", "CLAUDE_CODE_TMUX_TRUECOLOR": "yes", + "CLAUDE_CODE_USE_ANTHROPIC_AWS": "yes", + "CLAUDE_CODE_USE_BEDROCK": "yes", + "CLAUDE_CODE_USE_FOUNDRY": "yes", + "CLAUDE_CODE_USE_MANTLE": "yes", + "CLAUDE_CODE_USE_NATIVE_FILE_SEARCH": "yes", "CLAUDE_CODE_USE_POWERSHELL_TOOL": "enabled", + "CLAUDE_CODE_USE_VERTEX": "yes", + "CLAUDE_EFFORT": "extreme", + "CLAUDE_ENABLE_BYTE_WATCHDOG": "yes", + "CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK": "yes", + "CLAUDE_ENABLE_STREAM_WATCHDOG": "yes", "DISABLE_AUTOUPDATER": "true", + "DISABLE_AUTO_COMPACT": "yes", + "DISABLE_COMPACT": "yes", + "DISABLE_COST_WARNINGS": "yes", + "DISABLE_DOCTOR_COMMAND": "yes", "DISABLE_ERROR_REPORTING": "false", + "DISABLE_EXTRA_USAGE_COMMAND": "yes", "DISABLE_FEEDBACK_COMMAND": "off", + "DISABLE_GROWTHBOOK": "yes", + "DISABLE_INSTALLATION_CHECKS": "yes", + "DISABLE_INSTALL_GITHUB_APP_COMMAND": "yes", + "DISABLE_INTERLEAVED_THINKING": "yes", + "DISABLE_LOGIN_COMMAND": "yes", + "DISABLE_LOGOUT_COMMAND": "yes", + "DISABLE_PROMPT_CACHING": "yes", + "DISABLE_PROMPT_CACHING_FABLE": "yes", + "DISABLE_PROMPT_CACHING_HAIKU": "yes", + "DISABLE_PROMPT_CACHING_OPUS": "yes", + "DISABLE_PROMPT_CACHING_SONNET": "yes", "DISABLE_TELEMETRY": "disabled", "DISABLE_UPDATES": "never", + "DISABLE_UPGRADE_COMMAND": "yes", + "DO_NOT_TRACK": "yes", + "ENABLE_BETA_TRACING_DETAILED": "yes", "ENABLE_CLAUDEAI_MCP_SERVERS": "1", + "ENABLE_PROMPT_CACHING_1H": "yes", + "ENABLE_TOOL_SEARCH": "maybe", + "FORCE_AUTOUPDATE_PLUGINS": "yes", + "FORCE_PROMPT_CACHING_5M": "yes", + "IS_DEMO": "yes", + "MCP_CONNECTION_NONBLOCKING": "yes", + "OTEL_EXPORTER_OTLP_LOGS_PROTOCOL": "tcp", + "OTEL_EXPORTER_OTLP_METRICS_PROTOCOL": "tcp", + "OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE": "sideways", + "OTEL_EXPORTER_OTLP_PROTOCOL": "tcp", + "OTEL_EXPORTER_OTLP_TRACES_PROTOCOL": "tcp", + "OTEL_LOG_ASSISTANT_RESPONSES": "yes", + "OTEL_LOG_TOOL_CONTENT": "yes", + "OTEL_LOG_TOOL_DETAILS": "yes", + "OTEL_LOG_USER_PROMPTS": "yes", + "OTEL_METRICS_INCLUDE_ACCOUNT_UUID": "maybe", + "OTEL_METRICS_INCLUDE_ENTRYPOINT": "maybe", + "OTEL_METRICS_INCLUDE_RESOURCE_ATTRIBUTES": "maybe", + "OTEL_METRICS_INCLUDE_SESSION_ID": "maybe", + "OTEL_METRICS_INCLUDE_VERSION": "maybe", "USE_BUILTIN_RIPGREP": "always" }, "forceLoginMethod": "github", @@ -94,6 +169,23 @@ "disableAutoMode": "enabled", "disableBypassPermissionsMode": "enabled" }, + "preferredNotifChannel": "slack", + "sandbox": { + "credentials": { + "envVars": [ + { + "mode": "read", + "name": "AWS_SECRET_ACCESS_KEY" + } + ], + "files": [ + { + "mode": "read", + "path": "~/.aws/credentials" + } + ] + } + }, "skillOverrides": { "test-skill": "invalid-mode" }, @@ -102,8 +194,12 @@ "verbs": ["Analyzing"] }, "teammateMode": "split", + "theme": "midnight", "tui": "mini", "viewMode": "list", + "voice": { + "mode": "shout" + }, "worktree": { "baseRef": "invalid-ref", "bgIsolation": "isolated" diff --git a/src/schema-validation.jsonc b/src/schema-validation.jsonc index af04e27759c..5260a7bdaad 100644 --- a/src/schema-validation.jsonc +++ b/src/schema-validation.jsonc @@ -537,6 +537,10 @@ { "schema": "claude-code-settings.json", "strict": true + }, + { + "schema": "claude-code-keybindings.json", + "strict": true } ], "catalogEntryNoLintNameOrDescription": [ diff --git a/src/schemas/json/claude-code-keybindings.json b/src/schemas/json/claude-code-keybindings.json index 0c5c1b36691..6ac5f1193f0 100644 --- a/src/schemas/json/claude-code-keybindings.json +++ b/src/schemas/json/claude-code-keybindings.json @@ -77,7 +77,8 @@ "app:redraw", "app:toggleTodos", "app:toggleTranscript", - "app:toggleTeammatePreview", + "app:toggleBrief", + "app:openArtifact", "history:search", "history:previous", "history:next", @@ -89,6 +90,7 @@ "chat:modelPicker", "chat:fastMode", "chat:thinkingToggle", + "chat:workflowKeywordToggle", "chat:submit", "chat:newline", "chat:undo", @@ -161,7 +163,6 @@ "permission:toggleDebug", "settings:search", "settings:retry", - "settings:close", "settings:periodDay", "settings:periodWeek", "settings:sortByTokens", diff --git a/src/schemas/json/claude-code-settings.json b/src/schemas/json/claude-code-settings.json index c1a230a2bf4..8b42230f517 100644 --- a/src/schemas/json/claude-code-settings.json +++ b/src/schemas/json/claude-code-settings.json @@ -5,7 +5,7 @@ "permissionRule": { "type": "string", "description": "Tool permission rule.\nSee https://code.claude.com/docs/en/settings#permission-rule-syntax\nSee https://code.claude.com/docs/en/tools-reference for full list of tools available to Claude.", - "pattern": "^((Agent|Bash|Edit|ExitPlanMode|Glob|Grep|KillShell|LSP|Monitor|NotebookEdit|PowerShell|Read|Skill|TaskCreate|TaskGet|TaskList|TaskOutput|TaskStop|TaskUpdate|TodoWrite|ToolSearch|WebFetch|WebSearch|Write)(\\([^)]+\\))?|mcp__.*)$", + "pattern": "^((Agent|Bash|Cd|Edit|ExitPlanMode|Glob|Grep|KillShell|LSP|Monitor|MultiEdit|NotebookEdit|PowerShell|Read|Skill|TaskCreate|TaskGet|TaskList|TaskOutput|TaskStop|TaskUpdate|TodoWrite|ToolSearch|WebFetch|WebSearch|Write)(\\([^)]+\\))?|mcp__.*)$", "examples": [ "Bash", "Bash(npm run build)", @@ -48,7 +48,7 @@ }, "timeout": { "type": "number", - "description": "Optional timeout in seconds", + "description": "Optional timeout in seconds (default: 600; lowered to 30 on UserPromptSubmit and 10 on MessageDisplay)", "exclusiveMinimum": 0 }, "async": { @@ -189,7 +189,7 @@ }, "timeout": { "type": "number", - "description": "Optional timeout in seconds (default: 30)", + "description": "Optional timeout in seconds (default: 600; lowered to 30 on UserPromptSubmit and 10 on MessageDisplay)", "exclusiveMinimum": 0 }, "if": { @@ -230,7 +230,7 @@ }, "timeout": { "type": "number", - "description": "Optional timeout in seconds (default: 60)", + "description": "Optional timeout in seconds (default: 600; lowered to 30 on UserPromptSubmit and 10 on MessageDisplay)", "exclusiveMinimum": 0 }, "if": { @@ -293,13 +293,13 @@ }, "awsCredentialExport": { "type": "string", - "description": "Path to a script that exports AWS credentials. See https://code.claude.com/docs/en/settings#available-settings", + "description": "Command that outputs AWS credentials as JSON (in the form {\"Credentials\": {\"AccessKeyId\": ..., \"SecretAccessKey\": ..., \"SessionToken\": ...}}). The output is captured silently. Use when you cannot modify the .aws directory and must return credentials directly. See https://code.claude.com/docs/en/amazon-bedrock#advanced-credential-configuration", "examples": ["/bin/generate_aws_grant.sh"], "minLength": 1 }, "awsAuthRefresh": { "type": "string", - "description": "Path to a script that refreshes AWS authentication. See https://code.claude.com/docs/en/settings#available-settings", + "description": "Command to run when AWS credentials are expired or unavailable; its output is shown to the user but interactive input is not supported. Also drives the \"Claude Platform on AWS · refresh credentials\" option in /login when configured. See https://code.claude.com/docs/en/amazon-bedrock#advanced-credential-configuration", "examples": ["aws sso login --profile myprofile"], "minLength": 1 }, @@ -343,6 +343,18 @@ "type": "string", "description": "Custom Authorization header bearer token for API requests" }, + "ANTHROPIC_AWS_API_KEY": { + "type": "string", + "description": "Workspace API key for Claude Platform on AWS; takes precedence over SigV4 authentication. See https://code.claude.com/docs/en/claude-platform-on-aws#1-configure-aws-credentials" + }, + "ANTHROPIC_AWS_BASE_URL": { + "type": "string", + "description": "Override the Claude Platform on AWS endpoint URL. Default is https://aws-external-anthropic.{region}.api.aws. See https://code.claude.com/docs/en/claude-platform-on-aws#route-through-a-corporate-proxy" + }, + "ANTHROPIC_AWS_WORKSPACE_ID": { + "type": "string", + "description": "Required workspace ID for Claude Platform on AWS; sent as the anthropic-workspace-id header on every request. See https://code.claude.com/docs/en/claude-platform-on-aws#2-configure-claude-code" + }, "ANTHROPIC_BASE_URL": { "type": "string", "description": "Override API endpoint URL for proxy or gateway routing" @@ -384,18 +396,70 @@ "type": "string", "description": "JSON object specifying capability flags for the custom model" }, + "ANTHROPIC_DEFAULT_FABLE_MODEL": { + "type": "string", + "description": "Override the default Fable-class model ID. See https://code.claude.com/docs/en/model-config#environment-variables" + }, + "ANTHROPIC_DEFAULT_FABLE_MODEL_DESCRIPTION": { + "type": "string", + "description": "Display description shown for the Fable model in the model picker. See https://code.claude.com/docs/en/model-config#customize-pinned-model-display-and-capabilities" + }, + "ANTHROPIC_DEFAULT_FABLE_MODEL_NAME": { + "type": "string", + "description": "Display name shown for the Fable model in the model picker. See https://code.claude.com/docs/en/model-config#customize-pinned-model-display-and-capabilities" + }, + "ANTHROPIC_DEFAULT_FABLE_MODEL_SUPPORTED_CAPABILITIES": { + "type": "string", + "description": "Comma-separated list of capabilities the pinned Fable model supports. See https://code.claude.com/docs/en/model-config#customize-pinned-model-display-and-capabilities" + }, "ANTHROPIC_DEFAULT_HAIKU_MODEL": { "type": "string", "description": "Override default Haiku model ID" }, + "ANTHROPIC_DEFAULT_HAIKU_MODEL_DESCRIPTION": { + "type": "string", + "description": "Display description shown for the Haiku model in the model picker. See https://code.claude.com/docs/en/model-config#customize-pinned-model-display-and-capabilities" + }, + "ANTHROPIC_DEFAULT_HAIKU_MODEL_NAME": { + "type": "string", + "description": "Display name shown for the Haiku model in the model picker. See https://code.claude.com/docs/en/model-config#customize-pinned-model-display-and-capabilities" + }, + "ANTHROPIC_DEFAULT_HAIKU_MODEL_SUPPORTED_CAPABILITIES": { + "type": "string", + "description": "Comma-separated list of capabilities the pinned Haiku model supports. See https://code.claude.com/docs/en/model-config#customize-pinned-model-display-and-capabilities" + }, "ANTHROPIC_DEFAULT_OPUS_MODEL": { "type": "string", "description": "Override default Opus model ID" }, + "ANTHROPIC_DEFAULT_OPUS_MODEL_DESCRIPTION": { + "type": "string", + "description": "Display description shown for the Opus model in the model picker. See https://code.claude.com/docs/en/model-config#customize-pinned-model-display-and-capabilities" + }, + "ANTHROPIC_DEFAULT_OPUS_MODEL_NAME": { + "type": "string", + "description": "Display name shown for the Opus model in the model picker. See https://code.claude.com/docs/en/model-config#customize-pinned-model-display-and-capabilities" + }, + "ANTHROPIC_DEFAULT_OPUS_MODEL_SUPPORTED_CAPABILITIES": { + "type": "string", + "description": "Comma-separated list of capabilities the pinned Opus model supports. See https://code.claude.com/docs/en/model-config#customize-pinned-model-display-and-capabilities" + }, "ANTHROPIC_DEFAULT_SONNET_MODEL": { "type": "string", "description": "Override default Sonnet model ID" }, + "ANTHROPIC_DEFAULT_SONNET_MODEL_DESCRIPTION": { + "type": "string", + "description": "Display description shown for the Sonnet model in the model picker. See https://code.claude.com/docs/en/model-config#customize-pinned-model-display-and-capabilities" + }, + "ANTHROPIC_DEFAULT_SONNET_MODEL_NAME": { + "type": "string", + "description": "Display name shown for the Sonnet model in the model picker. See https://code.claude.com/docs/en/model-config#customize-pinned-model-display-and-capabilities" + }, + "ANTHROPIC_DEFAULT_SONNET_MODEL_SUPPORTED_CAPABILITIES": { + "type": "string", + "description": "Comma-separated list of capabilities the pinned Sonnet model supports. See https://code.claude.com/docs/en/model-config#customize-pinned-model-display-and-capabilities" + }, "ANTHROPIC_FOUNDRY_API_KEY": { "type": "string", "description": "Microsoft Foundry authentication key" @@ -414,7 +478,11 @@ }, "ANTHROPIC_SMALL_FAST_MODEL": { "type": "string", - "description": "Model to use for background and low-complexity tasks (e.g., 'claude-3-5-haiku-latest')" + "description": "DEPRECATED (prefer ANTHROPIC_DEFAULT_HAIKU_MODEL). Haiku-class model to use for background and low-complexity tasks (e.g., 'claude-3-5-haiku-latest')" + }, + "ANTHROPIC_SMALL_FAST_MODEL_AWS_REGION": { + "type": "string", + "description": "Override the AWS region for the Haiku-class model on Bedrock and Bedrock Mantle. Has no effect without ANTHROPIC_DEFAULT_HAIKU_MODEL (or the deprecated ANTHROPIC_SMALL_FAST_MODEL) set on Bedrock. See https://code.claude.com/docs/en/amazon-bedrock#3-configure-claude-code" }, "ANTHROPIC_VERTEX_BASE_URL": { "type": "string", @@ -428,6 +496,10 @@ "type": "string", "description": "Workspace ID for workload identity federation. Scopes the minted token to a specific workspace when the federation rule covers more than one. See https://code.claude.com/docs/en/env-vars" }, + "API_FORCE_IDLE_TIMEOUT": { + "type": "string", + "description": "Override the 5-minute idle timeout for streaming responses (0 disables it). See https://code.claude.com/docs/en/env-vars" + }, "API_TIMEOUT_MS": { "type": "string", "description": "API request timeout in milliseconds (default: 600000)" @@ -436,6 +508,10 @@ "type": "string", "description": "Bearer token for Bedrock API authentication" }, + "AWS_REGION": { + "type": "string", + "description": "AWS region for Amazon Bedrock and Claude Platform on AWS requests (e.g. us-east-1). See https://code.claude.com/docs/en/amazon-bedrock#3-configure-claude-code" + }, "BASH_DEFAULT_TIMEOUT_MS": { "type": "string", "description": "Default bash command timeout in milliseconds (default: 120000)" @@ -448,11 +524,20 @@ "type": "string", "description": "Maximum bash command timeout in milliseconds (default: 600000)" }, + "BETA_TRACING_ENDPOINT": { + "type": "string", + "description": "Endpoint that, together with ENABLE_BETA_TRACING_DETAILED=1, activates detailed beta tracing spans (e.g. claude_code.hook). See https://code.claude.com/docs/en/monitoring-usage#traces-beta" + }, "CCR_FORCE_BUNDLE": { "type": "string", "description": "Force local repo bundling for --remote invocations", "enum": ["0", "1"] }, + "CLAUDECODE": { + "type": "string", + "description": "Set to 1 in subprocesses Claude Code spawns (Bash and PowerShell tools, tmux sessions, hook commands, status line commands, stdio MCP server subprocesses). IDE extensions also set this in their integrated terminals. To distinguish a direct tool/hook subprocess from a stdio MCP server subprocess, use CLAUDE_CODE_CHILD_SESSION instead. See https://code.claude.com/docs/en/env-vars", + "enum": ["0", "1"] + }, "CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS": { "type": "string", "description": "Disable built-in subagent types in Agent SDK", @@ -463,6 +548,10 @@ "description": "Skip 'mcp____' prefix on MCP tool names in Agent SDK", "enum": ["0", "1"] }, + "CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS": { + "type": "string", + "description": "Stall timeout for background subagents in milliseconds (default 600000). The timer resets on each streaming progress event; if no progress arrives within the window the subagent is aborted and the task is marked failed, surfacing any partial result to the parent. See https://code.claude.com/docs/en/env-vars" + }, "CLAUDE_AUTOCOMPACT_PCT_OVERRIDE": { "type": "string", "description": "Context capacity percentage threshold for auto-compaction (1-100)" @@ -472,11 +561,20 @@ "description": "Force-enable automatic backgrounding of tasks", "enum": ["0", "1"] }, + "CLAUDE_AX_SCREEN_READER": { + "type": "string", + "description": "Set to 1 to render screen-reader friendly output: flat text without decorative borders or animations. Set to 0 to force screen-reader mode off even when axScreenReader is true. The --ax-screen-reader flag takes precedence. Requires Claude Code v2.1.181 or later. See https://code.claude.com/docs/en/env-vars", + "enum": ["0", "1"] + }, "CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR": { "type": "string", "description": "Return to original project directory after each bash command", "enum": ["0", "1"] }, + "CLAUDE_CLIENT_PRESENCE_FILE": { + "type": "string", + "description": "Path to a file whose existence marks the user as present; while it exists, mobile push notifications are skipped (v2.1.181+). See https://code.claude.com/docs/en/env-vars" + }, "CLAUDE_CODE_ACCESSIBILITY": { "type": "string", "description": "Keep native cursor visible for screen magnifiers and assistive tools", @@ -487,10 +585,25 @@ "description": "Load CLAUDE.md memory files from additional directories", "enum": ["0", "1"] }, + "CLAUDE_CODE_ALT_SCREEN_FULL_REPAINT": { + "type": "string", + "description": "Force a full-screen repaint on every frame in fullscreen mode. See https://code.claude.com/docs/en/env-vars", + "enum": ["0", "1"] + }, + "CLAUDE_CODE_ALWAYS_ENABLE_EFFORT": { + "type": "string", + "description": "Send the effort parameter for all models, not just those with effort enabled by default. See https://code.claude.com/docs/en/env-vars", + "enum": ["0", "1"] + }, "CLAUDE_CODE_API_KEY_HELPER_TTL_MS": { "type": "string", "description": "Credential helper refresh interval in milliseconds" }, + "CLAUDE_CODE_ARTIFACT_AUTO_OPEN": { + "type": "string", + "description": "Set to 0 to stop auto-opening the browser when a new artifact is created. See https://code.claude.com/docs/en/artifacts#create-an-artifact", + "enum": ["0", "1"] + }, "CLAUDE_CODE_ATTRIBUTION_HEADER": { "type": "string", "description": "Include attribution block in the system prompt", @@ -509,6 +622,11 @@ "type": "string", "description": "CA certificate sources (comma-separated: 'bundled', 'system')" }, + "CLAUDE_CODE_CHILD_SESSION": { + "type": "string", + "description": "Set by Claude Code to 1 in nested subprocesses (Bash, PowerShell, Monitor, hook commands, status-line commands) to distinguish nested sessions from a top-level claude launched in IDE terminals (v2.1.172+). A nested interactive claude TUI started this way is excluded from --resume, --continue, up-arrow history, and the claude agents list; non-interactive claude -p sessions still persist (override with CLAUDE_CODE_FORCE_SESSION_PERSISTENCE=1). See https://code.claude.com/docs/en/env-vars", + "enum": ["0", "1"] + }, "CLAUDE_CODE_CLIENT_CERT": { "type": "string", "description": "Client certificate file path for mutual TLS" @@ -540,11 +658,26 @@ "description": "Disable adaptive reasoning", "enum": ["0", "1"] }, + "CLAUDE_CODE_DISABLE_ADVISOR_TOOL": { + "type": "string", + "description": "Disable the server-side advisor tool. See https://code.claude.com/docs/en/env-vars", + "enum": ["0", "1"] + }, + "CLAUDE_CODE_DISABLE_AGENT_VIEW": { + "type": "string", + "description": "Turn off background agents and agent view (claude agents, --bg, /background, and the on-demand supervisor). Equivalent to the disableAgentView setting. See https://code.claude.com/docs/en/env-vars", + "enum": ["0", "1"] + }, "CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN": { "type": "string", "description": "Disable alternate screen buffer rendering. When set to 1, keeps conversation in native scrollback instead of fullscreen renderer", "enum": ["0", "1"] }, + "CLAUDE_CODE_DISABLE_ARTIFACT": { + "type": "string", + "description": "Disable the Artifact tool. Equivalent to setting disableArtifact. See https://code.claude.com/docs/en/env-vars", + "enum": ["0", "1"] + }, "CLAUDE_CODE_DISABLE_ATTACHMENTS": { "type": "string", "description": "Disable attachment processing", @@ -560,6 +693,16 @@ "description": "Disable all background task functionality", "enum": ["0", "1"] }, + "CLAUDE_CODE_DISABLE_BG_SHELL_PRESSURE_REAP": { + "type": "string", + "description": "UNDOCUMENTED. Disable automatic memory-pressure reaping of idle background shell commands (added v2.1.193).", + "enum": ["0", "1"] + }, + "CLAUDE_CODE_DISABLE_BUNDLED_SKILLS": { + "type": "string", + "description": "Disable the skills and workflows bundled with Claude Code (plugins and project .claude/skills are unaffected). See https://code.claude.com/docs/en/env-vars", + "enum": ["0", "1"] + }, "CLAUDE_CODE_DISABLE_CLAUDE_MDS": { "type": "string", "description": "Prevent loading CLAUDE.md memory files", @@ -587,7 +730,7 @@ }, "CLAUDE_CODE_DISABLE_FILE_CHECKPOINTING": { "type": "string", - "description": "Disable file checkpointing for undo/restore", + "description": "Disable file checkpointing for /rewind", "enum": ["0", "1"] }, "CLAUDE_CODE_DISABLE_GIT_INSTRUCTIONS": { @@ -605,6 +748,11 @@ "description": "Disable mouse tracking in fullscreen mode", "enum": ["0", "1"] }, + "CLAUDE_CODE_DISABLE_MOUSE_CLICKS": { + "type": "string", + "description": "UNDOCUMENTED. Disable mouse click/drag/hover in fullscreen mode while keeping wheel scroll (added v2.1.195).", + "enum": ["0", "1"] + }, "CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": { "type": "string", "description": "Disable auto-update checks, telemetry, and feedback in one setting", @@ -640,11 +788,21 @@ "description": "Disable virtual scrolling in fullscreen mode", "enum": ["0", "1"] }, + "CLAUDE_CODE_DISABLE_WORKFLOWS": { + "type": "string", + "description": "Set to 1 to disable workflows. Equivalent to the disableWorkflows setting. See https://code.claude.com/docs/en/env-vars", + "enum": ["0", "1"] + }, "CLAUDE_CODE_EFFORT_LEVEL": { "type": "string", "description": "Reasoning effort level", "enum": ["low", "medium", "high", "xhigh", "max", "auto"] }, + "CLAUDE_CODE_ENABLE_AUTO_MODE": { + "type": "string", + "description": "Set to 1 to make auto mode available on Amazon Bedrock, Google Cloud Vertex AI, and Microsoft Foundry (requires v2.1.158+; no effect on the Anthropic API where auto mode is available by default). See https://code.claude.com/docs/en/env-vars", + "enum": ["0", "1"] + }, "CLAUDE_CODE_ENABLE_AWAY_SUMMARY": { "type": "string", "description": "Override session recap/away summary availability", @@ -682,7 +840,12 @@ }, "CLAUDE_CODE_ENABLE_TELEMETRY": { "type": "string", - "description": "Enable OpenTelemetry collection", + "description": "Set to 1 to enable telemetry collection. Required for all OpenTelemetry integration. See https://code.claude.com/docs/en/monitoring-usage#common-configuration-variables", + "enum": ["0", "1"] + }, + "CLAUDE_CODE_ENHANCED_TELEMETRY_BETA": { + "type": "string", + "description": "Enable the enhanced telemetry (tracing) beta. ENABLE_ENHANCED_TELEMETRY_BETA is also accepted. See https://code.claude.com/docs/en/monitoring-usage#traces-beta", "enum": ["0", "1"] }, "CLAUDE_CODE_EXIT_AFTER_STOP_DELAY": { @@ -702,6 +865,16 @@ "type": "string", "description": "Token limit for file read operations" }, + "CLAUDE_CODE_FORCE_SESSION_PERSISTENCE": { + "type": "string", + "description": "Set to 1 to override the automatic exclusion of nested interactive claude TUI sessions from --resume, --continue, up-arrow history, and the claude agents list (requires v2.1.172+). See https://code.claude.com/docs/en/env-vars", + "enum": ["0", "1"] + }, + "CLAUDE_CODE_FORCE_STRIKETHROUGH": { + "type": "string", + "description": "Set to 1 to force strikethrough rendering for ~~text~~ in Claude's responses when the terminal supports it but is not auto-detected, such as over SSH without TERM_PROGRAM forwarded. Without this, undetected terminals show the literal ~~ markers. Requires Claude Code v2.1.186 or later. See https://code.claude.com/docs/en/env-vars", + "enum": ["0", "1"] + }, "CLAUDE_CODE_FORCE_SYNC_OUTPUT": { "type": "string", "description": "Force synchronous output flushing. When set to 1, forces synchronized output on terminals that auto-detection misses (e.g., Emacs eat)", @@ -765,11 +938,24 @@ "type": "string", "description": "Maximum parallel tool executions (default: 10)" }, + "CLAUDE_CODE_MAX_TURNS": { + "type": "string", + "description": "Cap the number of agentic turns when no explicit limit is passed. Equivalent to --max-turns, which takes precedence. A non-positive integer is rejected at startup. See https://code.claude.com/docs/en/env-vars" + }, "CLAUDE_CODE_MCP_ALLOWLIST_ENV": { "type": "string", "description": "Isolate MCP server environments to allowlisted variables", "enum": ["0", "1"] }, + "CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT": { + "type": "string", + "description": "Idle timeout in milliseconds for remote MCP tool calls (default: 300000, about 5 minutes). When an HTTP, SSE, WebSocket, or claude.ai connector MCP server sends no response and no progress notification for this long, the tool call aborts with an error instead of waiting for the overall MCP_TOOL_TIMEOUT. Set to 0 to disable the idle check. Values below 1000 are raised to one second, and the value is capped at the effective MCP_TOOL_TIMEOUT. Does not apply to stdio or IDE servers. Requires Claude Code v2.1.187 or later. See https://code.claude.com/docs/en/mcp" + }, + "CLAUDE_CODE_NATIVE_CURSOR": { + "type": "string", + "description": "Set to 1 to show the terminal's own cursor at the input caret instead of a drawn block. The cursor respects the terminal's blink, shape, and focus settings. See https://code.claude.com/docs/en/env-vars", + "enum": ["0", "1"] + }, "CLAUDE_CODE_NEW_INIT": { "type": "string", "description": "Use the interactive /init setup flow", @@ -795,7 +981,12 @@ "CLAUDE_CODE_OPUS_4_6_FAST_MODE_OVERRIDE": { "type": "string", "enum": ["0", "1"], - "description": "Set to 1 to pin fast mode to Claude Opus 4.6 instead of the default Opus 4.7. With this set, /fast runs on Opus 4.6. Without it, /fast runs on Opus 4.7. See https://code.claude.com/docs/en/fast-mode and https://code.claude.com/docs/en/env-vars" + "description": "Set to 1 to pin fast mode to Claude Opus 4.6 instead of the default Opus 4.8 (the fast-mode default since v2.1.154). With this set, /fast runs on Opus 4.6. See https://code.claude.com/docs/en/fast-mode" + }, + "CLAUDE_CODE_OTEL_DIAG_STDERR": { + "type": "string", + "description": "Set to 1 to write OpenTelemetry exporter diagnostic errors to stderr (otherwise shown only with --debug). Requires v2.1.179+. See https://code.claude.com/docs/en/env-vars", + "enum": ["0", "1"] }, "CLAUDE_CODE_OTEL_FLUSH_TIMEOUT_MS": { "type": "string", @@ -846,6 +1037,15 @@ "enum": ["0", "1"], "description": "Set to 1 to stop Claude Code from passing -ExecutionPolicy Bypass when spawning PowerShell for tool calls, hooks, and status line commands. By default Claude Code bypasses execution policy so .ps1 scripts work on default-Restricted Windows installs. See https://code.claude.com/docs/en/env-vars" }, + "CLAUDE_CODE_PRINT_BG_WAIT_CEILING_MS": { + "type": "string", + "description": "Cap, in milliseconds, on how long `claude -p` waits for background subagents at exit (default 10 minutes; set to 0 to wait without limit, added v2.1.182). See https://code.claude.com/docs/en/headless#background-tasks-at-exit" + }, + "CLAUDE_CODE_PROPAGATE_TRACEPARENT": { + "type": "string", + "description": "Propagate the W3C traceparent header on API requests when using a custom ANTHROPIC_BASE_URL. See https://code.claude.com/docs/en/monitoring-usage#traces-beta", + "enum": ["0", "1"] + }, "CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST": { "type": "string", "description": "Indicate that the host application manages provider routing", @@ -870,6 +1070,20 @@ "description": "Automatically resume from a mid-turn interruption", "enum": ["0", "1"] }, + "CLAUDE_CODE_RESUME_PROMPT": { + "type": "string", + "description": "Override the continuation message injected when resuming a session that ended mid-turn (default \"Continue from where you left off.\"). An empty string uses the default. See https://code.claude.com/docs/en/env-vars" + }, + "CLAUDE_CODE_RETRY_WATCHDOG": { + "type": "string", + "description": "Set to 1 for unattended sessions (eval harnesses, CI, remote workers) to retry 429/529 capacity errors indefinitely, backing off up to 5 minutes, instead of failing after CLAUDE_CODE_MAX_RETRIES. Requires v2.1.186+. See https://code.claude.com/docs/en/env-vars", + "enum": ["0", "1"] + }, + "CLAUDE_CODE_SAFE_MODE": { + "type": "string", + "description": "Set to 1 to start in safe mode: CLAUDE.md, skills, plugins, hooks, MCP servers, custom commands and agents, output styles, workflows, custom themes, custom keybindings, status line and file-suggestion commands, LSP servers, and auto-memory do not load, for troubleshooting a broken configuration. Managed settings policy still applies. Equivalent to passing --safe-mode; directly spawned child processes inherit the variable. See https://code.claude.com/docs/en/env-vars", + "enum": ["0", "1"] + }, "CLAUDE_CODE_SCRIPT_CAPS": { "type": "string", "description": "Script invocation limits (JSON object)" @@ -878,9 +1092,13 @@ "type": "string", "description": "Mouse wheel scroll speed multiplier (1-20)" }, - "CLAUDE_CODE_SESSION_END_HOOKS_TIMEOUT_MS": { + "CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS": { + "type": "string", + "description": "Override the time budget in milliseconds for SessionEnd hooks (default 1500, raised up to 60000 by the highest configured per-hook timeout). See https://code.claude.com/docs/en/env-vars" + }, + "CLAUDE_CODE_SESSION_ID": { "type": "string", - "description": "Time budget in milliseconds for SessionEnd hooks" + "description": "Set automatically to the current session ID in Bash/PowerShell tool subprocesses, hook command subprocesses, and stdio MCP server subprocesses. Read-only. See https://code.claude.com/docs/en/env-vars" }, "CLAUDE_CODE_SHELL": { "type": "string", @@ -900,6 +1118,11 @@ "description": "Use a shortened system prompt", "enum": ["0", "1"] }, + "CLAUDE_CODE_SKIP_ANTHROPIC_AWS_AUTH": { + "type": "string", + "description": "Skip client-side SigV4 authentication for Claude Platform on AWS; use when a proxy or gateway adds authentication before forwarding. See https://code.claude.com/docs/en/claude-platform-on-aws#route-through-a-corporate-proxy", + "enum": ["0", "1"] + }, "CLAUDE_CODE_SKIP_BEDROCK_AUTH": { "type": "string", "description": "Skip AWS authentication for Bedrock", @@ -912,7 +1135,7 @@ }, "CLAUDE_CODE_SKIP_MANTLE_AUTH": { "type": "string", - "description": "Skip AWS authentication for Mantle", + "description": "Skip AWS authentication for Bedrock Mantle (for example, when using an LLM gateway). See https://code.claude.com/docs/en/env-vars", "enum": ["0", "1"] }, "CLAUDE_CODE_SKIP_PROMPT_HISTORY": { @@ -947,9 +1170,22 @@ "type": "string", "description": "Timeout in milliseconds for synchronous plugin installation" }, + "CLAUDE_CODE_SYNC_SKILLS": { + "type": "string", + "description": "Set to 1 to download enabled claude.ai skills into ~/.claude/skills/ before the first query and resync every 10 minutes (non-interactive -p mode only; requires claude.ai auth). See https://code.claude.com/docs/en/env-vars", + "enum": ["0", "1"] + }, + "CLAUDE_CODE_SYNC_SKILLS_INSTALL_TIMEOUT_MS": { + "type": "string", + "description": "Timeout in milliseconds for a mid-session skills resync when CLAUDE_CODE_SYNC_SKILLS is set (default 30000). See https://code.claude.com/docs/en/env-vars" + }, + "CLAUDE_CODE_SYNC_SKILLS_WAIT_TIMEOUT_MS": { + "type": "string", + "description": "Timeout in milliseconds for the first query to wait on the initial skills sync when CLAUDE_CODE_SYNC_SKILLS is set (default 5000). See https://code.claude.com/docs/en/env-vars" + }, "CLAUDE_CODE_SYNTAX_HIGHLIGHT": { "type": "string", - "description": "Enable syntax highlighting in diffs", + "description": "UNDOCUMENTED. Enable syntax highlighting in diffs", "enum": ["true", "false"] }, "CLAUDE_CODE_TASK_LIST_ID": { @@ -969,73 +1205,509 @@ "description": "Allow 24-bit truecolor rendering in tmux", "enum": ["0", "1"] }, + "CLAUDE_CODE_USE_ANTHROPIC_AWS": { + "type": "string", + "description": "Enable Claude Platform on AWS as the API provider. Bedrock and Foundry take precedence if also set. See https://code.claude.com/docs/en/claude-platform-on-aws#2-configure-claude-code", + "enum": ["0", "1"] + }, + "CLAUDE_CODE_USE_BEDROCK": { + "type": "string", + "description": "Enable Amazon Bedrock as the API provider. See https://code.claude.com/docs/en/amazon-bedrock#3-configure-claude-code", + "enum": ["0", "1"] + }, + "CLAUDE_CODE_USE_FOUNDRY": { + "type": "string", + "description": "Enable Microsoft Foundry as the API provider. See https://code.claude.com/docs/en/microsoft-foundry#3-configure-claude-code", + "enum": ["0", "1"] + }, + "CLAUDE_CODE_USE_MANTLE": { + "type": "string", + "description": "Enable the Mantle endpoint (native Anthropic API shape on Bedrock). See https://code.claude.com/docs/en/amazon-bedrock#enable-mantle", + "enum": ["0", "1"] + }, + "CLAUDE_CODE_USE_NATIVE_FILE_SEARCH": { + "type": "string", + "description": "Set to 1 to discover custom commands, subagents, and output styles using Node.js file APIs instead of ripgrep (for environments where the bundled ripgrep is unavailable). See https://code.claude.com/docs/en/env-vars", + "enum": ["0", "1"] + }, "CLAUDE_CODE_USE_POWERSHELL_TOOL": { "type": "string", "description": "Enable PowerShell as default shell for interactive commands (Windows)", "enum": ["0", "1"] }, + "CLAUDE_CODE_USE_VERTEX": { + "type": "string", + "description": "Enable Google Vertex AI as the API provider. See https://code.claude.com/docs/en/google-vertex-ai#4-configure-claude-code", + "enum": ["0", "1"] + }, + "CLAUDE_CONFIG_DIR": { + "type": "string", + "description": "Override the configuration directory (default ~/.claude) where settings, credentials, session history, and plugins are stored. Useful for running multiple accounts side by side. See https://code.claude.com/docs/en/env-vars" + }, + "CLAUDE_EFFORT": { + "type": "string", + "enum": ["low", "medium", "high", "xhigh", "max"], + "description": "Set automatically in Bash tool subprocesses and hook commands to the active effort level for the turn (low, medium, high, xhigh, or max; ultracode reports as xhigh). Read-only. See https://code.claude.com/docs/en/env-vars" + }, + "CLAUDE_ENABLE_BYTE_WATCHDOG": { + "type": "string", + "description": "Set to 1 to force-enable, or 0 to force-disable, the byte-level streaming idle watchdog that aborts a connection when no bytes arrive within the configured timeout. Enabled by default on direct Anthropic API and Claude Platform on AWS connections. See https://code.claude.com/docs/en/env-vars", + "enum": ["0", "1"] + }, + "CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK": { + "type": "string", + "description": "Set to 1 to enable the byte-level streaming idle watchdog on Amazon Bedrock eventstream responses (off by default). Configure the timeout with CLAUDE_STREAM_IDLE_TIMEOUT_MS. See https://code.claude.com/docs/en/env-vars", + "enum": ["0", "1"] + }, + "CLAUDE_ENABLE_STREAM_WATCHDOG": { + "type": "string", + "description": "Set to 1 to force-enable, or 0 to force-disable, the event-level streaming idle watchdog. When unset, server-controlled on the direct Anthropic API and off on other providers. See https://code.claude.com/docs/en/env-vars", + "enum": ["0", "1"] + }, "CLAUDE_ENV_FILE": { "type": "string", "description": "File path for persisting environment variables across Bash commands" }, - "CLAUDE_PROJECT_DIR": { + "CLAUDE_PROJECT_DIR": { + "type": "string", + "description": "Project root directory path (also provided to hooks)" + }, + "CLAUDE_REMOTE_CONTROL_SESSION_NAME_PREFIX": { + "type": "string", + "description": "Prefix for auto-generated Remote Control session names when no explicit name is set. Defaults to the machine hostname, producing names like myhost-graceful-unicorn. See https://code.claude.com/docs/en/remote-control#start-a-remote-control-session" + }, + "CLAUDE_STREAM_IDLE_TIMEOUT_MS": { + "type": "string", + "description": "Timeout in milliseconds before the streaming idle watchdog closes a stalled connection. When set explicitly the minimum is 300000 (5 minutes); lower values are clamped. See https://code.claude.com/docs/en/env-vars" + }, + "CLOUD_ML_REGION": { + "type": "string", + "description": "Vertex AI region: global, a multi-region location (eu, us), or a specific region (e.g. us-east5). See https://code.claude.com/docs/en/google-vertex-ai#region-configuration" + }, + "DEBUG": { + "type": "string", + "description": "Set to a truthy value (1, true, yes, or on) to enable debug mode, equivalent to --debug. Logs are written to ~/.claude/debug/.txt. See https://code.claude.com/docs/en/env-vars" + }, + "DISABLE_AUTOUPDATER": { + "type": "string", + "description": "Set to 1 to disable automatic background updates. Manual claude update still works; use DISABLE_UPDATES to block both. See https://code.claude.com/docs/en/env-vars", + "enum": ["0", "1"] + }, + "DISABLE_AUTO_COMPACT": { + "type": "string", + "description": "Set to 1 to disable automatic compaction when approaching the context limit. The manual /compact command remains available. Equivalent to autoCompactEnabled: false. See https://code.claude.com/docs/en/env-vars", + "enum": ["0", "1"] + }, + "DISABLE_COMPACT": { + "type": "string", + "description": "Set to 1 to disable all compaction: both automatic compaction and the manual /compact command. See https://code.claude.com/docs/en/env-vars", + "enum": ["0", "1"] + }, + "DISABLE_COST_WARNINGS": { + "type": "string", + "description": "Set to 1 to disable cost warning messages. See https://code.claude.com/docs/en/env-vars", + "enum": ["0", "1"] + }, + "DISABLE_DOCTOR_COMMAND": { + "type": "string", + "description": "Set to 1 to hide the /doctor command (useful for managed deployments). See https://code.claude.com/docs/en/env-vars", + "enum": ["0", "1"] + }, + "DISABLE_ERROR_REPORTING": { + "type": "string", + "description": "Disable Sentry error reporting", + "enum": ["0", "1"] + }, + "DISABLE_EXTRA_USAGE_COMMAND": { + "type": "string", + "description": "Set to 1 to hide the /usage-credits command for purchasing additional usage beyond rate limits. See https://code.claude.com/docs/en/env-vars", + "enum": ["0", "1"] + }, + "DISABLE_FEEDBACK_COMMAND": { + "type": "string", + "description": "Set to 1 to disable the /feedback command. The older name DISABLE_BUG_COMMAND is also accepted. See https://code.claude.com/docs/en/env-vars", + "enum": ["0", "1"] + }, + "DISABLE_GROWTHBOOK": { + "type": "string", + "description": "Set to 1 to disable GrowthBook feature-flag fetching and use code defaults for every flag. Telemetry stays on unless DISABLE_TELEMETRY is also set. See https://code.claude.com/docs/en/env-vars", + "enum": ["0", "1"] + }, + "DISABLE_INSTALLATION_CHECKS": { + "type": "string", + "description": "Set to 1 to disable installation warnings (use only when manually managing the installation location). See https://code.claude.com/docs/en/env-vars", + "enum": ["0", "1"] + }, + "DISABLE_INSTALL_GITHUB_APP_COMMAND": { + "type": "string", + "description": "Set to 1 to hide the /install-github-app command (already hidden on Bedrock, Vertex, or Foundry). See https://code.claude.com/docs/en/env-vars", + "enum": ["0", "1"] + }, + "DISABLE_INTERLEAVED_THINKING": { + "type": "string", + "description": "Set to 1 to prevent sending the interleaved-thinking beta header (useful when a gateway or provider does not support interleaved thinking). See https://code.claude.com/docs/en/env-vars", + "enum": ["0", "1"] + }, + "DISABLE_LOGIN_COMMAND": { + "type": "string", + "description": "Set to 1 to hide the /login command (useful when authentication is handled externally via API keys or apiKeyHelper). See https://code.claude.com/docs/en/env-vars", + "enum": ["0", "1"] + }, + "DISABLE_LOGOUT_COMMAND": { + "type": "string", + "description": "Set to 1 to hide the /logout command. See https://code.claude.com/docs/en/env-vars", + "enum": ["0", "1"] + }, + "DISABLE_PROMPT_CACHING": { + "type": "string", + "description": "Disable prompt caching for all models. See https://code.claude.com/docs/en/prompt-caching#disable-prompt-caching", + "enum": ["0", "1"] + }, + "DISABLE_PROMPT_CACHING_FABLE": { + "type": "string", + "description": "Disable prompt caching for Fable models only. See https://code.claude.com/docs/en/prompt-caching#disable-prompt-caching", + "enum": ["0", "1"] + }, + "DISABLE_PROMPT_CACHING_HAIKU": { + "type": "string", + "description": "Disable prompt caching for Haiku models only. See https://code.claude.com/docs/en/prompt-caching#disable-prompt-caching", + "enum": ["0", "1"] + }, + "DISABLE_PROMPT_CACHING_OPUS": { + "type": "string", + "description": "Disable prompt caching for Opus models only. See https://code.claude.com/docs/en/prompt-caching#disable-prompt-caching", + "enum": ["0", "1"] + }, + "DISABLE_PROMPT_CACHING_SONNET": { + "type": "string", + "description": "Disable prompt caching for Sonnet models only. See https://code.claude.com/docs/en/prompt-caching#disable-prompt-caching", + "enum": ["0", "1"] + }, + "DISABLE_TELEMETRY": { + "type": "string", + "description": "Set to 1 to opt out of telemetry. Also disables feature-flag fetching (same effect as DISABLE_GROWTHBOOK). See https://code.claude.com/docs/en/env-vars", + "enum": ["0", "1"] + }, + "DISABLE_UPDATES": { + "type": "string", + "description": "Block all update paths including manual updates", + "enum": ["0", "1"] + }, + "DISABLE_UPGRADE_COMMAND": { + "type": "string", + "description": "Set to 1 to hide the /upgrade command. See https://code.claude.com/docs/en/env-vars", + "enum": ["0", "1"] + }, + "DO_NOT_TRACK": { + "type": "string", + "description": "Set to 1 to opt out of telemetry (cross-tool convention; equivalent to DISABLE_TELEMETRY). See https://code.claude.com/docs/en/env-vars", + "enum": ["0", "1"] + }, + "ENABLE_BETA_TRACING_DETAILED": { + "type": "string", + "description": "Emit detailed spans including hook execution when the tracing beta is enabled. See https://code.claude.com/docs/en/monitoring-usage#traces-beta", + "enum": ["0", "1"] + }, + "ENABLE_CLAUDEAI_MCP_SERVERS": { + "type": "string", + "description": "Opt in/out of claude.ai MCP servers. See https://github.com/anthropics/claude-code/blob/main/CHANGELOG.md#2163", + "enum": ["true", "false"] + }, + "ENABLE_PROMPT_CACHING_1H": { + "type": "string", + "description": "Request a 1-hour prompt cache TTL instead of the 5-minute default (billed at a higher rate). See https://code.claude.com/docs/en/prompt-caching#cache-lifetime", + "enum": ["0", "1"] + }, + "ENABLE_TOOL_SEARCH": { + "type": "string", + "description": "Control MCP tool search: \"true\" always defers and sends the beta header (requests fail on Vertex AI models earlier than Sonnet 4.5/Opus 4.5 or on proxies that do not support tool_reference); \"auto\" loads tools upfront if they fit within 10% of context; \"auto:N\" sets a custom threshold percentage (e.g. auto:5); \"false\" loads all tools upfront. Also applies when ANTHROPIC_BASE_URL points to a non-first-party host. See https://code.claude.com/docs/en/google-vertex-ai#4-configure-claude-code" + }, + "FALLBACK_FOR_ALL_PRIMARY_MODELS": { + "type": "string", + "description": "Set to any non-empty value to make all models (not only Opus) stop retrying with a repeated-overload error when no fallback model is configured. See https://code.claude.com/docs/en/env-vars" + }, + "FORCE_AUTOUPDATE_PLUGINS": { + "type": "string", + "description": "Keep plugin auto-updates enabled even when DISABLE_AUTOUPDATER=1 is set. See https://code.claude.com/docs/en/discover-plugins#configure-auto-updates", + "enum": ["0", "1"] + }, + "FORCE_PROMPT_CACHING_5M": { + "type": "string", + "description": "Force a 5-minute cache TTL regardless of authentication method; overrides ENABLE_PROMPT_CACHING_1H or a managed-settings TTL. See https://code.claude.com/docs/en/prompt-caching#override-the-ttl", + "enum": ["0", "1"] + }, + "GOOGLE_APPLICATION_CREDENTIALS": { + "type": "string", + "description": "Path to a GCP credential configuration file (service account key or workload identity federation config) used for Vertex AI authentication. See https://code.claude.com/docs/en/google-vertex-ai#3-configure-gcp-credentials" + }, + "HTTPS_PROXY": { + "type": "string", + "description": "HTTPS proxy URL (recommended over HTTP_PROXY)" + }, + "HTTP_PROXY": { + "type": "string", + "description": "HTTP proxy URL" + }, + "IS_DEMO": { + "type": "string", + "description": "Set to 1 to enable demo mode: hides email and organization name from the header and /status output and skips onboarding. See https://code.claude.com/docs/en/env-vars", + "enum": ["0", "1"] + }, + "MAX_MCP_OUTPUT_TOKENS": { + "type": "string", + "description": "Maximum number of tokens allowed in MCP tool output before truncation (default: 25000). Claude Code displays a warning above 10000 tokens. For tools that declare anthropic/maxResultSizeChars, that character limit replaces this token limit for text content, but image content from those tools is still subject to this limit. See https://code.claude.com/docs/en/mcp" + }, + "MAX_STRUCTURED_OUTPUT_RETRIES": { + "type": "string", + "description": "Number of times to retry when the model's response fails validation against --json-schema in non-interactive (-p) mode (default 5). See https://code.claude.com/docs/en/env-vars" + }, + "MAX_THINKING_TOKENS": { + "type": "string", + "description": "Override the extended thinking token budget; set to 0 to disable thinking on the Anthropic API. On adaptive reasoning models (Opus 4.7+, Opus 4.8, Fable 5) a nonzero budget is ignored unless CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING is set. See https://code.claude.com/docs/en/model-config#extended-thinking" + }, + "MCP_CLIENT_SECRET": { + "type": "string", + "description": "OAuth client secret for MCP servers that require pre-configured credentials (avoids the interactive prompt when adding a server with --client-secret). See https://code.claude.com/docs/en/env-vars" + }, + "MCP_CONNECTION_NONBLOCKING": { + "type": "string", + "description": "Controls whether startup waits for MCP servers to connect before the first query. Non-blocking by default since v2.1.142; set to 0 to restore the blocking 5-second connection wait. See https://code.claude.com/docs/en/env-vars", + "enum": ["0", "1"] + }, + "MCP_CONNECT_TIMEOUT_MS": { + "type": "string", + "description": "How long blocking MCP startup waits in milliseconds for the connection batch before snapshotting the tool list (default 5000). Applies when MCP_CONNECTION_NONBLOCKING=0 or for alwaysLoad servers. See https://code.claude.com/docs/en/env-vars" + }, + "MCP_OAUTH_CALLBACK_PORT": { + "type": "string", + "description": "Fixed port for the OAuth redirect callback, as an alternative to --callback-port when adding an MCP server with pre-configured credentials. See https://code.claude.com/docs/en/env-vars" + }, + "MCP_REMOTE_SERVER_CONNECTION_BATCH_SIZE": { + "type": "string", + "description": "Maximum number of remote MCP servers (HTTP/SSE) to connect in parallel during startup (default 20). See https://code.claude.com/docs/en/env-vars" + }, + "MCP_SERVER_CONNECTION_BATCH_SIZE": { + "type": "string", + "description": "Maximum number of local MCP servers (stdio) to connect in parallel during startup (default 3). See https://code.claude.com/docs/en/env-vars" + }, + "MCP_TIMEOUT": { + "type": "string", + "description": "Timeout in milliseconds for MCP server startup (default 30000). See https://code.claude.com/docs/en/env-vars" + }, + "MCP_TOOL_TIMEOUT": { + "type": "string", + "description": "Timeout in milliseconds for MCP tool execution (default: 100000000, about 28 hours). A per-server timeout field in .mcp.json overrides this for that server. Values below 1000 are floored to one second. See https://code.claude.com/docs/en/mcp" + }, + "NODE_EXTRA_CA_CERTS": { + "type": "string", + "description": "Path to custom CA certificate file" + }, + "NO_PROXY": { + "type": "string", + "description": "Domains to bypass proxy (space or comma-separated, or '*' for all)" + }, + "OTEL_EXPORTER_OTLP_CERTIFICATE": { + "type": "string", + "description": "Path to the CA certificate for gRPC OTLP mTLS. See https://code.claude.com/docs/en/monitoring-usage#mtls-authentication" + }, + "OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE": { + "type": "string", + "description": "Path to the client certificate for gRPC OTLP mTLS. See https://code.claude.com/docs/en/monitoring-usage#mtls-authentication" + }, + "OTEL_EXPORTER_OTLP_CLIENT_KEY": { + "type": "string", + "description": "Path to the client private key for gRPC OTLP mTLS. See https://code.claude.com/docs/en/monitoring-usage#mtls-authentication" + }, + "OTEL_EXPORTER_OTLP_ENDPOINT": { + "type": "string", + "description": "OTLP exporter endpoint for all signals (e.g. http://localhost:4317). See https://code.claude.com/docs/en/monitoring-usage#common-configuration-variables" + }, + "OTEL_EXPORTER_OTLP_HEADERS": { + "type": "string", + "description": "Headers sent with OTLP exporter requests (e.g. Authorization=Bearer token). See https://code.claude.com/docs/en/monitoring-usage#common-configuration-variables" + }, + "OTEL_EXPORTER_OTLP_LOGS_ENDPOINT": { + "type": "string", + "description": "OTLP exporter endpoint override for logs. See https://code.claude.com/docs/en/monitoring-usage#common-configuration-variables" + }, + "OTEL_EXPORTER_OTLP_LOGS_PROTOCOL": { + "type": "string", + "description": "OTLP protocol override for logs: grpc, http/json, or http/protobuf. See https://code.claude.com/docs/en/monitoring-usage#common-configuration-variables", + "enum": ["grpc", "http/json", "http/protobuf"] + }, + "OTEL_EXPORTER_OTLP_METRICS_ENDPOINT": { + "type": "string", + "description": "OTLP exporter endpoint override for metrics. See https://code.claude.com/docs/en/monitoring-usage#common-configuration-variables" + }, + "OTEL_EXPORTER_OTLP_METRICS_PROTOCOL": { + "type": "string", + "description": "OTLP protocol override for metrics: grpc, http/json, or http/protobuf. See https://code.claude.com/docs/en/monitoring-usage#common-configuration-variables", + "enum": ["grpc", "http/json", "http/protobuf"] + }, + "OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE": { + "type": "string", + "description": "Metrics temporality preference: delta (default) or cumulative. See https://code.claude.com/docs/en/monitoring-usage#common-configuration-variables", + "enum": ["delta", "cumulative"] + }, + "OTEL_EXPORTER_OTLP_PROTOCOL": { + "type": "string", + "description": "OTLP exporter protocol for all signals: grpc, http/json, or http/protobuf. See https://code.claude.com/docs/en/monitoring-usage#common-configuration-variables", + "enum": ["grpc", "http/json", "http/protobuf"] + }, + "OTEL_EXPORTER_OTLP_TRACES_ENDPOINT": { + "type": "string", + "description": "OTLP exporter endpoint override for traces. See https://code.claude.com/docs/en/monitoring-usage#traces-beta" + }, + "OTEL_EXPORTER_OTLP_TRACES_PROTOCOL": { + "type": "string", + "description": "OTLP protocol override for traces: grpc, http/json, or http/protobuf. See https://code.claude.com/docs/en/monitoring-usage#traces-beta", + "enum": ["grpc", "http/json", "http/protobuf"] + }, + "OTEL_LOGS_EXPORTER": { + "type": "string", + "description": "OpenTelemetry logs exporter(s) as a comma-separated list. Valid values: otlp, console, none. See https://code.claude.com/docs/en/monitoring-usage#common-configuration-variables" + }, + "OTEL_LOGS_EXPORT_INTERVAL": { + "type": "string", + "description": "Logs export interval in milliseconds (default 5000). See https://code.claude.com/docs/en/monitoring-usage#common-configuration-variables" + }, + "OTEL_LOG_ASSISTANT_RESPONSES": { + "type": "string", + "description": "UNDOCUMENTED. Include assistant response text in the claude_code.assistant_response OpenTelemetry log event (added v2.1.193). When unset, follows OTEL_LOG_USER_PROMPTS; set to 0 to keep prompts-only.", + "enum": ["0", "1"] + }, + "OTEL_LOG_RAW_API_BODIES": { + "type": "string", + "description": "Log raw API request/response bodies. Set to 1, or to file: to write them to a directory. See https://code.claude.com/docs/en/monitoring-usage#common-configuration-variables" + }, + "OTEL_LOG_TOOL_CONTENT": { + "type": "string", + "description": "Include full tool input/output content in OpenTelemetry log events (requires tracing; disabled by default). See https://code.claude.com/docs/en/monitoring-usage#common-configuration-variables", + "enum": ["0", "1"] + }, + "OTEL_LOG_TOOL_DETAILS": { + "type": "string", + "description": "Include tool name and parameters in OpenTelemetry log events (disabled by default). See https://code.claude.com/docs/en/monitoring-usage#common-configuration-variables", + "enum": ["0", "1"] + }, + "OTEL_LOG_USER_PROMPTS": { + "type": "string", + "description": "Include user prompt text in OpenTelemetry log events (disabled by default). See https://code.claude.com/docs/en/monitoring-usage#common-configuration-variables", + "enum": ["0", "1"] + }, + "OTEL_METRICS_EXPORTER": { + "type": "string", + "description": "OpenTelemetry metrics exporter(s) as a comma-separated list. Valid values: otlp, prometheus, console, none. See https://code.claude.com/docs/en/monitoring-usage#common-configuration-variables" + }, + "OTEL_METRICS_INCLUDE_ACCOUNT_UUID": { + "type": "string", + "description": "Include the user.account_uuid and user.account_id attributes on metrics (default true). See https://code.claude.com/docs/en/monitoring-usage#metrics-cardinality-control", + "enum": ["true", "false"] + }, + "OTEL_METRICS_INCLUDE_ENTRYPOINT": { + "type": "string", + "description": "Include the app.entrypoint attribute on metrics (default false). See https://code.claude.com/docs/en/monitoring-usage#metrics-cardinality-control", + "enum": ["true", "false"] + }, + "OTEL_METRICS_INCLUDE_RESOURCE_ATTRIBUTES": { + "type": "string", + "description": "Include configured OTEL_RESOURCE_ATTRIBUTES on metric data points (default true). See https://code.claude.com/docs/en/monitoring-usage#metrics-cardinality-control", + "enum": ["true", "false"] + }, + "OTEL_METRICS_INCLUDE_SESSION_ID": { + "type": "string", + "description": "Include the session.id attribute on metrics (default true). See https://code.claude.com/docs/en/monitoring-usage#metrics-cardinality-control", + "enum": ["true", "false"] + }, + "OTEL_METRICS_INCLUDE_VERSION": { + "type": "string", + "description": "Include the app.version attribute on metrics (default false). See https://code.claude.com/docs/en/monitoring-usage#metrics-cardinality-control", + "enum": ["true", "false"] + }, + "OTEL_METRIC_EXPORT_INTERVAL": { + "type": "string", + "description": "Metrics export interval in milliseconds (default 60000). See https://code.claude.com/docs/en/monitoring-usage#common-configuration-variables" + }, + "OTEL_RESOURCE_ATTRIBUTES": { + "type": "string", + "description": "Comma-separated key=value resource attributes attached to all telemetry. See https://code.claude.com/docs/en/monitoring-usage#multi-team-organization-support" + }, + "OTEL_TRACES_EXPORTER": { + "type": "string", + "description": "OpenTelemetry traces exporter(s) as a comma-separated list. Valid values: otlp, console, none. See https://code.claude.com/docs/en/monitoring-usage#traces-beta" + }, + "OTEL_TRACES_EXPORT_INTERVAL": { + "type": "string", + "description": "Traces export interval in milliseconds (default 5000). See https://code.claude.com/docs/en/monitoring-usage#traces-beta" + }, + "SLASH_COMMAND_TOOL_CHAR_BUDGET": { + "type": "string", + "description": "Override the character budget for skill metadata shown to the Skill tool. The budget scales dynamically at 1% of the context window, with a fallback of 8000 characters. Legacy name kept for backwards compatibility. See https://code.claude.com/docs/en/skills#control-who-invokes-a-skill" + }, + "TASK_MAX_OUTPUT_LENGTH": { + "type": "string", + "description": "Maximum number of characters in subagent output before truncation (default 32000, maximum 160000). When truncated, the full output is saved to disk and the path is included in the response. See https://code.claude.com/docs/en/env-vars" + }, + "USE_BUILTIN_RIPGREP": { + "type": "string", + "description": "Use the bundled ripgrep binary instead of system ripgrep", + "enum": ["0", "1"] + }, + "VERTEX_REGION_CLAUDE_3_5_HAIKU": { + "type": "string", + "description": "Override the Vertex AI region for Claude 3.5 Haiku (used when CLOUD_ML_REGION=global). See https://code.claude.com/docs/en/env-vars" + }, + "VERTEX_REGION_CLAUDE_3_5_SONNET": { "type": "string", - "description": "Project root directory path (also provided to hooks)" + "description": "Override the Vertex AI region for Claude 3.5 Sonnet (used when CLOUD_ML_REGION=global). See https://code.claude.com/docs/en/env-vars" }, - "DISABLE_AUTOUPDATER": { + "VERTEX_REGION_CLAUDE_3_7_SONNET": { "type": "string", - "description": "Stop background auto-update checks", - "enum": ["0", "1"] + "description": "Override the Vertex AI region for Claude 3.7 Sonnet (used when CLOUD_ML_REGION=global). See https://code.claude.com/docs/en/env-vars" }, - "DISABLE_ERROR_REPORTING": { + "VERTEX_REGION_CLAUDE_4_0_OPUS": { "type": "string", - "description": "Disable Sentry error reporting", - "enum": ["0", "1"] + "description": "Override the Vertex AI region for Claude 4.0 Opus (used when CLOUD_ML_REGION=global). See https://code.claude.com/docs/en/env-vars" }, - "DISABLE_FEEDBACK_COMMAND": { + "VERTEX_REGION_CLAUDE_4_0_SONNET": { "type": "string", - "description": "Disable the /feedback command", - "enum": ["0", "1"] + "description": "Override the Vertex AI region for Claude 4.0 Sonnet (used when CLOUD_ML_REGION=global). See https://code.claude.com/docs/en/env-vars" }, - "DISABLE_TELEMETRY": { + "VERTEX_REGION_CLAUDE_4_1_OPUS": { "type": "string", - "description": "Disable Statsig telemetry collection", - "enum": ["0", "1"] + "description": "Override the Vertex AI region for Claude 4.1 Opus (used when CLOUD_ML_REGION=global). See https://code.claude.com/docs/en/env-vars" }, - "DISABLE_UPDATES": { + "VERTEX_REGION_CLAUDE_4_5_OPUS": { "type": "string", - "description": "Block all update paths including manual updates", - "enum": ["0", "1"] + "description": "Override the Vertex AI region for Claude Opus 4.5 (used when CLOUD_ML_REGION=global). See https://code.claude.com/docs/en/env-vars" }, - "ENABLE_CLAUDEAI_MCP_SERVERS": { + "VERTEX_REGION_CLAUDE_4_5_SONNET": { "type": "string", - "description": "Opt in/out of claude.ai MCP servers. See https://github.com/anthropics/claude-code/blob/main/CHANGELOG.md#2163", - "enum": ["true", "false"] + "description": "Override the Vertex AI region for Claude Sonnet 4.5 (used when CLOUD_ML_REGION=global). See https://code.claude.com/docs/en/env-vars" }, - "HTTPS_PROXY": { + "VERTEX_REGION_CLAUDE_4_6_OPUS": { "type": "string", - "description": "HTTPS proxy URL (recommended over HTTP_PROXY)" + "description": "Override the Vertex AI region for Claude Opus 4.6 (used when CLOUD_ML_REGION=global). See https://code.claude.com/docs/en/env-vars" }, - "HTTP_PROXY": { + "VERTEX_REGION_CLAUDE_4_6_SONNET": { "type": "string", - "description": "HTTP proxy URL" + "description": "Override the Vertex AI region for Claude Sonnet 4.6 (used when CLOUD_ML_REGION=global). See https://code.claude.com/docs/en/env-vars" }, - "NODE_EXTRA_CA_CERTS": { + "VERTEX_REGION_CLAUDE_4_7_OPUS": { "type": "string", - "description": "Path to custom CA certificate file" + "description": "Override the Vertex AI region for Claude Opus 4.7 (used when CLOUD_ML_REGION=global). See https://code.claude.com/docs/en/env-vars" }, - "NO_PROXY": { + "VERTEX_REGION_CLAUDE_4_8_OPUS": { "type": "string", - "description": "Domains to bypass proxy (space or comma-separated, or '*' for all)" + "description": "Override the Vertex AI region for Claude Opus 4.8 (used when CLOUD_ML_REGION=global). See https://code.claude.com/docs/en/env-vars" }, - "OTEL_METRICS_EXPORTER": { + "VERTEX_REGION_CLAUDE_FABLE_5": { "type": "string", - "description": "OpenTelemetry metrics exporter configuration" + "description": "Override the Vertex AI region for Claude Fable 5 (used when CLOUD_ML_REGION=global). See https://code.claude.com/docs/en/env-vars" }, - "USE_BUILTIN_RIPGREP": { + "VERTEX_REGION_CLAUDE_HAIKU_4_5": { "type": "string", - "description": "Use the bundled ripgrep binary instead of system ripgrep", - "enum": ["0", "1"] + "description": "Override the Vertex AI region for Claude Haiku 4.5 (used when CLOUD_ML_REGION=global). See https://code.claude.com/docs/en/env-vars" } }, "propertyNames": { @@ -1185,12 +1857,12 @@ }, "effortLevel": { "type": "string", - "enum": ["low", "medium", "high", "xhigh", "max"], - "description": "Persist adaptive reasoning effort across sessions. Effort is supported on Opus 4.7, Opus 4.6, and Sonnet 4.6. Opus 4.7 supports low/medium/high/xhigh/max (xhigh sits between high and max, added in v2.1.111); Opus 4.6 and Sonnet 4.6 support low/medium/high/max (xhigh falls back to high). Defaults: Opus 4.6 and Sonnet 4.6 default to high on all plans (Pro/Max raised from medium to high in v2.1.117); Opus 4.7 defaults to xhigh on Max plan. The max value is session-only unless set via CLAUDE_CODE_EFFORT_LEVEL. Use /effort auto to reset to model default. Also configurable via CLAUDE_CODE_EFFORT_LEVEL environment variable. See https://code.claude.com/docs/en/model-config#adjust-effort-level" + "enum": ["low", "medium", "high", "xhigh"], + "description": "Persist adaptive reasoning effort across sessions. Set to low, medium, high, or xhigh; max and ultracode are session-only and are not accepted in the settings file (use the CLAUDE_CODE_EFFORT_LEVEL environment variable or /effort for a session-only max). Effort is supported on Fable 5, Opus 4.8, Opus 4.7, Opus 4.6, and Sonnet 4.6, with xhigh sitting between high and max (added in v2.1.111). Defaults: Fable 5 and Opus 4.8 default to high; Opus 4.6 and Sonnet 4.6 default to high on all plans (Pro/Max raised from medium to high in v2.1.117); Opus 4.7 defaults to xhigh. Use /effort auto to reset to model default. Also configurable via CLAUDE_CODE_EFFORT_LEVEL environment variable. See https://code.claude.com/docs/en/model-config#adjust-effort-level" }, "fastMode": { "type": "boolean", - "description": "Enable fast mode, which uses Claude Opus 4.7 by default for 2.5x faster output at higher per-token cost. Requires extra usage enabled. Toggle with /fast command. Set CLAUDE_CODE_OPUS_4_6_FAST_MODE_OVERRIDE=1 to pin fast mode to Opus 4.6. See https://code.claude.com/docs/en/fast-mode", + "description": "Enable fast mode, which uses Claude Opus 4.8 by default (since v2.1.154) for faster output at higher per-token cost without downgrading to a smaller model. Requires extra usage enabled. Toggle with the /fast command. Available on Opus 4.8 and Opus 4.7 (Opus 4.7 fast mode deprecated June 2026). See https://code.claude.com/docs/en/fast-mode", "default": false }, "fastModePerSessionOptIn": { @@ -1330,7 +2002,7 @@ "hooks": { "type": "object", "additionalProperties": false, - "description": "Custom commands to run before/after tool executions. See https://code.claude.com/docs/en/hooks", + "description": "Lifecycle event hooks that run at configurable points during Claude Code operation (tool use, session start/end, notifications, prompt submit, message display, and more), not just before/after tool executions. See https://code.claude.com/docs/en/hooks", "examples": [ { "PostToolUse": [ @@ -1550,6 +2222,13 @@ "items": { "$ref": "#/$defs/hookMatcher" } + }, + "MessageDisplay": { + "type": "array", + "description": "Hooks that run while assistant message text is displayed", + "items": { + "$ref": "#/$defs/hookMatcher" + } } } }, @@ -1560,10 +2239,21 @@ "allowedChannelPlugins": { "type": "array", "items": { - "type": "string", - "minLength": 1 + "type": "object", + "additionalProperties": false, + "properties": { + "marketplace": { + "type": "string", + "description": "Name of the marketplace the channel plugin is installed from" + }, + "plugin": { + "type": "string", + "description": "Name of the channel plugin allowed to run" + } + }, + "required": ["marketplace", "plugin"] }, - "description": "(Managed settings only) Allowlist of plugin IDs whose MCP servers may advertise channel notifications when channelsEnabled is true. When set, only the listed plugins can push inbound messages. See https://code.claude.com/docs/en/mcp" + "description": "(Managed settings only) Allowlist of channel plugins that may run, each identified by its marketplace and plugin name. When set, only the listed plugins can push inbound channel messages while channelsEnabled is true. Replaces the default Anthropic allowlist when set; undefined falls back to the default and an empty array blocks all channel plugins. Requires channelsEnabled: true. See https://code.claude.com/docs/en/channels#restrict-which-channel-plugins-can-run" }, "allowedHttpHookUrls": { "type": "array", @@ -1821,7 +2511,7 @@ }, "strictKnownMarketplaces": { "type": "array", - "description": "(Managed settings only) Allowlist of plugin marketplaces users can add. Undefined = no restrictions, empty array = lockdown. Uses exact matching for source specifications. See https://code.claude.com/docs/en/settings#strictknownmarketplaces", + "description": "(Managed settings only) Allowlist of plugin marketplaces users can add. Undefined = no restrictions, empty array = lockdown. Uses exact matching for source specifications. See https://code.claude.com/docs/en/plugin-marketplaces#managed-marketplace-restrictions", "items": { "anyOf": [ { @@ -2021,7 +2711,7 @@ }, "otelHeadersHelper": { "type": "string", - "description": "Path to a script that outputs OpenTelemetry headers", + "description": "Path to an executable, or a shell command line with arguments, that outputs OpenTelemetry headers as a JSON object. Runs at startup and re-runs on the interval set by CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS. Requires CLAUDE_CODE_ENABLE_TELEMETRY=1. See https://code.claude.com/docs/en/monitoring-usage#dynamic-headers", "minLength": 1 }, "outputStyle": { @@ -2225,6 +2915,57 @@ "enum": ["macos", "linux", "wsl", "windows"] }, "description": "Limit the entire sandbox configuration to the listed platforms. On platforms not in the list the sandbox config is inert: no sandbox, no auto-allow, no startup warning, and no failIfUnavailable exit. When omitted, all supported platforms are included. Only honored from managed (policy) settings." + }, + "credentials": { + "type": "object", + "additionalProperties": false, + "description": "Block sandboxed commands from reading credential files and secret environment variables (v2.1.187+). Entries merge across settings scopes. See https://code.claude.com/docs/en/sandboxing#protect-credentials", + "properties": { + "files": { + "type": "array", + "description": "Credential file paths to hide from sandboxed commands", + "items": { + "type": "object", + "additionalProperties": false, + "properties": { + "path": { + "type": "string", + "description": "Path to the credential file to deny" + }, + "mode": { + "type": "string", + "enum": ["deny"], + "description": "Access mode; only \"deny\" is supported" + } + }, + "required": ["path", "mode"] + } + }, + "envVars": { + "type": "array", + "description": "Secret environment variable names to unset for sandboxed commands", + "items": { + "type": "object", + "additionalProperties": false, + "properties": { + "name": { + "type": "string", + "description": "Environment variable name to deny" + }, + "mode": { + "type": "string", + "enum": ["deny"], + "description": "Access mode; only \"deny\" is supported" + } + }, + "required": ["name", "mode"] + } + } + } + }, + "allowAppleEvents": { + "type": "boolean", + "description": "Allow sandboxed commands to send Apple Events on macOS (v2.1.181+). Honored only from user, managed, or CLI settings; project settings cannot enable it. See https://code.claude.com/docs/en/sandboxing#limitations" } }, "additionalProperties": false @@ -2326,9 +3067,9 @@ }, "teammateMode": { "type": "string", - "enum": ["auto", "in-process", "tmux"], - "description": "How agent team teammates display: \"auto\" picks split panes in tmux or iTerm2, in-process otherwise. Agent teams are experimental and disabled by default. Enable them by adding CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS to your settings.json or environment. See https://code.claude.com/docs/en/agent-teams", - "default": "auto" + "enum": ["auto", "in-process", "tmux", "iterm2"], + "description": "How agent team teammates display: \"auto\" picks split panes in tmux or iTerm2, in-process otherwise; \"iterm2\" (added in v2.1.186) forces iTerm2 native split panes and requires the it2 CLI (it shows an error with the install command if it2 is missing). The default is \"in-process\" (it was \"auto\" before v2.1.179). Agent teams are experimental and disabled by default. Enable them by adding CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS to your settings.json or environment. See https://code.claude.com/docs/en/agent-teams#choose-a-display-mode", + "default": "in-process" }, "worktree": { "type": "object", @@ -2355,6 +3096,14 @@ "enum": ["worktree", "none"], "default": "worktree", "description": "Isolation mode for background sessions. \"worktree\" blocks Edit/Write in main checkout until EnterWorktree is called; \"none\" lets background jobs edit the working copy directly without EnterWorktree, for repos where worktrees are impractical. See https://code.claude.com/docs/en/settings#worktree-settings" + }, + "symlinkDirectories": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Directories to symlink from the main repository into each worktree to avoid duplicating large directories on disk. No directories are symlinked by default. See https://code.claude.com/docs/en/settings#worktree-settings", + "examples": [["node_modules", ".cache"]] } } }, @@ -2430,7 +3179,7 @@ }, "allowManagedMcpServersOnly": { "type": "boolean", - "description": "(Managed settings only) Only allowedMcpServers from managed settings are respected. deniedMcpServers still merges from all sources. Users can still add their own MCP servers, but only the admin-defined allowlist applies." + "description": "(Managed settings only) When true, only allowedMcpServers from managed settings are respected; MCP servers defined in user, project, or local settings are ignored. deniedMcpServers still merges from all sources. See https://code.claude.com/docs/en/managed-mcp" }, "blockedMarketplaces": { "type": "array", @@ -2635,13 +3384,17 @@ "type": "string" }, "description": "Rules for the auto mode classifier hard-deny section. Hard-deny rules block unconditionally regardless of user intent. Replaces the built-in hard-deny rules entirely unless the literal string \"$defaults\" is included as an entry, which splices the built-in defaults in at that position. See https://code.claude.com/docs/en/permissions" + }, + "classifyAllShell": { + "type": "boolean", + "description": "UNDOCUMENTED. Route all Bash/PowerShell commands through the auto mode classifier instead of only arbitrary-code-execution patterns (added in v2.1.193).", + "default": false } } }, "channelsEnabled": { "type": "boolean", - "description": "(Teams/Enterprise) Opt-in for channel notifications — MCP servers with the claude/channel capability pushing inbound messages. Default off. When true, users can select servers via --channels. See https://code.claude.com/docs/en/mcp", - "default": false + "description": "(Managed settings only) Allow channels for the organization. On claude.ai Team and Enterprise plans, channels are blocked when this is unset or false. For Anthropic Console accounts using API key authentication, channels are allowed by default unless the organization deploys managed settings, in which case this key must be set to true. See https://code.claude.com/docs/en/channels#enterprise-controls" }, "defaultShell": { "type": "string", @@ -2713,7 +3466,7 @@ }, "voiceEnabled": { "type": "boolean", - "description": "Enable push-to-talk voice dictation. Typically written automatically when /voice is used. Requires a Claude.ai account. See https://code.claude.com/docs/en/settings#available-settings" + "description": "Legacy alias for voice.enabled; prefer the voice object. Requires a Claude.ai account. See https://code.claude.com/docs/en/settings#available-settings" }, "wslInheritsWindowsSettings": { "type": "boolean", @@ -2736,6 +3489,329 @@ "minLength": 1 } } + }, + "advisorModel": { + "type": "string", + "description": "Model for the server-side advisor tool. Accepts a model alias (\"opus\", \"sonnet\", or \"fable\" on v2.1.170+) or a full model ID. Overridden by the --advisor CLI flag for the session, and blocked when the model is outside the availableModels allowlist. See https://code.claude.com/docs/en/advisor" + }, + "autoCompactEnabled": { + "type": "boolean", + "description": "Automatically compact the conversation when context approaches the limit. Also configurable via the DISABLE_AUTO_COMPACT environment variable. See https://code.claude.com/docs/en/settings#available-settings", + "default": true + }, + "disableAgentView": { + "type": "boolean", + "description": "(Managed settings) Turn off background agents and the agent view: claude agents, --bg, /background, and the on-demand supervisor. Also configurable via the CLAUDE_CODE_DISABLE_AGENT_VIEW environment variable (set to 1 to disable). See https://code.claude.com/docs/en/agent-view" + }, + "editorMode": { + "type": "string", + "enum": ["normal", "vim"], + "description": "Key binding mode for the input prompt: \"normal\" or \"vim\". Appears in /config as Editor mode. See https://code.claude.com/docs/en/terminal-config#edit-prompts-with-vim-keybindings", + "default": "normal" + }, + "enforceAvailableModels": { + "type": "boolean", + "description": "(Managed settings) Extend the availableModels allowlist to the Default model option (requires v2.1.175+). Requires a non-empty availableModels list; when the account-type default is not in the allowlist, Default resolves to the first allowed entry instead. Has no effect when availableModels is unset or empty. See https://code.claude.com/docs/en/model-config#enforce-the-allowlist-for-the-default-model" + }, + "fallbackModel": { + "type": "array", + "maxItems": 3, + "items": { + "type": "string" + }, + "description": "Fallback model chain tried in order when the primary model is overloaded, unavailable, or returns a non-retryable server error. Capped at three entries after deduplication; accepts model names or aliases, and \"default\" expands to the account-type default. Overridden by the --fallback-model CLI flag for the session. See https://code.claude.com/docs/en/model-config#fallback-model-chains" + }, + "fileCheckpointingEnabled": { + "type": "boolean", + "description": "Snapshot edited files so /rewind can restore them. Also configurable via the CLAUDE_CODE_DISABLE_FILE_CHECKPOINTING environment variable (set to 1 to disable). See https://code.claude.com/docs/en/checkpointing", + "default": true + }, + "gcpAuthRefresh": { + "type": "string", + "description": "Command to run when GCP credentials are expired or cannot be loaded. The command's output is displayed to the user but interactive input is not supported; it times out after three minutes. See https://code.claude.com/docs/en/google-vertex-ai#advanced-credential-configuration", + "examples": ["gcloud auth application-default login"], + "minLength": 1 + }, + "managedMcpServers": { + "type": "array", + "description": "(Managed settings, third-party Desktop deployments only) MCP server configurations pushed to all users. Each entry specifies the transport and connection details, plus an optional toolPolicy map. Delivered through the managed settings file or MDM. See https://code.claude.com/docs/en/desktop#enterprise-configuration", + "items": { + "type": "object", + "additionalProperties": true + } + }, + "maxSkillDescriptionChars": { + "type": "integer", + "exclusiveMinimum": 0, + "description": "Per-skill character cap on the combined description and when_to_use text in the skill listing Claude sees each turn. Text longer than this is truncated. See https://code.claude.com/docs/en/skills#skill-descriptions-are-cut-short", + "default": 1536 + }, + "preferredNotifChannel": { + "type": "string", + "enum": [ + "auto", + "terminal_bell", + "iterm2", + "iterm2_with_bell", + "kitty", + "ghostty", + "notifications_disabled" + ], + "description": "Method for task-complete and permission-prompt notifications. \"auto\" (default) sends a desktop notification in iTerm2, Ghostty, and Kitty and does nothing in other terminals; \"terminal_bell\" rings the bell in any terminal; \"notifications_disabled\" turns them off. See https://code.claude.com/docs/en/terminal-config#get-a-terminal-bell-or-notification", + "default": "auto" + }, + "pluginSuggestionMarketplaces": { + "type": "array", + "items": { + "type": "string" + }, + "description": "(Managed settings only) Allowlist of marketplace names whose plugins may surface as contextual \"suggested for this directory\" tips in the /plugin Discover tab. No marketplace-declared suggestions surface without this allowlist. The built-in first-party frontend-design tip is unaffected. See https://code.claude.com/docs/en/settings#available-settings" + }, + "requiredMaximumVersion": { + "type": "string", + "description": "(Managed settings only) Maximum Claude Code version allowed to start. If the running version is newer, Claude Code exits at startup with instructions to install an approved version. See https://code.claude.com/docs/en/admin-setup#decide-what-to-enforce" + }, + "requiredMinimumVersion": { + "type": "string", + "description": "(Managed settings only) Minimum Claude Code version required to start. If the running version is older, Claude Code exits at startup rather than only warning. See https://code.claude.com/docs/en/admin-setup#decide-what-to-enforce" + }, + "respondToBashCommands": { + "type": "boolean", + "description": "Whether Claude responds after an input-box ! shell command runs (v2.1.186+). Set to false to add the command output to context without a response. See https://code.claude.com/docs/en/interactive-mode#shell-mode-with--prefix", + "default": true + }, + "skillListingBudgetFraction": { + "type": "number", + "exclusiveMinimum": 0, + "maximum": 1, + "description": "Fraction of the model context window reserved for the skill listing sent to Claude (default 0.01 = 1%). When the listing exceeds this, descriptions are shortened to fit. Also configurable via the SLASH_COMMAND_TOOL_CHAR_BUDGET environment variable (fixed character count). See https://code.claude.com/docs/en/skills#skill-descriptions-are-cut-short", + "default": 0.01 + }, + "sshConfigs": { + "type": "array", + "description": "(Managed settings) Pre-configured SSH connections distributed to Desktop users. See https://code.claude.com/docs/en/desktop#ssh-sessions", + "items": { + "type": "object", + "additionalProperties": false, + "properties": { + "id": { + "type": "string", + "description": "Unique identifier for this SSH config, used to match configs across settings sources" + }, + "name": { + "type": "string", + "description": "Display name for the SSH connection" + }, + "sshHost": { + "type": "string", + "description": "SSH host in the form \"user@hostname\" or \"hostname\", or a host alias from ~/.ssh/config" + }, + "sshPort": { + "type": "integer", + "description": "SSH port (default 22)" + }, + "sshIdentityFile": { + "type": "string", + "description": "Path to the SSH identity file (private key)" + }, + "startDirectory": { + "type": "string", + "description": "Default working directory on the remote host; supports tilde expansion. Defaults to the remote user home directory" + } + }, + "required": ["id", "name", "sshHost"] + } + }, + "sshHostAllowlist": { + "type": "array", + "items": { + "type": "string" + }, + "description": "(Managed settings only) Allowlist restricting Desktop SSH sessions to approved hosts. Patterns are case-insensitive; * matches any host and *.example.com matches example.com and any subdomain. See https://code.claude.com/docs/en/desktop#ssh-sessions" + }, + "theme": { + "anyOf": [ + { + "type": "string", + "enum": [ + "auto", + "dark", + "light", + "dark-daltonized", + "light-daltonized", + "dark-ansi", + "light-ansi" + ] + }, + { + "type": "string", + "pattern": "^custom:.+", + "description": "Reference to a custom theme defined in ~/.claude/themes/, in the form \"custom:\"" + } + ], + "description": "Color theme for the interface: auto, dark, light, the daltonized variants (deuteranopia-friendly), the ansi variants (16-color terminals), or a custom theme reference such as custom: or custom::. See https://code.claude.com/docs/en/terminal-config#match-the-color-theme", + "default": "dark" + }, + "voice": { + "type": "object", + "additionalProperties": false, + "description": "Voice dictation settings: enabled turns dictation on, mode selects \"hold\" or \"tap\", and autoSubmit sends the prompt on key release in hold mode. Written automatically when you run /voice. Requires a Claude.ai account. See https://code.claude.com/docs/en/voice-dictation", + "properties": { + "enabled": { + "type": "boolean", + "description": "Enable push-to-talk voice dictation input" + }, + "mode": { + "type": "string", + "enum": ["hold", "tap"], + "description": "Recording mode: \"hold\" (default) is push-to-talk; \"tap\" taps once to start and again to stop and submit" + }, + "autoSubmit": { + "type": "boolean", + "description": "In hold mode, auto-submit the prompt on key release when the transcript is at least three words long" + } + } + }, + "wheelScrollAccelerationEnabled": { + "type": "boolean", + "description": "In fullscreen rendering, accelerate mouse-wheel scroll speed during fast scrolls (v2.1.174+). Set to false for a constant scroll rate per wheel notch. See https://code.claude.com/docs/en/fullscreen#mouse-wheel-scrolling" + }, + "disableBundledSkills": { + "type": "boolean", + "description": "Disable the skills and workflows that ship with Claude Code: bundled skills and workflows are removed entirely, while built-in slash commands like /init stay typable but are hidden from the model. Skills from plugins, .claude/skills/, and .claude/commands/ are unaffected. Also configurable via the CLAUDE_CODE_DISABLE_BUNDLED_SKILLS environment variable. See https://code.claude.com/docs/en/settings#available-settings" + }, + "awaySummaryEnabled": { + "type": "boolean", + "description": "Show a one-line session recap when you return to the terminal after a few minutes away. Set to false (or turn off Session recap in /config) to disable. See https://code.claude.com/docs/en/settings#available-settings", + "default": true + }, + "autoScrollEnabled": { + "type": "boolean", + "description": "In fullscreen rendering, follow new output to the bottom of the conversation. Appears in /config as Auto-scroll. Permission prompts still scroll into view when this is off. See https://code.claude.com/docs/en/fullscreen", + "default": true + }, + "allowAllClaudeAiMcps": { + "type": "boolean", + "description": "(Managed settings only) Load claude.ai connectors alongside a deployed managed-mcp.json, which otherwise takes exclusive control and suppresses them. See https://code.claude.com/docs/en/managed-mcp" + }, + "agentPushNotifEnabled": { + "type": "boolean", + "description": "When Remote Control is connected, allow Claude to send proactive push notifications to your phone, for example when a long task finishes. Requires Claude Code v2.1.119 or later. See https://code.claude.com/docs/en/remote-control#mobile-push-notifications", + "default": false + }, + "axScreenReader": { + "type": "boolean", + "description": "Render screen-reader-friendly output: flat text without decorative borders or animations screen-reader mode always uses the classic renderer, so the tui setting has no effect while it is active. The CLAUDE_AX_SCREEN_READER environment variable and --ax-screen-reader flag take precedence. Requires Claude Code v2.1.181 or later. See https://code.claude.com/docs/en/settings#available-settings" + }, + "claudeMd": { + "type": "string", + "description": "(Managed settings only) CLAUDE.md-style instructions injected as organization-managed memory. Honored only from managed/policy settings. See https://code.claude.com/docs/en/settings#available-settings" + }, + "disableArtifact": { + "type": "boolean", + "description": "Disable the Artifact tool, which publishes session output as a private web page on claude.ai. Also configurable via the CLAUDE_CODE_DISABLE_ARTIFACT environment variable. See https://code.claude.com/docs/en/settings#available-settings" + }, + "disableAutoMode": { + "type": "string", + "enum": ["disable"], + "description": "Set to \"disable\" to prevent auto mode from being activated: removes auto from the Shift+Tab cycle and rejects --permission-mode auto at startup. See https://code.claude.com/docs/en/settings#available-settings" + }, + "disableClaudeAiConnectors": { + "type": "boolean", + "description": "Disable claude.ai MCP connectors so they are not auto-fetched or connected. A value of true in any settings source takes precedence. Requires Claude Code v2.1.182 or later. See https://code.claude.com/docs/en/settings#available-settings" + }, + "disableRemoteControl": { + "type": "boolean", + "description": "Disable Remote Control: blocks claude remote-control, the --remote-control flag, auto-start, and the in-session toggle. Requires Claude Code v2.1.128 or later. See https://code.claude.com/docs/en/remote-control" + }, + "disableWorkflows": { + "type": "boolean", + "description": "Disable dynamic workflows and bundled workflow commands. Also configurable via the CLAUDE_CODE_DISABLE_WORKFLOWS environment variable. See https://code.claude.com/docs/en/settings#available-settings", + "default": false + }, + "footerLinksRegexes": { + "type": "array", + "description": "Render extra clickable badges in the footer when a regex matches turn output (tool results and assistant responses). Read from user, --settings flag, and managed settings only; ignored in project and local settings. Requires Claude Code v2.1.176 or later. See https://code.claude.com/docs/en/settings#available-settings", + "items": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "string", + "const": "regex", + "description": "Config variant; \"regex\" matches turn output and builds a URL from named capture groups" + }, + "pattern": { + "type": "string", + "description": "Regex matched against turn output" + }, + "url": { + "type": "string", + "description": "Link target; {name} placeholders are filled from named regex capture groups" + }, + "label": { + "type": "string", + "description": "Badge text; {name} placeholders filled from named capture groups, defaults to the full match" + } + }, + "required": ["pattern", "url"] + } + }, + "inputNeededNotifEnabled": { + "type": "boolean", + "description": "When Remote Control is connected, send a push notification to your phone when a permission prompt or question is waiting for input. Requires Claude Code v2.1.119 or later. See https://code.claude.com/docs/en/settings#available-settings", + "default": false + }, + "policyHelper": { + "type": "object", + "additionalProperties": false, + "description": "Admin-deployed executable that computes managed settings dynamically at startup. Honored only from MDM or the system managed-settings.json. Requires Claude Code v2.1.136 or later. See https://code.claude.com/docs/en/settings#available-settings", + "properties": { + "path": { + "type": "string", + "description": "Absolute path to the policy helper executable" + }, + "timeoutMs": { + "type": "integer", + "description": "How long in milliseconds to wait for the helper before treating the run as failed" + }, + "refreshIntervalMs": { + "description": "How often in milliseconds to re-run the helper in the background; set to 0 to disable refresh, or to at least 60000", + "anyOf": [ + { + "type": "integer", + "const": 0 + }, + { + "type": "integer", + "minimum": 60000 + } + ] + } + }, + "required": ["path"] + }, + "remoteControlAtStartup": { + "type": "boolean", + "description": "Connect Remote Control automatically when each interactive session starts. true = always, false = never, unset = organization default. Requires Claude Code v2.1.119 or later. See https://code.claude.com/docs/en/remote-control#enable-remote-control-for-all-sessions" + }, + "syntaxHighlightingDisabled": { + "type": "boolean", + "description": "Disable syntax highlighting in diffs, code blocks, and file previews. See https://code.claude.com/docs/en/settings#available-settings" + }, + "verbose": { + "type": "boolean", + "description": "Show full tool output instead of truncated summaries. The --verbose flag overrides this for a single session. Requires Claude Code v2.1.119 or later. See https://code.claude.com/docs/en/settings#available-settings", + "default": false + }, + "workflowKeywordTriggerEnabled": { + "type": "boolean", + "description": "Whether including the keyword \"ultracode\" in a prompt triggers a dynamic workflow. Requires Claude Code v2.1.157 or later. See https://code.claude.com/docs/en/settings#available-settings", + "default": true + }, + "leftArrowOpensAgents": { + "type": "boolean", + "description": "Whether the Left arrow key at the start of an empty prompt opens the agents view. Turn it off in /config (the leftArrowOpensAgents setting). See https://code.claude.com/docs/en/agent-view" } }, "title": "Claude Code Settings" diff --git a/src/test/claude-code-keybindings/all-contexts.json b/src/test/claude-code-keybindings/all-contexts.json index 7f2a69975f1..2e1db49ad26 100644 --- a/src/test/claude-code-keybindings/all-contexts.json +++ b/src/test/claude-code-keybindings/all-contexts.json @@ -1,122 +1,217 @@ { + "$schema": "https://www.schemastore.org/claude-code-keybindings.json", "bindings": [ { "bindings": { - "ctrl+c": "app:interrupt" + "app:interrupt": "app:interrupt", + "chat:newline": "chat:newline", + "footer:clearSelection": "footer:clearSelection", + "scroll:top": "scroll:top", + "select:cancel": "select:cancel", + "transcript:toggleShowAll": "transcript:toggleShowAll" }, "context": "Global" }, { "bindings": { - "enter": "chat:submit" + "app:exit": "app:exit", + "chat:undo": "chat:undo", + "footer:close": "footer:close", + "scroll:bottom": "scroll:bottom", + "select:pageUp": "select:pageUp", + "transcript:exit": "transcript:exit" }, "context": "Chat" }, { "bindings": { - "tab": "autocomplete:accept" + "app:redraw": "app:redraw", + "chat:externalEditor": "chat:externalEditor", + "historySearch:next": "historySearch:next", + "messageSelector:up": "messageSelector:up", + "scroll:halfPageUp": "scroll:halfPageUp", + "select:pageDown": "select:pageDown" }, "context": "Autocomplete" }, { "bindings": { - "y": "confirm:yes" + "app:toggleTodos": "app:toggleTodos", + "chat:stash": "chat:stash", + "historySearch:accept": "historySearch:accept", + "messageSelector:down": "messageSelector:down", + "scroll:halfPageDown": "scroll:halfPageDown", + "select:first": "select:first" }, "context": "Confirmation" }, { "bindings": { - "escape": "help:dismiss" + "app:toggleTranscript": "app:toggleTranscript", + "chat:imagePaste": "chat:imagePaste", + "historySearch:cancel": "historySearch:cancel", + "messageSelector:top": "messageSelector:top", + "scroll:fullPageUp": "scroll:fullPageUp", + "select:last": "select:last" }, "context": "Help" }, { "bindings": { - "escape": "transcript:exit" + "app:toggleBrief": "app:toggleBrief", + "autocomplete:accept": "autocomplete:accept", + "historySearch:execute": "historySearch:execute", + "messageSelector:bottom": "messageSelector:bottom", + "plugin:toggle": "plugin:toggle", + "scroll:fullPageDown": "scroll:fullPageDown" }, "context": "Transcript" }, { "bindings": { - "escape": "historySearch:cancel" + "app:openArtifact": "app:openArtifact", + "autocomplete:dismiss": "autocomplete:dismiss", + "historySearch:cycleScope": "historySearch:cycleScope", + "messageSelector:select": "messageSelector:select", + "plugin:install": "plugin:install", + "selection:copy": "selection:copy" }, "context": "HistorySearch" }, { "bindings": { - "ctrl+z": "task:background" + "autocomplete:previous": "autocomplete:previous", + "diff:dismiss": "diff:dismiss", + "history:search": "history:search", + "plugin:favorite": "plugin:favorite", + "selection:clear": "selection:clear", + "task:background": "task:background" }, "context": "Task" }, { "bindings": { - "s": "theme:toggleSyntaxHighlighting" + "autocomplete:next": "autocomplete:next", + "diff:previousSource": "diff:previousSource", + "history:previous": "history:previous", + "permission:toggleDebug": "permission:toggleDebug", + "selection:extendLeft": "selection:extendLeft", + "theme:toggleSyntaxHighlighting": "theme:toggleSyntaxHighlighting" }, "context": "ThemePicker" }, { "bindings": { - "/": "settings:search" + "confirm:yes": "confirm:yes", + "diff:nextSource": "diff:nextSource", + "history:next": "history:next", + "selection:extendRight": "selection:extendRight", + "settings:search": "settings:search", + "theme:editCustom": "theme:editCustom" }, "context": "Settings" }, { "bindings": { - "tab": "tabs:next" + "chat:cancel": "chat:cancel", + "confirm:no": "confirm:no", + "diff:back": "diff:back", + "help:dismiss": "help:dismiss", + "selection:extendUp": "selection:extendUp", + "settings:retry": "settings:retry" }, "context": "Tabs" }, { "bindings": { - "backspace": "attachments:remove" + "attachments:next": "attachments:next", + "chat:clearInput": "chat:clearInput", + "confirm:previous": "confirm:previous", + "diff:viewDetails": "diff:viewDetails", + "selection:extendDown": "selection:extendDown", + "settings:periodDay": "settings:periodDay" }, "context": "Attachments" }, { "bindings": { - "enter": "footer:openSelected" + "attachments:previous": "attachments:previous", + "chat:clearScreen": "chat:clearScreen", + "confirm:next": "confirm:next", + "diff:previousFile": "diff:previousFile", + "selection:extendLineStart": "selection:extendLineStart", + "settings:periodWeek": "settings:periodWeek" }, "context": "Footer" }, { "bindings": { - "up": "messageSelector:up" + "attachments:remove": "attachments:remove", + "chat:killAgents": "chat:killAgents", + "confirm:nextField": "confirm:nextField", + "diff:nextFile": "diff:nextFile", + "selection:extendLineEnd": "selection:extendLineEnd", + "settings:sortByTokens": "settings:sortByTokens" }, "context": "MessageSelector" }, { "bindings": { - "escape": "diff:dismiss" + "attachments:exit": "attachments:exit", + "chat:cycleMode": "chat:cycleMode", + "confirm:previousField": "confirm:previousField", + "doctor:fix": "doctor:fix", + "modelPicker:decreaseEffort": "modelPicker:decreaseEffort" }, "context": "DiffDialog" }, { "bindings": { - "left": "modelPicker:decreaseEffort" + "chat:modelPicker": "chat:modelPicker", + "confirm:toggle": "confirm:toggle", + "footer:next": "footer:next", + "modelPicker:increaseEffort": "modelPicker:increaseEffort", + "voice:pushToTalk": "voice:pushToTalk" }, "context": "ModelPicker" }, { "bindings": { - "enter": "select:accept" + "chat:fastMode": "chat:fastMode", + "confirm:cycleMode": "confirm:cycleMode", + "footer:previous": "footer:previous", + "modelPicker:thisSessionOnly": "modelPicker:thisSessionOnly", + "scroll:lineUp": "scroll:lineUp" }, "context": "Select" }, { "bindings": { - "i": "plugin:install" + "chat:thinkingToggle": "chat:thinkingToggle", + "confirm:toggleExplanation": "confirm:toggleExplanation", + "footer:up": "footer:up", + "scroll:lineDown": "scroll:lineDown", + "select:next": "select:next" }, "context": "Plugin" }, { "bindings": { - "pagedown": "scroll:pageDown" + "chat:workflowKeywordToggle": "chat:workflowKeywordToggle", + "footer:down": "footer:down", + "scroll:pageUp": "scroll:pageUp", + "select:previous": "select:previous", + "tabs:next": "tabs:next" }, "context": "Scroll" }, { "bindings": { - "f": "doctor:fix" + "chat:submit": "chat:submit", + "footer:openSelected": "footer:openSelected", + "scroll:pageDown": "scroll:pageDown", + "select:accept": "select:accept", + "tabs:previous": "tabs:previous" }, "context": "Doctor" } diff --git a/src/test/claude-code-keybindings/current-actions.json b/src/test/claude-code-keybindings/current-actions.json index 67c195c1646..17a54a3e7aa 100644 --- a/src/test/claude-code-keybindings/current-actions.json +++ b/src/test/claude-code-keybindings/current-actions.json @@ -2,7 +2,9 @@ "bindings": [ { "bindings": { - "ctrl+r": "app:redraw" + "ctrl+]": "app:openArtifact", + "ctrl+r": "app:redraw", + "ctrl+shift+b": "app:toggleBrief" }, "context": "Global" }, @@ -13,6 +15,7 @@ "ctrl+l": "chat:clearInput", "ctrl+x ctrl+k": "chat:killAgents", "meta+o": "chat:fastMode", + "meta+w": "chat:workflowKeywordToggle", "space": "voice:pushToTalk" }, "context": "Chat" @@ -67,7 +70,7 @@ { "bindings": { "d": "settings:periodDay", - "enter": "settings:close", + "enter": "select:accept", "t": "settings:sortByTokens", "w": "settings:periodWeek" }, diff --git a/src/test/claude-code-settings/basic-config.json b/src/test/claude-code-settings/basic-config.json index b6703dbae8d..5cac2db17ed 100644 --- a/src/test/claude-code-settings/basic-config.json +++ b/src/test/claude-code-settings/basic-config.json @@ -60,6 +60,7 @@ "CLAUDE_CODE_SYNTAX_HIGHLIGHT": "false", "CLAUDE_CODE_TMUX_TRUECOLOR": "1", "CLAUDE_CODE_USE_POWERSHELL_TOOL": "1", + "CLAUDE_EFFORT": "medium", "DISABLE_AUTOUPDATER": "1", "DISABLE_ERROR_REPORTING": "1", "DISABLE_FEEDBACK_COMMAND": "1", @@ -69,6 +70,7 @@ "USE_BUILTIN_RIPGREP": "1" }, "model": "sonnet", + "preferredNotifChannel": "iterm2_with_bell", "teammateMode": "auto", "verbose": false } diff --git a/src/test/claude-code-settings/complete-config.json b/src/test/claude-code-settings/complete-config.json index cd30f417f74..518576056b6 100644 --- a/src/test/claude-code-settings/complete-config.json +++ b/src/test/claude-code-settings/complete-config.json @@ -3,6 +3,7 @@ "cleanupPeriodDays": 30, "effortLevel": "medium", "env": { + "CLAUDE_EFFORT": "high", "DEBUG_MODE": "true", "EDITOR": "vim" }, @@ -24,5 +25,6 @@ "WebFetch(domain:bad.actor.com)" ] }, + "preferredNotifChannel": "kitty", "viewMode": "default" } diff --git a/src/test/claude-code-settings/edge-cases.json b/src/test/claude-code-settings/edge-cases.json index 1f85fa4234f..8b933532c5b 100644 --- a/src/test/claude-code-settings/edge-cases.json +++ b/src/test/claude-code-settings/edge-cases.json @@ -1,6 +1,10 @@ { + "autoCompactEnabled": false, + "autoScrollEnabled": true, "autoUpdatesChannel": "stable", + "awaySummaryEnabled": true, "cleanupPeriodDays": 1, + "disableWorkflows": true, "effortLevel": "low", "env": { "CLAUDE_CODE_DEBUG_LOG_LEVEL": "info", @@ -14,9 +18,14 @@ "CLAUDE_CODE_OPUS_4_6_FAST_MODE_OVERRIDE": "0", "CLAUDE_CODE_PACKAGE_MANAGER_AUTO_UPDATE": "0", "CLAUDE_CODE_PLUGIN_PREFER_HTTPS": "0", - "CLAUDE_CODE_POWERSHELL_RESPECT_EXECUTION_POLICY": "0" + "CLAUDE_CODE_POWERSHELL_RESPECT_EXECUTION_POLICY": "0", + "OTEL_EXPORTER_OTLP_LOGS_PROTOCOL": "http/protobuf", + "OTEL_EXPORTER_OTLP_METRICS_PROTOCOL": "http/protobuf", + "OTEL_EXPORTER_OTLP_PROTOCOL": "http/protobuf", + "OTEL_EXPORTER_OTLP_TRACES_PROTOCOL": "http/protobuf" }, "fastMode": false, + "fileCheckpointingEnabled": false, "forceLoginMethod": "claudeai", "parentSettingsBehavior": "first-wins", "permissions": { @@ -27,6 +36,7 @@ }, "prefersReducedMotion": false, "respectGitignore": true, + "respondToBashCommands": false, "showTurnDuration": true, "skillOverrides": { "custom-skill": "on" @@ -38,6 +48,7 @@ }, "teammateMode": "in-process", "terminalProgressBarEnabled": true, + "workflowKeywordTriggerEnabled": false, "worktree": { "baseRef": "fresh", "bgIsolation": "worktree" diff --git a/src/test/claude-code-settings/enum-coverage.json b/src/test/claude-code-settings/enum-coverage.json index 7e96f2901e5..1ba372bc7d9 100644 --- a/src/test/claude-code-settings/enum-coverage.json +++ b/src/test/claude-code-settings/enum-coverage.json @@ -2,27 +2,46 @@ "$schema": "https://www.schemastore.org/claude-code-settings.json", "channelsEnabled": false, "defaultShell": "bash", + "editorMode": "normal", "effortLevel": "xhigh", "env": { "CCR_FORCE_BUNDLE": "0", + "CLAUDECODE": "0", "CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS": "0", "CLAUDE_AGENT_SDK_MCP_NO_PREFIX": "0", "CLAUDE_AUTO_BACKGROUND_TASKS": "0", + "CLAUDE_AX_SCREEN_READER": "0", "CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR": "0", "CLAUDE_CODE_ACCESSIBILITY": "0", "CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD": "0", + "CLAUDE_CODE_ALT_SCREEN_FULL_REPAINT": "0", + "CLAUDE_CODE_ALWAYS_ENABLE_EFFORT": "0", + "CLAUDE_CODE_ARTIFACT_AUTO_OPEN": "0", "CLAUDE_CODE_ATTRIBUTION_HEADER": "0", "CLAUDE_CODE_AUTO_CONNECT_IDE": "true", + "CLAUDE_CODE_CHILD_SESSION": "0", "CLAUDE_CODE_DEBUG_LOG_LEVEL": "verbose", "CLAUDE_CODE_DISABLE_1M_CONTEXT": "0", + "CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING": "0", + "CLAUDE_CODE_DISABLE_ADVISOR_TOOL": "0", + "CLAUDE_CODE_DISABLE_AGENT_VIEW": "0", + "CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN": "0", + "CLAUDE_CODE_DISABLE_ARTIFACT": "0", + "CLAUDE_CODE_DISABLE_ATTACHMENTS": "0", "CLAUDE_CODE_DISABLE_AUTO_MEMORY": "0", "CLAUDE_CODE_DISABLE_BACKGROUND_TASKS": "0", + "CLAUDE_CODE_DISABLE_BG_SHELL_PRESSURE_REAP": "0", + "CLAUDE_CODE_DISABLE_BUNDLED_SKILLS": "0", + "CLAUDE_CODE_DISABLE_CLAUDE_MDS": "0", "CLAUDE_CODE_DISABLE_CRON": "0", + "CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS": "0", "CLAUDE_CODE_DISABLE_FAST_MODE": "0", "CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY": "0", "CLAUDE_CODE_DISABLE_FILE_CHECKPOINTING": "0", + "CLAUDE_CODE_DISABLE_GIT_INSTRUCTIONS": "0", "CLAUDE_CODE_DISABLE_LEGACY_MODEL_REMAP": "0", "CLAUDE_CODE_DISABLE_MOUSE": "0", + "CLAUDE_CODE_DISABLE_MOUSE_CLICKS": "0", "CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "0", "CLAUDE_CODE_DISABLE_NONSTREAMING_FALLBACK": "0", "CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL": "0", @@ -30,14 +49,22 @@ "CLAUDE_CODE_DISABLE_TERMINAL_TITLE": "0", "CLAUDE_CODE_DISABLE_THINKING": "0", "CLAUDE_CODE_DISABLE_VIRTUAL_SCROLL": "0", + "CLAUDE_CODE_DISABLE_WORKFLOWS": "0", "CLAUDE_CODE_EFFORT_LEVEL": "low", + "CLAUDE_CODE_ENABLE_AUTO_MODE": "0", "CLAUDE_CODE_ENABLE_AWAY_SUMMARY": "0", "CLAUDE_CODE_ENABLE_BACKGROUND_PLUGIN_REFRESH": "0", + "CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL": "0", "CLAUDE_CODE_ENABLE_FINE_GRAINED_TOOL_STREAMING": "0", + "CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY": "0", "CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION": "true", "CLAUDE_CODE_ENABLE_TASKS": "0", "CLAUDE_CODE_ENABLE_TELEMETRY": "0", + "CLAUDE_CODE_ENHANCED_TELEMETRY_BETA": "0", "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "0", + "CLAUDE_CODE_FORCE_SESSION_PERSISTENCE": "0", + "CLAUDE_CODE_FORCE_STRIKETHROUGH": "0", + "CLAUDE_CODE_FORCE_SYNC_OUTPUT": "0", "CLAUDE_CODE_FORK_SUBAGENT": "0", "CLAUDE_CODE_GLOB_HIDDEN": "true", "CLAUDE_CODE_GLOB_NO_IGNORE": "true", @@ -45,16 +72,26 @@ "CLAUDE_CODE_IDE_SKIP_AUTO_INSTALL": "0", "CLAUDE_CODE_IDE_SKIP_VALID_CHECK": "0", "CLAUDE_CODE_MCP_ALLOWLIST_ENV": "0", + "CLAUDE_CODE_NATIVE_CURSOR": "0", "CLAUDE_CODE_NEW_INIT": "0", "CLAUDE_CODE_NO_FLICKER": "0", + "CLAUDE_CODE_OPUS_4_6_FAST_MODE_OVERRIDE": "0", + "CLAUDE_CODE_OTEL_DIAG_STDERR": "0", + "CLAUDE_CODE_PACKAGE_MANAGER_AUTO_UPDATE": "0", "CLAUDE_CODE_PERFORCE_MODE": "0", "CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE": "0", + "CLAUDE_CODE_PLUGIN_PREFER_HTTPS": "0", + "CLAUDE_CODE_POWERSHELL_RESPECT_EXECUTION_POLICY": "0", + "CLAUDE_CODE_PROPAGATE_TRACEPARENT": "0", "CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST": "0", "CLAUDE_CODE_PROXY_RESOLVES_HOSTS": "0", "CLAUDE_CODE_REMOTE": "true", "CLAUDE_CODE_RESUME_INTERRUPTED_TURN": "0", + "CLAUDE_CODE_RETRY_WATCHDOG": "0", + "CLAUDE_CODE_SAFE_MODE": "0", "CLAUDE_CODE_SIMPLE": "0", "CLAUDE_CODE_SIMPLE_SYSTEM_PROMPT": "0", + "CLAUDE_CODE_SKIP_ANTHROPIC_AWS_AUTH": "0", "CLAUDE_CODE_SKIP_BEDROCK_AUTH": "0", "CLAUDE_CODE_SKIP_FOUNDRY_AUTH": "0", "CLAUDE_CODE_SKIP_MANTLE_AUTH": "0", @@ -62,15 +99,65 @@ "CLAUDE_CODE_SKIP_VERTEX_AUTH": "0", "CLAUDE_CODE_SUBPROCESS_ENV_SCRUB": "0", "CLAUDE_CODE_SYNC_PLUGIN_INSTALL": "0", + "CLAUDE_CODE_SYNC_SKILLS": "0", "CLAUDE_CODE_SYNTAX_HIGHLIGHT": "true", "CLAUDE_CODE_TMUX_TRUECOLOR": "0", + "CLAUDE_CODE_USE_ANTHROPIC_AWS": "0", + "CLAUDE_CODE_USE_BEDROCK": "0", + "CLAUDE_CODE_USE_FOUNDRY": "0", + "CLAUDE_CODE_USE_MANTLE": "0", + "CLAUDE_CODE_USE_NATIVE_FILE_SEARCH": "0", "CLAUDE_CODE_USE_POWERSHELL_TOOL": "0", + "CLAUDE_CODE_USE_VERTEX": "0", + "CLAUDE_EFFORT": "max", + "CLAUDE_ENABLE_BYTE_WATCHDOG": "0", + "CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK": "0", + "CLAUDE_ENABLE_STREAM_WATCHDOG": "0", "DISABLE_AUTOUPDATER": "0", + "DISABLE_AUTO_COMPACT": "0", + "DISABLE_COMPACT": "0", + "DISABLE_COST_WARNINGS": "0", + "DISABLE_DOCTOR_COMMAND": "0", "DISABLE_ERROR_REPORTING": "0", + "DISABLE_EXTRA_USAGE_COMMAND": "0", "DISABLE_FEEDBACK_COMMAND": "0", + "DISABLE_GROWTHBOOK": "0", + "DISABLE_INSTALLATION_CHECKS": "0", + "DISABLE_INSTALL_GITHUB_APP_COMMAND": "0", + "DISABLE_INTERLEAVED_THINKING": "0", + "DISABLE_LOGIN_COMMAND": "0", + "DISABLE_LOGOUT_COMMAND": "0", + "DISABLE_PROMPT_CACHING": "0", + "DISABLE_PROMPT_CACHING_FABLE": "0", + "DISABLE_PROMPT_CACHING_HAIKU": "0", + "DISABLE_PROMPT_CACHING_OPUS": "0", + "DISABLE_PROMPT_CACHING_SONNET": "0", "DISABLE_TELEMETRY": "0", "DISABLE_UPDATES": "0", + "DISABLE_UPGRADE_COMMAND": "0", + "DO_NOT_TRACK": "0", + "ENABLE_BETA_TRACING_DETAILED": "0", "ENABLE_CLAUDEAI_MCP_SERVERS": "true", + "ENABLE_PROMPT_CACHING_1H": "0", + "ENABLE_TOOL_SEARCH": "false", + "FORCE_AUTOUPDATE_PLUGINS": "0", + "FORCE_PROMPT_CACHING_5M": "0", + "IS_DEMO": "0", + "MCP_CONNECTION_NONBLOCKING": "0", + "OTEL_EXPORTER_OTLP_LOGS_PROTOCOL": "http/json", + "OTEL_EXPORTER_OTLP_METRICS_PROTOCOL": "http/json", + "OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE": "cumulative", + "OTEL_EXPORTER_OTLP_PROTOCOL": "http/json", + "OTEL_EXPORTER_OTLP_TRACES_PROTOCOL": "http/json", + "OTEL_LOG_ASSISTANT_RESPONSES": "0", + "OTEL_LOG_TOOL_CONTENT": "0", + "OTEL_LOG_TOOL_DETAILS": "0", + "OTEL_LOG_USER_PROMPTS": "0", + "OTEL_METRICS_INCLUDE_ACCOUNT_UUID": "false", + "OTEL_METRICS_INCLUDE_ENTRYPOINT": "false", + "OTEL_METRICS_INCLUDE_RESOURCE_ATTRIBUTES": "false", + "OTEL_METRICS_INCLUDE_SESSION_ID": "false", + "OTEL_METRICS_INCLUDE_VERSION": "false", "USE_BUILTIN_RIPGREP": "0" }, "hooks": { @@ -92,7 +179,13 @@ } ] }, + "preferredNotifChannel": "auto", + "teammateMode": "iterm2", "terminalTitleFromRename": true, + "theme": "dark-ansi", "tui": "fullscreen", - "viewMode": "verbose" + "viewMode": "verbose", + "voice": { + "mode": "hold" + } } diff --git a/src/test/claude-code-settings/env-variables.json b/src/test/claude-code-settings/env-variables.json index 1335cdacac2..31253218231 100644 --- a/src/test/claude-code-settings/env-variables.json +++ b/src/test/claude-code-settings/env-variables.json @@ -1,20 +1,176 @@ { "env": { + "ANTHROPIC_AWS_API_KEY": "example", + "ANTHROPIC_AWS_BASE_URL": "example", + "ANTHROPIC_AWS_WORKSPACE_ID": "example", "ANTHROPIC_BEDROCK_SERVICE_TIER": "default", + "ANTHROPIC_DEFAULT_FABLE_MODEL": "example", + "ANTHROPIC_DEFAULT_FABLE_MODEL_DESCRIPTION": "example", + "ANTHROPIC_DEFAULT_FABLE_MODEL_NAME": "example", + "ANTHROPIC_DEFAULT_FABLE_MODEL_SUPPORTED_CAPABILITIES": "example", + "ANTHROPIC_DEFAULT_HAIKU_MODEL_DESCRIPTION": "example", + "ANTHROPIC_DEFAULT_HAIKU_MODEL_NAME": "example", + "ANTHROPIC_DEFAULT_HAIKU_MODEL_SUPPORTED_CAPABILITIES": "example", + "ANTHROPIC_DEFAULT_OPUS_MODEL_DESCRIPTION": "example", + "ANTHROPIC_DEFAULT_OPUS_MODEL_NAME": "example", + "BETA_TRACING_ENDPOINT": "https://otel.example/v1/traces", + "CCR_FORCE_BUNDLE": "1", + "CLAUDECODE": "1", + "CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS": "1", + "CLAUDE_AGENT_SDK_MCP_NO_PREFIX": "1", + "CLAUDE_AUTO_BACKGROUND_TASKS": "1", + "CLAUDE_AX_SCREEN_READER": "1", + "CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR": "1", + "CLAUDE_CODE_ACCESSIBILITY": "1", + "CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD": "1", + "CLAUDE_CODE_ALT_SCREEN_FULL_REPAINT": "1", + "CLAUDE_CODE_ALWAYS_ENABLE_EFFORT": "1", + "CLAUDE_CODE_ARTIFACT_AUTO_OPEN": "1", + "CLAUDE_CODE_ATTRIBUTION_HEADER": "1", + "CLAUDE_CODE_AUTO_CONNECT_IDE": "true", + "CLAUDE_CODE_CHILD_SESSION": "1", "CLAUDE_CODE_DISABLE_1M_CONTEXT": "1", "CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING": "0", + "CLAUDE_CODE_DISABLE_ADVISOR_TOOL": "1", + "CLAUDE_CODE_DISABLE_AGENT_VIEW": "1", + "CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN": "1", + "CLAUDE_CODE_DISABLE_ARTIFACT": "1", "CLAUDE_CODE_DISABLE_ATTACHMENTS": "1", + "CLAUDE_CODE_DISABLE_AUTO_MEMORY": "1", + "CLAUDE_CODE_DISABLE_BACKGROUND_TASKS": "1", + "CLAUDE_CODE_DISABLE_BG_SHELL_PRESSURE_REAP": "1", + "CLAUDE_CODE_DISABLE_BUNDLED_SKILLS": "1", "CLAUDE_CODE_DISABLE_CLAUDE_MDS": "0", + "CLAUDE_CODE_DISABLE_CRON": "1", "CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS": "1", "CLAUDE_CODE_DISABLE_FAST_MODE": "1", + "CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY": "1", + "CLAUDE_CODE_DISABLE_FILE_CHECKPOINTING": "1", "CLAUDE_CODE_DISABLE_GIT_INSTRUCTIONS": "0", + "CLAUDE_CODE_DISABLE_LEGACY_MODEL_REMAP": "1", + "CLAUDE_CODE_DISABLE_MOUSE": "1", + "CLAUDE_CODE_DISABLE_MOUSE_CLICKS": "1", + "CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1", + "CLAUDE_CODE_DISABLE_NONSTREAMING_FALLBACK": "1", + "CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL": "1", + "CLAUDE_CODE_DISABLE_POLICY_SKILLS": "1", + "CLAUDE_CODE_DISABLE_TERMINAL_TITLE": "1", "CLAUDE_CODE_DISABLE_THINKING": "1", + "CLAUDE_CODE_DISABLE_VIRTUAL_SCROLL": "1", + "CLAUDE_CODE_DISABLE_WORKFLOWS": "1", "CLAUDE_CODE_EFFORT_LEVEL": "high", + "CLAUDE_CODE_ENABLE_AUTO_MODE": "1", + "CLAUDE_CODE_ENABLE_AWAY_SUMMARY": "1", + "CLAUDE_CODE_ENABLE_BACKGROUND_PLUGIN_REFRESH": "1", + "CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL": "1", + "CLAUDE_CODE_ENABLE_FINE_GRAINED_TOOL_STREAMING": "1", + "CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY": "1", + "CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION": "true", + "CLAUDE_CODE_ENABLE_TASKS": "1", + "CLAUDE_CODE_ENABLE_TELEMETRY": "1", + "CLAUDE_CODE_ENHANCED_TELEMETRY_BETA": "1", + "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1", + "CLAUDE_CODE_FORCE_SESSION_PERSISTENCE": "1", + "CLAUDE_CODE_FORCE_STRIKETHROUGH": "1", + "CLAUDE_CODE_FORCE_SYNC_OUTPUT": "1", "CLAUDE_CODE_FORK_SUBAGENT": "1", + "CLAUDE_CODE_GLOB_HIDDEN": "true", + "CLAUDE_CODE_GLOB_NO_IGNORE": "true", "CLAUDE_CODE_HIDE_CWD": "1", + "CLAUDE_CODE_IDE_SKIP_AUTO_INSTALL": "1", + "CLAUDE_CODE_IDE_SKIP_VALID_CHECK": "1", + "CLAUDE_CODE_MCP_ALLOWLIST_ENV": "1", + "CLAUDE_CODE_NATIVE_CURSOR": "1", + "CLAUDE_CODE_NEW_INIT": "1", + "CLAUDE_CODE_NO_FLICKER": "1", + "CLAUDE_CODE_OPUS_4_6_FAST_MODE_OVERRIDE": "1", + "CLAUDE_CODE_OTEL_DIAG_STDERR": "1", + "CLAUDE_CODE_PACKAGE_MANAGER_AUTO_UPDATE": "1", + "CLAUDE_CODE_PERFORCE_MODE": "1", + "CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE": "1", + "CLAUDE_CODE_PLUGIN_PREFER_HTTPS": "1", + "CLAUDE_CODE_POWERSHELL_RESPECT_EXECUTION_POLICY": "1", + "CLAUDE_CODE_PROPAGATE_TRACEPARENT": "1", + "CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST": "1", + "CLAUDE_CODE_PROXY_RESOLVES_HOSTS": "1", + "CLAUDE_CODE_REMOTE": "true", + "CLAUDE_CODE_RESUME_INTERRUPTED_TURN": "1", + "CLAUDE_CODE_RETRY_WATCHDOG": "1", + "CLAUDE_CODE_SAFE_MODE": "1", + "CLAUDE_CODE_SIMPLE": "1", + "CLAUDE_CODE_SIMPLE_SYSTEM_PROMPT": "1", + "CLAUDE_CODE_SKIP_ANTHROPIC_AWS_AUTH": "1", + "CLAUDE_CODE_SKIP_BEDROCK_AUTH": "1", + "CLAUDE_CODE_SKIP_FOUNDRY_AUTH": "1", + "CLAUDE_CODE_SKIP_MANTLE_AUTH": "1", + "CLAUDE_CODE_SKIP_PROMPT_HISTORY": "1", + "CLAUDE_CODE_SKIP_VERTEX_AUTH": "1", + "CLAUDE_CODE_SUBPROCESS_ENV_SCRUB": "1", + "CLAUDE_CODE_SYNC_PLUGIN_INSTALL": "1", + "CLAUDE_CODE_SYNC_SKILLS": "1", + "CLAUDE_CODE_SYNTAX_HIGHLIGHT": "true", + "CLAUDE_CODE_TMUX_TRUECOLOR": "1", + "CLAUDE_CODE_USE_ANTHROPIC_AWS": "1", + "CLAUDE_CODE_USE_BEDROCK": "1", + "CLAUDE_CODE_USE_FOUNDRY": "1", + "CLAUDE_CODE_USE_MANTLE": "1", + "CLAUDE_CODE_USE_NATIVE_FILE_SEARCH": "1", + "CLAUDE_CODE_USE_POWERSHELL_TOOL": "1", + "CLAUDE_CODE_USE_VERTEX": "1", + "CLAUDE_EFFORT": "low", + "CLAUDE_ENABLE_BYTE_WATCHDOG": "1", + "CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK": "1", + "CLAUDE_ENABLE_STREAM_WATCHDOG": "1", "DEBUG_LEVEL": "2", + "DISABLE_AUTOUPDATER": "1", + "DISABLE_AUTO_COMPACT": "1", + "DISABLE_COMPACT": "1", + "DISABLE_COST_WARNINGS": "1", + "DISABLE_DOCTOR_COMMAND": "1", + "DISABLE_ERROR_REPORTING": "1", + "DISABLE_EXTRA_USAGE_COMMAND": "1", + "DISABLE_FEEDBACK_COMMAND": "1", + "DISABLE_GROWTHBOOK": "1", + "DISABLE_INSTALLATION_CHECKS": "1", + "DISABLE_INSTALL_GITHUB_APP_COMMAND": "1", + "DISABLE_INTERLEAVED_THINKING": "1", + "DISABLE_LOGIN_COMMAND": "1", + "DISABLE_LOGOUT_COMMAND": "1", + "DISABLE_PROMPT_CACHING": "1", + "DISABLE_PROMPT_CACHING_FABLE": "1", + "DISABLE_PROMPT_CACHING_HAIKU": "1", + "DISABLE_PROMPT_CACHING_OPUS": "1", + "DISABLE_PROMPT_CACHING_SONNET": "1", + "DISABLE_TELEMETRY": "1", + "DISABLE_UPDATES": "1", + "DISABLE_UPGRADE_COMMAND": "1", + "DO_NOT_TRACK": "1", "EDITOR": "nano", + "ENABLE_BETA_TRACING_DETAILED": "1", + "ENABLE_CLAUDEAI_MCP_SERVERS": "true", + "ENABLE_PROMPT_CACHING_1H": "1", + "ENABLE_TOOL_SEARCH": "true", + "FORCE_AUTOUPDATE_PLUGINS": "1", + "FORCE_PROMPT_CACHING_5M": "1", "HOME_DIR": "/home/user", - "PATH": "/usr/local/bin:/usr/bin:/bin" + "IS_DEMO": "1", + "MCP_CONNECTION_NONBLOCKING": "1", + "OTEL_EXPORTER_OTLP_LOGS_PROTOCOL": "grpc", + "OTEL_EXPORTER_OTLP_METRICS_PROTOCOL": "grpc", + "OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE": "delta", + "OTEL_EXPORTER_OTLP_PROTOCOL": "grpc", + "OTEL_EXPORTER_OTLP_TRACES_PROTOCOL": "grpc", + "OTEL_LOG_ASSISTANT_RESPONSES": "1", + "OTEL_LOG_TOOL_CONTENT": "1", + "OTEL_LOG_TOOL_DETAILS": "1", + "OTEL_LOG_USER_PROMPTS": "1", + "OTEL_METRICS_INCLUDE_ACCOUNT_UUID": "true", + "OTEL_METRICS_INCLUDE_ENTRYPOINT": "true", + "OTEL_METRICS_INCLUDE_RESOURCE_ATTRIBUTES": "true", + "OTEL_METRICS_INCLUDE_SESSION_ID": "true", + "OTEL_METRICS_INCLUDE_VERSION": "true", + "PATH": "/usr/local/bin:/usr/bin:/bin", + "USE_BUILTIN_RIPGREP": "1", + "VERTEX_REGION_CLAUDE_HAIKU_4_5": "us-east5" } } diff --git a/src/test/claude-code-settings/model-opus.json b/src/test/claude-code-settings/model-opus.json index 3f9baf3a986..eff7dc7bf2d 100644 --- a/src/test/claude-code-settings/model-opus.json +++ b/src/test/claude-code-settings/model-opus.json @@ -1,8 +1,10 @@ { "env": { "CLAUDE_CODE_DEBUG_LOG_LEVEL": "warn", - "CLAUDE_CODE_EFFORT_LEVEL": "auto" + "CLAUDE_CODE_EFFORT_LEVEL": "auto", + "CLAUDE_EFFORT": "xhigh" }, "includeCoAuthoredBy": true, - "model": "opus" + "model": "opus", + "preferredNotifChannel": "ghostty" } diff --git a/src/test/claude-code-settings/modern-complete-config.json b/src/test/claude-code-settings/modern-complete-config.json index 73c63c28b2e..8029857a814 100644 --- a/src/test/claude-code-settings/modern-complete-config.json +++ b/src/test/claude-code-settings/modern-complete-config.json @@ -1,9 +1,17 @@ { "$schema": "https://www.schemastore.org/claude-code-settings.json", + "advisorModel": "opus", "agent": "code-reviewer", + "agentPushNotifEnabled": true, + "allowAllClaudeAiMcps": true, "allowManagedHooksOnly": false, "allowManagedPermissionRulesOnly": false, - "allowedChannelPlugins": ["internal-notifier@corp"], + "allowedChannelPlugins": [ + { + "marketplace": "claude-plugins-official", + "plugin": "internal-notifier" + } + ], "allowedHttpHookUrls": ["https://hooks.example.com/*", "http://localhost:*"], "alwaysThinkingEnabled": false, "apiKeyHelper": "/usr/local/bin/claude-auth-helper", @@ -11,18 +19,23 @@ "commit": "Generated with AI\n\nCo-Authored-By: AI ", "pr": "" }, + "autoCompactEnabled": true, "autoMemoryDirectory": "~/.claude/custom-memory", "autoMemoryEnabled": false, "autoMode": { "allow": ["$defaults", "All read-only operations"], + "classifyAllShell": true, "environment": ["$defaults", "WSL2 on Windows"], "hard_deny": ["Running executable files", "Writing to system directories"], "soft_deny": ["$defaults", "Deleting files"] }, + "autoScrollEnabled": false, "autoUpdatesChannel": "latest", "availableModels": ["sonnet", "haiku"], + "awaySummaryEnabled": false, "awsAuthRefresh": "aws sso login --profile myprofile", "awsCredentialExport": "/bin/generate_aws_grant.sh", + "axScreenReader": false, "blockedMarketplaces": [ { "pathPattern": "^/untrusted/.*", @@ -30,6 +43,7 @@ } ], "channelsEnabled": true, + "claudeMd": "# Org policy\nFollow security guidelines.", "claudeMdExcludes": [ "**/other-team/CLAUDE.md", "/home/user/monorepo/.claude/rules/**" @@ -37,20 +51,30 @@ "cleanupPeriodDays": 60, "companyAnnouncements": ["Welcome to the team!"], "defaultShell": "powershell", + "disableAgentView": false, "disableAllHooks": false, + "disableArtifact": false, + "disableAutoMode": "disable", + "disableBundledSkills": true, + "disableClaudeAiConnectors": false, "disableDeepLinkRegistration": "disable", + "disableRemoteControl": false, "disableSkillShellExecution": false, + "disableWorkflows": false, "disabledMcpjsonServers": ["untrusted-server"], - "effortLevel": "max", + "editorMode": "vim", + "effortLevel": "xhigh", "enableAllProjectMcpServers": true, "enabledPlugins": { "formatter@anthropic-tools": true }, + "enforceAvailableModels": true, "env": { "ANTHROPIC_BEDROCK_SERVICE_TIER": "priority", "ANTHROPIC_MODEL": "claude-3-5-sonnet-20241022", "ANTHROPIC_SMALL_FAST_MODEL": "claude-3-5-haiku-20241022", "ANTHROPIC_WORKSPACE_ID": "ws-abc123", + "AWS_REGION": "us-east-1", "CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN": "1", "CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS": "1", "CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL": "1", @@ -58,12 +82,17 @@ "CLAUDE_CODE_FORCE_SYNC_OUTPUT": "1", "CLAUDE_CODE_FORK_SUBAGENT": "1", "CLAUDE_CODE_HIDE_CWD": "1", + "CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT": "60000", "CLAUDE_CODE_OPUS_4_6_FAST_MODE_OVERRIDE": "1", "CLAUDE_CODE_PACKAGE_MANAGER_AUTO_UPDATE": "1", "CLAUDE_CODE_PLUGIN_PREFER_HTTPS": "1", "CLAUDE_CODE_POWERSHELL_RESPECT_EXECUTION_POLICY": "1", "CLAUDE_CODE_STOP_HOOK_BLOCK_CAP": "12", + "CLAUDE_CODE_USE_BEDROCK": "1", "CLAUDE_LOG_LEVEL": "debug", + "DISABLE_PROMPT_CACHING": "0", + "MAX_THINKING_TOKENS": "8000", + "OTEL_LOG_ASSISTANT_RESPONSES": "0", "PROJECT_ROOT": "/home/user/projects" }, "extraKnownMarketplaces": { @@ -74,16 +103,27 @@ } } }, + "fallbackModel": ["sonnet", "haiku"], "fastMode": true, "fastModePerSessionOptIn": true, "feedbackSurveyRate": 0.05, + "fileCheckpointingEnabled": true, "fileSuggestion": { "command": "~/.claude/file-suggestion.sh", "type": "command" }, + "footerLinksRegexes": [ + { + "label": "#{num}", + "pattern": "#(?\\d+)", + "type": "regex", + "url": "https://github.com/example/repo/issues/{num}" + } + ], "forceLoginMethod": "console", "forceLoginOrgUUID": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "forceRemoteSettingsRefresh": false, + "gcpAuthRefresh": "gcloud auth application-default login", "hooks": { "ConfigChange": [ { @@ -106,6 +146,16 @@ ] } ], + "MessageDisplay": [ + { + "hooks": [ + { + "command": "echo 'message displayed' >> ~/.claude-code/activity.log", + "type": "command" + } + ] + } + ], "PermissionDenied": [ { "hooks": [ @@ -266,7 +316,17 @@ "httpHookAllowedEnvVars": ["HOOK_TOKEN", "WEBHOOK_SECRET"], "includeCoAuthoredBy": true, "includeGitInstructions": false, + "inputNeededNotifEnabled": true, "language": "english", + "leftArrowOpensAgents": true, + "managedMcpServers": [ + { + "name": "corp-tools", + "transport": "http", + "url": "https://mcp.corp.example/sse" + } + ], + "maxSkillDescriptionChars": 2048, "minimumVersion": "2.1.0", "model": "opus", "modelOverrides": { @@ -316,14 +376,40 @@ } } }, + "pluginSuggestionMarketplaces": ["corp-marketplace"], "pluginTrustMessage": "All plugins from our internal marketplace are pre-approved by the security team.", + "policyHelper": { + "path": "/opt/claude/policy-helper.sh", + "refreshIntervalMs": 60000, + "timeoutMs": 5000 + }, "prUrlTemplate": "https://reviews.example.com/{owner}/{repo}/pull/{number}", + "preferredNotifChannel": "terminal_bell", "prefersReducedMotion": true, + "remoteControlAtStartup": false, + "requiredMaximumVersion": "3.0.0", + "requiredMinimumVersion": "2.0.0", "respectGitignore": false, + "respondToBashCommands": true, "sandbox": { + "allowAppleEvents": false, "allowUnsandboxedCommands": false, "autoAllowBashIfSandboxed": false, "bwrapPath": "/usr/bin/bwrap", + "credentials": { + "envVars": [ + { + "mode": "deny", + "name": "AWS_SECRET_ACCESS_KEY" + } + ], + "files": [ + { + "mode": "deny", + "path": "~/.aws/credentials" + } + ] + }, "enableWeakerNestedSandbox": false, "enableWeakerNetworkIsolation": true, "enabled": true, @@ -356,6 +442,7 @@ "showClearContextOnPlanAccept": true, "showThinkingSummaries": true, "showTurnDuration": false, + "skillListingBudgetFraction": 0.02, "skillOverrides": { "deploy": "off", "internal-tool": "user-invocable-only", @@ -374,6 +461,17 @@ "mode": "replace", "verbs": ["Analyzing", "Building"] }, + "sshConfigs": [ + { + "id": "home", + "name": "Home server", + "sshHost": "user@host.example", + "sshIdentityFile": "~/.ssh/id_ed25519", + "sshPort": 22, + "startDirectory": "~/projects" + } + ], + "sshHostAllowlist": ["*.corp.example"], "statusLine": { "command": "~/.claude/statusline.sh", "hideVimModeIndicator": true, @@ -386,16 +484,27 @@ "command": "~/.claude/subagent-statusline.sh", "type": "command" }, + "syntaxHighlightingDisabled": false, "teammateMode": "tmux", "terminalProgressBarEnabled": false, + "theme": "dark-daltonized", "tui": "default", "useAutoModeDuringPlan": true, + "verbose": true, "viewMode": "focus", + "voice": { + "autoSubmit": false, + "enabled": true, + "mode": "tap" + }, "voiceEnabled": true, + "wheelScrollAccelerationEnabled": true, + "workflowKeywordTriggerEnabled": true, "worktree": { "baseRef": "head", "bgIsolation": "none", - "sparsePaths": ["packages/my-app", "shared/utils"] + "sparsePaths": ["packages/my-app", "shared/utils"], + "symlinkDirectories": ["node_modules", ".cache"] }, "wslInheritsWindowsSettings": false } diff --git a/src/test/claude-code-settings/notifications.json b/src/test/claude-code-settings/notifications.json index ea681d3cd20..c3e4b0fd724 100644 --- a/src/test/claude-code-settings/notifications.json +++ b/src/test/claude-code-settings/notifications.json @@ -1,4 +1,4 @@ { - "preferredNotifChannel": "terminal_bell", + "preferredNotifChannel": "iterm2", "theme": "dark-daltonized" } diff --git a/src/test/claude-code-settings/permissions-advanced.json b/src/test/claude-code-settings/permissions-advanced.json index d8cc4506c4a..9536d74e707 100644 --- a/src/test/claude-code-settings/permissions-advanced.json +++ b/src/test/claude-code-settings/permissions-advanced.json @@ -9,6 +9,8 @@ "Read(~/projects/**)", "Skill(*)", "Edit(~/projects/**)", + "MultiEdit", + "MultiEdit(~/projects/**)", "ToolSearch", "LSP", "NotebookEdit", diff --git a/src/test/claude-code-settings/with-schema.json b/src/test/claude-code-settings/with-schema.json index 5be7ec4d75b..2a80d7e5575 100644 --- a/src/test/claude-code-settings/with-schema.json +++ b/src/test/claude-code-settings/with-schema.json @@ -1,6 +1,6 @@ { "$schema": "https://www.schemastore.org/claude-code-settings.json", "model": "sonnet", - "theme": "light", + "theme": "auto", "verbose": false }