diff --git a/src/negative_test/claude-code-keybindings/removed-doctor-action.json b/src/negative_test/claude-code-keybindings/removed-doctor-action.json new file mode 100644 index 00000000000..edefbb266fa --- /dev/null +++ b/src/negative_test/claude-code-keybindings/removed-doctor-action.json @@ -0,0 +1,10 @@ +{ + "bindings": [ + { + "bindings": { + "f": "doctor:fix" + }, + "context": "Chat" + } + ] +} diff --git a/src/negative_test/claude-code-keybindings/removed-doctor-context.json b/src/negative_test/claude-code-keybindings/removed-doctor-context.json new file mode 100644 index 00000000000..c4cf47cb915 --- /dev/null +++ b/src/negative_test/claude-code-keybindings/removed-doctor-context.json @@ -0,0 +1,10 @@ +{ + "bindings": [ + { + "bindings": { + "f": "app:redraw" + }, + "context": "Doctor" + } + ] +} 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 676b3456fd5..0dbdbeb295d 100644 --- a/src/negative_test/claude-code-settings/invalid-enum-values.json +++ b/src/negative_test/claude-code-settings/invalid-enum-values.json @@ -1,6 +1,9 @@ { + "askUserQuestionTimeout": "30s", "autoUpdatesChannel": "beta", + "browserExternalPageTools": "enabled", "defaultShell": "zsh", + "diffTool": "ide", "disableAutoMode": "enabled", "disableDeepLinkRegistration": "enabled", "editorMode": "emacs", @@ -32,11 +35,14 @@ "CLAUDE_CODE_DISABLE_ATTACHMENTS": "off", "CLAUDE_CODE_DISABLE_AUTO_MEMORY": "yes", "CLAUDE_CODE_DISABLE_BACKGROUND_TASKS": "true", + "CLAUDE_CODE_DISABLE_BEDROCK_CONTENT_TYPE_GUARD": "yes", + "CLAUDE_CODE_DISABLE_BG_EXIT_HANDOFF": "yes", "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", + "CLAUDE_CODE_DISABLE_EXPLORE_PLAN_AGENTS": "no", "CLAUDE_CODE_DISABLE_FAST_MODE": "no", "CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY": "disabled", "CLAUDE_CODE_DISABLE_FILE_CHECKPOINTING": "2", @@ -46,6 +52,7 @@ "CLAUDE_CODE_DISABLE_MOUSE_CLICKS": "yes", "CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "false", "CLAUDE_CODE_DISABLE_NONSTREAMING_FALLBACK": "on", + "CLAUDE_CODE_DISABLE_NOTIFICATION_PRESENCE_CHECK": "no", "CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL": "yes", "CLAUDE_CODE_DISABLE_POLICY_SKILLS": "3", "CLAUDE_CODE_DISABLE_TERMINAL_TITLE": "true", @@ -53,6 +60,7 @@ "CLAUDE_CODE_DISABLE_VIRTUAL_SCROLL": "off", "CLAUDE_CODE_DISABLE_WORKFLOWS": "yes", "CLAUDE_CODE_EFFORT_LEVEL": "extreme", + "CLAUDE_CODE_ENABLE_APPEND_SUBAGENT_PROMPT": "true", "CLAUDE_CODE_ENABLE_AUTO_MODE": "yes", "CLAUDE_CODE_ENABLE_AWAY_SUMMARY": "yes", "CLAUDE_CODE_ENABLE_BACKGROUND_PLUGIN_REFRESH": "on", @@ -68,6 +76,7 @@ "CLAUDE_CODE_FORCE_STRIKETHROUGH": "yes", "CLAUDE_CODE_FORCE_SYNC_OUTPUT": "enabled", "CLAUDE_CODE_FORK_SUBAGENT": "true", + "CLAUDE_CODE_FORWARD_SUBAGENT_TEXT": "on", "CLAUDE_CODE_GLOB_HIDDEN": "1", "CLAUDE_CODE_GLOB_NO_IGNORE": "yes", "CLAUDE_CODE_HIDE_CWD": "yes", @@ -94,7 +103,10 @@ "CLAUDE_CODE_SIMPLE": "on", "CLAUDE_CODE_SIMPLE_SYSTEM_PROMPT": "enabled", "CLAUDE_CODE_SKIP_ANTHROPIC_AWS_AUTH": "yes", + "CLAUDE_CODE_SKIP_AWS_CRED_CACHE": "2", "CLAUDE_CODE_SKIP_BEDROCK_AUTH": "always", + "CLAUDE_CODE_SKIP_FAST_MODE_NETWORK_ERRORS": "enabled", + "CLAUDE_CODE_SKIP_FAST_MODE_ORG_CHECK": "off", "CLAUDE_CODE_SKIP_FOUNDRY_AUTH": "skip", "CLAUDE_CODE_SKIP_MANTLE_AUTH": "true", "CLAUDE_CODE_SKIP_PROMPT_HISTORY": "disable", @@ -111,6 +123,7 @@ "CLAUDE_CODE_USE_NATIVE_FILE_SEARCH": "yes", "CLAUDE_CODE_USE_POWERSHELL_TOOL": "enabled", "CLAUDE_CODE_USE_VERTEX": "yes", + "CLAUDE_DISABLE_ADOPT": "no", "CLAUDE_EFFORT": "extreme", "CLAUDE_ENABLE_BYTE_WATCHDOG": "yes", "CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK": "yes", @@ -143,6 +156,7 @@ "ENABLE_PROMPT_CACHING_1H": "yes", "ENABLE_TOOL_SEARCH": "maybe", "FORCE_AUTOUPDATE_PLUGINS": "yes", + "FORCE_HYPERLINK": "always", "FORCE_PROMPT_CACHING_5M": "yes", "IS_DEMO": "yes", "MCP_CONNECTION_NONBLOCKING": "yes", @@ -200,6 +214,7 @@ "voice": { "mode": "shout" }, + "workflowSizeGuideline": "huge", "worktree": { "baseRef": "invalid-ref", "bgIsolation": "isolated" diff --git a/src/negative_test/claude-code-settings/invalid-inline-marketplace-plugin-source.json b/src/negative_test/claude-code-settings/invalid-inline-marketplace-plugin-source.json new file mode 100644 index 00000000000..1afbc22d324 --- /dev/null +++ b/src/negative_test/claude-code-settings/invalid-inline-marketplace-plugin-source.json @@ -0,0 +1,19 @@ +{ + "extraKnownMarketplaces": { + "team-tools": { + "source": { + "name": "team-tools", + "plugins": [ + { + "name": "code-formatter", + "source": { + "source": "git", + "url": "https://git.corp.example/fmt.git" + } + } + ], + "source": "settings" + } + } + } +} diff --git a/src/negative_test/claude-code-settings/invalid-inline-marketplace-source.json b/src/negative_test/claude-code-settings/invalid-inline-marketplace-source.json new file mode 100644 index 00000000000..1160cb3e128 --- /dev/null +++ b/src/negative_test/claude-code-settings/invalid-inline-marketplace-source.json @@ -0,0 +1,10 @@ +{ + "extraKnownMarketplaces": { + "team-tools": { + "source": { + "name": "team-tools", + "source": "settings" + } + } + } +} diff --git a/src/negative_test/claude-code-settings/invalid-tls-terminate-property.json b/src/negative_test/claude-code-settings/invalid-tls-terminate-property.json new file mode 100644 index 00000000000..6939bb83a89 --- /dev/null +++ b/src/negative_test/claude-code-settings/invalid-tls-terminate-property.json @@ -0,0 +1,10 @@ +{ + "sandbox": { + "network": { + "tlsTerminate": { + "caCertPath": "/etc/corp/ca.pem", + "caChainPath": "/etc/corp/chain.pem" + } + } + } +} diff --git a/src/negative_test/claude-code-settings/invalid-vim-insert-mode-remap.json b/src/negative_test/claude-code-settings/invalid-vim-insert-mode-remap.json new file mode 100644 index 00000000000..5e2f784e67c --- /dev/null +++ b/src/negative_test/claude-code-settings/invalid-vim-insert-mode-remap.json @@ -0,0 +1,5 @@ +{ + "vimInsertModeRemaps": { + "jjj": "" + } +} diff --git a/src/schemas/json/claude-code-keybindings.json b/src/schemas/json/claude-code-keybindings.json index 6ac5f1193f0..c061b5aa193 100644 --- a/src/schemas/json/claude-code-keybindings.json +++ b/src/schemas/json/claude-code-keybindings.json @@ -45,8 +45,7 @@ "ModelPicker", "Select", "Plugin", - "Scroll", - "Doctor" + "Scroll" ] }, "keystrokePattern": { @@ -79,6 +78,8 @@ "app:toggleTranscript", "app:toggleBrief", "app:openArtifact", + "app:diffFileListUp", + "app:diffFileListDown", "history:search", "history:previous", "history:next", @@ -134,6 +135,7 @@ "footer:openSelected", "footer:clearSelection", "footer:close", + "footer:dismiss", "messageSelector:up", "messageSelector:down", "messageSelector:top", @@ -166,7 +168,6 @@ "settings:periodDay", "settings:periodWeek", "settings:sortByTokens", - "doctor:fix", "voice:pushToTalk", "scroll:lineUp", "scroll:lineDown", diff --git a/src/schemas/json/claude-code-settings.json b/src/schemas/json/claude-code-settings.json index 8b42230f517..b2e376d239a 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|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__.*)$", + "pattern": "^((Agent|Artifact|Bash|Cd|Edit|EnterWorktree|ExitPlanMode|Glob|Grep|KillShell|LSP|Monitor|MultiEdit|NotebookEdit|PowerShell|Read|ShareOnboardingGuide|Skill|TaskCreate|TaskGet|TaskList|TaskOutput|TaskStop|TaskUpdate|TodoWrite|ToolSearch|WebFetch|WebSearch|Workflow|Write)(\\([^)]+\\))?|mcp__.*)$", "examples": [ "Bash", "Bash(npm run build)", @@ -282,7 +282,7 @@ }, "autoMemoryEnabled": { "type": "boolean", - "description": "Enable automatic memory saves that capture useful context to .claude/memory/. Also configurable via CLAUDE_CODE_DISABLE_AUTO_MEMORY environment variable (set to 1 to disable, 0 to enable). See https://code.claude.com/docs/en/memory#auto-memory", + "description": "Enable automatic memory saves that capture useful context to ~/.claude/projects//memory/ (derived from the git repository, shared across worktrees). Also configurable via CLAUDE_CODE_DISABLE_AUTO_MEMORY environment variable (set to 1 to disable, 0 to enable). See https://code.claude.com/docs/en/memory#storage-location", "default": true }, "autoUpdatesChannel": { @@ -369,7 +369,7 @@ }, "ANTHROPIC_BEDROCK_SERVICE_TIER": { "type": "string", - "description": "Select Bedrock service tier; sent as X-Amzn-Bedrock-Service-Tier header. See https://github.com/anthropics/claude-code/blob/main/CHANGELOG.md#21122", + "description": "Select Bedrock service tier; sent as X-Amzn-Bedrock-Service-Tier header. See https://code.claude.com/docs/en/amazon-bedrock#service-tiers", "enum": ["default", "flex", "priority"] }, "ANTHROPIC_BETAS": { @@ -464,6 +464,10 @@ "type": "string", "description": "Microsoft Foundry authentication key" }, + "ANTHROPIC_FOUNDRY_AUTH_TOKEN": { + "type": "string", + "description": "Bearer token for Microsoft Foundry authentication, such as a Microsoft Entra access token. Claude Code sends it as the Authorization: Bearer header. Takes precedence over ANTHROPIC_FOUNDRY_API_KEY and over the Azure default credential chain. Requires Claude Code v2.1.203 or later. See https://code.claude.com/docs/en/microsoft-foundry" + }, "ANTHROPIC_FOUNDRY_BASE_URL": { "type": "string", "description": "Microsoft Foundry resource URL" @@ -486,11 +490,11 @@ }, "ANTHROPIC_VERTEX_BASE_URL": { "type": "string", - "description": "Override Google Vertex AI endpoint URL" + "description": "Override Google Cloud's Agent Platform (formerly Vertex AI) endpoint URL. Use for custom endpoints or when routing through an LLM gateway" }, "ANTHROPIC_VERTEX_PROJECT_ID": { "type": "string", - "description": "Google Vertex AI project ID" + "description": "GCP project ID for Google Cloud's Agent Platform (formerly Vertex AI) requests. Overridden by GCLOUD_PROJECT, GOOGLE_CLOUD_PROJECT, or the project in your GOOGLE_APPLICATION_CREDENTIALS credential file" }, "ANTHROPIC_WORKSPACE_ID": { "type": "string", @@ -502,7 +506,7 @@ }, "API_TIMEOUT_MS": { "type": "string", - "description": "API request timeout in milliseconds (default: 600000)" + "description": "Timeout for API requests in milliseconds (default: 600000, or 10 minutes; maximum: 2147483647). Increase this when requests time out on slow networks or when routing through a proxy. Values above the maximum overflow the underlying timer and cause requests to fail immediately." }, "AWS_BEARER_TOKEN_BEDROCK": { "type": "string", @@ -538,6 +542,14 @@ "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_AFK_COUNTDOWN_MS": { + "type": "string", + "description": "How many milliseconds before auto-continue the on-screen countdown appears on an unanswered AskUserQuestion dialog. Default 20000 (20 seconds). See CLAUDE_AFK_TIMEOUT_MS. Requires Claude Code v2.1.198 or later. See https://code.claude.com/docs/en/env-vars" + }, + "CLAUDE_AFK_TIMEOUT_MS": { + "type": "string", + "description": "How many milliseconds of idle time before an unanswered AskUserQuestion dialog auto-continues without you. Default 60000 (60 seconds). Requires Claude Code v2.1.198 or later. See https://code.claude.com/docs/en/env-vars" + }, "CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS": { "type": "string", "description": "Disable built-in subagent types in Agent SDK", @@ -618,6 +630,14 @@ "description": "Override automatic IDE connection behavior", "enum": ["true", "false"] }, + "CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS": { + "type": "string", + "description": "Time in milliseconds Claude Code waits for the AWS default credential provider chain to produce credentials before the request fails with \"AWS default-chain credential resolve timed out\" (default: 60000). Raise it when a step in your chain legitimately needs longer, such as a browser-based SSO sign-in with MFA through a wrapper like aws-vault. Applies wherever Claude Code signs with the default chain. Requires Claude Code v2.1.207 or later. See https://code.claude.com/docs/en/amazon-bedrock#credential-caching-and-resolution-timeout" + }, + "CLAUDE_CODE_BRIDGE_SESSION_ID": { + "type": "string", + "description": "Set automatically in Bash tool and hook command subprocesses while the session has an active Remote Control connection, and removed when the connection ends. The value is the session's ID in session_ form, the same identifier that appears in the session's claude.ai/code URL, so a script can link back to the session that ran it. Requires Claude Code v2.1.199 or later. See https://code.claude.com/docs/en/remote-control" + }, "CLAUDE_CODE_CERT_STORE": { "type": "string", "description": "CA certificate sources (comma-separated: 'bundled', 'system')" @@ -641,7 +661,7 @@ }, "CLAUDE_CODE_DEBUG_LOGS_DIR": { "type": "string", - "description": "Directory path for debug log files" + "description": "Override the debug log file path. Despite the name, this is a file path, not a directory." }, "CLAUDE_CODE_DEBUG_LOG_LEVEL": { "type": "string", @@ -693,6 +713,16 @@ "description": "Disable all background task functionality", "enum": ["0", "1"] }, + "CLAUDE_CODE_DISABLE_BEDROCK_CONTENT_TYPE_GUARD": { + "type": "string", + "description": "Set to 1 to skip the check that an Amazon Bedrock streaming response carries the application/vnd.amazon.eventstream content-type. Without this variable, a response with a different content-type fails with an error naming that content-type, which means a gateway or proxy is transforming the response. Set it only when the gateway rewrites the Content-Type header but passes the binary event-stream body through unmodified; if the body itself was transformed, requests fail with \"Truncated event message received\" instead. Requires Claude Code v2.1.208 or later. See https://code.claude.com/docs/en/amazon-bedrock#streaming-errors-behind-a-gateway-or-proxy", + "enum": ["0", "1"] + }, + "CLAUDE_CODE_DISABLE_BG_EXIT_HANDOFF": { + "type": "string", + "description": "Set to 1 to stop a background session's running background shell commands, dynamic workflows, and (as of v2.1.198) background subagents when the supervisor stops, restarts, or updates that session's process, instead of handing them off to the session's next process. Affects only that handoff; CLAUDE_DISABLE_ADOPT turns off both. Requires Claude Code v2.1.196 or later. See https://code.claude.com/docs/en/env-vars", + "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).", @@ -718,6 +748,11 @@ "description": "Strip anthropic-beta headers from API requests. See https://github.com/anthropics/claude-code/blob/main/CHANGELOG.md#21123", "enum": ["0", "1"] }, + "CLAUDE_CODE_DISABLE_EXPLORE_PLAN_AGENTS": { + "type": "string", + "description": "Set to 1 to disable the built-in Explore and Plan subagents. Requires Claude Code v2.1.198 or later. See https://code.claude.com/docs/en/env-vars", + "enum": ["0", "1"] + }, "CLAUDE_CODE_DISABLE_FAST_MODE": { "type": "string", "description": "Disable fast mode toggle", @@ -745,12 +780,12 @@ }, "CLAUDE_CODE_DISABLE_MOUSE": { "type": "string", - "description": "Disable mouse tracking in fullscreen mode", + "description": "Disable mouse tracking in fullscreen mode. See https://code.claude.com/docs/en/fullscreen#keep-native-text-selection", "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).", + "description": "Disable mouse click/drag/hover in fullscreen mode while keeping wheel scroll (requires v2.1.195+). CLAUDE_CODE_DISABLE_MOUSE takes precedence when both variables are set. See https://code.claude.com/docs/en/fullscreen#keep-native-text-selection", "enum": ["0", "1"] }, "CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": { @@ -763,14 +798,19 @@ "description": "Disable fallback to non-streaming API mode", "enum": ["0", "1"] }, + "CLAUDE_CODE_DISABLE_NOTIFICATION_PRESENCE_CHECK": { + "type": "string", + "description": "Set to 1 to send desktop notifications from the PushNotification tool even while focused on the terminal. Requires Claude Code v2.1.193 or later. See https://code.claude.com/docs/en/env-vars", + "enum": ["0", "1"] + }, "CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL": { "type": "string", - "description": "Skip automatic installation of official marketplace plugins", + "description": "Skip automatic installation of official marketplace plugins. See https://code.claude.com/docs/en/env-vars", "enum": ["0", "1"] }, "CLAUDE_CODE_DISABLE_POLICY_SKILLS": { "type": "string", - "description": "Skip loading system-wide policy skills", + "description": "Skip loading system-wide policy skills. See https://code.claude.com/docs/en/env-vars", "enum": ["0", "1"] }, "CLAUDE_CODE_DISABLE_TERMINAL_TITLE": { @@ -798,6 +838,11 @@ "description": "Reasoning effort level", "enum": ["low", "medium", "high", "xhigh", "max", "auto"] }, + "CLAUDE_CODE_ENABLE_APPEND_SUBAGENT_PROMPT": { + "type": "string", + "description": "Set to 1 to enable appending extra text to the end of every subagent's system prompt. The --append-subagent-system-prompt flag supplies the appended text and sets this variable automatically, so you do not need to set it yourself. Requires Claude Code v2.1.205 or later. See https://code.claude.com/docs/en/sub-agents", + "enum": ["0", "1"] + }, "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", @@ -810,7 +855,7 @@ }, "CLAUDE_CODE_ENABLE_BACKGROUND_PLUGIN_REFRESH": { "type": "string", - "description": "Refresh plugins at turn boundaries", + "description": "Refresh plugins at turn boundaries. See https://code.claude.com/docs/en/env-vars", "enum": ["0", "1"] }, "CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL": { @@ -833,6 +878,10 @@ "description": "Enable prompt suggestions", "enum": ["true", "false"] }, + "CLAUDE_CODE_ENABLE_SDK_FILE_CHECKPOINTING": { + "type": "string", + "description": "Enable file checkpointing for a non-interactive CLI run, so `claude -p --resume --rewind-files ` can rewind files. The Agent SDK sets this internally when enable_file_checkpointing (Python) or enableFileCheckpointing (TypeScript) is enabled; the bare CLI never sets it. Without it, a non-interactive rewind fails with \"File rewinding is not enabled\". See https://code.claude.com/docs/en/agent-sdk/file-checkpointing" + }, "CLAUDE_CODE_ENABLE_TASKS": { "type": "string", "description": "Enable task tracking in non-interactive mode", @@ -885,6 +934,11 @@ "description": "Fork subagent processes in non-interactive sessions. See https://github.com/anthropics/claude-code/blob/main/CHANGELOG.md#21120", "enum": ["0", "1"] }, + "CLAUDE_CODE_FORWARD_SUBAGENT_TEXT": { + "type": "string", + "description": "Set to 1 to emit subagent text and thinking blocks in claude -p --output-format stream-json output, the same behavior as the --forward-subagent-text flag. Use the variable when a harness invokes claude and cannot pass the flag itself. Unlike the flag, which exits with an error outside non-interactive mode with stream-json output, the variable is ignored there so that nested invocations keep working when it is set process-wide. Requires Claude Code v2.1.211 or later. See https://code.claude.com/docs/en/sub-agents", + "enum": ["0", "1"] + }, "CLAUDE_CODE_GIT_BASH_PATH": { "type": "string", "description": "Path to Git Bash executable (Windows only)" @@ -922,6 +976,10 @@ "description": "Skip IDE lockfile validation", "enum": ["0", "1"] }, + "CLAUDE_CODE_MAX_CONCURRENT_SUBAGENTS": { + "type": "string", + "description": "How many subagents can be running in one session before the Agent tool refuses to spawn another (default: 20). Accepts a positive whole number in plain digits; anything else is ignored, so the variable can adjust the cap but cannot disable it. Requires Claude Code v2.1.217 or later. See https://code.claude.com/docs/en/sub-agents#concurrent-subagent-limit" + }, "CLAUDE_CODE_MAX_CONTEXT_TOKENS": { "type": "string", "description": "Override context window size in tokens" @@ -934,6 +992,14 @@ "type": "string", "description": "Maximum API request retry attempts (default: 10)" }, + "CLAUDE_CODE_MAX_SUBAGENTS_PER_SESSION": { + "type": "string", + "description": "Cap on the number of subagents one session can spawn with the Agent tool (default: 200). When Claude reaches the cap, spawning another subagent fails with an error telling Claude to finish the remaining work directly. Accepts a positive whole number in plain digits with no upper bound; this variable does not take the scientific notation or digit-separator spellings. Anything else is ignored and the default applies, so the cap can be raised but not turned off. Requires Claude Code v2.1.212 or later. See https://code.claude.com/docs/en/sub-agents#session-subagent-limit" + }, + "CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH": { + "type": "string", + "description": "Number of subagent layers allowed below the main conversation (default: 1). At the default, subagents cannot spawn their own subagents; set 2 or higher to allow it. Accepts a positive whole number in plain digits; anything else is ignored, so the limit can be raised but not turned off. Requires Claude Code v2.1.217 or later. See https://code.claude.com/docs/en/sub-agents#let-subagents-spawn-their-own-subagents" + }, "CLAUDE_CODE_MAX_TOOL_USE_CONCURRENCY": { "type": "string", "description": "Maximum parallel tool executions (default: 10)" @@ -942,14 +1008,22 @@ "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_MAX_WEB_SEARCHES_PER_SESSION": { + "type": "string", + "description": "Cap on the total number of WebSearch calls one session can make (default: 200). When Claude reaches the cap, further WebSearch calls return a notice telling it to continue with the information it already gathered. Accepts a positive whole number with no upper bound. Anything else is ignored and the default applies, so the cap can be raised but not turned off. Requires Claude Code v2.1.212 or later. See https://code.claude.com/docs/en/tools-reference#websearch-tool-behavior" + }, "CLAUDE_CODE_MCP_ALLOWLIST_ENV": { "type": "string", "description": "Isolate MCP server environments to allowlisted variables", "enum": ["0", "1"] }, + "CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS": { + "type": "string", + "description": "Elapsed time in milliseconds before a still-running MCP tool call moves to a background task (default: 120000, or 2 minutes). Set to 0 to turn automatic backgrounding off. Requires Claude Code v2.1.212 or later. See https://code.claude.com/docs/en/mcp#automatic-backgrounding-of-long-tool-calls" + }, "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" + "description": "Idle timeout in milliseconds for MCP tool calls. When a stdio, 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. Overrides the per-transport defaults of 300000 (5 minutes) for network servers and 1800000 (30 minutes) for stdio servers. 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. A per-server timeout in .mcp.json of at least 1000 raises that server's idle window to at least the timeout value. Does not apply to IDE servers or SDK in-process servers. Requires Claude Code v2.1.187 or later. Before v2.1.203, stdio servers were exempt from the idle timeout. See https://code.claude.com/docs/en/mcp" }, "CLAUDE_CODE_NATIVE_CURSOR": { "type": "string", @@ -978,10 +1052,9 @@ "type": "string", "description": "OAuth access token" }, - "CLAUDE_CODE_OPUS_4_6_FAST_MODE_OVERRIDE": { + "CLAUDE_CODE_OTEL_CONTENT_MAX_LENGTH": { "type": "string", - "enum": ["0", "1"], - "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" + "description": "Maximum length of content-bearing OpenTelemetry attributes (model responses, tool content, system prompts, raw API bodies), truncation marker included, in UTF-16 code units (default: 61440, i.e. 60 KB). Raise it only if your telemetry backend accepts attribute values larger than 64 KB, or lower it to cut telemetry volume. Requires Claude Code v2.1.214 or later. See https://code.claude.com/docs/en/monitoring-usage#common-configuration-variables" }, "CLAUDE_CODE_OTEL_DIAG_STDERR": { "type": "string", @@ -1012,7 +1085,7 @@ }, "CLAUDE_CODE_PLUGIN_CACHE_DIR": { "type": "string", - "description": "Root directory for plugin cache" + "description": "Override the plugins root directory. Despite the name, this sets the parent directory, not the cache itself: marketplaces and the plugin cache live in subdirectories under this path. Defaults to ~/.claude/plugins. See https://code.claude.com/docs/en/env-vars" }, "CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS": { "type": "string", @@ -1030,7 +1103,7 @@ }, "CLAUDE_CODE_PLUGIN_SEED_DIR": { "type": "string", - "description": "Path(s) to pre-populated plugin directories" + "description": "Path(s) to pre-populated plugin directories. See https://code.claude.com/docs/en/plugin-marketplaces#pre-populate-plugins-for-containers" }, "CLAUDE_CODE_POWERSHELL_RESPECT_EXECUTION_POLICY": { "type": "string", @@ -1041,6 +1114,10 @@ "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_PROCESS_WRAPPER": { + "type": "string", + "description": "Launch the processes Claude Code starts from its own binary, such as the background service that hosts agent view sessions, through a corporate launcher given as an argv prefix like /opt/corp/launcher. Set it in the env block of user or managed settings, not as a shell export, so the detached background service inherits it; project and local settings cannot set it. Equivalent to the processWrapper setting, which requires Claude Code v2.1.210 or later; this variable takes precedence when both are set. The VS Code extension configures its own launcher separately through its claudeProcessWrapper setting. Ignored on Windows. Requires Claude Code v2.1.208 or later. See https://code.claude.com/docs/en/corporate-launcher" + }, "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", @@ -1070,6 +1147,10 @@ "description": "Automatically resume from a mid-turn interruption", "enum": ["0", "1"] }, + "CLAUDE_CODE_RESUME_INTERRUPTED_TURN_MAX_AGE_MS": { + "type": "string", + "description": "Maximum age in milliseconds of the last transcript message for a session that ended mid-turn to continue automatically on resume. When the last message is older than this bound, Claude Code skips both the CLAUDE_CODE_RESUME_INTERRUPTED_TURN automatic resume and the injected CLAUDE_CODE_RESUME_PROMPT continuation message, and the session starts idle so you continue explicitly. Unset or 0 means no bound; a negative or non-numeric value applies a one-hour bound. Spawn scripts for long-running agents can set this so a restart against an old transcript does not re-run a stale prompt. Claude Code sets a one-hour bound itself when it restarts a crashed agent view session that inherited its conversation from an interactive session. Requires Claude Code v2.1.211 or later. See https://code.claude.com/docs/en/env-vars" + }, "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" @@ -1090,7 +1171,7 @@ }, "CLAUDE_CODE_SCROLL_SPEED": { "type": "string", - "description": "Mouse wheel scroll speed multiplier (1-20)" + "description": "Set the mouse wheel scroll multiplier in fullscreen rendering. Accepts any positive value up to 20, including fractional values below 1 such as 0.5 to slow accelerated trackpad and wheel scrolling in terminals that already amplify wheel events. Set to 3 to match vim if your terminal sends one wheel event per notch without amplification. See https://code.claude.com/docs/en/fullscreen#mouse-wheel-scrolling" }, "CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS": { "type": "string", @@ -1123,11 +1204,26 @@ "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_AWS_CRED_CACHE": { + "type": "string", + "description": "Set to 1 to turn off the in-process cache of credentials resolved from the AWS default credential provider chain, so Claude Code resolves the chain on every API request. With the cache off, an SSO-backed profile requests credentials from IAM Identity Center on every request. Requires Claude Code v2.1.207 or later. See https://code.claude.com/docs/en/amazon-bedrock#credential-caching-and-resolution-timeout", + "enum": ["0", "1"] + }, "CLAUDE_CODE_SKIP_BEDROCK_AUTH": { "type": "string", "description": "Skip AWS authentication for Bedrock", "enum": ["0", "1"] }, + "CLAUDE_CODE_SKIP_FAST_MODE_NETWORK_ERRORS": { + "type": "string", + "description": "Set to 1 to treat a failed fast mode availability check as available, for networks that block the check's direct request to api.anthropic.com. Claude Code still honors a \"disabled by your organization\" response. See https://code.claude.com/docs/en/fast-mode#use-fast-mode-behind-proxies-and-llm-gateways", + "enum": ["0", "1"] + }, + "CLAUDE_CODE_SKIP_FAST_MODE_ORG_CHECK": { + "type": "string", + "description": "Set to 1 to skip the client-side fast mode availability check, for proxies that intercept the check's request rather than refuse it. The API still rejects fast mode requests when your organization has fast mode disabled. See https://code.claude.com/docs/en/fast-mode#use-fast-mode-behind-proxies-and-llm-gateways", + "enum": ["0", "1"] + }, "CLAUDE_CODE_SKIP_FOUNDRY_AUTH": { "type": "string", "description": "Skip Azure authentication for Foundry", @@ -1145,7 +1241,7 @@ }, "CLAUDE_CODE_SKIP_VERTEX_AUTH": { "type": "string", - "description": "Skip Google authentication for Vertex AI", + "description": "Skip Google authentication for Google Cloud's Agent Platform", "enum": ["0", "1"] }, "CLAUDE_CODE_STOP_HOOK_BLOCK_CAP": { @@ -1196,6 +1292,10 @@ "type": "string", "description": "Agent team membership name" }, + "CLAUDE_CODE_TEAM_TEARDOWN_PARK_TIMEOUT_MS": { + "type": "string", + "description": "Override, in milliseconds, how long a non-interactive session waits at exit for its agent team to finish tearing down. Accepts 1000 to 60000; an out-of-range value is ignored and the default of 10000 applies. Requires Claude Code v2.1.206 or later. See https://code.claude.com/docs/en/agent-teams" + }, "CLAUDE_CODE_TMPDIR": { "type": "string", "description": "Override temp directory path" @@ -1237,13 +1337,18 @@ }, "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", + "description": "Enable Google Cloud's Agent Platform 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_DISABLE_ADOPT": { + "type": "string", + "description": "Set to 1 to stop in-flight background work instead of carrying it over when you background a session by pressing ← or with /background. Claude Code asks you to confirm before backgrounding, then stops the tasks that would otherwise carry over. Requires Claude Code v2.1.195 or later. See https://code.claude.com/docs/en/env-vars", + "enum": ["0", "1"] + }, "CLAUDE_EFFORT": { "type": "string", "enum": ["low", "medium", "high", "xhigh", "max"], @@ -1261,13 +1366,17 @@ }, "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", + "description": "Set to 1 to force-enable, or 0 to force-disable, the event-level streaming idle watchdog. When unset, the watchdog is on by default for all providers (as of v2.1.196; before that the unset default was 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_PID": { + "type": "string", + "description": "Claude Code sets this to its own process ID in the subprocesses it spawns: Bash and PowerShell tool commands and hook commands. On Linux, the Bash tool's shell integration uses it to refuse a pkill pattern that would match the Claude Code process itself. Read it from your own scripts to identify or signal the parent Claude Code process deliberately. Requires Claude Code v2.1.214 or later. See https://code.claude.com/docs/en/errors#pkill-pattern-matches-the-claude-code-process" + }, "CLAUDE_PROJECT_DIR": { "type": "string", "description": "Project root directory path (also provided to hooks)" @@ -1282,7 +1391,7 @@ }, "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" + "description": "Google Cloud's Agent Platform 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", @@ -1420,7 +1529,7 @@ }, "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" + "description": "Control MCP tool search: \"true\" always defers and sends the beta header (requests fail on Google Cloud's Agent Platform 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", @@ -1431,6 +1540,11 @@ "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_HYPERLINK": { + "type": "string", + "description": "Set to 1 to enable clickable OSC 8 hyperlinks when your terminal supports them but is not auto-detected, or 0 to disable them", + "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", @@ -1438,7 +1552,7 @@ }, "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" + "description": "Path to a GCP credential configuration file (service account key or workload identity federation config) used for Google Cloud's Agent Platform authentication. See https://code.claude.com/docs/en/google-vertex-ai#3-configure-gcp-credentials" }, "HTTPS_PROXY": { "type": "string", @@ -1506,6 +1620,10 @@ "type": "string", "description": "Domains to bypass proxy (space or comma-separated, or '*' for all)" }, + "OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT": { + "type": "string", + "description": "Standard OpenTelemetry SDK limit on attribute value length. Claude Code caps content-bearing telemetry attributes at the smaller of this and CLAUDE_CODE_OTEL_CONTENT_MAX_LENGTH, so the truncation marker stays within the SDK limit. Claude Code reads the OTEL_LOGRECORD_ATTRIBUTE_VALUE_LENGTH_LIMIT and OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT variants the same way, and the smallest set value applies to all signals. Requires Claude Code v2.1.214 or later. See https://code.claude.com/docs/en/monitoring-usage#common-configuration-variables" + }, "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" @@ -1526,6 +1644,14 @@ "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_CLIENT_CERTIFICATE": { + "type": "string", + "description": "Path to the client certificate for gRPC OTLP mTLS, overriding OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE for logs only. See https://code.claude.com/docs/en/monitoring-usage#mtls-authentication" + }, + "OTEL_EXPORTER_OTLP_LOGS_CLIENT_KEY": { + "type": "string", + "description": "Path to the client private key for gRPC OTLP mTLS, overriding OTEL_EXPORTER_OTLP_CLIENT_KEY for logs only. See https://code.claude.com/docs/en/monitoring-usage#mtls-authentication" + }, "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" @@ -1535,6 +1661,14 @@ "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_CLIENT_CERTIFICATE": { + "type": "string", + "description": "Path to the client certificate for gRPC OTLP mTLS, overriding OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE for metrics only. See https://code.claude.com/docs/en/monitoring-usage#mtls-authentication" + }, + "OTEL_EXPORTER_OTLP_METRICS_CLIENT_KEY": { + "type": "string", + "description": "Path to the client private key for gRPC OTLP mTLS, overriding OTEL_EXPORTER_OTLP_CLIENT_KEY for metrics only. See https://code.claude.com/docs/en/monitoring-usage#mtls-authentication" + }, "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" @@ -1554,6 +1688,14 @@ "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_CLIENT_CERTIFICATE": { + "type": "string", + "description": "Path to the client certificate for gRPC OTLP mTLS, overriding OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE for traces only. See https://code.claude.com/docs/en/monitoring-usage#mtls-authentication" + }, + "OTEL_EXPORTER_OTLP_TRACES_CLIENT_KEY": { + "type": "string", + "description": "Path to the client private key for gRPC OTLP mTLS, overriding OTEL_EXPORTER_OTLP_CLIENT_KEY for traces only. See https://code.claude.com/docs/en/monitoring-usage#mtls-authentication" + }, "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" @@ -1701,6 +1843,14 @@ "type": "string", "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" }, + "VERTEX_REGION_CLAUDE_5_OPUS": { + "type": "string", + "description": "Override region for Claude Opus 5 when using Google Cloud's Agent Platform (formerly Vertex AI). Added in v2.1.219. See https://code.claude.com/docs/en/google-vertex-ai" + }, + "VERTEX_REGION_CLAUDE_5_SONNET": { + "type": "string", + "description": "Override region for Claude Sonnet 5 when using Google Cloud's Agent Platform (formerly Vertex AI). Added in v2.1.197. See https://code.claude.com/docs/en/google-vertex-ai" + }, "VERTEX_REGION_CLAUDE_FABLE_5": { "type": "string", "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" @@ -1730,6 +1880,11 @@ "pr": { "type": "string", "description": "Attribution for pull request descriptions. Empty string hides pull request attribution" + }, + "sessionUrl": { + "type": "boolean", + "description": "Whether to append the claude.ai session link as a Claude-Session trailer on commits and a link in pull request descriptions when running from a web or Remote Control session. Defaults to true; set to false to omit the link. See https://code.claude.com/docs/en/settings#attribution-settings", + "default": true } } }, @@ -1790,9 +1945,10 @@ "delegate", "dontAsk", "plan", - "auto" + "auto", + "manual" ], - "description": "Default permission mode.\n\"default\": prompts on first use.\n\"acceptEdits\": auto-accepts file edits.\n\"plan\": read-only, no modifications.\nUNDOCUMENTED. \"delegate\": coordination-only for agent team leads (agent teams are experimental; enable via CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS).\n\"dontAsk\": auto-denies unless pre-approved via permissions.\n\"bypassPermissions\": skips all prompts (use only in isolated environments).\n\"auto\": auto-approves tool calls with background safety checks that verify actions align with your request.\nSee https://code.claude.com/docs/en/permissions" + "description": "Default permission mode.\n\"default\": prompts on first use.\nUNDOCUMENTED. \"manual\": accepted alias for \"default\" (the CLI/VS Code/JetBrains UI now labels this mode \"Manual\" as of v2.1.200; permission-modes.md has not yet been updated to mention it).\n\"acceptEdits\": auto-accepts file edits.\n\"plan\": read-only, no modifications.\nUNDOCUMENTED. \"delegate\": coordination-only for agent team leads (agent teams are experimental; enable via CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS).\n\"dontAsk\": auto-denies unless pre-approved via permissions.\n\"bypassPermissions\": skips all prompts (use only in isolated environments).\n\"auto\": auto-approves tool calls with background safety checks that verify actions align with your request.\nSee https://code.claude.com/docs/en/permissions" }, "disableBypassPermissionsMode": { "type": "string", @@ -1862,7 +2018,7 @@ }, "fastMode": { "type": "boolean", - "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", + "description": "Enable fast mode, which uses Claude Opus 5 by default (since v2.1.219) for faster output at higher per-token cost without downgrading to a smaller model. Requires extra usage enabled. Toggle with the /fast command. Supported on Opus 5 and Opus 4.8; fast mode for Opus 4.7 was deprecated on June 25, 2026 and removed on July 24, 2026. Before v2.1.219 fast mode defaulted to Opus 4.8 (v2.1.154 through v2.1.218) and to Opus 4.7 (v2.1.142 through v2.1.153). See https://code.claude.com/docs/en/fast-mode", "default": false }, "fastModePerSessionOptIn": { @@ -2229,6 +2385,13 @@ "items": { "$ref": "#/$defs/hookMatcher" } + }, + "DirectoryAdded": { + "type": "array", + "description": "UNDOCUMENTED. Hooks that run after /add-dir or the SDK register_repo_root control request registers a new working directory mid-session (added v2.1.219)", + "items": { + "$ref": "#/$defs/hookMatcher" + } } } }, @@ -2410,6 +2573,10 @@ "path": { "type": "string", "description": "Path to marketplace.json within repo (defaults to .claude-plugin/marketplace.json)" + }, + "skipLfs": { + "type": "boolean", + "description": "Skip Git LFS downloads when Claude Code clones or updates the marketplace repository. LFS pointer files remain as pointers instead of downloading their content. Use this when the repository contains large LFS objects unrelated to plugin content. Requires Claude Code v2.1.153 or later" } }, "required": ["source", "repo"], @@ -2435,6 +2602,10 @@ "path": { "type": "string", "description": "Path to marketplace.json within repo (defaults to .claude-plugin/marketplace.json)" + }, + "skipLfs": { + "type": "boolean", + "description": "Skip Git LFS downloads when Claude Code clones or updates the marketplace repository. LFS pointer files remain as pointers instead of downloading their content. Use this when the repository contains large LFS objects unrelated to plugin content. Requires Claude Code v2.1.153 or later" } }, "required": ["source", "url"], @@ -2487,6 +2658,142 @@ }, "required": ["source", "path"], "additionalProperties": false + }, + { + "type": "object", + "properties": { + "source": { + "type": "string", + "description": "Identifies the marketplace source type", + "const": "settings" + }, + "name": { + "type": "string", + "description": "Name of the inline marketplace" + }, + "plugins": { + "type": "array", + "description": "Plugins declared inline. Each must reference an external source such as GitHub or npm. You still need to enable each plugin separately in enabledPlugins", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Plugin name" + }, + "source": { + "description": "External source the plugin is fetched from. Inline plugins must reference external sources such as GitHub or npm, not relative paths", + "anyOf": [ + { + "type": "object", + "properties": { + "source": { + "type": "string", + "description": "Identifies the plugin source type", + "const": "github" + }, + "repo": { + "type": "string", + "description": "GitHub repository in owner/repo format" + }, + "ref": { + "type": "string", + "description": "Git branch or tag" + }, + "sha": { + "type": "string", + "description": "Exact commit SHA to pin the plugin to" + } + }, + "required": ["source", "repo"], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "source": { + "type": "string", + "description": "Identifies the plugin source type", + "const": "url" + }, + "url": { + "type": "string", + "description": "Git URL source" + }, + "ref": { + "type": "string", + "description": "Git branch or tag" + }, + "sha": { + "type": "string", + "description": "Exact commit SHA to pin the plugin to" + } + }, + "required": ["source", "url"], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "source": { + "type": "string", + "description": "Identifies the plugin source type", + "const": "git-subdir" + }, + "url": { + "type": "string", + "description": "Git repository URL" + }, + "path": { + "type": "string", + "description": "Subdirectory within the git repo. Clones sparsely to minimize bandwidth for monorepos" + }, + "ref": { + "type": "string", + "description": "Git branch or tag" + }, + "sha": { + "type": "string", + "description": "Exact commit SHA to pin the plugin to" + } + }, + "required": ["source", "url", "path"], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "source": { + "type": "string", + "description": "Identifies the plugin source type", + "const": "npm" + }, + "package": { + "type": "string", + "description": "npm package name (supports scoped packages)" + }, + "version": { + "type": "string", + "description": "Package version" + }, + "registry": { + "type": "string", + "description": "npm registry URL" + } + }, + "required": ["source", "package"], + "additionalProperties": false + } + ] + } + }, + "required": ["name", "source"], + "additionalProperties": false + } + } + }, + "required": ["source", "name", "plugins"], + "additionalProperties": false } ], "description": "Where to fetch the marketplace from" @@ -2687,7 +2994,7 @@ "type": "string", "minLength": 1 }, - "description": "List of marketplace names the user has chosen not to install when prompted" + "description": "List of marketplace names the user has chosen not to install when prompted. See https://code.claude.com/docs/en/discover-plugins" }, "skippedPlugins": { "type": "array", @@ -2695,19 +3002,30 @@ "type": "string", "minLength": 1 }, - "description": "List of plugin IDs (plugin@marketplace format) the user has chosen not to install when prompted" + "description": "List of plugin IDs (plugin@marketplace format) the user has chosen not to install when prompted. See https://code.claude.com/docs/en/discover-plugins" }, "forceLoginMethod": { "type": "string", - "enum": ["claudeai", "console"], - "description": "Force a specific login method: \"claudeai\" for Claude Pro/Max, \"console\" for Console billing", + "enum": ["claudeai", "console", "gateway"], + "description": "Use \"claudeai\" to restrict login to Claude.ai accounts, \"console\" to restrict login to Claude Console accounts, or \"gateway\" to restrict login to a cloud gateway. On Claude Code v2.1.212 or later, every first-party login path enforces the restriction, including the VS Code extension, the Agent SDK, `claude setup-token`, and /install-github-app; before v2.1.212, only terminal logins enforced it. See https://code.claude.com/docs/en/authentication#restrict-login-to-your-organization", "examples": ["claudeai"] }, "forceLoginOrgUUID": { - "type": "string", - "description": "Organization UUID to use for OAuth login", - "examples": ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"], - "minLength": 1 + "oneOf": [ + { + "type": "string", + "minLength": 1 + }, + { + "type": "array", + "items": { + "type": "string", + "minLength": 1 + } + } + ], + "description": "Organization UUID to use for OAuth login, or an array of UUIDs to allow several organizations. An empty array fails closed and blocks every login. See https://code.claude.com/docs/en/authentication#restrict-login-to-your-organization", + "examples": ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"] }, "otelHeadersHelper": { "type": "string", @@ -2716,8 +3034,8 @@ }, "outputStyle": { "type": "string", - "description": "Controls the output style for assistant responses. Built-in styles: default, Explanatory, Learning. Custom styles can be added in ~/.claude/output-styles/ or .claude/output-styles/. See https://code.claude.com/docs/en/output-styles", - "examples": ["default", "Explanatory", "Learning"], + "description": "Controls the output style for assistant responses. Built-in styles: default, Proactive, Explanatory, Learning. Custom styles can be added in ~/.claude/output-styles/ or .claude/output-styles/. See https://code.claude.com/docs/en/output-styles", + "examples": ["default", "Proactive", "Explanatory", "Learning"], "minLength": 1 }, "skipWebFetchPreflight": { @@ -2787,6 +3105,25 @@ }, "description": "macOS only. Additional XPC/Mach service names the sandbox may look up. Supports a single trailing * for prefix matching. Needed for tools that communicate via XPC such as the iOS Simulator or Playwright. See https://code.claude.com/docs/en/sandboxing#network-isolation", "examples": [["com.apple.coresimulator.*"]] + }, + "tlsTerminate": { + "type": "object", + "description": "Experimental. Terminate TLS inside the sandbox proxy so it can read the contents of HTTPS requests. Required for mask credential substitution. Set {} to generate an ephemeral certificate authority for the session, or set caCertPath and caKeyPath to use your own. Only honored from user, managed, or CLI --settings settings, not from .claude/settings.json or .claude/settings.local.json. Requires Claude Code v2.1.199 or later. See https://code.claude.com/docs/en/sandboxing#protect-credentials", + "properties": { + "caCertPath": { + "type": "string", + "description": "Path to your own certificate authority certificate" + }, + "caKeyPath": { + "type": "string", + "description": "Path to your own certificate authority private key" + } + }, + "additionalProperties": false + }, + "strictAllowlist": { + "type": "boolean", + "description": "UNDOCUMENTED. Deny non-allowlisted hosts for sandboxed commands without prompting (added v2.1.219). See https://code.claude.com/docs/en/sandboxing#network-isolation" } }, "additionalProperties": false @@ -2816,7 +3153,7 @@ }, "enableWeakerNetworkIsolation": { "type": "boolean", - "description": "macOS only. Allow access to the system TLS trust service (com.apple.trustd.agent) in the sandbox. Required for Go-based tools like gh, gcloud, and terraform to verify TLS certificates when using httpProxyPort with a MITM proxy and custom CA. Reduces security by opening a potential data exfiltration path. Default: false. See https://code.claude.com/docs/en/settings#sandbox-settings", + "description": "macOS only. Allow access to the system TLS trust service (com.apple.trustd.agent) in the sandbox. Required for Go-based tools like gh, gcloud, and terraform to verify TLS certificates when using httpProxyPort with a MITM proxy and custom CA. Reduces security by opening a potential data exfiltration path. Default: false. See https://code.claude.com/docs/en/sandboxing", "default": false }, "enableWeakerNestedSandbox": { @@ -2870,6 +3207,11 @@ "allowManagedReadPathsOnly": { "type": "boolean", "description": "(Managed settings only) When true, only allowRead paths from managed settings are used; user, project, and local allowRead entries are ignored. denyRead still merges from all sources. See https://code.claude.com/docs/en/sandboxing#filesystem-isolation" + }, + "disabled": { + "type": "boolean", + "description": "Skip filesystem isolation while keeping network isolation: sandboxed commands get unrestricted read and write access to the host filesystem, and network egress stays confined to network.allowedDomains. Only honored from user, managed, or CLI --settings settings (default: false). Requires Claude Code v2.1.216 or later. See https://code.claude.com/docs/en/sandboxing#disable-filesystem-isolation", + "default": false } }, "additionalProperties": false @@ -2960,6 +3302,11 @@ }, "required": ["name", "mode"] } + }, + "allowPlaintextInject": { + "type": "boolean", + "description": "Allow mask substitution on plain HTTP requests as well as TLS-terminated HTTPS. On plain HTTP the upstream identity is unverified and the credential travels in cleartext, so leave this off outside trusted test networks. Only honored from user, managed, or CLI --settings settings, not from .claude/settings.json or .claude/settings.local.json (default: false). Requires Claude Code v2.1.199 or later. See https://code.claude.com/docs/en/sandboxing#protect-credentials", + "default": false } } }, @@ -3404,7 +3751,7 @@ "disableDeepLinkRegistration": { "type": "string", "enum": ["disable"], - "description": "Set to \"disable\" to prevent Claude Code from registering the `claude://` deep-link protocol handler on startup. Most useful in managed settings where users cannot override it. See https://code.claude.com/docs/en/settings#available-settings" + "description": "Set to \"disable\" to prevent Claude Code from registering the `claude-cli://` deep-link protocol handler on startup. Most useful in managed settings where users cannot override it. See https://code.claude.com/docs/en/settings#available-settings" }, "disableSkillShellExecution": { "type": "boolean", @@ -3540,7 +3887,7 @@ "additionalProperties": true } }, - "maxSkillDescriptionChars": { + "skillListingMaxDescChars": { "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", @@ -3812,6 +4159,105 @@ "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" + }, + "askUserQuestionTimeout": { + "type": "string", + "description": "Idle time before an unanswered AskUserQuestion dialog auto-continues with whatever options you had already selected. Accepts \"60s\", \"5m\", \"10m\", or \"never\" (default: \"never\", which waits until you answer). Appears in /config as Question auto-continue timeout, which writes this key to user settings. Not read from project or local settings. Requires Claude Code v2.1.200 or later. See https://code.claude.com/docs/en/settings#available-settings", + "enum": ["60s", "5m", "10m", "never"], + "default": "never" + }, + "teammateDefaultModel": { + "type": ["string", "null"], + "description": "Default model for agent team teammates when the spawn prompt does not specify one. Set to a model alias such as \"sonnet\", or null to inherit the lead's current /model selection. Appears in /config as Default teammate model. See https://code.claude.com/docs/en/agent-teams", + "examples": ["sonnet"] + }, + "workflowSizeGuideline": { + "type": "string", + "description": "Sets the agent count Claude aims for in the dynamic workflows it writes. Claude Code sends the value to Claude as advice, not an enforced cap. Accepts \"unrestricted\" (default, which sends no guideline), \"small\", \"medium\", or \"large\". Appears in /config as Dynamic workflow size, and can be set with /config workflowSizeGuideline=small. Requires Claude Code v2.1.202 or later. On v2.1.203 or later the guideline's agent count also replaces the default threshold for the Large workflow warning. See https://code.claude.com/docs/en/workflows#set-a-size-guideline", + "enum": ["unrestricted", "small", "medium", "large"], + "default": "unrestricted" + }, + "enableArtifact": { + "type": "boolean", + "description": "Enable or disable the Artifact tool for this user. When unset, the default follows the feature's availability for your account. The Artifacts row in /config writes this key. A managed disableArtifact and your organization's admin setting take precedence, and the key is ignored in project and local settings (.claude/settings.json, .claude/settings.local.json), which a repository could otherwise commit. Requires Claude Code v2.1.196 or later. See https://code.claude.com/docs/en/artifacts" + }, + "permissionExplainerEnabled": { + "type": "boolean", + "description": "Show a model-generated explanation of the command when you press Ctrl+E on a Bash or PowerShell permission prompt (default: true). Set to false to turn the shortcut off. See https://code.claude.com/docs/en/permissions#permission-system", + "default": true + }, + "diffTool": { + "type": "string", + "description": "Where to display file diffs when an IDE is connected: \"auto\" (default) opens diffs in the IDE's diff viewer, \"terminal\" keeps them in the terminal. Appears in /config as Diff tool only when Claude Code is connected to a VS Code or JetBrains IDE. See https://code.claude.com/docs/en/settings#global-config-settings", + "enum": ["auto", "terminal"], + "default": "auto" + }, + "externalEditorContext": { + "type": "boolean", + "description": "Prepend Claude's previous response as #-commented context when you open the external editor with Ctrl+G (default: false). Appears in /config as Show last response in external editor. See https://code.claude.com/docs/en/settings#global-config-settings", + "default": false + }, + "autoConnectIde": { + "type": "boolean", + "description": "Automatically connect to a running IDE when Claude Code starts from an external terminal (default: false). Appears in /config as Auto-connect to IDE (external terminal) when running outside a VS Code or JetBrains terminal. Also configurable via the CLAUDE_CODE_AUTO_CONNECT_IDE environment variable, which overrides this when set. See https://code.claude.com/docs/en/settings#global-config-settings", + "default": false + }, + "autoInstallIdeExtension": { + "type": "boolean", + "description": "Automatically install the Claude Code IDE extension when running from a VS Code terminal (default: true). Appears in /config as Auto-install IDE extension when running inside a VS Code or JetBrains terminal. You can also set the CLAUDE_CODE_IDE_SKIP_AUTO_INSTALL environment variable to 1. See https://code.claude.com/docs/en/settings#global-config-settings", + "default": true + }, + "emojiCompletionEnabled": { + "type": "boolean", + "description": "Show emoji suggestions when you type : plus a shortcode in the prompt input, and replace a completed shortcode such as :heart: with its emoji (default: true). Set to false to disable both. Requires Claude Code v2.1.217 or later. See https://code.claude.com/docs/en/interactive-mode#emoji-shortcodes", + "default": true + }, + "vimInsertModeRemaps": { + "type": "object", + "description": "Map two-key INSERT-mode sequences to Escape in vim editor mode. Each key is exactly two printable characters typed in sequence, and \"\" is the only supported target; other entries are ignored. Read from user, --settings flag, and managed settings only, so a repository's checked-in settings cannot remap your keystrokes. Has no effect unless editorMode is \"vim\". Requires Claude Code v2.1.208 or later. See https://code.claude.com/docs/en/interactive-mode#remap-insert-mode-key-sequences", + "propertyNames": { + "pattern": "^..$" + }, + "additionalProperties": { + "type": "string", + "description": "Remap target. \"\" is the only supported value; other values are ignored" + }, + "examples": [ + { + "jj": "" + } + ] + }, + "processWrapper": { + "type": "string", + "description": "Corporate launcher command placed in front of the background processes Claude Code starts. Honored from managed settings, a --settings file, and user settings only; the CLAUDE_CODE_PROCESS_WRAPPER environment variable takes precedence when both are set. Requires Claude Code v2.1.210 or later. See https://code.claude.com/docs/en/corporate-launcher", + "examples": ["/opt/corp/launcher --profile claude"] + }, + "forceLoginGatewayUrl": { + "type": "string", + "description": "Pre-fills and locks the gateway URL on the /login Cloud gateway screen. Either this key or forceLoginMethod: \"gateway\" surfaces that screen; set both so the URL is filled in. Honored only at the managed policy tier; ignored in user and project settings. See https://code.claude.com/docs/en/claude-apps-gateway#set-the-gateway-url", + "examples": ["https://claude-gateway.example.com"] + }, + "disableSideloadFlags": { + "type": "boolean", + "description": "(Managed settings only) Reject the --plugin-dir, --plugin-url, --agents, and --mcp-config CLI flags at startup, which users could otherwise pass to bypass strictKnownMarketplaces for a single run. Also rejects these flags from any surface that spawns the CLI with them internally, currently Cowork local sessions in the desktop app. A --mcp-config whose servers are all in-process type: \"sdk\" entries is still accepted, so the Agent SDK and VS Code extension keep working. Does not block claude mcp add, .mcp.json, or SDK setMcpServers(); pair with allowedMcpServers for per-server MCP control. Requires Claude Code v2.1.193 or later. See https://code.claude.com/docs/en/settings#available-settings" + }, + "browserExternalPageTools": { + "type": "string", + "description": "(Managed settings only) Set to \"disabled\" to prevent Claude from using tools to read or act on external pages in the desktop app's Browser pane. Users can still navigate to external sites themselves, and local dev server previews are unaffected. See https://code.claude.com/docs/en/desktop#browse-external-sites", + "enum": ["disabled"] + }, + "disableBrowserExternalNavigation": { + "type": "boolean", + "description": "(Managed settings only) Set to true to turn off external browsing in the desktop app's Browser pane. Neither users nor Claude can navigate to external sites, and localhost dev server previews are unaffected. The value must be the JSON boolean true; the string \"true\" is ignored. See https://code.claude.com/docs/en/desktop#browse-external-sites" + }, + "disableMobileSimulatorTools": { + "type": "boolean", + "description": "(Managed settings only) Set to true to block Claude's tools for the desktop app's iOS Simulator pane. Users keep manual use of the pane; only Claude's access is removed. The value must be the JSON boolean true; any other value is ignored, and a malformed value such as \"true\" or 1 logs a warning. See https://code.claude.com/docs/en/desktop-ios-simulator#turn-off-simulator-access" + }, + "requireCoworkFullVmSandbox": { + "type": "boolean", + "description": "(Managed settings only) Run Claude's tools inside an isolated virtual machine instead of on your Mac. Disables the desktop app's iOS Simulator pane and Claude's simulator tools entirely, so the pane cannot attach a device while it is set. See https://code.claude.com/docs/en/desktop-ios-simulator#turn-off-simulator-access" } }, "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 2e1db49ad26..845034724a6 100644 --- a/src/test/claude-code-keybindings/all-contexts.json +++ b/src/test/claude-code-keybindings/all-contexts.json @@ -58,6 +58,7 @@ }, { "bindings": { + "app:diffFileListUp": "app:diffFileListUp", "app:toggleBrief": "app:toggleBrief", "autocomplete:accept": "autocomplete:accept", "historySearch:execute": "historySearch:execute", @@ -69,6 +70,7 @@ }, { "bindings": { + "app:diffFileListDown": "app:diffFileListDown", "app:openArtifact": "app:openArtifact", "autocomplete:dismiss": "autocomplete:dismiss", "historySearch:cycleScope": "historySearch:cycleScope", @@ -136,8 +138,10 @@ { "bindings": { "attachments:previous": "attachments:previous", + "backspace": "footer:dismiss", "chat:clearScreen": "chat:clearScreen", "confirm:next": "confirm:next", + "delete": "footer:dismiss", "diff:previousFile": "diff:previousFile", "selection:extendLineStart": "selection:extendLineStart", "settings:periodWeek": "settings:periodWeek" @@ -160,7 +164,6 @@ "attachments:exit": "attachments:exit", "chat:cycleMode": "chat:cycleMode", "confirm:previousField": "confirm:previousField", - "doctor:fix": "doctor:fix", "modelPicker:decreaseEffort": "modelPicker:decreaseEffort" }, "context": "DiffDialog" @@ -199,21 +202,13 @@ "bindings": { "chat:workflowKeywordToggle": "chat:workflowKeywordToggle", "footer:down": "footer:down", + "footer:openSelected": "footer:openSelected", "scroll:pageUp": "scroll:pageUp", "select:previous": "select:previous", - "tabs:next": "tabs:next" - }, - "context": "Scroll" - }, - { - "bindings": { - "chat:submit": "chat:submit", - "footer:openSelected": "footer:openSelected", - "scroll:pageDown": "scroll:pageDown", - "select:accept": "select:accept", + "tabs:next": "tabs:next", "tabs:previous": "tabs:previous" }, - "context": "Doctor" + "context": "Scroll" } ] } diff --git a/src/test/claude-code-keybindings/current-actions.json b/src/test/claude-code-keybindings/current-actions.json index 17a54a3e7aa..44eb4211269 100644 --- a/src/test/claude-code-keybindings/current-actions.json +++ b/src/test/claude-code-keybindings/current-actions.json @@ -3,8 +3,10 @@ { "bindings": { "ctrl+]": "app:openArtifact", + "ctrl+down": "app:diffFileListDown", "ctrl+r": "app:redraw", - "ctrl+shift+b": "app:toggleBrief" + "ctrl+shift+b": "app:toggleBrief", + "ctrl+up": "app:diffFileListUp" }, "context": "Global" }, @@ -40,6 +42,8 @@ }, { "bindings": { + "backspace": "footer:dismiss", + "delete": "footer:dismiss", "down": "footer:down", "up": "footer:up", "x": "footer:close" @@ -76,12 +80,6 @@ }, "context": "Settings" }, - { - "bindings": { - "f": "doctor:fix" - }, - "context": "Doctor" - }, { "bindings": { "b": "scroll:fullPageUp", diff --git a/src/test/claude-code-settings/basic-config.json b/src/test/claude-code-settings/basic-config.json index 5cac2db17ed..c1312d6a608 100644 --- a/src/test/claude-code-settings/basic-config.json +++ b/src/test/claude-code-settings/basic-config.json @@ -1,4 +1,5 @@ { + "askUserQuestionTimeout": "never", "effortLevel": "high", "env": { "CCR_FORCE_BUNDLE": "1", @@ -70,7 +71,11 @@ "USE_BUILTIN_RIPGREP": "1" }, "model": "sonnet", + "permissions": { + "defaultMode": "default" + }, "preferredNotifChannel": "iterm2_with_bell", "teammateMode": "auto", - "verbose": false + "verbose": false, + "workflowSizeGuideline": "unrestricted" } diff --git a/src/test/claude-code-settings/edge-cases.json b/src/test/claude-code-settings/edge-cases.json index 8b933532c5b..a0ae2d330d0 100644 --- a/src/test/claude-code-settings/edge-cases.json +++ b/src/test/claude-code-settings/edge-cases.json @@ -1,4 +1,5 @@ { + "askUserQuestionTimeout": "60s", "autoCompactEnabled": false, "autoScrollEnabled": true, "autoUpdatesChannel": "stable", @@ -10,15 +11,26 @@ "CLAUDE_CODE_DEBUG_LOG_LEVEL": "info", "CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN": "0", "CLAUDE_CODE_DISABLE_ATTACHMENTS": "0", + "CLAUDE_CODE_DISABLE_BEDROCK_CONTENT_TYPE_GUARD": "0", + "CLAUDE_CODE_DISABLE_BG_EXIT_HANDOFF": "0", "CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS": "0", + "CLAUDE_CODE_DISABLE_EXPLORE_PLAN_AGENTS": "0", + "CLAUDE_CODE_DISABLE_NOTIFICATION_PRESENCE_CHECK": "0", "CLAUDE_CODE_EFFORT_LEVEL": "max", + "CLAUDE_CODE_ENABLE_APPEND_SUBAGENT_PROMPT": "0", "CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL": "0", "CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY": "0", "CLAUDE_CODE_FORCE_SYNC_OUTPUT": "0", + "CLAUDE_CODE_FORWARD_SUBAGENT_TEXT": "0", "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_SKIP_AWS_CRED_CACHE": "0", + "CLAUDE_CODE_SKIP_FAST_MODE_NETWORK_ERRORS": "0", + "CLAUDE_CODE_SKIP_FAST_MODE_ORG_CHECK": "1", + "CLAUDE_DISABLE_ADOPT": "0", + "FORCE_HYPERLINK": "0", "OTEL_EXPORTER_OTLP_LOGS_PROTOCOL": "http/protobuf", "OTEL_EXPORTER_OTLP_METRICS_PROTOCOL": "http/protobuf", "OTEL_EXPORTER_OTLP_PROTOCOL": "http/protobuf", @@ -49,6 +61,7 @@ "teammateMode": "in-process", "terminalProgressBarEnabled": true, "workflowKeywordTriggerEnabled": false, + "workflowSizeGuideline": "medium", "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 1ba372bc7d9..80ea6f3be78 100644 --- a/src/test/claude-code-settings/enum-coverage.json +++ b/src/test/claude-code-settings/enum-coverage.json @@ -1,7 +1,10 @@ { "$schema": "https://www.schemastore.org/claude-code-settings.json", + "askUserQuestionTimeout": "10m", + "browserExternalPageTools": "disabled", "channelsEnabled": false, "defaultShell": "bash", + "diffTool": "auto", "editorMode": "normal", "effortLevel": "xhigh", "env": { @@ -160,6 +163,7 @@ "OTEL_METRICS_INCLUDE_VERSION": "false", "USE_BUILTIN_RIPGREP": "0" }, + "forceLoginMethod": "gateway", "hooks": { "PreToolUse": [ { @@ -187,5 +191,6 @@ "viewMode": "verbose", "voice": { "mode": "hold" - } + }, + "workflowSizeGuideline": "large" } diff --git a/src/test/claude-code-settings/env-variables.json b/src/test/claude-code-settings/env-variables.json index 31253218231..56f0338e47d 100644 --- a/src/test/claude-code-settings/env-variables.json +++ b/src/test/claude-code-settings/env-variables.json @@ -13,9 +13,12 @@ "ANTHROPIC_DEFAULT_HAIKU_MODEL_SUPPORTED_CAPABILITIES": "example", "ANTHROPIC_DEFAULT_OPUS_MODEL_DESCRIPTION": "example", "ANTHROPIC_DEFAULT_OPUS_MODEL_NAME": "example", + "ANTHROPIC_FOUNDRY_AUTH_TOKEN": "eyJhbGciOiJIUzI1NiJ9.example", "BETA_TRACING_ENDPOINT": "https://otel.example/v1/traces", "CCR_FORCE_BUNDLE": "1", "CLAUDECODE": "1", + "CLAUDE_AFK_COUNTDOWN_MS": "20000", + "CLAUDE_AFK_TIMEOUT_MS": "60000", "CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS": "1", "CLAUDE_AGENT_SDK_MCP_NO_PREFIX": "1", "CLAUDE_AUTO_BACKGROUND_TASKS": "1", @@ -28,6 +31,8 @@ "CLAUDE_CODE_ARTIFACT_AUTO_OPEN": "1", "CLAUDE_CODE_ATTRIBUTION_HEADER": "1", "CLAUDE_CODE_AUTO_CONNECT_IDE": "true", + "CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS": "60000", + "CLAUDE_CODE_BRIDGE_SESSION_ID": "session_abc123", "CLAUDE_CODE_CHILD_SESSION": "1", "CLAUDE_CODE_DISABLE_1M_CONTEXT": "1", "CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING": "0", @@ -38,11 +43,14 @@ "CLAUDE_CODE_DISABLE_ATTACHMENTS": "1", "CLAUDE_CODE_DISABLE_AUTO_MEMORY": "1", "CLAUDE_CODE_DISABLE_BACKGROUND_TASKS": "1", + "CLAUDE_CODE_DISABLE_BEDROCK_CONTENT_TYPE_GUARD": "1", + "CLAUDE_CODE_DISABLE_BG_EXIT_HANDOFF": "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_EXPLORE_PLAN_AGENTS": "1", "CLAUDE_CODE_DISABLE_FAST_MODE": "1", "CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY": "1", "CLAUDE_CODE_DISABLE_FILE_CHECKPOINTING": "1", @@ -52,6 +60,7 @@ "CLAUDE_CODE_DISABLE_MOUSE_CLICKS": "1", "CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1", "CLAUDE_CODE_DISABLE_NONSTREAMING_FALLBACK": "1", + "CLAUDE_CODE_DISABLE_NOTIFICATION_PRESENCE_CHECK": "1", "CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL": "1", "CLAUDE_CODE_DISABLE_POLICY_SKILLS": "1", "CLAUDE_CODE_DISABLE_TERMINAL_TITLE": "1", @@ -59,6 +68,7 @@ "CLAUDE_CODE_DISABLE_VIRTUAL_SCROLL": "1", "CLAUDE_CODE_DISABLE_WORKFLOWS": "1", "CLAUDE_CODE_EFFORT_LEVEL": "high", + "CLAUDE_CODE_ENABLE_APPEND_SUBAGENT_PROMPT": "1", "CLAUDE_CODE_ENABLE_AUTO_MODE": "1", "CLAUDE_CODE_ENABLE_AWAY_SUMMARY": "1", "CLAUDE_CODE_ENABLE_BACKGROUND_PLUGIN_REFRESH": "1", @@ -66,6 +76,7 @@ "CLAUDE_CODE_ENABLE_FINE_GRAINED_TOOL_STREAMING": "1", "CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY": "1", "CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION": "true", + "CLAUDE_CODE_ENABLE_SDK_FILE_CHECKPOINTING": "true", "CLAUDE_CODE_ENABLE_TASKS": "1", "CLAUDE_CODE_ENABLE_TELEMETRY": "1", "CLAUDE_CODE_ENHANCED_TELEMETRY_BETA": "1", @@ -74,33 +85,45 @@ "CLAUDE_CODE_FORCE_STRIKETHROUGH": "1", "CLAUDE_CODE_FORCE_SYNC_OUTPUT": "1", "CLAUDE_CODE_FORK_SUBAGENT": "1", + "CLAUDE_CODE_FORWARD_SUBAGENT_TEXT": "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_MAX_CONCURRENT_SUBAGENTS": "20", + "CLAUDE_CODE_MAX_SUBAGENTS_PER_SESSION": "200", + "CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH": "2", + "CLAUDE_CODE_MAX_WEB_SEARCHES_PER_SESSION": "200", "CLAUDE_CODE_MCP_ALLOWLIST_ENV": "1", + "CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS": "120000", "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_CONTENT_MAX_LENGTH": "61440", "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_PROCESS_WRAPPER": "/opt/corp/launcher", "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_RESUME_INTERRUPTED_TURN_MAX_AGE_MS": "3600000", "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_AWS_CRED_CACHE": "1", "CLAUDE_CODE_SKIP_BEDROCK_AUTH": "1", + "CLAUDE_CODE_SKIP_FAST_MODE_NETWORK_ERRORS": "1", + "CLAUDE_CODE_SKIP_FAST_MODE_ORG_CHECK": "0", "CLAUDE_CODE_SKIP_FOUNDRY_AUTH": "1", "CLAUDE_CODE_SKIP_MANTLE_AUTH": "1", "CLAUDE_CODE_SKIP_PROMPT_HISTORY": "1", @@ -109,6 +132,7 @@ "CLAUDE_CODE_SYNC_PLUGIN_INSTALL": "1", "CLAUDE_CODE_SYNC_SKILLS": "1", "CLAUDE_CODE_SYNTAX_HIGHLIGHT": "true", + "CLAUDE_CODE_TEAM_TEARDOWN_PARK_TIMEOUT_MS": "10000", "CLAUDE_CODE_TMUX_TRUECOLOR": "1", "CLAUDE_CODE_USE_ANTHROPIC_AWS": "1", "CLAUDE_CODE_USE_BEDROCK": "1", @@ -117,10 +141,12 @@ "CLAUDE_CODE_USE_NATIVE_FILE_SEARCH": "1", "CLAUDE_CODE_USE_POWERSHELL_TOOL": "1", "CLAUDE_CODE_USE_VERTEX": "1", + "CLAUDE_DISABLE_ADOPT": "1", "CLAUDE_EFFORT": "low", "CLAUDE_ENABLE_BYTE_WATCHDOG": "1", "CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK": "1", "CLAUDE_ENABLE_STREAM_WATCHDOG": "1", + "CLAUDE_PID": "12345", "DEBUG_LEVEL": "2", "DISABLE_AUTOUPDATER": "1", "DISABLE_AUTO_COMPACT": "1", @@ -151,14 +177,22 @@ "ENABLE_PROMPT_CACHING_1H": "1", "ENABLE_TOOL_SEARCH": "true", "FORCE_AUTOUPDATE_PLUGINS": "1", + "FORCE_HYPERLINK": "1", "FORCE_PROMPT_CACHING_5M": "1", "HOME_DIR": "/home/user", "IS_DEMO": "1", "MCP_CONNECTION_NONBLOCKING": "1", + "OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT": "65536", + "OTEL_EXPORTER_OTLP_LOGS_CLIENT_CERTIFICATE": "/etc/otel/logs-client.crt", + "OTEL_EXPORTER_OTLP_LOGS_CLIENT_KEY": "/etc/otel/logs-client.key", "OTEL_EXPORTER_OTLP_LOGS_PROTOCOL": "grpc", + "OTEL_EXPORTER_OTLP_METRICS_CLIENT_CERTIFICATE": "/etc/otel/metrics-client.crt", + "OTEL_EXPORTER_OTLP_METRICS_CLIENT_KEY": "/etc/otel/metrics-client.key", "OTEL_EXPORTER_OTLP_METRICS_PROTOCOL": "grpc", "OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE": "delta", "OTEL_EXPORTER_OTLP_PROTOCOL": "grpc", + "OTEL_EXPORTER_OTLP_TRACES_CLIENT_CERTIFICATE": "/etc/otel/traces-client.crt", + "OTEL_EXPORTER_OTLP_TRACES_CLIENT_KEY": "/etc/otel/traces-client.key", "OTEL_EXPORTER_OTLP_TRACES_PROTOCOL": "grpc", "OTEL_LOG_ASSISTANT_RESPONSES": "1", "OTEL_LOG_TOOL_CONTENT": "1", @@ -171,6 +205,8 @@ "OTEL_METRICS_INCLUDE_VERSION": "true", "PATH": "/usr/local/bin:/usr/bin:/bin", "USE_BUILTIN_RIPGREP": "1", + "VERTEX_REGION_CLAUDE_5_OPUS": "us-east5", + "VERTEX_REGION_CLAUDE_5_SONNET": "us-east5", "VERTEX_REGION_CLAUDE_HAIKU_4_5": "us-east5" } } diff --git a/src/test/claude-code-settings/hooks-complete.json b/src/test/claude-code-settings/hooks-complete.json index 066c9f845d9..1b9fcf328e7 100644 --- a/src/test/claude-code-settings/hooks-complete.json +++ b/src/test/claude-code-settings/hooks-complete.json @@ -12,6 +12,17 @@ "matcher": "user_settings" } ], + "DirectoryAdded": [ + { + "hooks": [ + { + "command": "./scripts/on-dir-added.sh", + "timeout": 30, + "type": "command" + } + ] + } + ], "Elicitation": [ { "hooks": [ diff --git a/src/test/claude-code-settings/marketplace-host-pattern.json b/src/test/claude-code-settings/marketplace-host-pattern.json index a2dd0043fdf..57ad79b6ae0 100644 --- a/src/test/claude-code-settings/marketplace-host-pattern.json +++ b/src/test/claude-code-settings/marketplace-host-pattern.json @@ -2,6 +2,7 @@ "extraKnownMarketplaces": { "corp-git-repo": { "source": { + "skipLfs": true, "source": "git", "url": "https://git.corp.example/plugins/marketplace.git" } @@ -13,6 +14,47 @@ "hostPattern": "git.internal.example.com", "source": "hostPattern" } + }, + "lfs-heavy-gh": { + "source": { + "ref": "main", + "repo": "acme-corp/plugins", + "skipLfs": true, + "source": "github" + } + }, + "team-tools": { + "source": { + "name": "team-tools", + "plugins": [ + { + "name": "code-formatter", + "source": { + "repo": "acme-corp/code-formatter", + "sha": "0123456789abcdef0123456789abcdef01234567", + "source": "github" + } + }, + { + "name": "linter", + "source": { + "package": "@acme-corp/linter", + "source": "npm", + "version": "1.2.3" + } + }, + { + "name": "monorepo-tool", + "source": { + "path": "plugins/monorepo-tool", + "ref": "main", + "source": "git-subdir", + "url": "https://git.corp.example/tools.git" + } + } + ], + "source": "settings" + } } }, "strictKnownMarketplaces": [ diff --git a/src/test/claude-code-settings/modern-complete-config.json b/src/test/claude-code-settings/modern-complete-config.json index 8029857a814..f15eed73202 100644 --- a/src/test/claude-code-settings/modern-complete-config.json +++ b/src/test/claude-code-settings/modern-complete-config.json @@ -15,11 +15,15 @@ "allowedHttpHookUrls": ["https://hooks.example.com/*", "http://localhost:*"], "alwaysThinkingEnabled": false, "apiKeyHelper": "/usr/local/bin/claude-auth-helper", + "askUserQuestionTimeout": "5m", "attribution": { "commit": "Generated with AI\n\nCo-Authored-By: AI ", - "pr": "" + "pr": "", + "sessionUrl": false }, "autoCompactEnabled": true, + "autoConnectIde": true, + "autoInstallIdeExtension": false, "autoMemoryDirectory": "~/.claude/custom-memory", "autoMemoryEnabled": false, "autoMode": { @@ -42,6 +46,7 @@ "source": "pathPattern" } ], + "browserExternalPageTools": "disabled", "channelsEnabled": true, "claudeMd": "# Org policy\nFollow security guidelines.", "claudeMdExcludes": [ @@ -51,20 +56,26 @@ "cleanupPeriodDays": 60, "companyAnnouncements": ["Welcome to the team!"], "defaultShell": "powershell", + "diffTool": "terminal", "disableAgentView": false, "disableAllHooks": false, "disableArtifact": false, "disableAutoMode": "disable", + "disableBrowserExternalNavigation": true, "disableBundledSkills": true, "disableClaudeAiConnectors": false, "disableDeepLinkRegistration": "disable", + "disableMobileSimulatorTools": true, "disableRemoteControl": false, + "disableSideloadFlags": true, "disableSkillShellExecution": false, "disableWorkflows": false, "disabledMcpjsonServers": ["untrusted-server"], "editorMode": "vim", "effortLevel": "xhigh", + "emojiCompletionEnabled": false, "enableAllProjectMcpServers": true, + "enableArtifact": true, "enabledPlugins": { "formatter@anthropic-tools": true }, @@ -95,6 +106,7 @@ "OTEL_LOG_ASSISTANT_RESPONSES": "0", "PROJECT_ROOT": "/home/user/projects" }, + "externalEditorContext": true, "extraKnownMarketplaces": { "corp-git-host": { "source": { @@ -120,6 +132,7 @@ "url": "https://github.com/example/repo/issues/{num}" } ], + "forceLoginGatewayUrl": "https://claude-gateway.example.com", "forceLoginMethod": "console", "forceLoginOrgUUID": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "forceRemoteSettingsRefresh": false, @@ -136,6 +149,16 @@ "matcher": "user_settings" } ], + "DirectoryAdded": [ + { + "hooks": [ + { + "command": "echo 'directory added'", + "type": "command" + } + ] + } + ], "InstructionsLoaded": [ { "hooks": [ @@ -326,7 +349,6 @@ "url": "https://mcp.corp.example/sse" } ], - "maxSkillDescriptionChars": 2048, "minimumVersion": "2.1.0", "model": "opus", "modelOverrides": { @@ -335,6 +357,7 @@ "otelHeadersHelper": "/usr/local/bin/otel-headers.sh", "outputStyle": "Explanatory", "parentSettingsBehavior": "merge", + "permissionExplainerEnabled": false, "permissions": { "additionalDirectories": ["~/Documents/reference", "~/.config/claude-code"], "allow": [ @@ -386,7 +409,9 @@ "prUrlTemplate": "https://reviews.example.com/{owner}/{repo}/pull/{number}", "preferredNotifChannel": "terminal_bell", "prefersReducedMotion": true, + "processWrapper": "/opt/corp/launcher --profile claude", "remoteControlAtStartup": false, + "requireCoworkFullVmSandbox": true, "requiredMaximumVersion": "3.0.0", "requiredMinimumVersion": "2.0.0", "respectGitignore": false, @@ -397,6 +422,7 @@ "autoAllowBashIfSandboxed": false, "bwrapPath": "/usr/bin/bwrap", "credentials": { + "allowPlaintextInject": true, "envVars": [ { "mode": "deny", @@ -420,7 +446,8 @@ "allowRead": ["~/.ssh/known_hosts"], "allowWrite": ["~/.kube", "//tmp/build"], "denyRead": ["~/.ssh/id_rsa"], - "denyWrite": ["//etc", "//usr"] + "denyWrite": ["//etc", "//usr"], + "disabled": true }, "network": { "allowAllUnixSockets": false, @@ -431,7 +458,12 @@ "allowedDomains": ["github.com", "*.npmjs.org", "registry.yarnpkg.com"], "deniedDomains": ["ads.example.com", "*.tracker.com"], "httpProxyPort": 8080, - "socksProxyPort": 8081 + "socksProxyPort": 8081, + "strictAllowlist": true, + "tlsTerminate": { + "caCertPath": "/etc/corp/ca.pem", + "caKeyPath": "/etc/corp/ca.key" + } }, "ripgrep": { "args": ["--hidden"], @@ -443,6 +475,7 @@ "showThinkingSummaries": true, "showTurnDuration": false, "skillListingBudgetFraction": 0.02, + "skillListingMaxDescChars": 2048, "skillOverrides": { "deploy": "off", "internal-tool": "user-invocable-only", @@ -485,6 +518,7 @@ "type": "command" }, "syntaxHighlightingDisabled": false, + "teammateDefaultModel": "sonnet", "teammateMode": "tmux", "terminalProgressBarEnabled": false, "theme": "dark-daltonized", @@ -492,6 +526,10 @@ "useAutoModeDuringPlan": true, "verbose": true, "viewMode": "focus", + "vimInsertModeRemaps": { + "jj": "", + "kj": "" + }, "voice": { "autoSubmit": false, "enabled": true, @@ -500,6 +538,7 @@ "voiceEnabled": true, "wheelScrollAccelerationEnabled": true, "workflowKeywordTriggerEnabled": true, + "workflowSizeGuideline": "small", "worktree": { "baseRef": "head", "bgIsolation": "none", diff --git a/src/test/claude-code-settings/permissions-advanced.json b/src/test/claude-code-settings/permissions-advanced.json index 9536d74e707..7299342bf5c 100644 --- a/src/test/claude-code-settings/permissions-advanced.json +++ b/src/test/claude-code-settings/permissions-advanced.json @@ -18,9 +18,12 @@ "WebFetch(domain:github.com)", "WebSearch", "mcp__ide__getDiagnostics", - "mcp__ide__executeCode" + "mcp__ide__executeCode", + "Artifact", + "EnterWorktree(*)", + "Workflow" ], - "ask": ["Write(~/projects/**)", "Bash(make:*)"], + "ask": ["Write(~/projects/**)", "Bash(make:*)", "ShareOnboardingGuide"], "defaultMode": "acceptEdits", "deny": ["Bash(rm:*)", "Write(/etc/**)", "WebFetch(domain:malicious.com)"], "disableBypassPermissionsMode": "disable" diff --git a/src/test/claude-code-settings/permissions-basic.json b/src/test/claude-code-settings/permissions-basic.json index 2db123a5f32..3490d25af5b 100644 --- a/src/test/claude-code-settings/permissions-basic.json +++ b/src/test/claude-code-settings/permissions-basic.json @@ -7,7 +7,7 @@ "permissions": { "allow": ["Read(~/.bashrc)", "Bash(pwd:*)"], "ask": ["Write(/tmp/**)"], - "defaultMode": "default", + "defaultMode": "manual", "deny": ["Bash(sudo:*)"] } }