All settings changedsettings-reference
Nearest release: v2.1.283, published 5 hours before upstream edited the page. Shown because the two are within 24 hours of each other. Nothing here says the release caused the edit.
Upstream edited this page at 26 Sep 2026 00:04 UTC, give or take a minute or two: the time comes from Anthropic’s own sitemap rather than from a commit. This site recorded the change at 26 Sep 2026 00:07 UTC.
Upstream edited
Recorded here
Lines+51added
Lines−4removed
From line
614
where the diff opens
First seen
21 Aug 2026
this site's first read of the page
Recorded edits91to this page, all time
### `availableModelsMatch` ### `deniedModels`
The whole hunk
from line 614, old and new numbered
/
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 614
614614| [`autoScrollEnabled`](#autoscrollenabled) | [Follow new output](/docs/en/fullscreen#auto-follow) to the bottom in fullscreen rendering | Interface and terminal | Any file |
615615| [`autoUpdatesChannel`](#autoupdateschannel) | Follow the stable [release channel](/docs/en/setup#configure-release-channel) instead of latest | Updates and versioning | Any file |
616616| [`availableModels`](#availablemodels) | [Restrict which models](/docs/en/model-config#restrict-model-selection) people can pick | Model and responses | Any file |
617| [`availableModelsMatch`](#availablemodelsmatch) | Make each `availableModels` model ID entry [permit only the version it names](/docs/en/model-config#block-specific-models-or-versions) | Model and responses | Managed |
617618| [`awaySummaryEnabled`](#awaysummaryenabled) | Turn off the [session recap](/docs/en/interactive-mode#session-recap) shown when you come back to the terminal | Remote, desktop, and notifications | Any file |
618619| [`awsAuthRefresh`](#awsauthrefresh) | Refresh expired [Bedrock credentials](/docs/en/amazon-bedrock#advanced-credential-configuration) in `.aws` with your own command | Authentication and providers | Any file |
619620| [`awsCredentialExport`](#awscredentialexport) | Supply [Bedrock credentials](/docs/en/amazon-bedrock#advanced-credential-configuration) as JSON from your own command | Authentication and providers | Any file |
from line 632
631632| [`crossSessionInbound`](#crosssessioninbound) | Choose whether Claude Code delivers [messages from your other sessions](/docs/en/cross-session-messaging#control-inbound-messages), shows a notice without delivering them, or refuses them | Agents, sessions, and worktrees | Any file |
632633| [`defaultShell`](#defaultshell) | Choose whether Bash or PowerShell runs the shell commands you type with the [`!` prefix](/docs/en/interactive-mode#shell-mode-with-prefix) | Interface and terminal | Any file |
633634| [`deniedMcpServers`](#deniedmcpservers) | Block specific [MCP servers](/docs/en/mcp) by URL, command, or name | MCP | Any file |
635| [`deniedModels`](#deniedmodels) | [Block specific models](/docs/en/model-config#block-specific-models-or-versions), even ones `availableModels` permits | Model and responses | Managed |
634636| [`desktopSessionCleanupPeriodDays`](#desktopsessioncleanupperioddays) | Set an age limit in days for [Claude Desktop and Cowork transcripts](/docs/en/claude-directory#cleaned-up-automatically) | Privacy and telemetry | User or managed |
635637| [`dialogExpiry`](#dialogexpiry) | Set how long Claude Code waits for [Remote Control](/docs/en/remote-control) or an SDK host to answer a forwarded dialog before it cancels the dialog | Interface and terminal | User or managed |
636638| [`diffTool`](#difftool) | Choose whether Claude's proposed file changes open in the [VS Code](/docs/en/vs-code) or [JetBrains](/docs/en/jetbrains#features) diff viewer or stay in the terminal | Global config settings | Global config |
from line 866
864866
865867### `availableModels`
866868
867Restrict which models people can select for the main session, [subagents](/docs/en/sub-agents), [skills](/docs/en/skills), and the [advisor](/docs/en/advisor). A managed list constrains `/model`, `--model`, and the `model` key in a developer's own files; a model outside it can't be selected. On its own this doesn't touch the Default option; pair it with [`enforceAvailableModels`](#enforceavailablemodels) for that.
869Restrict which models people can select for the main session, [subagents](/docs/en/sub-agents), [skills](/docs/en/skills), and the [advisor](/docs/en/advisor). A managed list constrains `/model`, `--model`, and the `model` key in a developer's own files; a model outside it can't be selected. With the default prefix matching, this doesn't touch the Default option on its own; pair it with [`enforceAvailableModels`](#enforceavailablemodels) for that.
868870
869871* **Scope**: [`Any file`](#scopes). Deploy it in managed settings to enforce it for an organization.
870872* **Type**: array of model aliases or IDs
from line 880
878880}
879881```
880882
881See [Restrict model selection](/docs/en/model-config#restrict-model-selection).
883A model ID entry such as `"claude-opus-5"` also permits later versions that extend it, such as Opus 5.5. To block one of those versions, use [`deniedModels`](#deniedmodels). To make each model ID entry permit only the version it names, use [`availableModelsMatch`](#availablemodelsmatch). See [Restrict model selection](/docs/en/model-config#restrict-model-selection).
882884
885### `availableModelsMatch`
886
887Choose how [`availableModels`](#availablemodels) entries match model IDs. By default a model ID entry also permits later versions that extend it, so `"claude-opus-5"` permits Opus 5.5. With `"exact"`, each model ID entry permits only the version it names, so a newer version of that model stays blocked until you list it. Requires Claude Code v2.1.283 or later.
888
889* **Scope**: [`Managed`](#scopes). Claude Code ignores the key in user, project, and local settings and in `--settings`, with a warning
890* **Type**: string, one of:
891 * `"prefix"`: a model ID entry permits its version and any model ID that extends it with another segment
892 * `"exact"`: a model ID entry permits only the version it names, including that version's dated IDs, so `"claude-opus-5"` permits Opus 5 but not `claude-opus-5-5`. A family alias such as `"opus"` still permits the whole family, and `best`, `opusplan`, and `default` entries are ignored
893* **Default**: `"prefix"`
894
895This example permits Opus 5 and Sonnet 5 and no later release of either:
896
897```json managed-settings.json theme={null}
898{
899 "availableModels": ["claude-opus-5", "claude-sonnet-5"],
900 "availableModelsMatch": "exact"
901}
902```
903
904With `"exact"`, the Default option is also limited to the listed models whenever the list names at least one model or family. See [Block specific models or versions](/docs/en/model-config#block-specific-models-or-versions).
905
906### `deniedModels`
907
908Block specific models, with or without an [`availableModels`](#availablemodels) allowlist and even when that list permits them. Claude Code hides a blocked model from the `/model` picker, and the model can't be selected anywhere `availableModels` is enforced. A session on the Default option doesn't run a blocked model either, as [Block specific models or versions](/docs/en/model-config#block-specific-models-or-versions) describes. Requires Claude Code v2.1.283 or later.
909
910* **Scope**: [`Managed`](#scopes). Claude Code ignores the key in user, project, and local settings and in `--settings`, with a warning
911* **Type**: array of model aliases or IDs
912 * A family alias such as `"opus"` blocks every model in that family
913 * A model ID such as `"claude-opus-5-5"` blocks that version in every spelling, including dated and provider-specific IDs
914 * A model ID with no minor version, such as `"claude-opus-5"`, also blocks later minor versions such as Opus 5.5. Write `"claude-opus-5-0"` to block Opus 5 alone
915 * `best`, `opusplan`, and `default` entries are ignored
916* **Default**: unset, so no model is blocked
917
918This example permits Opus and Sonnet models and blocks Opus 5.5:
919
920```json managed-settings.json theme={null}
921{
922 "availableModels": ["opus", "sonnet"],
923 "deniedModels": ["claude-opus-5-5"]
924}
925```
926
927See [Block specific models or versions](/docs/en/model-config#block-specific-models-or-versions).
928
883929### `effortLevel`
884930
885931Set a default [effort level](/docs/en/model-config#adjust-effort-level) for models you haven't saved a level for. Lower levels are faster and cheaper on straightforward tasks, and higher levels reason more deeply on complex problems.
from line 955
909955
910956### `enforceAvailableModels`
911957
912The `/model` picker has a **Default** option that resolves to your [organization default model](/docs/en/model-config#organization-default-model) when one applies, and otherwise to your account type's default. An [`availableModels`](#availablemodels) allowlist limits the models you can name, but on its own it leaves **Default** alone, so **Default** can still resolve to a model outside the list. This key closes that gap. Requires Claude Code v2.1.175 or later.
958The `/model` picker has a **Default** option that resolves to your [organization default model](/docs/en/model-config#organization-default-model) when one applies, and otherwise to your account type's default. An [`availableModels`](#availablemodels) allowlist limits the models you can name, but with the default [prefix matching](#availablemodelsmatch) it leaves **Default** alone, so **Default** can still resolve to a model outside the list. This key closes that gap. Requires Claude Code v2.1.175 or later.
913959
914960When your organization deploys any managed settings, Claude Code reads this key from the managed source alone and ignores it in your other files.
915961
from line 962
916962* **Scope**: [`Any file`](#scopes)
917963* **Type**: Boolean
918964 * `true`: when **Default** would resolve to a model outside `availableModels`, Claude Code resolves it to the first available model in the list
919 * `false`: **Default** resolves as usual, even to a model outside `availableModels`
965 * `false`: this key doesn't change how **Default** resolves
920966* **Default**: `false`
921967
922968This example restricts named selections to Sonnet and Haiku models and makes **Default** resolve to the first of them that is available:
from line 2866
28202866* [`CLAUDE_CODE_MESSAGING_SOCKET` and `CLAUDE_CODE_MESSAGING_TOKEN`](/docs/en/env-vars#variables), which Claude Code exports itself, are ignored from every file. Ignoring the socket variable requires Claude Code v2.1.224 or later, and ignoring the token requires v2.1.228 or later.
28212867* [`CLAUDE_CODE_PROJECT_DIR_NAME`](/docs/en/sessions#name-the-project-directory-yourself), which Claude Code reads from the launch environment only, is ignored from every file; requires v2.1.234 or later.
28222868* [`CLAUDE_CODE_RESTRICTED`](/docs/en/env-vars#variables), which Claude Code reads from the launch environment only, is ignored from every file.
2869* [`CLAUDE_CODE_DISABLE_POWERSHELL_CMD_RM_DENY`](/docs/en/env-vars#variables), which Claude Code reads from the launch environment only, is ignored from every file. The variable requires Claude Code v2.1.283 or later.
28232870
28242871### `fileCheckpointingEnabled`
28252872
from line 3154
31073154
31083155Print newline-separated file paths to stdout. Claude Code shows at most 15:
31093156
3110```text theme={null}
3111src/components/Button.tsx
3112src/components/Modal.tsx
3113src/components/Form.tsx
3114```
3115
3116The following script reads the query and hands it to a repository file index:
3117
3118```bash theme={null}
3119#!/bin/bash
3120query=$(cat | jq -r '.query')
3121# Replace your-repo-file-index with your own file search command
3122your-repo-file-index --query "$query" | head -20
3123```
3124
3125<span id="footer-link-badges" />
3126
3127### `footerLinksRegexes`
3128
3129Render extra clickable badges in the footer below the input box when a regex matches turn output: tool results, including file contents and fetched pages, and Claude's own responses. Use it to turn IDs printed by project CLIs, such as review tools and issue trackers, into session links.
3130
3131* **Scope**: [`User or managed`](#scopes)
3132* **Type**: array of objects, each with `type` set to `"regex"`, a `pattern` regex, a `url` template, and an optional `label`; `{name}` placeholders in `url` and `label` are filled from named capture groups in `pattern`
3133* **Default**: unset, so no badges render
3134
3135This example matches issue keys such as `PROJ-1234` and builds each link from the captured key:
3136
3137```json settings.json theme={null}
3138{
3139 "footerLinksRegexes": [
3140 {
3141 "type": "regex",
3142 "pattern": "\\b(?<key>PROJ-\\d+)\\b",
3143 "url": "https://issues.example.com/browse/{key}",
3144 "label": "{key}"
3145 }
3146 ]
3147}
3148```
3149
3150With this configured, when `PROJ-1234` appears in a tool result or in Claude's reply, a `PROJ-1234` badge appears in the footer linking to `https://issues.example.com/browse/PROJ-1234`.
3151
3152#### Badge constraints
3153
3154Each entry's URL, label, and badge count are bounded as follows:
3155
3156| Constraint | Behavior |
3157| :---------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
3158| URL origin | Captured values are URL-encoded and the constructed URL must share the template's literal origin. A capture can fill a path segment or query value but can't change where the link points |
3159| URL length | Constructed URLs longer than 2048 characters are dropped |
3160| URL scheme | Must be `https`, `http`, or a recognized editor or workspace deep-link scheme: `vscode`, `vscode-insiders`, `cursor`, `windsurf`, `zed`, `jetbrains`, `idea`, `slack`, `linear`, `notion`, `figma` |
3161| Label | Defaults to the matched text and is truncated to 28 display columns |
3162| Badge count | At most 5 badges render. The oldest is displaced by newer matches and `/clear` removes them |
3163
3164When a turn completes, Claude Code matches each entry's `pattern` regex against the turn output on the main thread, so a slow regex blocks the UI until it finishes. Nested quantifiers such as `(a+)+$` can take exponentially long against certain inputs and freeze the session, so keep each `pattern` linear and avoid nesting `+` or `*`.
3165
3166Footer badges render alongside a [custom status line](/docs/en/statusline) when one is configured; neither replaces the other. Use a status line for a script-driven row that computes its own content from session data, and footer badges to turn IDs from the conversation into links without a script.
3167
3168### `keybindingFlavor`
3169
3170<Warning>
3171 Deprecated since v2.1.261 and has no effect. The prompt's word-editing keys always [follow readline conventions](/docs/en/interactive-mode#make-ctrl-w-delete-back-to-whitespace), as in Bash. Claude Code still accepts `keybindingFlavor`, so a settings file that sets it stays valid.
3172</Warning>
3173
3174In v2.1.238 through v2.1.260, setting it to `"readline"` made `Ctrl+W` delete back to the previous whitespace instead of only the pr
3157```t
No line in this hunk matches that.