Search documentation

Search the Fumadocs-backed documentation index.

Models

Which models the agents run, with per-entry controls like effort and context window.

Teach your agents

Coding agents can read a short guide to choosing models with ax learn models. It links back here for this reference.

models defines which models run, as an independent axis cross-multiplied with agents. Listing agents: [claude] with models: [opus, sonnet] produces both variants without duplicating the agent.

Accepted shapes:

# String form: one model.
models: claude-opus-4-8

# List of strings: multiple models.
models:
  - claude-opus-4-8
  - claude-sonnet-4-6

# Object form: a model with controls.
models:
  - name: gpt-5.3-codex
    effort: high

models is optional. If omitted, each agent runs its provider-default model.

Find supported models

Which models an agent can run depends on its exact version. Check support with the live listing before you write models, then validate the file:

CommandUse it to
ax model listFind the models an agent version supports, or the agent versions that support a model.
ax agent list --model <MODEL> --all-versionsFind every version of each agent that supports one model, to pick a version to pin.
ax agent test <AGENT>@<VERSION> --model <MODEL>Test an untested pairing now and save the answer, instead of waiting for a run to show it.
ax experiment validate <PATH>Check the file's agent and model pairings against the same rules submit uses.
# Models each agent's latest version supports
ax model list

# Models Cursor's latest version supports, then one exact version
ax model list --agent cursor
ax model list --agent cursor@<VERSION>

# The latest agent versions that support specific models
ax model list --model claude-opus-4-8 --model gpt-5.3-codex

# Every claude version that supports a model
ax model list --agent claude --all-versions --model claude-opus-4-8

# Every version of each agent that supports one model
ax agent list --model claude-opus-4-8 --all-versions

# Whether one exact agent version works with a model
ax agent test cursor@<VERSION> --model claude-opus-4-8

ax agent test needs an exact registered version and accepts a model id or catalog alias. It exits 0 when the pairing works and 3 when it does not, and saves that answer for everyone, so ax model list, ax agent list, and validation use it from then on. A pairing that already has a saved answer returns it at once. When the test cannot tell, for example because of a network or infrastructure error, it exits 4 and saves nothing.

A pairing is supported only when the platform has verified it (verified) and the model is on the agent's model menu. Listing, validation, and submission all use this rule: a listed pairing validates and runs, and a pairing that is not listed is skipped. Pairings that have not been tested yet are not listed and do not run until ax agent test verifies them. An agent listed without a version runs its saved pin when the experiment has one; otherwise it runs the stable version that supports the most of the models paired with it (the newest on a tie), and its other models are skipped. A pre-release runs only when pinned. To run a specific version, pin it on the agent, such as agents: [{ name: claude, version: <VERSION> }].

If no single version supports every model, AX uses the newest stable version that supports the most of them and skips the rest, with a hint naming the version that supports each skipped model. ax experiment validate lists the pairings submit will skip, grouped by agent and exact version, with an ax agent test <AGENT>@<VERSION> --model <MODEL> command for each untested pairing, that hint for each skipped model another version supports, and an ax agent list --model <MODEL> --all-versions command for each skipped model. Skipped pairings are a warning, not a failure; validation fails only when no pairing is left to run.

Pruning incompatible pairs

The agents × models cross product keeps only the compatible pairs. A model the catalog knows for a different agent's provider — for example claude × an openai model — is pruned (dropped), not an error, so one agents + models pair of lists expresses every valid combination:

agents: [claude, codex]
models: [claude-opus-4-8, gpt-5.3-codex]
# 2 × 2 = 4 pairs → pruned to the 2 valid ones:
#   ✓ claude + claude-opus-4-8     ✓ codex + gpt-5.3-codex
#   ✗ claude + gpt-5.3-codex       ✗ codex + claude-opus-4-8   (dropped)

Pruning is visible — dropped pairs show up as a smaller resolved matrix in ax experiment variants. If a listed agent or model has no pair left (every pair it appears in is pruned, because the agent does not offer the model), its pairings are skipped like any other pairing that cannot run: ax experiment validate lists them in the skipped-pairings warning, names the agents that offer each model, and still exits zero. Validation fails only when no pairing in the experiment is left to run.

Model id format

Prefer the lab-official models.dev id with no owner prefix, such as claude-opus-4-8, gpt-5.3-codex, or composer-2.5. Fiveonefour infers the runtime provider from the selected agent and stores a canonical provider/lab/model id behind the scenes.

If a bare id is ambiguous, validation asks for lab; use the model object form, for example { name: claude-opus-4-8, lab: anthropic }. Most model ids do not need this.

Older owner/provider-prefixed and gateway-style ids, such as anthropic/claude-opus-4-8 or anthropic/claude-opus-4.8, are accepted for compatibility and normalize to the same canonical id.

Model object

A model object configures one model and its controls. Optional controls are passed through when the selected agent supports them. To compare two control settings of the same model, list two models entries.

FieldRequiredType / valuesNotes
nameYesStringLab-official models.dev id, such as claude-opus-4-8 or gpt-5.
labNoStringOptional disambiguator, such as anthropic or openai, used only when validation reports an ambiguous bare id.
effortNolow, medium, high, x-high, maxReasoning effort control, validated against the (agent, model) catalog. Delivered where each harness honors it: a reasoning-effort setting for Claude / Codex, baked into the model id for Cursor.
context_window_sizeNoStringContext window size, such as 1M or 200k (a token count also works). Supported for Claude (200k or 1M) and Codex (any size up to the model's limit). Not supported for Cursor: the Cursor CLI cannot select a context window, so ax experiment validate (and therefore ax experiment run) rejects any Cursor variant that sets it. Validation also rejects sizes over the selected model's limit.
thinkingNoBooleanEnables thinking mode when supported.
fastNoBooleanEnables fast mode when supported.
reasoning_summaryNoauto, concise, detailedHow much reasoning summary a Codex run requests. Defaults to auto, which gives the same variant as leaving it out; concise and detailed are distinct variants. Codex only: ax experiment validate rejects Claude and Cursor variants that set it. See Reasoning summaries on Codex.
agents: [claude, codex]
models:
  - name: claude-opus-4-8
    effort: high
    context_window_size: 1M
    thinking: true
  - gpt-5

Reasoning summaries on Codex

Codex never exposes its raw reasoning; the model returns it encrypted. The thinking you see in a Codex trace comes from reasoning summaries, and OpenAI returns those on a best-effort basis for each reasoning step. Brief reasoning often gets no summary, and minimal effort returns none.

If your experiment needs thinking evidence from Codex, set the Codex model's effort to medium or higher and reasoning_summary to detailed:

agents: [codex]
models:
  - name: gpt-5.3-codex
    effort: high
    reasoning_summary: detailed

Summaries are requested only on runs with managed model access. A run that uses your own OpenAI key requests none, even when a model sets reasoning_summary, and ax experiment run warns that Codex thinking will not be captured.

Supported models

Common catalog model IDs that at least one shipped agent can use (claude → Anthropic, codex → OpenAI, cursor → Cursor catalog). Media-only and non-tool entries are omitted; duplicate provider rows collapse to one lab + bare model. Unknown or agent-native ids can still work; this list is a convenience reference, not a gate. It does not track agent versions: run ax model list for the models each agent version supports.

ModelLab
claude-3-haiku-20240307anthropic
claude-3.5-haikuanthropic
claude-fable-5anthropic
claude-haiku-4-5anthropic
claude-haiku-5-5anthropic
claude-opus-4-1anthropic
claude-opus-4-20250514anthropic
claude-opus-4-5anthropic
claude-opus-4-6anthropic
claude-opus-4-7anthropic
claude-opus-4-8anthropic
claude-sonnet-4anthropic
claude-sonnet-4-20250514anthropic
claude-sonnet-4-5anthropic
claude-sonnet-4-6anthropic
claude-sonnet-5anthropic
composer-2.5cursor
defaultcursor
gemini-2.5-flashgoogle
gemini-3-flashgoogle
gemini-3.1-progoogle
gemini-3.5-flashgoogle
kimi-k2.5moonshotai
gpt-4-turboopenai
gpt-4.1openai
gpt-4.1-miniopenai
gpt-4.1-nanoopenai
gpt-4oopenai
gpt-4o-miniopenai
gpt-5openai
gpt-5-chatopenai
gpt-5-codexopenai
gpt-5-miniopenai
gpt-5-nanoopenai
gpt-5-proopenai
gpt-5.1openai
gpt-5.1-codexopenai
gpt-5.1-codex-maxopenai
gpt-5.1-codex-miniopenai
gpt-5.1-instantopenai
gpt-5.1-thinkingopenai
gpt-5.2openai
gpt-5.2-chatopenai
gpt-5.2-codexopenai
gpt-5.2-proopenai
gpt-5.3-chatopenai
gpt-5.3-codexopenai
gpt-5.4openai
gpt-5.4-miniopenai
gpt-5.4-nanoopenai
gpt-5.4-proopenai
gpt-5.5openai
gpt-5.5-proopenai
gpt-oss-120bopenai
gpt-oss-20bopenai
gpt-oss-safeguard-20bopenai
o1openai
o3openai
o3-deep-researchopenai
o3-miniopenai
o3-proopenai
o4-miniopenai
grok-4.3xai
grok-build-0.1xai