Skip to Content
Models

Models

ShipCode can assign a provider, model, and reasoning effort independently to planning, review, execution, and verification. App settings establish the defaults; project and issue overrides can replace them for a narrower scope.

The source of truth is model-catalog.ts, model-resolution.ts, and model-config-presets.ts.

Providers and models

ProviderCurated modelsPlanReviewExecuteVerify
Claude CLIopus, sonnet, haiku, fable, claude-fable-5, claude-opus-4-8, claude-opus-4-7, claude-opus-4-6, claude-sonnet-4-6, claude-haiku-4-5-20251001✓✓✓✓
Codex CLIgpt-5.6-sol, gpt-5.6-terra, gpt-5.6-luna, gpt-5.5, gpt-5.4, gpt-5.4-mini✓✓✓✓
Gemini CLIgemini-2.5-pro, gemini-2.5-flash✓✓✓✓
Cursor CLIauto——✓—
Grok CLIgrok-4.5——✓—
OpenRouteropenrouter/auto, openrouter/free, anthropic/claude-sonnet-4.6, anthropic/claude-opus-4.8, anthropic/claude-fable-5, openai/gpt-5.6-sol, openai/gpt-5.6-terra, openai/gpt-5.6-luna, qwen/qwen3.6-plus✓✓✓✓

Codex publishes its installed model catalog through codex debug models; the models above are ShipCode’s conservative fallback options when an older CLI cannot report capabilities. Cursor and Grok are execute-only because their headless CLIs cannot guarantee a read-only planning, review, or verification run.

The curated OpenRouter list is only a starting point. OpenRouter settings accept other catalog model IDs, and openrouter/auto can choose the upstream model per request. See OpenRouter for authentication and fallback behavior.

Pinned defaults

Pinned defaults are used when a CLI-backed phase or auxiliary task has no explicit model override. They can lag newly added catalog entries deliberately while fleet compatibility is verified.

LaneProviderPinned model
Pipeline phasesClaudeclaude-fable-5
PRD rewriteClaudeclaude-sonnet-4-6
Issue triageClaudeclaude-haiku-4-5-20251001
Pipeline phasesCodexgpt-5.6-sol
PRD rewriteCodexgpt-5.6-luna
Issue triageCodexgpt-5.6-luna
Pipeline phasesGeminigemini-2.5-pro
ExecutionCursorauto
ExecutionGrokgrok-4.5
Paid routingOpenRouteropenrouter/auto
Free routingOpenRouteropenrouter/free
Explicit fallbackOpenRouterqwen/qwen3.6-plus

The phase provider itself comes from app settings, then project overrides, then issue overrides. A model ID follows the same narrowing order. Use the desktop Settings → Pipeline panel for app defaults and project or issue settings for targeted overrides.

Slug aliases

Model fields accept canonical IDs or these case-insensitive shorthands. Bare Claude family aliases are rolling Claude CLI selections: the installed Claude CLI chooses the latest generation in that family. Versioned shorthands resolve to concrete IDs and remain pinned.

FamilyAliasesResolves to
Opus (latest)opusRolling opus alias
Opus 4.8opus-4.8, opus4.8claude-opus-4-8
Opus 4.7opus-4.7claude-opus-4-7
Opus 4.6opus-4.6claude-opus-4-6
Sonnet (latest)sonnetRolling sonnet alias
Sonnet 4.6sonnet-4.6claude-sonnet-4-6
Fable (latest)fableRolling fable alias
Fable 5fable-5, fable5claude-fable-5
Haiku (latest)haikuRolling haiku alias
Haiku 4.5haiku-4.5claude-haiku-4-5-20251001
Grokgrok, grok-4.5, grok4.5grok-4.5
GPT-5.6 Sol5.6, gpt-5.6, 5.6-sol, solgpt-5.6-sol
GPT-5.6 Terra5.6-terra, terragpt-5.6-terra
GPT-5.6 Luna5.6-luna, lunagpt-5.6-luna
GPT-5.55.5gpt-5.5
GPT-5.45.4gpt-5.4
GPT-5.4 Mini5.4-mini, minigpt-5.4-mini

Unknown values are preserved as typed, which allows provider-native model IDs that are not in the curated fallback catalog.

Rolling Claude aliases are valid only when the selected provider is Claude CLI. OpenRouter requires a concrete OpenRouter model ID such as anthropic/claude-opus-4.8; ShipCode rejects bare Claude aliases before an OpenRouter request can be sent.

ShipCode records the concrete model reported by successful Claude stream-JSON runs. Interactive Claude sessions do not always expose that metadata. When they do not, the resolved-model field remains unavailable rather than recording the requested alias as if it were concrete evidence.

Existing saved concrete Claude IDs are not migrated to rolling aliases. A saved claude-opus-4-8 selection stays pinned until it is explicitly changed.

Presets

PresetScopePlanReviewExecuteVerify
claudeApp or projectFable 5Fable 5Fable 5Fable 5
codexApp or projectGPT-5.6 SolGPT-5.6 SolGPT-5.6 SolGPT-5.6 Sol
hybridApp or projectFable 5GPT-5.6 SolGPT-5.6 SolGPT-5.6 Sol
opus-comboProject onlyOpus 4.8GPT-5.6 SolGPT-5.6 SolGPT-5.4 Mini
fable-comboProject onlyFable 5GPT-5.6 SolGPT-5.6 TerraGPT-5.6 Luna

opus-combo and fable-combo are project-only because their concrete per-phase model IDs require project overrides; the app-wide preset path selects providers while keeping the pinned provider models. The Fable combo intentionally maps the deepest planning work to Fable, flagship review to Sol, sustained implementation to Terra, and fast verification to Luna.

Reasoning effort

ShipCode normalizes the shared none, minimal, low, medium, high, and xhigh choices to each provider’s supported controls.

Provider or modelEffective choicesNormalization rules
Claude, except Fable 5None, Medium, HighMinimal/Low → None; Extra high → High
Fable 5 on Claude CLIMedium, HighNone/Minimal/Low → Medium; Extra high → High
CodexLow, Medium, High, Extra highNone/Minimal → Low
GeminiLow, Medium, HighNone/Minimal → Low; Extra high → High
CursorNoneThe CLI selects reasoning automatically
GrokNoneThe CLI selects reasoning automatically
OpenRouter Claude Sonnet 4.6 / Opus 4.6 / Opus 4.8None, HighAny non-None value uses adaptive thinking
anthropic/claude-fable-5 on OpenRouterLow, Medium, High, Extra highNone/Minimal → Low
Other OpenRouter modelsProvider-dependentThe requested effort may be remapped upstream

Fable 5 always uses adaptive thinking, so neither path offers a no-thinking mode for it: the Claude CLI exposes Medium and High budgets, and OpenRouter reports the model as mandatory-reasoning with Low through Extra high available, so a None selection is lifted to Low rather than switching reasoning off. A configured effort is normalized before the provider runs, and the effective value is what ShipCode records and displays.

See also

Last updated on