Skip to main content

Available models

For the model setting in Claude Code, you can configure either:
  • A model alias
  • A model name
    • Anthropic API: a full model name
    • Amazon Bedrock: an inference profile ARN
    • Microsoft Foundry: a deployment name
    • Google Cloud’s Agent Platform: a version name
For guidance on which model and effort level fit different kinds of work, see Choosing a Claude model and effort level in Claude Code on the blog.
ANTHROPIC_BASE_URL changes where requests are sent, not which model answers them. To route Claude through an LLM gateway, see LLM gateways.

Model aliases

Use a model alias to select model settings without remembering exact version numbers: The version that the opus and sonnet aliases resolve to depends on the provider: Where an alias resolves to an older model, newer models are available by selecting the full model name explicitly or setting ANTHROPIC_DEFAULT_OPUS_MODEL or ANTHROPIC_DEFAULT_SONNET_MODEL. Before v2.1.219, opus resolved to Opus 4.8 on the Anthropic API from v2.1.154, and on Claude Platform on AWS, Amazon Bedrock, and Google Cloud’s Agent Platform from v2.1.207. Before v2.1.207, opus resolved to Opus 4.7 on Claude Platform on AWS and to Opus 4.6 on Amazon Bedrock and Google Cloud’s Agent Platform. Aliases point to the recommended version for your provider and update over time. To pin to a specific version, use the full model name, for example claude-opus-5, or set the corresponding environment variable like ANTHROPIC_DEFAULT_OPUS_MODEL.
Opus 5 requires Claude Code v2.1.219 or later. Sonnet 5 requires v2.1.197 or later. Opus 4.8 requires v2.1.154 or later. Run claude update to upgrade.

Work with Fable 5

Claude Fable 5 is the most capable model in Claude Code, suited to tasks larger than a single sitting. It sustains long autonomous sessions, investigates before acting, and verifies its work more often than smaller models. Fable 5 is not the default model. Select it with /model fable. Requests that its safety classifiers flag, most often in cybersecurity and biology domains, trigger automatic model fallback. To get the most from Fable 5:
  • Describe the outcome, not the steps: hand it the result you want and let it plan the path. To keep it working toward that outcome, set a goal.
  • Hand it ambiguous problems: root-cause investigations, outage debugging, and architecture decisions are where the extra investigation and verification pay off.
  • Skip the verification reminders: it verifies its own work with less prompting, so reminders to test or check are usually unnecessary.
  • Size up larger tasks: give it work you would normally break into pieces. It holds long sessions without losing the thread.
Fable 5 requires Claude Code v2.1.170 or later. Older versions do not show Fable 5 in the model picker and cannot select it. Run claude update to upgrade. Fable 5 is not available under zero data retention, where the /model picker either omits it or shows it disabled.
On the Anthropic API, the /model picker lists Fable 5 only after the server reports it available for your organization. When you type /model fable, Claude Code checks availability with the server directly, so the selection can succeed before the picker lists the entry.

Fable 5 and usage credits

Depending on your plan and seat tier, Fable 5 usage can bill to usage credits instead of drawing on your plan’s included limits. When it does, the /model picker shows “Requires usage credits” on the Fable 5 row. To manage usage credits, see Add usage credits to your subscription. In interactive sessions, Claude Code shows a consent prompt before a Fable 5 request bills usage credits. Members of Enterprise plans with organization billing don’t see the prompt. You can continue on Fable 5 using usage credits or switch to your default model. You can also dismiss the prompt:
  • In the /model picker, you keep your current model.
  • Mid-session, Claude Code continues the turn on your default model.
After you choose to continue on Fable 5 using usage credits, Claude Code doesn’t show the prompt again. In non-interactive mode with the -p flag and through the Agent SDK, Claude Code never shows the consent prompt. When a Fable 5 request there would bill to usage credits, Claude Code bills it without asking.

Setting your model

You can configure your model in several ways, listed in order of priority:
  1. During session: use /model <alias|name> to switch immediately, or run /model with no argument to open the picker. The picker asks for confirmation when the conversation has prior output, since the next response re-reads the full history without cached context
  2. At startup: launch with claude --model <alias|name>
  3. Environment variable: set ANTHROPIC_MODEL=<alias|name>
  4. Settings: configure permanently in your settings file using the model field
As of v2.1.153, /model saves your choice as the default for new sessions by writing the model field in your user settings. In the picker:
  • Enter: switch model and save as your default
  • s: switch model for this session only
Typing /model <name> directly behaves like Enter. A model set with /model in non-interactive mode, with the -p flag, applies to the current session only and isn’t saved as your default. Project and managed settings still take precedence and reapply on the next launch. An organization default model that your admin has configured to override user selection also reapplies on the next launch. In v2.1.144 through v2.1.152, /model applied to the current session only and d in the picker saved a default. The --model flag and ANTHROPIC_MODEL environment variable apply only to the session you launch with them. To run different models in different terminals at the same time, launch each one with its own --model flag rather than switching with /model. Prices in the /model picker appear when Claude Code talks to the Anthropic API, directly or through an LLM gateway that proxies it, and the price on a row is the price of the model that row selects. On third-party providers such as Amazon Bedrock and on the Claude apps gateway, your provider or gateway determines what you pay, so picker rows show no price. The price is a display label only; it doesn’t affect which model a row selects or what your provider bills. Before v2.1.206, Claude Platform on AWS and gateway sessions showed Anthropic list prices, and a row could show the price of a different model than the one it selected. Resumed sessions started with claude --resume, --continue, or the /resume picker keep the model they were using when the transcript was saved, regardless of the current model setting. If the restored model has been retired or is excluded by availableModels, the session falls through to the normal precedence order. This prevents another session’s /model choice from changing the model on resume. On providers that use provider-specific deployment IDs rather than Anthropic model IDs, such as Amazon Bedrock, Google Cloud’s Agent Platform, and Microsoft Foundry, the transcript model isn’t restored at all and the session resolves its model through the normal precedence order. A model you pick for the new launch with --model or ANTHROPIC_MODEL still takes precedence over the restored model. As of v2.1.195, so does an ANTHROPIC_DEFAULT_OPUS_MODEL family variable. When the active model at startup comes from project or managed settings rather than your own selection, the startup header shows which settings file set it. Run /model to override; the project or managed setting reapplies on the next launch. On platforms that embed Claude Code and set CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST, the host’s model configuration takes precedence over managed model settings, while a managed availableModels allowlist stays in force unless the host supplies its own; the key-level enumeration is under Settings precedence. When a model switch is requested through the Agent SDK setModel() method or by an app such as the Desktop app that runs the Claude Code CLI for you, Claude Code checks that the string is one it recognizes before saving it. This check requires Claude Code v2.1.200 or later. On the Anthropic API, Claude Code recognizes: Claude Code rejects an unrecognized string with Model "<name>" is not a recognized model id. and the session keeps its current model, instead of saving the string and failing on the next request. See the error reference for recovery steps. The check runs only on the Anthropic API. On Amazon Bedrock, Google Cloud’s Agent Platform, Microsoft Foundry, Claude Platform on AWS, and behind an LLM gateway or a custom ANTHROPIC_BASE_URL, your provider or gateway defines the model names, so Claude Code passes any string through without checking it. The check also doesn’t cover the --model flag, the ANTHROPIC_MODEL environment variable, or the model setting; a mistyped value there produces There’s an issue with the selected model on the first request instead. Claude Code can still write the unrecognized-model diagnostic line at request time, on every provider. When the requested model has a scheduled retirement date or is automatically remapped to a newer version, Claude Code shows a warning that names the requested model. Interactive sessions show it as a startup notice. From v2.1.182, the same warning is written to stderr in non-interactive mode when using the default text output format. The check also covers a model set in subagent frontmatter. The stderr warning is suppressed for --output-format json and stream-json; read the actual model from the modelUsage field of the result message instead. For example, start a session on Opus:
Then switch models from within the session:
Example settings file:

Restrict model selection

Enterprise administrators can use availableModels in managed or policy settings to restrict which models users can select. Entries match a model family such as sonnet, a version prefix such as claude-sonnet-4-5, or a full model ID such as claude-sonnet-4-5-20250929. On platforms that embed Claude Code and set CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST, the host’s model configuration takes precedence over managed model settings, while a managed availableModels allowlist stays in force unless the host supplies its own; the key-level enumeration is under Settings precedence. When availableModels is set, the allowlist applies everywhere a user can specify a model:
  • Main session model: /model, the --model flag, the ANTHROPIC_MODEL environment variable, the model setting, and the model restored when resuming a session
  • Alias resolution: the ANTHROPIC_DEFAULT_OPUS_MODEL, ANTHROPIC_DEFAULT_SONNET_MODEL, ANTHROPIC_DEFAULT_HAIKU_MODEL, and ANTHROPIC_DEFAULT_FABLE_MODEL environment variables cannot redirect an allowed alias to a model outside the list
  • Fast mode: /fast refuses to toggle when it would implicitly switch to an Opus model outside the list, with the message “is not in your organization’s allowed models”
  • Subagent and teammate models: the model field in subagent frontmatter, the Agent tool’s model parameter, agent team teammate models, CLAUDE_CODE_SUBAGENT_MODEL, and, on v2.1.197 and earlier, the model picker in the /agents wizard
  • Skill and command models: the model frontmatter in skills and commands
  • Advisor model: the configured advisorModel setting and the --advisor flag
  • Background agent model: the model selected in the dispatch picker
On the Anthropic API and Claude Platform on AWS, a model family alias, opus, sonnet, haiku, or fable, resolves to the newest version of its family that the allowlist permits. When the allowlist pins specific versions, for example ["sonnet", "claude-opus-4-6"], both /model opus and --model opus select Claude Opus 4.6, the newest permitted Opus, and show a notice naming both the requested and substituted models. Before v2.1.205, an alias whose newest released version was outside the list was rejected or replaced like any other blocked selection, even when the list permitted an older version. The substitution needs a permitted version to land on: when the allowlist permits no version of the alias’s family, the alias follows the rejection and replacement behavior below like any other blocked value. Claude Code handles any other blocked selection according to where the model was set:
  • /model: Claude Code rejects the switch with an error
  • --model flag, ANTHROPIC_MODEL, or the model setting: Claude Code replaces the value at startup with a warning naming both the requested and substituted models, and the session starts on the default model
  • Subagent or teammate override: Claude Code falls back to the subagent’s inherited model or the lead’s model for a teammate rather than failing the request. In interactive sessions, Claude Code warns you when it substitutes a subagent’s model, by this fallback or by the newest-permitted-version substitution above, naming the requested and substituted models; it doesn’t report a teammate’s fallback. Where the newest-permitted-version substitution above operates, a blocked family alias follows it instead; before v2.1.222, an alias fell back like any other blocked value on every provider
  • Skill or command override: Claude Code ignores the override, including a blocked family alias, and the skill or command runs on the session model. A skill or command that runs in a subagent follows the subagent behavior above instead
  • advisorModel setting: the advisor is disabled for the session
  • --advisor flag: Claude Code exits with an error at launch. In a background session, it starts the session without the advisor instead of exiting
Claude Code hides excluded models from the /model picker. A full model ID in the list that has no built-in picker row, such as an older version that the list pins, appears in the /model picker as its own labeled row. Before v2.1.199, such an ID was selectable only by typing /model <id>. Model changes that Claude Code makes on your behalf are checked the same way:
  • Fallback model chains: entries outside the allowlist are dropped
  • Plan-mode upgrades: on the Anthropic API and Claude Platform on AWS, an upgrade such as opusplan to an excluded model uses the newest permitted version of the upgrade family. On providers with provider-specific model IDs, and when no version is permitted, the upgrade is skipped and planning continues on the session’s model
  • Automatic model fallback: a fallback whose target is excluded does not run, so the flagged request ends with a refusal instead
  • Auto mode classifier: the classifier’s Claude Sonnet 5 default applies only when the allowlist permits Sonnet 5. When it’s excluded, the classifier runs on the session’s model, which the allowlist already governs, or on an Opus model when the session runs on Fable 5. On providers other than the Anthropic API, that Opus fallback runs on the provider’s default Opus model without consulting the allowlist. Requires Claude Code v2.1.210 or later
  • Fast mode: enabling fast mode is refused when the model the session would run on afterward is outside the allowlist

Surface coverage

Every surface enforces the allowlist it receives. Which delivery mechanism reaches each surface differs:
  • Cloud sessions, on Claude Code on the web or in the Desktop app, run on Anthropic-managed VMs by default: settings deployed to your device do not reach them, so deliver the allowlist through server-managed settings. Sessions your organization routes to a self-hosted environment run on your own compute and fall back to the managed settings file in the runner image when your organization delivers no server-managed settings; when both exist, the server-managed payload takes precedence, with the per-key env merge exception described in settings precedence. A mid-session model switch in a cloud session is rejected when the requested model is excluded by the allowlist. Server-side rejection at session creation applies to organization model restrictions, not the availableModels settings key.
  • Cowork, the agentic-work tab in the Claude Desktop app, is not a Claude Code surface and does not receive server-managed settings by design. A managed settings file applies to Cowork sessions when it is present where the session runs; remote Cowork sessions run on Anthropic-managed VMs, where a device-deployed file is not present.
  • Sessions on third-party providers such as Amazon Bedrock, Google Cloud’s Agent Platform, Microsoft Foundry, and Claude Platform on AWS do not receive server-managed settings, so deliver the allowlist through MDM or managed settings files there.
  • Server-managed delivery also requires the session to authenticate with an organization login or a directly configured API key. Fleets that generate keys only through an apiKeyHelper script should deliver the allowlist through MDM or managed settings files.
  • The Desktop Code tab also hosts SSH sessions, which read the managed settings file from the remote host they run on. See Desktop managed settings.
  • The model pickers on claude.ai and in the Desktop app hide or grey out models excluded by your organization’s allowlist. The picker state is a convenience for users; enforcement happens in the session.

Default model behavior

The Default option in the model picker is not affected by availableModels unless enforceAvailableModels is also set. On its own, availableModels leaves Default available, resolving to the system’s runtime default for the account. If that default is a model you intend to restrict, set enforceAvailableModels as well. An empty availableModels array never engages the Default-model enforcement: with availableModels: [], named model selections are blocked but the Default model for the account type remains usable regardless of enforceAvailableModels.

Enforce the allowlist for the Default model

Set enforceAvailableModels: true alongside a non-empty availableModels in managed settings to extend the allowlist to the Default option. This requires Claude Code v2.1.175 or later.
The Default option resolves to the account-type default, or to the organization default model when an admin has set one. When that model is not in the allowlist, the Default option instead resolves to the first availableModels entry that names an allowed, available model, and the /model picker’s Default row shows that model. This applies everywhere the default is reached: session startup, selecting Default in /model, the "default" keyword in fallback model chains, and the fallback used when an excluded selection is dropped. enforceAvailableModels has no effect when availableModels is unset or empty: with availableModels: [], the Default model for the account type remains usable, so the setting cannot lock users out of every model. When availableModels is non-empty but no entry resolves to an allowed and available model, enforcement is skipped and Default resolves to the account-type default, with a warning visible only under --debug. Keep at least one guaranteed-available entry in the list to avoid this. Deploy both keys in the highest-precedence managed source: these keys don’t merge across managed sources, so a pair placed in a managed settings file is ignored when the admin console delivers any settings.

Control the model users run on

The model setting is an initial selection, not enforcement. It sets which model is active when a session starts, but users can still open /model and pick Default, which resolves to the system’s runtime default regardless of what model is set to, unless enforceAvailableModels redirects it. To fully control the model experience, combine these settings:
  • availableModels: restricts which named models users can switch to
  • enforceAvailableModels: extends the availableModels allowlist to the Default option, so Default cannot resolve to a model outside the list
  • model: sets the initial model selection when a session starts
  • ANTHROPIC_DEFAULT_SONNET_MODEL / ANTHROPIC_DEFAULT_OPUS_MODEL / ANTHROPIC_DEFAULT_HAIKU_MODEL / ANTHROPIC_DEFAULT_FABLE_MODEL: control what the Default option and the sonnet, opus, haiku, and fable aliases resolve to
This example starts users on Sonnet 4.5, limits the picker to Sonnet and Haiku, and ensures Default resolves to a model on the allowlist rather than the tier default:
Without enforceAvailableModels or the env block, a user who selects Default in the picker would get the latest release for their tier, bypassing the version pin in model and availableModels. The two settings cover different scopes: enforceAvailableModels makes Default obey the allowlist, while the env block pins which version a permitted alias such as sonnet resolves to. Use enforceAvailableModels alone when restricting model families is enough; add the env block when you also need to pin a specific version.

Merge behavior

When the highest-precedence managed settings source defines availableModels, that list alone applies, apart from a host platform that supplies its own: entries in user, project, or local settings cannot extend it, and availableModels doesn’t merge across admin-deployed managed sources, so a list deployed in a managed settings file is ignored when server-managed settings deliver any keys. Otherwise, lists from user, project, and local settings are concatenated and deduplicated like other array settings. As of Claude Code v2.1.175, the managed list replaces lower-precedence entries; earlier versions merge them. Within the effective list, an entry naming a specific model in a family, whether a version prefix or a full model ID, disables that family’s wildcard entry: ["sonnet", "claude-sonnet-4-5"] allows only Sonnet 4.5 versions, not every Sonnet model.

Mantle model IDs

When the Amazon Bedrock Mantle endpoint is enabled, entries in availableModels that start with anthropic. are added to the /model picker as custom options and routed to the Mantle endpoint. This is an exception to the alias matching described in Pin models for third-party deployments. The setting still restricts the picker to listed entries, and a Mantle ID embeds a family name, so it counts as a specific entry and disables that family’s wildcard: alongside any Mantle IDs, list the version prefixes or full IDs you want to keep selectable. See Merge behavior.

Organization model restrictions

Organization admins on Claude Enterprise plans restrict which models members can run by disabling individual models in the claude.ai admin console. This restriction is delivered with the account’s entitlements when Claude Code authenticates, separate from any availableModels list in settings, and the server enforces the same restriction independently when a session is created. Requires Claude Code v2.1.187 or later. The restriction applies when a member signs in or uses their own API key. Organization-scoped credentials, such as organization service keys, are not tied to a user, so the restriction does not apply to them. The Claude Console has no model restriction control. Organizations without a Claude Enterprise plan, including those whose members authenticate through the Anthropic API, restrict models with availableModels in managed settings instead, adding enforceAvailableModels to cover the Default option. These settings are enforced by Claude Code itself, not by the server. A restricted model is hidden from the /model picker. Selecting it by name with --model, the ANTHROPIC_MODEL environment variable, or the model setting shows the notice Model "<name>" is restricted by your organization's settings. Using <model> instead. and the session starts on an allowed model. Typing /model <name> for a restricted model is rejected with Model '<name>' is restricted by your organization's settings. Run /model to choose a different model. and the session keeps its current model. A model family alias such as opus resolves to the newest version of its family that the organization permits, with the same substitution notice. /model <alias> is rejected only when every version of its family is restricted; an alias set with --model, ANTHROPIC_MODEL, or the model setting is still replaced at startup in that case. Before v2.1.205, a family alias was substituted or rejected based on its newest released version alone, even when an older version was allowed. Restrictions apply org-wide or per role:
  • Disabling a model at the organization level removes it for every member.
  • Role-level access grants different models to different custom roles, and a member who holds several roles can use any model that one of their roles grants.
  • Haiku models are always available and can’t be disabled, so every member keeps at least one usable model.
  • An access change takes effect on new requests within about a minute; the /model picker reflects it the next time a session starts.
Both restrictions apply together: a model is selectable only when it is permitted by availableModels and not restricted by the organization. Organization restrictions reach sessions on the Anthropic API and LLM gateway deployments only; on any other provider, use availableModels instead.

Organization default model

Organization admins on Claude Enterprise plans can set a default model for Claude Code members from the claude.ai admin console, for the whole organization or per custom role. When one is set, the Default option resolves to that model instead of the account-type default. Requires Claude Code v2.1.196 or later. The Default row in the /model picker shows the organization default’s name with the label Org default. The label reads Org default whether the admin set the default for the whole organization or for your role. A role default covers members of that custom role and takes precedence over the organization-wide default; when several of your roles set different defaults, the most capable model applies. The organization default is a starting point, not a restriction, and any other model selection takes precedence over it:
  • the --model flag and the ANTHROPIC_MODEL environment variable
  • a model value in managed settings or supplied through --settings
  • a model value in your user, project, or local settings, including a model you save with /model
Admins can also configure the organization default to override user selection. With override on, it takes precedence over the model value in user, project, and local settings, so a model you save with /model applies for the current session and the organization default returns on the next launch. When your selection differs, /model shows Your organization's default (<model>) applies on restart. The --model flag, ANTHROPIC_MODEL, managed settings, and --settings still take precedence even with override on. Override is available to a limited set of organizations; ask your Anthropic account team about availability. To limit which models members can select, use organization model restrictions or availableModels instead. Claude Code reads the organization default once at startup, so a default the admin changes mid-session takes effect on the next launch. When the organization default doesn’t override user selection, the first interactive launch after the admin changes it clears the model key from your user settings once, so the new default applies. It changes nothing else in the file, and a model you save with /model after that launch is kept. The organization default passes through the same restriction checks as any other Default model before it is adopted:
  • availableModels on its own never constrains the Default option, so an organization default outside the allowlist still applies. When enforceAvailableModels is also set, an organization default outside the allowlist is remapped to the first allowlist entry, like any other Default
  • an organization default that organization model restrictions deny for your account is replaced by the newest allowed model in its family, or a lower-cost family when every version of it is restricted
  • an organization default that isn’t available to your account at all, such as Fable 5 under zero data retention, is skipped, and the Default option resolves to the account-type default
As of v2.1.199, when the organization default is a different model family from your account type’s usual default, the /model picker keeps a separate row for that usual family, so you can still switch to it for a session. In v2.1.196 through v2.1.198 that row is missing from the picker. The organization default reaches only sessions authenticated with the Anthropic API. To set a default anywhere else, including LLM gateway deployments, use the model key in managed settings instead.

Organization effort limits

Organization admins on Claude Enterprise plans can set a maximum effort level per model for each custom role, alongside role-level organization model restrictions. Levels above the cap aren’t offered in the /effort picker, and naming a higher level with --effort or /effort runs at the cap instead. In interactive sessions and plain-text --print runs, a warning names the requested and applied levels; with json or stream-json output or in background agents, the clamp applies silently. Caps are per model, so switching models can change which levels are available. When several of your roles grant the same model, the least restrictive cap applies. Requires Claude Code v2.1.195 or later. Effort limits are delivered together with organization model restrictions and reach the same sessions.

Special model behavior

default model setting

The behavior of default depends on your account type:
  • Max, Team Premium, Enterprise pay-as-you-go, and Anthropic API: defaults to Opus 5
  • Claude Platform on AWS, Amazon Bedrock, and Google Cloud’s Agent Platform: defaults to Opus 5
  • Pro, Team Standard, and Enterprise subscription seats: defaults to Sonnet 5
  • Microsoft Foundry: defaults to Sonnet 4.5
Enterprise pay-as-you-go means an Enterprise organization billed by usage rather than by subscription seat. Before v2.1.219, default resolved to Opus 4.8 on the Anthropic API, Max, Team Premium, and Enterprise pay-as-you-go from v2.1.154, and on Claude Platform on AWS, Amazon Bedrock, and Google Cloud’s Agent Platform from v2.1.207. Before v2.1.207, default resolved to Opus 4.7 on Claude Platform on AWS and to Sonnet 4.5 on Amazon Bedrock and Google Cloud’s Agent Platform. When an admin has set an organization default model, default resolves to that model instead of the account-type default above. Requires Claude Code v2.1.196 or later. When managed settings enforce the allowlist for the Default model and the account-type default is not in availableModels, default resolves to the enforced Default instead of the account-type default above. When both apply, the organization default replaces the account-type default first and enforcement then applies to it: an allowlisted organization default is kept, while one outside the list resolves to the enforced Default. Fable 5 is not the default model on any account type. Sessions use Fable 5 only after you choose it, with /model fable, a model setting, or the best alias where Fable 5 is available. Choosing it with /model saves it as the selected model in your user settings, so later sessions start on Fable 5 until you change models.

opusplan model setting

The opusplan model alias provides an automated hybrid approach:
  • In plan mode: uses opus for complex reasoning and architecture decisions
  • In execution mode: automatically switches to sonnet for code generation and implementation
This pairs Opus’s reasoning for planning with Sonnet’s efficiency for execution. The plan-mode Opus phase uses the same context window as the opus model setting. On subscription tiers where Opus is automatically upgraded to 1M context, opusplan receives the upgrade in plan mode as well. To force 1M context for both phases when you are not on an auto-upgrade tier, set the model to opusplan[1m]. When availableModels excludes the newest Opus but permits an older version, for example ["sonnet", "claude-opus-4-6"], opusplan uses the newest permitted Opus for planning and stays on Sonnet only when every Opus is excluded. A Haiku session that would normally upgrade to Sonnet in plan mode likewise uses the newest permitted Sonnet, and stays on Haiku only when every Sonnet is excluded. Before v2.1.205, plan mode stayed on the session’s model whenever the newest version of the upgrade family was excluded, even when the allowlist permitted an older one. The substitution of an older permitted version applies on the Anthropic API and Claude Platform on AWS. On Amazon Bedrock, Google Cloud’s Agent Platform, Microsoft Foundry, and Mantle, whose deployments use provider-specific model IDs, plan mode stays on the session’s model whenever the upgrade model is excluded. For a hybrid approach where Claude decides mid-task when to consult a second model rather than switching at the plan boundary, see the advisor tool.

Fallback model chains

When the primary model is overloaded, unavailable, or returns another non-retryable server error, Claude Code can switch to a fallback model instead of failing the request. Authentication, billing, rate-limit, request-size, and transport errors never trigger a switch; those follow their normal retry and error handling. Configure one or more fallback models and Claude Code tries them in order, showing a notice when it switches. The switch lasts for the current turn only, so your next message tries the primary model first again. Claude Code caps chains at three models after duplicate removal and ignores extra entries. Set a chain for one session with the --fallback-model flag, which accepts a comma-separated list:
To persist a chain across sessions, set fallbackModel in settings as an array:
The --fallback-model flag takes precedence over the fallbackModel setting. Each entry accepts a model name or alias, and "default" expands to the default model. Claude Code doesn’t confirm the chain at startup and /status doesn’t display it. The notice shown when a switch happens is the first visible sign that a fallback is configured. When a request fails over, Claude Code tries each entry in order until one accepts it. An entry that can’t be reached either, such as a retired model pinned in settings, fails over to the next one the same way. Claude Code removes two kinds of entry before that walk starts:
  • Outside the allowlist: Claude Code drops any entry not permitted by availableModels when it reads the chain.
  • Smaller context window during compaction: the chain also covers compaction, but Claude Code won’t fall back to a model with a smaller context window than the primary’s, since summarizing there would cut off part of the conversation first. If every fallback is smaller, compaction shows the original error and you can retry.

Automatic model fallback

This section covers content-based fallback from Fable 5 and Opus 5. For availability-based fallback when a model is overloaded or unavailable, see Fallback model chains. Fable 5 and Opus 5 run with safety classifiers for cybersecurity and biology content. When a classifier flags a request and the flagged category has a fallback model, Claude Code re-runs the request on that model and shows a notice in the transcript. The fallback model depends on which model refused and which category was flagged:
  • Fable 5: biology-flagged requests re-run on Opus 5, and cybersecurity-flagged requests re-run on Opus 4.8.
  • Opus 5: cybersecurity-flagged requests re-run on Opus 4.8. Biology-flagged requests end with a refusal instead, because Opus 5 runs its own biology classifiers with no fallback model.
On Amazon Bedrock, Google Cloud’s Agent Platform, and Microsoft Foundry, Claude Code resolves these targets through your deployment instead, and if you set ANTHROPIC_DEFAULT_OPUS_MODEL, categories that have a fallback re-run on the pinned model; see Enable fallback on Bedrock, Agent Platform, and Foundry. After a fallback, the session continues on the fallback model. To return to your original model, run /model. Category-based fallback requires Claude Code v2.1.219 or later. Before v2.1.219, every flagged Fable 5 request re-ran on your provider’s default Opus model, and Opus 5 was not a fallback source. The fallback model is checked against availableModels. When it is blocked, no fallback occurs. The refusal is shown as a normal error and the session’s model is unchanged.

Check what triggered fallback

Fallback can trigger on the first request of a session, before you send anything unusual, because the first request carries workspace context such as your CLAUDE.md content and git status. A repository that contains security or biology material can trip the classifier on that context alone. To check whether customizations are the trigger, start a session with claude --safe-mode, which disables customizations such as CLAUDE.md, skills, MCP servers, and hooks. Git status and directory names are not customizations and are still included.

Ask before switching

To decide what happens each time a request is flagged, rather than switching automatically, run /config and turn off Switch models when a message is flagged, or set switchModelsOnFlag to false in your settings file. A flagged request then pauses the session with two options: switch to the fallback model, or edit the prompt and retry on the current model. Some cases behave differently:
  • When the flagged category has no fallback model, such as a biology flag on Opus 5, Claude Code doesn’t show the prompt and the request ends with the refusal.
  • If both models flag the same request, you can edit the prompt and retry, or start a new session.
  • On mobile Claude Code on the web sessions, editing and retrying is not supported. Switch models, or continue the session from a desktop browser or the desktop app.
  • In non-interactive mode and SDK integrations that can’t show the prompt, a flagged request ends the turn with a refusal instead.
  • When the fallback target is blocked by availableModels, Claude Code doesn’t show the prompt. The flagged request ends with the refusal, the same as automatic fallback when the target is blocked.

Enable fallback on Bedrock, Agent Platform, and Foundry

On Amazon Bedrock, Google Cloud’s Agent Platform, and Microsoft Foundry, model IDs are provider-specific, so automatic fallback only operates when Claude Code can identify both models involved:
  • Claude Code must recognize the current model as a fallback source. Fable 5 is recognized when the model ID contains claude-fable-5, matches the value of ANTHROPIC_DEFAULT_FABLE_MODEL, or is mapped with modelOverrides. Opus 5 is recognized by its provider model ID or a modelOverrides mapping.
  • The fallback model must resolve in your deployment. If you set ANTHROPIC_DEFAULT_OPUS_MODEL, flagged requests re-run on that model for every category that has a fallback; a biology flag on Opus 5 still ends with a refusal. If you don’t set it, cybersecurity-flagged requests re-run on an Opus 4.8 entry in the provider’s model list, and biology-flagged requests from Fable 5 on an Opus 5 entry.
If either model can’t be identified, Claude Code does not switch automatically. The flagged request ends with a refusal message, and you can switch models with /model and retry. Setting ANTHROPIC_DEFAULT_FABLE_MODEL to your Fable 5 model ID enables Fable 5 recognition. Setting ANTHROPIC_DEFAULT_OPUS_MODEL to an Opus model ID gives the flagged categories a fallback target, unless the pin names a model outside the Opus family or the model that refused; then Claude Code doesn’t switch and the refusal stands.