This page is larger than the 256 KiB this site keeps, so one side of the diff below stops where the stored text does.
from line 700
700700| [`preferredNotifChannel`](#preferrednotifchannel) | Choose a [terminal bell or desktop notification](/docs/en/terminal-config#get-a-terminal-bell-or-notification) for task completion | Remote, desktop, and notifications | Any file |
701701| [`prefersReducedMotion`](#prefersreducedmotion) | [Reduce or turn off](/docs/en/accessibility#accessibility-settings) spinner, shimmer, and flash animations | Interface and terminal | Any file |
702702| [`processWrapper`](#processwrapper) | Run Claude Code's background processes through a [corporate launcher](/docs/en/corporate-launcher) on macOS and Linux | Agents, sessions, and worktrees | User or managed |
703| [`promptCacheTtl`](#promptcachettl) | Choose the [prompt cache lifetime](/docs/en/prompt-caching#cache-lifetime) for the main conversation | Model and responses | Any file |
703704| [`promptSuggestionEnabled`](#promptsuggestionenabled) | Hide the grayed-out [prompt suggestions](/docs/en/interactive-mode#prompt-suggestions) in the input box | Interface and terminal | Any file |
704705| [`prUrlTemplate`](#prurltemplate) | Point PR links at an internal code-review tool instead of github.com | Git and attribution | Any file |
705706| [`remote.defaultEnvironmentId`](#remote-defaultenvironmentid) | Pick the default [cloud environment](/docs/en/cloud-environments) for `claude --cloud`; a self-hosted `ccpool_` ID is read only from user and managed settings and `--settings` | Remote, desktop, and notifications | Any file |
from line 769
768769| [`strictPluginOnlyCustomization.hooks`](#strictpluginonlycustomization-hooks) | Lock [hooks](/docs/en/hooks) to plugin and managed sources | Plugins and skills | Managed |
769770| [`strictPluginOnlyCustomization.mcp`](#strictpluginonlycustomization-mcp) | Lock [MCP servers](/docs/en/mcp) to plugin and managed sources | Plugins and skills | Managed |
770771| [`strictPluginOnlyCustomization.skills`](#strictpluginonlycustomization-skills) | Lock [skills](/docs/en/skills) to plugin and managed sources | Plugins and skills | Managed |
772| [`subagentPromptCacheTtl`](#subagentpromptcachettl) | Choose the [prompt cache lifetime](/docs/en/prompt-caching#cache-lifetime) for subagents and other requests outside the main conversation | Model and responses | Any file |
771773| [`subagentStatusLine`](#subagentstatusline) | Rewrite rows in the [subagent](/docs/en/sub-agents) task display with your own command | Interface and terminal | Any file |
772774| [`switchModelsOnFlag`](#switchmodelsonflag) | Switch models automatically or pause when a [safety classifier](/docs/en/model-config#ask-before-switching) flags a request | Model and responses | Any file |
773775| [`syncClaudeAiSkills`](#syncclaudeaiskills) | Stop downloading the [skills enabled on your claude.ai account](/docs/en/skills#how-synced-skills-behave) and hide the ones already synced | Plugins and skills | User, local, or managed |
from line 1076
10741076}
10751077```
10761078
1079### `promptCacheTtl`
1080
1081Choose how long the [prompt cache](/docs/en/prompt-caching) holds the main conversation. This key applies to your interactive, `-p`, and Agent SDK turns, together with the helpers Claude Code runs inline with them. The one-hour lifetime keeps the cache warm across longer breaks, and the API [bills each cache write at a higher rate](https://platform.claude.com/docs/en/build-with-claude/prompt-caching#pricing) than at the five-minute lifetime. Requires Claude Code v2.1.242 or later.
1082
1083* **Scope**: [`Any file`](#scopes)
1084* **Type**: string, one of:
1085 * `"5m"`: the cache holds for five minutes
1086 * `"1h"`: the cache holds for an hour
1087* **Default**: unset, so each main-conversation request gets [its default lifetime](/docs/en/prompt-caching#which-ttl-each-request-gets)
1088* **Per-session overrides**: [`FORCE_PROMPT_CACHING_5M`](/docs/en/env-vars) takes precedence over everything else, then [`CLAUDE_CODE_PROMPT_CACHE_TTL`](/docs/en/env-vars), then this key, and last [`ENABLE_PROMPT_CACHING_1H`](/docs/en/env-vars)
1089
1090This example keeps the main conversation on the one-hour lifetime and leaves subagents on five minutes:
1091
1092```json settings.json theme={null}
1093{
1094 "promptCacheTtl": "1h",
1095 "subagentPromptCacheTtl": "5m"
1096}
1097```
1098
1099For what each lifetime costs, see [Cache lifetime](/docs/en/prompt-caching#cache-lifetime).
1100
10771101### `showThinkingSummaries`
10781102
10791103See summaries of Claude's [extended thinking](/docs/en/model-config#extended-thinking) in interactive sessions. Set it if you want the full summaries when you expand thinking with `Ctrl+O`. When unset or `false`, the Anthropic API redacts thinking blocks and Claude Code shows a collapsed stub; third-party providers don't redact.
from line 1116
10921116
10931117Redaction only changes what you see, not what the model generates: to reduce thinking spend, [lower the budget or disable thinking](/docs/en/model-config#extended-thinking) instead. This setting has no effect in non-interactive mode (`-p`), the Agent SDK, or IDE extensions such as VS Code.
10941118
1119### `subagentPromptCacheTtl`
1120
1121Choose how long the [prompt cache](/docs/en/prompt-caching) holds the requests Claude Code makes outside the main conversation. This key applies to [subagents](/docs/en/sub-agents), [workflows](/docs/en/workflows), and Claude Code's own background and helper requests, such as compaction and session titles. The one-hour lifetime keeps the cache warm across longer breaks, and the API [bills each cache write at a higher rate](https://platform.claude.com/docs/en/build-with-claude/prompt-caching#pricing) than at the five-minute lifetime. Requires Claude Code v2.1.242 or later.
1122
1123* **Scope**: [`Any file`](#scopes)
1124* **Type**: string, one of:
1125 * `"5m"`: the cache holds for five minutes
1126 * `"1h"`: the cache holds for an hour
1127* **Default**: unset, so each of these requests gets [its default lifetime](/docs/en/prompt-caching#which-ttl-each-request-gets)
1128* **Per-session overrides**: [`FORCE_PROMPT_CACHING_5M`](/docs/en/env-vars) takes precedence over everything else, then [`CLAUDE_CODE_SUBAGENT_PROMPT_CACHE_TTL`](/docs/en/env-vars), then this key, and last [`ENABLE_PROMPT_CACHING_1H`](/docs/en/env-vars), which asks for the one-hour lifetime on every request
1129
1130This example gives subagents and the other requests outside the main conversation the one-hour lifetime:
1131
1132```json settings.json theme={null}
1133{
1134 "subagentPromptCacheTtl": "1h"
1135}
1136```
1137
1138This key covers the requests [`promptCacheTtl`](#promptcachettl) doesn't, so set both to choose a lifetime for every request Claude Code makes. For how a subagent's cache differs from the main conversation's, see [Subagents and the cache](/docs/en/prompt-caching#subagents-and-the-cache).
1139
10951140### `switchModelsOnFlag`
10961141
10971142Choose what happens when a [safety classifier flags a request](/docs/en/model-config#automatic-model-fallback): switch to the fallback model and continue, or pause so you can choose between switching and editing the prompt.
from line 3590
35453590
35463591* **Scope**: [`Any file`](#scopes)
35473592* **Type**: Boolean
3548 * `true`: Claude Code turns dynamic workflows on for you
3549 * `false`: Claude Code turns dynamic workflows off for you
3550* **Default**: unset, so workflows are on unless you're on the Pro plan, where they're off
3551* **Per-session overrides**: [`CLAUDE_CODE_DISABLE_WORKFLOWS`](/docs/en/env-vars) turns workflows off for one session, and `true` here can't turn them back on while it's set
3552
3553```json settings.json theme={null}
3554{
3555 "enableWorkflows": true
3556}
3557```
3558
3559[`disableWorkflows`](#disableworkflows) and your organization's workflows policy also take precedence: `enableWorkflows: true` can't turn workflows back on while any source turns workflows off. Claude Code hides the `/config` row while a source other than your user settings sets `enableWorkflows`, or sets `disableWorkflows` to `true`.
3560
3561### `hooks`
3562
3563Run your own commands, prompts, agents, HTTP requests, or MCP tools as [hooks](/docs/en/hooks) at points in Claude Code's lifecycle, such as before a tool call or when a session starts; the [hooks reference](/docs/en/hooks#hook-events) lists every event, its payload, and its exit codes. Each event maps to a list of matcher groups, and each group lists the handlers to run when the matcher applies.
3564
3565* **Scope**: [`Any file`](#scopes). Hooks merge across files rather than replacing each other, and hooks from managed settings can't be removed from other files.
3566* **Type**: object keyed by [hook event](/docs/en/hooks#hook-events); each value is an array of `{ "matcher", "hooks" }` groups whose `hooks` entries have a `type` of `"command"`, `"prompt"`, `"agent"`, `"http"`, or `"mcp_tool"`
3567* **Default**: unset, so no hooks run
3568
3569This example runs a script before every Bash tool call:
3570
3571```json settings.json theme={null}
3572{
3573 "hooks": {
3574 "PreToolUse": [
3575 {
3576 "matcher": "Bash",
3577 "hooks": [
3578 { "type": "command", "command": "~/.claude/hooks/check-bash.sh" }
3579 ]
3580 }
3581 ]
3582 }
3583}
3584```
3585
3586For every event, matcher pattern, and handler field, see the [hooks reference](/docs/en/hooks#configuration). To turn hooks off, see [`disableAllHooks`](#disableallhooks); to limit hooks to the ones your organization deploys, see [`allowManagedHooksOnly`](#allowmanagedhooksonly).
3587
3588### `httpHookAllowedEnvVars`
3589
3590An [HTTP hook](/docs/en/hooks#http-hook-fields) can put the value of an environment variable into a request header, for example an `Authorization: Bearer $HOOK_TOKEN` header, but only for variables the hook lists in its own `allowedEnvVars`. This key sets an outer limit on that list for every HTTP hook: a hook can use a variable only if both its own `allowedEnvVars` and this key name it. Use it to stop a hook from reading a secret it shouldn't, even when the hook's definition asks for it.
3591
3592* **Scope**: [`Any file`](#scopes). Arrays merge across settings files.
3593* **Type**: array of environment variable names
3594* **Default**: unset, so each hook's own `allowedEnvVars` list applies
3595
3596This example limits header interpolation to `MY_TOKEN` and `HOOK_SECRET`:
3597
3598```json settings.json theme={null}
3599{
3600 "httpHookAllowedEnvVars": ["MY_TOKEN", "HOOK_SECRET"]
3601}
3602```
3603
3604The allowlist applies to hooks from every source, including managed settings.
3605
3606### `workflowKeywordTriggerEnabled`
3607
3608Choose whether typing the keyword `ultracode` in a prompt triggers a [dynamic workflow](/docs/en/workflows#ask-for-a-workflow-in-your-prompt). Set it to `false` to type the word without triggering one. Requires Claude Code v2.1.157 or later.
3609
3610* **Scope**: [`Any file`](#scopes). Appears in `/config` as **Ultracode keyword trigger**.
3611* **Type**: Boolean
3612 * `true`: typing `ultracode` in a prompt triggers a dynamic workflow
3613 * `false`: you can type the word without triggering one
3614* **Default**: `true`
3615
3616```json settings.json theme={null}
3617{
3618 "workflowKeywordTriggerEnabled": false
3619}
3620```
3621
3622The `ultracode` effor
3593 * `true`: Claude Code turns dynamic wor