> Markdown mirror of https://router.one/blog/claude-code-opus-5-5-setup for AI assistants and crawlers. Router One is an OpenAI-compatible LLM API gateway.
> Published: 2026-09-24 · Author: Router One Team

# Claude Code on Opus 5.5: Default Model, Plans and 1M Context

_Claude Code 2.1.280 defaults to Opus 5.5, which no Router One plan covers as of 2026-09-24. Pin Opus 5 for plan quota and move background tasks to Haiku 4.5._

Claude Code 2.1.280, released on September 22, 2026, made Claude Opus 5.5 its default model and moved the `opus` alias to it. Claude Code also treats any gateway set in `ANTHROPIC_BASE_URL` as the Claude API. Through Router One that means an updated Claude Code sends `claude-opus-5-5` unless you pin a model — and as of the 2026-09-24 plan response no Pro, Max or Ultra tier lists that id, so those requests are billed per token to your wallet.

Below are three ready-to-paste setups and the details behind them: the bare id, the 1M window, effort, and what does not work. For curl, SDKs and endpoints, see the [Claude Opus 5.5 API guide](https://router.one/blog/claude-opus-5-5-api-guide); for your own code, the [Opus 5.5 migration guide](https://router.one/blog/claude-opus-5-5-migration-guide) covers the breaking changes and their 400 errors.

## What changed in Claude Code 2.1.280

The [Claude Code changelog](https://code.claude.com/docs/en/changelog) entry for 2.1.280 reads: "Added Claude Opus 5.5 (`claude-opus-5-5`), now the default Opus model". The [model configuration docs](https://code.claude.com/docs/en/model-config) show what moved for an Anthropic API connection:

| Setting | v2.1.219 to v2.1.279 | v2.1.280 and later |
| --- | --- | --- |
| `default` model | Opus 5 | Opus 5.5 |
| `opus` alias | Opus 5 (`claude-opus-5`) | Opus 5.5 (`claude-opus-5-5`) |
| Starting effort on that model | `high` | `medium` |
| Thinking on that model | can be turned off | always on |

The same page states that "Opus 5.5 requires Claude Code v2.1.280 or later." The [LLM gateway protocol page](https://code.claude.com/docs/en/llm-gateway-protocol) adds that with `ANTHROPIC_BASE_URL` set, "Claude Code treats the gateway as the Claude API" — so a Router One session gets the right-hand column.

Anthropic's [Opus 5.5 overview](https://platform.claude.com/docs/en/models/opus-5-5/overview) positions the model "For long-running agentic coding and knowledge work", with a 1M-token context window, up to 128K output tokens on the synchronous Messages API, always-on adaptive thinking and `medium` as the default effort. Those are the vendor's statements; Router One vouches for its catalog entry and how the gateway routes and bills the model.

## What it means on Router One

- **The id works as is.** Since 2026-09-24 the gateway resolves `claude-opus-5-5` to the catalog id `anthropic/claude-opus-5.5` and serves it on `/v1/messages`, the endpoint Claude Code calls. The catalog lists a 1,048,576-token window, text and image input, and one rate line across the whole window; the [model page](https://router.one/models/claude-opus-5-5) carries the live rate.
- **It is not in a plan.** As of the 2026-09-24 plan response, no tier of Pro, Max or Ultra lists `claude-opus-5-5`, so every Opus 5.5 call bills per token to the wallet, plan or no plan. Claude Opus 5 stays in the Premium models tier of all three plans. A subscriber whose Claude Code drew Premium quota on Opus 5 starts paying from the wallet once Claude Code updates to 2.1.280, and with an empty or nearly empty wallet those requests fail with HTTP 402, a `billing_error` whose message starts with "insufficient balance" ([API error codes](https://router.one/llm-api-error-codes)).
- **Background work follows the main model.** For a session that connects with `ANTHROPIC_AUTH_TOKEN`, the gateway protocol page gives the background-task model as "The main model", unless `ANTHROPIC_DEFAULT_HAIKU_MODEL` pins one. Subagents that don't name a model run on the session model too.
- **No silent model swaps.** Router One never answers an Opus 5.5 request with Opus 5 or any other model, and a 400 parameter error goes back to Claude Code instead of being retried. As of 2026-09-24 there is no AWS or Google Cloud channel id for Opus 5.5 either; the `aws/` and `vertex/` Claude ids stop at Opus 5 ([channel model ids guide](https://router.one/blog/azure-aws-vertex-channel-model-ids)).
- **Rates differ by id.** [Claude Opus 5.5 vs Claude Opus 5](https://router.one/models/compare/claude-opus-5-5-vs-claude-opus-5) renders both from the live catalog; check it rather than assuming the newer model costs less per token. The prices in Claude Code's `/model` picker are Claude Code's own display label, not Router One's rates.

Dashboard → Logs shows each request with its model, input and output tokens, cost and status ([per-request observability](https://router.one/llm-observability)), so the next few rows after a change tell you which model Claude Code really sends.

## Three setups, ready to paste

All three keep the two variables from the [Claude Code setup](https://router.one/claude-code-china): `ANTHROPIC_BASE_URL=https://api.router.one` (no `/v1`) and `ANTHROPIC_AUTH_TOKEN` set to your Router One key. `ANTHROPIC_API_KEY` is not required — leave it unset. Each setup comes as shell exports for `~/.zshrc` or `~/.bashrc` and as the `env` block of `~/.claude/settings.json`, where the Router One one-click install writes its values. Keep each variable in one place: an `env` block in the settings file replaces the value inherited from the shell. Run `claude update` first; everything below assumes 2.1.280 or later.

### Setup A: Opus 5.5, billed to the wallet

The new default, pinned so a later change of default doesn't move you without notice:

```bash
export ANTHROPIC_BASE_URL=https://api.router.one
export ANTHROPIC_AUTH_TOKEN=sk-your-api-key
export ANTHROPIC_MODEL=claude-opus-5-5
```

```json
{
  "env": {
    "ANTHROPIC_BASE_URL": "https://api.router.one",
    "ANTHROPIC_AUTH_TOKEN": "sk-your-api-key",
    "ANTHROPIC_MODEL": "claude-opus-5-5"
  }
}
```

Every request here bills to the wallet; add setup C to keep background calls off Opus 5.5.

### Setup B: stay on plan quota with Opus 5

For Pro, Max and Ultra subscribers who want Claude Code to keep drawing the Premium models quota:

```bash
export ANTHROPIC_BASE_URL=https://api.router.one
export ANTHROPIC_AUTH_TOKEN=sk-your-api-key
export ANTHROPIC_MODEL=claude-opus-5
export ANTHROPIC_DEFAULT_OPUS_MODEL=claude-opus-5
```

```json
{
  "env": {
    "ANTHROPIC_BASE_URL": "https://api.router.one",
    "ANTHROPIC_AUTH_TOKEN": "sk-your-api-key",
    "ANTHROPIC_MODEL": "claude-opus-5",
    "ANTHROPIC_DEFAULT_OPUS_MODEL": "claude-opus-5"
  }
}
```

`ANTHROPIC_MODEL` sets the session model; `ANTHROPIC_DEFAULT_OPUS_MODEL` points the `opus` alias at Opus 5 too, which covers `/model opus`, the planning phase of `opusplan` and subagents defined with `model: opus`. When the Premium tier's quota for the cycle runs out, further calls bill to the wallet at posted rates; the [pricing page](https://router.one/pricing) shows each plan's model lists and quotas, and [Router One plans for Claude Code](https://router.one/claude-max-alternative) covers how overage is billed.

### Setup C: background tasks on Haiku 4.5

Add one line to setup A or B, as an export or inside the same `env` block. The JSON below is setup A with the line added; for setup B, add the same last line to its block:

```bash
export ANTHROPIC_DEFAULT_HAIKU_MODEL=claude-haiku-4-5
```

```json
{
  "env": {
    "ANTHROPIC_BASE_URL": "https://api.router.one",
    "ANTHROPIC_AUTH_TOKEN": "sk-your-api-key",
    "ANTHROPIC_MODEL": "claude-opus-5-5",
    "ANTHROPIC_DEFAULT_HAIKU_MODEL": "claude-haiku-4-5"
  }
}
```

This sets the model behind the `haiku` alias and Claude Code's [background functionality](https://code.claude.com/docs/en/costs#background-token-usage). Router One accepts `claude-haiku-4-5` as an alias of `anthropic/claude-haiku-4.5`, which sits in the Standard models tier of all three plans.

To switch one session only, launch with `claude --model claude-opus-5`; at launch, `--model` and `ANTHROPIC_MODEL` take precedence over a model saved with `/model`.

## Why the bare id and not the catalog id

Router One accepts both `claude-opus-5-5` and `anthropic/claude-opus-5.5`, but Claude Code reads them differently. It picks per-model defaults from the model id, and it recognizes Opus 5.5 by the official id. The catalog id contains the text `claude-opus-5`, and Claude Code's docs note that an id containing a Claude model name it knows, such as `anthropic/claude-opus-4-8`, resolves to that model. So with the catalog id you get Opus 5 defaults: effort starts at `high`, `/model` shows Opus 5, and some side requests turn thinking off or force a tool call, which Opus 5.5 does not accept. Router One rewrites those two settings for Opus 5.5 so those requests no longer fail, but a forced tool call becomes optional — WebSearch, for one, may answer in plain text without searching — and the defaults and the label stay wrong.

| Model value | On Router One | Claude Code treats it as |
| --- | --- | --- |
| `claude-opus-5-5` | accepted (alias) | Opus 5.5 — use this |
| `opus` | Claude Code sends `claude-opus-5-5` (unless `ANTHROPIC_DEFAULT_OPUS_MODEL` is set) | Opus 5.5 |
| `anthropic/claude-opus-5.5` | accepted (catalog id) | Opus 5 — avoid it, or map it |
| `claude-opus-5.5`, `anthropic/claude-opus-5-5`, `claude-opus-5-5-thinking` | rejected with HTTP 404 (model not supported) | — |

If a shared config has to keep the catalog id, map it with `modelOverrides` in the settings file, keyed by the Anthropic id, as Claude Code's [error reference](https://code.claude.com/docs/en/errors#unrecognized-model-id-on-a-request) describes. Claude Code then sends the catalog id while treating the session as Opus 5.5:

```json
{
  "modelOverrides": {
    "claude-opus-5-5": "anthropic/claude-opus-5.5"
  }
}
```

## The 1M context window

Opus 5.5 has a 1M-token window on Anthropic's API, and the Router One catalog lists 1,048,576 tokens with one rate line across the whole window — no long-context tier. Behind a gateway, though, Claude Code's docs say it "can't verify 1M support" and name the `[1m]` selection as the way to use the full window (written there for Sonnet 5). Without the suffix, Claude Code may budget the session as if the window were smaller and compact long before 1M. Add the suffix for Opus 5.5:

```bash
export ANTHROPIC_MODEL='claude-opus-5-5[1m]'
export ANTHROPIC_DEFAULT_OPUS_MODEL='claude-opus-5-5[1m]'
# or for a single launch
claude --model 'claude-opus-5-5[1m]'
```

Inside a session, `/model opus[1m]` does the same. Keep the quotes: zsh reads an unquoted `[1m]` in a command argument as a filename pattern and stops with "no matches found". Claude Code strips the suffix before sending, so Router One still receives `claude-opus-5-5`; on `ANTHROPIC_DEFAULT_OPUS_MODEL` it extends the window to everything that uses the `opus` alias. If either variable already sits in the `env` block of `~/.claude/settings.json`, as in the JSON form of the setups above, change it there, for example `"ANTHROPIC_MODEL": "claude-opus-5-5[1m]"`: the settings value wins over a shell export.

A larger window is not free: Claude Code resends the conversation every turn, so a longer history means more input per turn. `CLAUDE_CODE_AUTO_COMPACT_WINDOW` (a plain integer from `100000` to `1000000`) compacts earlier; the [Claude Code token cost breakdown](https://router.one/blog/claude-code-token-costs-explained) covers the other levers.

## Effort is the thinking control

Thinking is always on for Opus 5.5; effort decides how much of it happens. Claude Code offers `low`, `medium`, `high`, `xhigh` and `max`, and starts Opus 5.5 at `medium`:

```bash
claude --effort high                    # this launch only
export CLAUDE_CODE_EFFORT_LEVEL=high    # every session; overrides --effort and /effort
# inside a session: /effort high        # saved for the current model
```

Two details from the [model configuration docs](https://code.claude.com/docs/en/model-config): "a top-level `effortLevel` in your user settings file doesn't count for Opus 5.5", so a level kept there for Opus 5 does not carry over, and `max` lasts for the current session only unless it comes from `CLAUDE_CODE_EFFORT_LEVEL`. Claude Code sends the level with each request, and Router One's `/v1/messages` passes `output_config.effort` through unchanged. Higher effort means more thinking tokens, which are billed as output tokens, the same as on Anthropic's API.

## What does not work: thinking off and fast mode

**Turning thinking off.** Claude Code's docs are explicit: "You can't turn thinking off on Opus 5.5 or the Fable models. The session toggle, `alwaysThinkingEnabled`, and `MAX_THINKING_TOKENS=0` have no effect there, and the model decides per step how much to think based on the effort level." To spend less on thinking, lower the effort.

**Fast mode.** `/fast` is not available through Router One. Claude Code's [fast mode docs](https://code.claude.com/docs/en/fast-mode) say a session authenticating with `ANTHROPIC_AUTH_TOKEN` alone treats fast mode as disabled by your organization, and Router One rejects a fast-mode request for Opus 5.5 with HTTP 400 before it reaches the model.

## Balance, keys and version

- **Keep a healthy balance.** Before a request runs, Router One sets aside an estimate of its cost that grows with the requested `max_tokens`, and Claude Code asks for a large output allowance on Opus 5.5. When the balance cannot cover that estimate, the gateway lowers `max_tokens` to what it covers, and with thinking always on, a long answer can stop early. Parallel subagents each need their own allowance, so top up before long sessions: card or Alipay through one hosted checkout, or USDT/USDC on six chains.
- **One key per tool.** Give Claude Code its own key with a `maxSpend` cap. When the key reaches its cap, it cannot spend past that amount and your other keys keep working; a key can also carry an expiry date. Dashboard → API Keys shows how much of its cap that key has spent ([per-key cost tracking](https://router.one/llm-cost-tracking)).
- **Check the version.** Opus 5.5 needs 2.1.280 or later:

```bash
claude --version    # should print 2.1.280 or later
claude update
```

Version 2.1.281 (September 23, 2026) also fixes several streaming issues seen behind proxies and gateways, so update to it.

## FAQ

**Why is my wallet charged when I have a Router One Max plan?**
Claude Code 2.1.280 and later sends claude-opus-5-5 unless you pin a model, and as of the 2026-09-24 plan response no Pro, Max or Ultra tier lists Opus 5.5, so those requests, background tasks included, bill per token to the wallet. To keep drawing plan quota, set ANTHROPIC_MODEL=claude-opus-5 and ANTHROPIC_DEFAULT_OPUS_MODEL=claude-opus-5 (setup B) and check new rows in Dashboard → Logs.

**I chose Opus 5.5, but /model shows Opus 5. Why?**
Usually the model value is the catalog id anthropic/claude-opus-5.5, which Claude Code reads as Opus 5; use claude-opus-5-5 or map the catalog id with modelOverrides, and confirm claude --version shows 2.1.280 or later. Claude Code can also switch by itself: its docs describe an automatic fallback that re-runs a request flagged by the safety classifiers on another model (Opus 5 for biology, Opus 4.8 for cybersecurity) and shows a notice in the transcript. That happens in Claude Code, not in Router One; run /model to go back.

**Can I turn thinking off to save tokens?**
No. Claude Code's toggle, alwaysThinkingEnabled and MAX_THINKING_TOKENS=0 have no effect on Opus 5.5. Lower the effort instead (/effort low, --effort low or CLAUDE_CODE_EFFORT_LEVEL=low), or use a model whose thinking can be turned off, such as Opus 5.

**Does the [1m] suffix cost more?**
Not per token. As of 2026-09-24 the Router One catalog lists one rate line for Opus 5.5 across its whole window, and the suffix never reaches the gateway. It changes how much history Claude Code keeps before compacting; every turn resends that history, so a longer session costs more in total. CLAUDE_CODE_AUTO_COMPACT_WINDOW sets an earlier compaction point.

**Does /fast work through Router One?**
No. With only ANTHROPIC_AUTH_TOKEN set, Claude Code treats fast mode as disabled, and Router One rejects fast-mode requests for Opus 5.5 with HTTP 400. For quicker turns, lower the effort.

**How do I go back to Opus 5?**
For one launch, run claude --model claude-opus-5; inside a session, /model claude-opus-5 switches and saves it as your default. For every session, use setup B in your shell profile or the env block of ~/.claude/settings.json. As of 2026-09-24 Opus 5 is in the Premium models tier of the Pro, Max and Ultra plans, so plan holders draw quota again.

**Which model do subagents use?**
Claude Code checks, in order, the model passed when Claude starts the subagent, the model in its definition, CLAUDE_CODE_SUBAGENT_MODEL, then the session model, so a subagent that sets none of the first three runs on Opus 5.5 in an unpinned session. Set CLAUDE_CODE_SUBAGENT_MODEL (for example to claude-sonnet-5) to change that default; background tasks run on the main model unless ANTHROPIC_DEFAULT_HAIKU_MODEL is set (setup C).

## Next steps

- Call the model directly with the [Claude Opus 5.5 API guide](https://router.one/blog/claude-opus-5-5-api-guide), and fix your own code with the [Opus 5.5 migration guide](https://router.one/blog/claude-opus-5-5-migration-guide).
- Compare the live spec sheets: [Claude Opus 5.5 vs Claude Opus 5](https://router.one/models/compare/claude-opus-5-5-vs-claude-opus-5), [Claude Opus 5.5 vs Claude Sonnet 5](https://router.one/models/compare/claude-opus-5-5-vs-claude-sonnet-5) (Sonnet 5 is in the Mid-tier models tier of all three plans) and [Claude Opus 5.5 vs GPT-6 Sol](https://router.one/models/compare/claude-opus-5-5-vs-gpt-6-sol). GPT-6 Sol runs in Codex CLI and other OpenAI-compatible tools, not in Claude Code ([GPT-6 Sol tool setup](https://router.one/blog/gpt-6-sol-coding-tools-setup)).
- New to Claude Code on Router One? Start with the one-line install on [Claude Code in China](https://router.one/claude-code-china) or the [setup guide](https://router.one/blog/claude-code-setup-guide).

## See also

- Canonical page: https://router.one/blog/claude-code-opus-5-5-setup
- Claude Code China: https://router.one/claude-code-china
- All blog posts: https://router.one/blog
- Models and per-model token rates: https://router.one/models (markdown: https://router.one/models.md)
- Pricing: https://router.one/pricing
- API docs (markdown): https://router.one/docs.md
- Company facts: https://router.one/facts/company.md
