# Models and your access

A run uses your own Claude or ChatGPT subscription or API key by default. Choose the model and effort from the list your org can run.

Rush runs the harness; the model behind it is yours. By default a run uses the model account of the
person who starts it, the same way their own terminal would. With an API key, that person is the
admin who created the key.

_Figure: whose account, on the page at /docs/concepts/models._
## Your own account

Connect an account once in the console, under **Settings → Accounts**: a Claude or ChatGPT
subscription, or an Anthropic or OpenAI API key. A run then picks one in this order:

1. Your subscription for that harness.
2. Your API key for that harness.

To pin a run to one specific account, send its id as `account_id`:

```json
{"harness": "codex", "input": "Upgrade the lockfile and fix what breaks.", "account_id": "<account id>"}
```

Model calls on your own account are billed by your provider, not by Rush. The run's compute is
still metered; see [Usage and billing](/docs/concepts/usage-and-billing).

## Rush's models

`"strategy": "platform"` runs on Rush's models instead of your accounts, even when you have one
connected. Rush covers a one-time model trial per account; once it is used, a run on Rush's models
answers `402 TOKEN_LIMIT_REACHED`, and connecting your own account is the way to keep running.

A run with no account connected and no `strategy` uses the same trial, and is refused with a typed
`422` once the trial is spent. [Pricing](/pricing) lists what each plan includes.

## Choosing a model

[`GET /o/{org}/agents/available`](/docs/api/get-agents-available) lists what your org can run:
each harness, and under it each model with the fields a run takes.

```json
{"harnesses": [{"name": "claude", "display_name": "Claude Code", "models": [
  {"name": "claude-opus-5-5", "display_name": "Opus 5.5",
   "effort": ["low", "medium", "high", "xhigh", "max"]},
  {"name": "claude-haiku-5-5", "display_name": "Haiku 5.5"}
]}]}
```

| Field on a run | Where its value comes from |
| --- | --- |
| `harness` | A harness `name`: `claude`, `codex` or `opencode`. |
| `model` | A model `name` listed under that harness. Leave it out for the harness default. |
| `effort` | One of that model's `effort` values. A model with no `effort` list takes none. |

The model name is exactly what that harness's own CLI takes: bare for Claude Code and Codex
(`claude-opus-5-5`, `gpt-5.5`), `provider/model` for OpenCode (`anthropic/claude-opus-5-5`). The
list is refreshed as each harness ships, and every model on it is one the sandbox's CLI knows.

### Fast mode

A model that runs faster than standard lists `speed: ["standard", "fast"]`; with no `speed` list,
standard is the only speed. OpenCode has no speed setting: its fast mode is a separate model whose
name ends in `-fast`, which you pick as the `model`. A session started with an API key does not take
`speed`.

## When a model is refused

A model that is not listed for the run's harness is refused before any sandbox starts:

```json
{"error": "claude-opus-9 is not a model the claude harness lists.", "code": "MODEL_UNSUPPORTED"}
```

with status `422`. No run is created and nothing is charged. Read `/agents/available` again and
pick a listed name.

[Saved agents](/docs/concepts/saved-agents) pin a model too. Theirs is checked when you save the
agent and again on every run, so a model that leaves the list stops a saved agent's runs with a
typed error instead of running something else.
