Grafy Blog
All posts Try Grafy free
← All posts

Lowest-cost mode: spend the cheapest model that can answer

ai costsmodel routingllm pricingopenrouterfallbacks
Lowest-cost mode: spend the cheapest model that can answer

“Only use free models” is a tempting setting and a bad one. Free is a property of a price list, not of a job: it changes weekly, it says nothing about whether the model can do what you asked, and the moment the cheap option cannot answer, you are staring at an error instead of a result. The spend gate is now a relative value tier — and it escalates rather than gives up.

1Pick a tier2Try cheapest3Walk the fallbacks4Escalate if spent
Pick a tier → Try cheapest → Walk the fallbacks → Escalate if spent
SPENDAutoLowest costFull catalogUse a premium modeljust for this request?Allow onceCancelCheapest bandMidPremium
The cheap band is tried first and its failures are spent quietly; only then does the request climb, and a premium model still asks once before it costs you anything.

A tier, not a list

Lowest-cost mode targets the cheapest band of models of each kind, recomputed from the live catalog every few hours. It tracks the market instead of a list someone hard-coded in a quarter that has since ended — when a provider drops a price, the tier notices.

Only genuinely published prices can earn the tier. OpenRouter reports -1 for meta-routers whose price depends on where they land; read naively, that is the cheapest number in the catalog, and those models were being tagged free. A negative rate is now treated as unknown and clamped out of the rate table entirely, so no downstream arithmetic ever sees a negative price.

Three states, not a checkbox

The preference is auto, on or off. Auto defers to a role default, and the defaults differ for a reason: internal roles start restricted, because they are billed no credits and the gate is the only thing between an exploratory afternoon and a provider invoice. Paying customers start with the full catalog, because they are paying for it.

A pick is a starting point, not a promise

Hand-picking a model used to mean that model or a loud failure. Now a re-routable failure steps to the next candidate, because whoever made the first pick still wants an answer. The chosen model still matters — it is where the walk begins — and a walk that runs out of candidates reports exactly what it tried.

Lowest-cost mode no longer dies with its own tier either. Once its candidates are spent for a request, it escalates cheapest-first, so the ladder climbs cheap → mid → premium rather than failing at the bottom. A first pick with nothing yet tried keeps the strict tier and returns an actionable 403 — the gate still means something; it just stops meaning “no answer for you” halfway through a job.

Consent for the expensive one, asked once

Sometimes you want the premium model for exactly one question. The dialog asks once per model and remembers the choice for the session, so a conversation does not interrogate you every turn. The consent rides along with the request rather than being stored, which means the mode never quietly flips off behind your back — and the server enforces the same rule, so a prompt that never appeared fails clean instead of spending silently.

The tier is visible where you pick

Both the studio and the chat model pickers show which tier a model is in, so the cheap choice is a choice you can see rather than a policy you have to remember. ## Why “free models only” was the wrong abstraction

The original setting did what it said and still failed, for three reasons worth naming because they generalise to any spend control.

Free is a price, not a capability. A free model that cannot do the job costs you a wasted request and a retry, which is not free.

Price lists move. A hard-coded allow-list is accurate on the day it is written and slowly wrong afterwards. Recomputing the cheapest band from the live catalogue every few hours means a provider's price cut reaches you without anyone shipping a change.

A binary gate fails closed at the worst moment. “No paid models, ever” turns a mid-job hiccup into a dead end, and the user's only recourse is to switch the whole setting off — which is how spend controls get abandoned entirely.

The escalation ladder in practice

A request in lowest-cost mode tries the cheap band first. If a candidate fails in a re-routable way, it steps to the next one. When the band's candidates are spent for that request, it escalates cheapest-first — cheap, then mid, then premium — rather than giving up.

The one case that stays strict is a first pick with nothing yet tried: that returns an actionable 403 rather than silently spending more than you asked. The distinction is between you have not started and the cheap route has genuinely been exhausted, and only the second justifies climbing.

The fallback hop ceiling spans the full ladder while still bounding how many provider calls a single refusal can trigger, so an unlucky request cannot walk the entire catalogue.

What this means for agents and long jobs

Spend control matters most where requests multiply. An agent run is a chain of steps, a model council is several full requests per turn, and a film or game build is dozens of generations. Those are exactly the places where an uncapped picker quietly selects premium models at every hop.

Setting the tier once, at the account level, is more reliable than remembering to choose carefully thirty times.

Frequently asked questions

How often is the cheapest band recalculated?

Every few hours, from the live catalogue, per kind of model. That cadence is a deliberate compromise: frequent enough to track real price movements, infrequent enough that the tier a session started with does not shift underneath it mid-task.

What was the “-1” pricing bug?

OpenRouter reports a rate of -1 for meta-routers whose real price depends on where they land. Read naively that is the smallest number in the catalogue, so those models were being ranked cheapest and tagged free. Negative rates are now treated as unknown and clamped out of the rate table entirely, so no downstream arithmetic ever sees one.

Why do internal roles start restricted but customers do not?

Internal roles are billed no credits, so the tier is the only thing between an exploratory afternoon and a provider invoice. Paying customers have a credit balance that already bounds spend, and they are paying for access to the full catalogue — restricting them by default would be taking something they bought.

Does the one-off consent turn the mode off?

No. Consent rides along with the individual request rather than being stored as a setting, so the mode never silently flips. It is remembered for the session so a conversation does not interrogate you every turn, and the server enforces the same rule — a prompt that never appeared fails clean instead of spending.

Can I see which tier a model is in before I pick it?

Yes. Both the studio and chat model pickers surface the tier, alongside maker and context window. The cheap choice is a visible choice rather than a policy you have to remember — which is also what makes comparing models honestly affordable.

Set your spend tier before your next long session.

← Back to all posts