Model Resolution¶
Sidekick uses a tier-based model resolution system that maps abstract tiers to provider-specific model IDs.
Resolution Flow¶
flowchart TD
Input["Setting value"] --> RM["resolveModel()"]
RM --> IsAuto{"'auto'?"}
IsAuto -->|Yes| FAT["FEATURE_AUTO_TIERS<br/><small>Per-feature default tier</small>"]
FAT --> DMM
IsAuto -->|No| IsTier{"'fast' / 'balanced'<br/>/ 'powerful'?"}
IsTier -->|Yes| DMM["DEFAULT_MODEL_MAPPINGS<br/><small>Provider-specific model ID</small>"]
IsTier -->|No| IsLegacy{"'haiku' / 'sonnet'<br/>/ 'opus'?"}
IsLegacy -->|Yes| LTM["LEGACY_TIER_MAP"] --> DMM
IsLegacy -->|No| Pass["Passthrough<br/><small>Use as literal model ID</small>"]
Tiers¶
| Tier | Use Case | Claude Model | Codex Model |
|---|---|---|---|
fast |
Low latency, frequent calls (inline completions, docs) | Haiku 4.5 | gpt-6-luna |
balanced |
Quality/speed tradeoff (explanations, commits, review) | Sonnet 5 | gpt-6-sol |
powerful |
Highest quality (code transforms) | Opus 5.5 | gpt-6-astra |
The Claude column resolves per inference provider: claude-max passes the short
names (haiku / sonnet / opus) to the CLI, while claude-api and opencode
resolve to versioned IDs such as claude-sonnet-5 and claude-opus-5-5 (with an
anthropic/ prefix for OpenCode). Native Claude aliases follow the installed
CLI's model mapping.
These defaults were reviewed on September 22, 2026 against the Anthropic model overview and OpenAI model guidance.
Per-Feature Defaults¶
When a model setting is "auto", it resolves to the recommended tier for that feature:
| Feature | Default Tier |
|---|---|
| Inline completions | fast |
| Documentation | fast |
| Code transforms | powerful |
| Commit messages | balanced |
| Explanations | balanced |
| Error analysis | balanced |
| Inline chat | balanced |
| Code review | balanced |
| PR descriptions | balanced |
Legacy Names¶
For backward compatibility, legacy Claude model names are mapped to tiers:
| Legacy Name | Maps To |
|---|---|
haiku |
fast |
sonnet |
balanced |
opus |
powerful |
Literal Model IDs¶
You can bypass the tier system entirely by setting a full model ID (e.g., claude-sonnet-5 or gpt-5.6-sol). This is passed directly to the provider without any mapping.
Use claude-fable-5-1 explicitly for Anthropic's most capable model when your
provider account supports it, or claude-opus-5 / gpt-5.6-sol to keep the
previous powerful defaults. The automatic powerful tier uses Opus 5.5 or Astra.
The GPT-6 Codex tiers need a Codex CLI that offers gpt-6-luna and
gpt-6-sol; on an older CLI, set a literal ID such as gpt-5.6-luna or
gpt-5.6-terra.
CLI Dashboard Summaries¶
The CLI dashboard has separate inference defaults for its short session
summaries. Direct Anthropic API calls use claude-haiku-4-5-20251001; direct
OpenAI API calls use gpt-6-luna with reasoning disabled and a 1,024-token
completion limit. Summaries generated through claude --print or codex exec
inherit the native CLI's model configuration.
Pricing and Context Metadata¶
The shared model catalog supplies cost estimates and context gauges to the CLI and VS Code. Catalog hydration reuses cached LiteLLM data for up to 24 hours, then attempts a refresh. Bundled metadata covers models missing from the catalog. Observed context windows take precedence over published limits when they match the same model, so a provider's effective account limit can be smaller than the published maximum. Quota utilization comes from separate provider APIs or local samples.
The bundled metadata was refreshed on September 22, 2026 (adding Claude Opus 5.5) using Anthropic pricing and the OpenAI model pages for GPT-6 Sol, GPT-6 Luna, Sol, Terra, Luna, Astra, GPT-5.4 mini, and GPT-5.4 nano. It includes Fable 5.1's lower cache-read rate, Astra's pricing and context limit, current GPT-5.6 rates, and the smaller GPT-5.4 mini/nano context windows. Sonnet 5's $2/$10 input/output rates are now permanent. Prices remain estimates at standard rates; service tiers and other billing adjustments can change actual charges.