---
title: Default Model by Account Plan (account-tier model defaults)
---

# Default Model by Account Plan (account-tier model defaults)

## What it is

**One-paragraph answer:** "Default Model by Account Plan" is an **opt-in** setting (Settings → Accounts) that picks which Claude model a **brand-new** session starts on based on the **plan/tier** of the Anthropic account it runs on — **Max / Team / Enterprise → Opus, Pro → Sonnet, Free → Haiku**. It only sets the _starting_ default: the model is chosen once, when the session sends its first message, and then **stays put** — it won't change on its own if Omniscio later moves the session to a different account to dodge a rate limit. **Your own choices always win:** if you picked a model for that session, or set a default model for the project, that is used instead. It is **off by default** (nothing changes until you turn it on), only affects **login (OAuth)** accounts, and the model it sets is a normal, fully-overridable choice you can change anytime.

### Why it exists

Different Anthropic plans have very different rate limits. If you keep both a Max account and a Pro account, you may want your scarcer Pro account to default to a lighter model (Sonnet) while your Max account runs the heaviest model (Opus) — without hand-setting the model on every new session. This setting makes that choice happen automatically the moment a session starts, based on whichever account it lands on.

Because your global default model is already Opus, the visible effect is mostly on **Pro** accounts (they start on Sonnet) and **Free** accounts (Haiku); Max/Team/Enterprise sessions land on Opus either way — the setting just makes that explicit and stable.

### The mapping

| Account plan/tier        | Starting model                    |
| ------------------------ | --------------------------------- |
| Max (incl. Max 5x / 20x) | Opus 5                            |
| Team                     | Opus 5                            |
| Enterprise               | Opus 5                            |
| Pro                      | Sonnet 4.5                        |
| Free                     | Haiku 4.5                         |
| Unknown / API-key        | (unchanged — your global default) |

## Where to find it

- **Settings → Accounts**, a toggle labeled **"Default Model by Account Plan."**
- It appears when you have at least one **login (OAuth)** account (it only affects login-account sessions).
- Default: **off**. Turn it on to activate; turn it off to stop setting it on new sessions.

## How it behaves

### What wins (precedence)

`your per-session model pick → project default model → account-tier default → your global default model`

The tier only fills in when you have **not** chosen anything more specific. Picking a model on a session, or setting a project default, always overrides it.

### What "stays put" means

The chosen model is **stamped onto the session** at its first spawn — from then on it is the session's own model:

- Omniscio moving the session to a **different account** (rate-limit recovery / load balancing) will **not** change its model.
- Turning the toggle **back off** does **not** change sessions that already started — it only stops setting the model on _new_ ones.
- To change a started session's model, just pick a different one on that session.

### What is never touched

API-key accounts, **SSH / remote** sessions, and **non-Claude** engines (Codex, Gemini, DeepSeek, Kimi, Cursor, …) are never stamped — they keep your global default or their own model. The account's plan string only **selects a tier**; the model id always comes from Omniscio's own constants (no external value becomes a model id).

## For agents

### For agents with repo access — where this lives

- Mapping + pure decision: [src/shared/account-tier.ts](../../src/shared/account-tier.ts) (`normalizeAccountTier`, `tierModelFor`, `resolveTierStartupModel`). Tier ids come from the canonical [src/shared/model-latest.ts](../../src/shared/model-latest.ts) constants; a drift test asserts every mapped id is a selectable Claude model.
- Spawn-time stamp: [src/main/process/account-tier-startup-model.ts](../../src/main/process/account-tier-startup-model.ts) (`applyAccountTierStartupModel`), called from [src/main/process/spawn-cluster-manager.ts](../../src/main/process/spawn-cluster-manager.ts) right before `resolveSpawnModel`. It persists via `updateSessionModel` and mirrors onto the in-memory spawn row; a persist failure is logged and swallowed (never blocks the spawn).
- Setting: `accountTierModelDefaultsEnabled` in `AppSettings` (default **`false`**) — schema in [src/shared/types/settings/accounts-providers-settings.ts](../../src/shared/types/settings/accounts-providers-settings.ts); UI toggle in [src/renderer/src/features/settings/sections/accounts/AccountSettings.tsx](../../src/renderer/src/features/settings/sections/accounts/AccountSettings.tsx); search entry in [src/renderer/src/features/settings/AccountsSettings-search.ts](../../src/renderer/src/features/settings/AccountsSettings-search.ts).
- Contract: [.claude/memory/contracts/provider-registry-contract.md](../../.claude/memory/contracts/provider-registry-contract.md) (PART 3, invariant **the-account-tier-startup-model-is-opt-in**).
- Tests: [tests/unit/shared/account-tier.test.ts](../../tests/unit/shared/account-tier.test.ts), [tests/unit/process/account-tier-startup-model.test.ts](../../tests/unit/process/account-tier-startup-model.test.ts).

## Related

The accounts this setting reads its tier from are added on [Add a Claude account](add-a-claude-account.md), and how a session lands on a given account in the first place is on [Account Pool (multiple Claude accounts + exhaustion alert)](account-pool.md). For the wider catalogue of AI providers the app can run, see [AI providers](ai-providers.md), and for who pays for a non-Claude session and which company serves it, see [Who pays & who serves](model-vendors.md); for the thinking-level choice that sits beside the model pick, see [Per-model thinking level](per-model-thinking-level.md).
