
Start with the runtime, not a model nickname
Claude Code can authenticate through a Claude subscription, Anthropic Console, a supported cloud provider, or a gateway. Those paths do not necessarily expose the same models, model IDs, aliases, or defaults. The current model configuration guide is the source of truth for the runtime you use.
Current Claude model families include Fable 5.1, Opus 5, Sonnet 5, and Haiku 4.5. On Anthropic’s API pricing, their input/output prices per million tokens are respectively $10/$50, $5/$25, $2/$10, and $1/$5. Those API rates are not a promise about subscription limits or another provider’s bill. Treat them as one input to a decision, alongside the actual task and plan limits.
Aliases such as opus, sonnet, and haiku are convenient, but an alias can resolve differently as supported models change. For a one-off investigation, that may be fine. For a benchmark, CI workflow, or a bug report someone must reproduce, record the exact model ID, provider, prompt, source revision, permission mode, command output, and test result.
Default, saved default, and per-session override are different
Inside an interactive session, /model shows the available choices. Pressing Enter in the picker switches models and saves the choice as your user default; pressing s switches only for that session. Typing /model sonnet also saves the choice. /model default clears the override so the applicable account default can take effect.
Starting Claude with --model <model> or setting ANTHROPIC_MODEL chooses a model for that launch without saving a new default. The precedence is a session choice, the launch flag, ANTHROPIC_MODEL, the model setting, then ANTHROPIC_DEFAULT_MODEL. Managed or project settings can reapply on the next launch, and provider availability or administrator restrictions still apply.
For supported configurations, opusplan uses Opus in Plan mode and Sonnet for execution. This is a mixed-model workflow, so record both phases when comparing it with a single-model run. Subagents can also have their own model settings; the main session's selection does not prove every delegated task used that model.
Before comparing results, establish the baseline:
claude --model sonnet
Read the model shown in the session header or model picker, then record the provider and working directory in the benchmark notes. Do not write a report that only says “Sonnet” when an alias, provider mapping, or later configuration could explain a different result.
Match the model experiment to the job
Use a small model experiment when the work has a clear acceptance check. A useful comparison is not three vague requests for “better code.” It is the same repository revision, same prompt, same permitted tools, and same test.
For a fictional API client whose pagination loop repeats the last page, compare two sessions this way:
- Ask each session to identify the page-token termination condition without editing.
- Ask for the smallest proposed change and the test that would demonstrate it.
- Review the diffs for unrelated formatting or unnecessary changes to the client's request handling.
- Run the focused test for a final page, an empty final page, and a repeated cursor; check that a distinct next cursor is not discarded.
The result may show that a faster model handles the bounded fix well, or that the more capable model is worth using for a larger, uncertain migration. It does not prove either model is generally best. Keep the human review, branch protection, and deployment decision unchanged.
Model choice does not replace permissions or context
CLAUDE.md, skills, hooks, MCP servers, credentials, and permission mode also influence an outcome. Put test commands, architecture facts, and known boundaries in project context. Use a hook for a deterministic guard and scope connectors and credentials to the task. Do not rely on “draft only” in a prompt to prevent a write.
A stronger model can still misunderstand the active code path. A smaller model can still make an unsafe tool call when credentials permit it. Plan mode, a targeted diff, and a relevant test make those failures easier to catch.
Compare model explanations against the same eesel observations
There is a useful support-adjacent comparison that does not change an eesel teammate. Suppose an owner wants an engineering explanation for why a scheduled daily digest was delayed. The owner first authorizes a read-only observation of the named teammate and provides the same approved time window to each coding session. The model’s job is to summarize the evidence, distinguish what is known from what needs investigation, and draft questions for the owner. It must not retry the job, change instructions, or claim it changed the teammate’s model.
With Node.js 18.17 or newer, eesel CLI returns JSON for the same workspace and teammate shown in the dashboard. Login authenticates; it is not a read-only command. After the owner selects the target, the observation commands are read-only:
npx @eesel/cli login
npx @eesel/cli whoami
npx @eesel/cli agents
DIGEST_REVIEW_AGENT="REPLACE_WITH_OWNER_APPROVED_AGENT"
npx @eesel/cli status --agent "$DIGEST_REVIEW_AGENT"
npx @eesel/cli automations --agent "$DIGEST_REVIEW_AGENT"
npx @eesel/cli activity --agent "$DIGEST_REVIEW_AGENT"
npx @eesel/cli billing --agent "$DIGEST_REVIEW_AGENT"
The CLI documentation also documents EESEL_API_URL and EESEL_API_TOKEN for an authorized unattended runner; they take precedence over stored login credentials. Use whoami as a stop-check before collecting the snapshot, and set EESEL_AGENT_ID only when the owner has intentionally pinned that target.
After whoami confirms the expected workspace, save one frozen, redacted snapshot of the owner-approved command output. Give each Claude Code session that identical snapshot and the same prompt: “Explain the evidence for the delayed digest, list uncertainty, and propose the next owner question. Do not infer a run occurred when activity does not show it.” Missing activity is not proof that no run happened; it is a reason to check the relevant automation owner or system record. Compare whether the explanation cites a timestamp or automation state correctly, separates missing evidence from a failed event, and avoids invented causes. This is an analytical comparison, not a chat test and not proof of the real root cause.

The image illustrates the workspace that eesel CLI can inspect; it does not show the fictional delayed-digest comparison.
These eesel setup and observation commands do not consume billed chats. The Claude Code sessions analyzing their output still use the billing or subscription limits of your chosen provider.
Choose a coding model with an eesel CLI evidence review
Choose Claude Code models with a task and evidence in mind. Then use eesel CLI to provide the same owner-approved observations to each comparison, while leaving the support teammate configuration alone. Try eesel to evaluate a controlled, observable helpdesk workflow.
Frequently asked questions
Which Claude Code model is the default?
It depends on the runtime, account, and provider configuration. Check the current model in the session rather than assuming Sonnet is universal.
Does --model permanently change my Claude Code default?
No. The --model option selects a model for that launched session. Use /model to choose and save a default for future sessions where that setting applies.
What are Claude Code model aliases?
Aliases are convenient names such as opus, sonnet, and haiku. Their resolved model can change, so use an exact model ID when reproducibility matters.
Can I choose any model with every provider?
No. Available models and aliases vary by Claude subscription, Console, cloud provider, gateway, and configured runtime. Check the provider’s supported model list.
When should I compare two models?
Compare them when the task is important enough to justify the extra work: use the same bounded prompt, source context, and acceptance checks, then review the differences rather than trusting a score alone.
Does a stronger model remove the need for code review?
No. A model can propose or test a change, but a person still owns the diff, evidence, merge, deployment, and customer-facing implications.
Does choosing a Claude Code model change the eesel teammate?
No. It changes the model used by the coding session, not the selected eesel teammate. That session can use eesel CLI to inspect authorized workspace evidence and explain it. Configuration changes are a separate action requiring appropriate access and review.







