Navigation
Copy page

Choose and Switch Models

On this page

kli runs against whichever model you select. You change that model in the running session with a command, and you make a choice stick across sessions by writing it into settings.json. This page covers both.

A model is named by its provider and id together, written provider/model (for example anthropic/claude-opus-4-8). For the full list of providers, see Models & Providers. Before a provider's models appear, that provider needs a credential. See Connect a Provider for that step.

See which models you can use

Run /models to list every model you are authenticated for:

/models

Each line shows the provider/model reference and the model's display name. A line marked with * is the current selection. A line can also include a compact options marker, for example options reasoning-effort, naming the semantic options that model accepts. Pass a word to filter the list by provider id, model id, display name, or full reference:

/models opus

When nothing matches, the command says so rather than listing everything.

To see the providers themselves and their authentication state, run /providers:

/providers

Each line gives the provider id, its auth status (yes when a credential is available, no when it is missing, local when the provider needs none), and the count of models it offers. A provider with auth no registers no usable models, so its models will not appear in /models.

Switch the model for this session

Give /model a reference to switch to it:

/model anthropic/claude-opus-4-8

The reference does not have to be exact. If the text you type matches exactly one available model by id or substring, kli selects it; you can drop the provider when the model id alone is unambiguous:

/model claude-opus-4-8

If your text matches more than one model, kli lists the candidates and changes nothing, so you can retype a longer reference. If it matches none, kli says so.

In the terminal UI, bare /model opens a menu over the available models with the current one marked. Running /model bare without the UI prints the current selection followed by the model list.

After a successful switch, kli prints a Model: system line confirming the new selection. The change applies from the next turn; it does not alter any earlier messages in the session.

Set reasoning effort

reasoning-effort is the semantic option behind model thinking. Models whose /models line includes options reasoning-effort accept the levels off, minimal, low, medium, high, and xhigh. Set one with /thinking:

/thinking high

Run /thinking with no argument to print the current level. In the terminal UI, bare /thinking opens a menu over the levels when the current model supports reasoning-effort. /thinking off turns reasoning off for the current model.

You can also set the level in the same step as the model by appending it to a /model reference, separated by a space:

/model anthropic/claude-opus-4-8 high

Setting a non-off level on a model that does not support reasoning-effort is an error, and so is setting a level when no model is selected. Other semantic options are configured up front in providers.json model schemas and settings.json defaultOptions; /thinking is the interactive command for the option users change most often.

Make a choice persist

The commands above change only the running session. To start every session on a chosen model and option set, write the choice into settings.json:

json
{
  "defaultProvider": "anthropic",
  "defaultModel": "claude-opus-4-8",
  "defaultOptions": {
    "reasoning-effort": "high"
  }
}

defaultProvider and defaultModel take effect together: kli looks up that exact model at startup and selects it. defaultOptions is an object keyed by semantic option id. Each option must be supported by the selected model; unsupported options and invalid values are ignored with warnings rather than failing startup.

Set it in settings.json (global ~/.config/kli/settings.json, project <repo>/.kli/settings.json; project wins) — see Settings. Put your usual default in the global file, then override it per repository when a particular codebase wants a different model or option set. A /model or /thinking command run during a session always takes precedence over these defaults for the rest of that session.

For the full set of settings.json keys, see the settings reference. For where the model selection sits in a turn, see The Agent Loop.