Step classifier
The step classifier labels every inbound request with the agent-loop step it represents, so the gateway can route each step to the model that historically wins on that kind of work. A planning step and a tool-arg formatting step have different cost and quality trade-offs; pinning one model for both overpays on the cheap step or underperforms on the hard step. The classifier names the step, and the router plus the capability resolver bias the model pick toward the right tier for that step.
The classifier is per-step routing intelligence. It runs on the prompt text of the last user message and emits a step-class label, a complexity tier, and a thinking budget. The labels are descriptive of the work, not the model tier, so the vocabulary stays stable even as the underlying model picks change.
The step-class vocabulary
The classifier emits one of six step-class labels:
plannerfor the decomposition step in an agent loop, where the agent breaks a goal into subgoals or lays out an ordered plan.tool-arg-formatterfor the step that emits a function call against a JSON schema, where the output shape is the structured argument blob.summariserfor the step that condenses a long input into a short output.extractorfor the step that pulls specific fields out of a larger body of text.coderfor the step that writes or reviews code.criticfor the step that evaluates a prior output against a specification.
The labels are mutually exclusive; the classifier picks the single label that best fits the step, favouring the most agent-loop-specific signal. When no label clearly applies, the classifier returns no step-class and the request routes on its complexity tier alone.
Complexity tier and thinking budget
Alongside the step-class label, the classifier emits a complexity tier of
simple, medium, or complex, and a thinking budget of none,
low, medium, or high. The complexity tier maps to a model family:
simple to a cheap fast model, medium to a mid model, complex to the
operator's chosen flagship. The thinking budget controls how much
extended reasoning the model spends on the call, where none runs the
model with no extended thinking, low buys a cheap nudge, medium sits
between a nudge and a full reasoning pass, and high buys the long-form
chain-of-thought a hard planning or synthesis step needs. Each setting
maps onto whatever the destination provider actually supports, so the
same tier becomes an Anthropic thinking budget, an OpenAI reasoning
effort, or a Gemini thinking budget without your call site changing.
The budget can also be resolved for you. With the org-level auto mode
on, the gateway's complexity judge picks the tier per request rather than
the caller pinning one, and every request records where its budget came
from, whether the client asked for it, the org default applied, or auto
derived it, so the choice is auditable on the usage page.
The two axes are independent. A short planner prompt can carry a high
thinking budget on a medium complexity tier, because the value is in
the reasoning depth rather than the raw model size; a long tool-arg
prompt can carry a thinking budget of none because the output shape is
the function call and there is nothing for the model to think about.
How the step class biases routing
The step-class label biases the model pick after the complexity tier and
the thinking budget are set. On a request that names a
capability alias, a step labelled planner is lifted
to the heavy-reasoning mapping with an extended thinking budget, because the
planning step rewards the long-form reasoning path. A step labelled
tool-arg-formatter drops to the cheap-fast mapping with the thinking budget
off and JSON mode pinned on the downstream request, because the schema shape
is the output and there is nothing for the model to think about. A step
labelled critic keeps its model but has to run on a provider other than the
one that produced the step it is reviewing, so a model never grades its own
family's output.
On the plain auto path the bias is narrower and opt-in per org. With it
on, three low-blast-radius steps -- tool-arg-formatter, summariser, and
extractor -- route one tier cheaper than the classifier's verdict, because
a weaker summary or a missed extraction field is cheap to absorb. The
load-bearing steps -- planner, coder, and critic -- stay on the tier
the classifier picked: their output steers everything after them, so a
cheap-model regression there has a wide blast radius.
The bias composes with the capability resolver's focus-mode bias rather than overriding it. When an operator flips the org's focus mode to cost reduction, the resolver prefers the cheaper variant within the step's tier; when the operator flips to quality mode, the resolver prefers the premium variant. The step-class bias and the focus-mode bias stack, so the final model reflects both the kind of step and the operator's cost posture.
Latency and replay
The step classifier runs in the request's fast path. It adds no extra network round-trip and stays off the request's latency budget, so the labelling cost is negligible compared to the upstream model call. The label it returns is persisted to the request's routing record, so the session trajectory can replay the step class the gateway saw for every call in the loop.
Related pages
Routing explains how the classifier output maps to a
model family and a fallback chain. Capability aliases explain how a
cap: reference resolves to a concrete model, and
how the step-class bias composes with the per-org capability table at
resolve time.