[DOCS] [Model config] `enforceAvailableModels` managed setting added in v2.1.175 is undocumented in `model-config.md`, the settings table, and the Managed-only settings list

Open 💬 0 comments Opened Jun 12, 2026 by coygeek

Documentation Type

Missing documentation (feature not documented)

Documentation Location

https://code.claude.com/docs/en/model-config

Section/Topic

"Restrict model selection" section in model-config.md, the availableModels row in the settings table, and the "Managed-only settings" table in permissions.md.

Current Documentation

In docs/code.claude.com/docs/en/model-config.md, the "Restrict model selection" section says:

Enterprise administrators can use availableModels in managed or policy settings to restrict which models users can select. When availableModels is set, users cannot switch to models not in the list via /model, --model flag, or ANTHROPIC_MODEL environment variable. Elements of a [fallback model chain](#fallback-model-chains) outside the list are dropped.

The "Default model behavior" subsection under it then says:

The Default option in the model picker is not affected by availableModels. It always remains available and represents the system's runtime default [based on the user's subscription tier](#default-model-setting). Even with availableModels: [], users can still use Claude Code with the Default model for their tier.

The "Merge behavior" subsection then says:

When availableModels is set at multiple levels, such as user settings and project settings, arrays are merged and deduplicated. To enforce a strict allowlist, set availableModels in managed or policy settings which take highest priority.

In docs/code.claude.com/docs/en/settings.md, the settings table row for availableModels says:

availableModels | Restrict which models users can select via /model, --model, or ANTHROPIC_MODEL. Does not affect the Default option. See Restrict model selection | ["sonnet", "haiku"]

In docs/code.claude.com/docs/en/permissions.md, the "Managed-only settings" table (lines 363-378) lists every key that is only honored from managed settings — allowAllClaudeAiMcps, allowedChannelPlugins, allowManagedHooksOnly, allowManagedMcpServersOnly, allowManagedPermissionRulesOnly, blockedMarketplaces, channelsEnabled, forceRemoteSettingsRefresh, pluginTrustMessage, sandbox.filesystem.allowManagedReadPathsOnly, sandbox.network.allowManagedDomainsOnly, strictKnownMarketplaces, strictPluginOnlyCustomization, wslInheritsWindowsSettings — and does not include enforceAvailableModels.

What's Wrong or Missing?

Claude Code v2.1.175 added a new managed setting called enforceAvailableModels. Per the release notes:

Added enforceAvailableModels managed setting — when enabled, the availableModels allowlist also constrains the Default model (a Default that would resolve to a disallowed model now falls back to the first allowed model), and user or project settings can no longer widen a managed availableModels list

The setting does not appear anywhere in the docs mirror:

A. The setting is not in the settings table

docs/code.claude.com/docs/en/settings.md has no row for enforceAvailableModels, so administrators looking for the key in the alphabetical settings reference cannot find it.

B. The setting is not in the Managed-only settings table

docs/code.claude.com/docs/en/permissions.md is the canonical home for managed-only keys, and enforceAvailableModels is missing from that table. Administrators reading the Managed-only settings list will not learn that this key exists at all.

C. The model-config page does not describe the new enforcement mode

The "Restrict model selection" section in model-config.md only documents the default behavior of availableModels (the picker is restricted, but Default is exempt). The new opt-in enforcement mode — where the Default is also constrained, and where user/project settings can no longer widen a managed list — is not mentioned.

D. The existing availableModels wording is now misleading in the default case

The settings-table row for availableModels (settings.md line 214) and the "Default model behavior" subsection (model-config.md lines 124-128) both say that availableModels "does not affect the Default option" / "the Default option in the model picker is not affected by availableModels". With enforceAvailableModels: true, that statement is no longer true: a Default that would resolve to a disallowed model now falls back to the first allowed model, and availableModels: [] in managed settings now constrains Default instead of leaving it always available. The current wording needs to be qualified to clarify that the Default bypass is the default, and that enforceAvailableModels switches it off.

E. The changelog page does not yet mention v2.1.175

docs/code.claude.com/docs/en/changelog.md only goes up to v2.1.173 (June 11, 2026). The v2.1.175 entry introducing enforceAvailableModels is not listed. The changelog doc is auto-generated from the upstream CHANGELOG.md, so the underlying release body just needs to be picked up on the next sync.

Suggested Improvement

Before (settings.md, the availableModels row, line 214):

availableModels | Restrict which models users can select via /model, --model, or ANTHROPIC_MODEL. Does not affect the Default option. See Restrict model selection | ["sonnet", "haiku"]

After:

availableModels | Restrict which models users can select via /model, --model, or ANTHROPIC_MODEL. The Default option in /model is not affected unless the managed setting enforceAvailableModels is enabled. See Restrict model selection | ["sonnet", "haiku"]

Before (model-config.md, "Default model behavior" subsection, lines 124-128):

The Default option in the model picker is not affected by availableModels. It always remains available and represents the system's runtime default [based on the user's subscription tier](#default-model-setting). Even with availableModels: [], users can still use Claude Code with the Default model for their tier.

After:

By default, the Default option in the model picker is not affected by availableModels. It always remains available and represents the system's runtime default [based on the user's subscription tier](#default-model-setting), so availableModels: [] still allows users to run Claude Code on the Default model for their tier. To make the availableModels allowlist apply to Default as well — so a Default that would resolve to a disallowed model falls back to the first allowed model — set the managed setting enforceAvailableModels: true. With enforceAvailableModels: true, user and project settings can no longer widen a managed availableModels list, and availableModels: [] in managed settings constrains Default to the first allowed model rather than leaving the tier default in place. Requires Claude Code v2.1.175 or later.

Additions to docs/code.claude.com/docs/en/permissions.md — add a new row in the "Managed-only settings" table (after the allowManagedPermissionRulesOnly row, line 369):

| enforceAvailableModels | {/ min-version: 2.1.175 /}When true, the availableModels allowlist also constrains the Default model: a Default that would resolve to a disallowed model falls back to the first allowed model. User and project settings can no longer widen a managed availableModels list. See Restrict model selection. Requires Claude Code v2.1.175 or later |

Additions to docs/code.claude.com/docs/en/settings.md — add a new alphabetical row to the settings table (between effortLevel and enableAllProjectMcpServers):

| enforceAvailableModels | {/ min-version: 2.1.175 /}(Managed settings only) When true, the availableModels allowlist also constrains the Default model — a Default that would resolve to a disallowed model falls back to the first allowed model — and user or project settings can no longer widen a managed availableModels list. See Restrict model selection and Managed-only settings. Requires Claude Code v2.1.175 or later | true |

The changelog page (docs/code.claude.com/docs/en/changelog.md) is auto-generated from the upstream CHANGELOG.md; no manual edit is needed there beyond a re-sync.

Impact

High - Prevents users from using a feature

Additional Context

Affected Pages:

| Page | Line(s) | Context |
|------|---------|---------|
| https://code.claude.com/docs/en/model-config | 112-160 | "Restrict model selection" section: "Default model behavior" (lines 124-128) says Default is not affected; "Merge behavior" (lines 154-156) describes the pre-v2.1.175 widening behavior without mentioning that enforceAvailableModels changes it |
| https://code.claude.com/docs/en/settings | 214 | Settings-table row for availableModels says "Does not affect the Default option"; no row exists for enforceAvailableModels anywhere in the table |
| https://code.claude.com/docs/en/permissions | 359-378 | "Managed-only settings" table omits enforceAvailableModels; this is the canonical place administrators look for managed-only keys |
| https://code.claude.com/docs/en/changelog | 13 | Latest listed release is v2.1.173 (June 11, 2026); the v2.1.175 entry introducing enforceAvailableModels is not yet mirrored. The page is auto-generated from the upstream changelog, so this is a sync issue, not a manual edit |

Total scope: 3 docs pages need manual edits (model-config.md, settings.md, permissions.md) plus one auto-generated page (changelog.md) that should pick up the new entry on the next sync.

Related but distinct issues:

  • [DOCS] [Advisor] /advisor picker pre-selects the last saved advisor model, but advisor.md does not say the picker refuses to pre-select a model blocked by availableModels is about a different gap: the /advisor page never documented the picker refusing pre-selected models outside availableModels. That is a separate bug from the new enforceAvailableModels setting.
  • The v2.1.172 fixes for availableModels (subagent overrides, advisor model, /model picker rows) are documented inline in the v2.1.172 <Update> block of the changelog and do not require a separate docs issue.

Version note: The new behavior is gated on Claude Code v2.1.175 (released after v2.1.173, the latest version mirrored in changelog.md at the time of writing).

View original on GitHub ↗