Skip to content
DocsModels and tiers

Models and tiers

The cheap, mid, and strong tiers, why cheap is the default, and how free-text models resolve.

--model accepts a provider-neutral tier, a model ID, or an alias. The tier is the point: it means the same thing whichever CLI the crew runs.

The tiers#

Provider-neutral tiers and their default models
TierClaude CodeCodexGrok
cheapclaude-haiku-4-5gpt-5.6-lunagrok-4.7-build-fast
midclaude-sonnet-5gpt-5.6-solgrok-4.6
strongclaude-opus-5gpt-6-astragrok-4.7

pi has no fixed catalogue: its tiers are ranked from pi --list-models, and overrides use the provider/model IDs pi prints.

Cheap is the default#

Omitting --model recruits a cheap crew rather than falling through to whatever the native CLI happens to be configured with. Routine work never silently lands on an expensive model.

  • cheap covers commits, tests, lint, formatting, docs, chores, renames, and mechanical edits.
  • mid is for a normal feature, or a change inside one area.
  • strong is for design, debugging, and multi-file or long-context work.
shell
captain crew --task "Debug the failure" --model strong
captain model Jack strong

Free text and aliases#

Free text is matched to the closest model the chosen CLI offers: exact IDs and aliases first, then prefixes, substrings, and close spellings. Beyond the tier table, Claude Code also offers claude-fable-5-1 (fable); Codex also offers gpt-5.6-terra (terra) and gpt-5.5; Grok also offers grok-4.5.

Ambiguous or unknown text reports the options and creates nothing — no crew, no pane, no spend.

Overriding what a tier means#

A [models.<provider>] table in settings.toml redefines which model a tier resolves to:

toml
[models.claude]
cheap = "fable"

[captain]
model = "strong"

A tier value that matches no known model is kept literally and passed to that CLI as written, so a model newer than your installed release still works. [captain] model is the opposite: it resolves up front, so a typo fails loudly at launch instead of silently starting the wrong model.