Concepts

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.

View .md

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.

04A model the harness does not list is refused

THE REQUEST"harness": "claude","model": "not-a-model"Your subscriptionClaude or ChatGPTYour API keyAnthropic or OpenAI422 MODEL_UNSUPPORTEDrefused before any sandbox starts; GET /o/{org}/agents/available lists what each harness takes
Scene. With no account_id, a run uses your subscriptions first, then your API key. A model the harness does not list is refused before a sandbox starts.

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:

{"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.

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 lists what each plan includes.

Choosing a model

GET /o/{org}/agents/available lists what your org can run: each harness, and under it each model with the fields a run takes.

{"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:

{"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 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.