Routing and overrides
You always have the last word. Here is what OptiFlume does with a prompt, and every way to steer it.
What a switch looks like
When the model you have selected is more than the prompt needs, or less, OptiFlume switches before the prompt goes and says why in one line. When it moves you to a stronger model, the line says the work looks harder than your current model is rated for. OptiFlume never moves hard work to a weaker model to save money.
- Claude Code: the line appears under your prompt, such as
OptiFlume: routine change → Sonnet 5 · low, and the panel’s model chip changes. Withclaudein a terminal, your prompt sends on the new model by itself; to keep your model for a prompt, start it with~. - Codex: the same kind of line appears under your prompt (in the panel, in the hook entry), and the panel’s model picker shows the model that ran.
- Cursor: the prompt pauses in the composer, the model in Cursor’s picker changes, a note above the composer says why and how the new model’s price compares with yours, and the same prompt sends on the new model as soon as Cursor is ready.
In Claude Code and Codex, a switch never changes your saved default model. The Claude Code, Codex and Cursor pages show each one.
Your cost-or-quality preference and the mode (switch automatically, suggest only or off) apply to every tool, globally or per project. In Claude Code and Codex, suggest only names the better model under your prompt and sends the prompt on yours; see Modes and Stop/Keep.
Want a moment to reconsider each switch? Turn on the Stop/Keep notice: each switch then waits (3 seconds by default; optiflume notice seconds N, at least 3) while the status bar counts down and offers Stop and Keep. See The Stop/Keep notice.
Keep your own model with ~ or !
Start a prompt with the keep-my-model marker and it goes through on the model you have selected, with no switch and no suggestion. Choose the model first, then send the marker followed by your prompt. Only that prompt is affected; the next one is routed as usual.
The marker is ~ or !, with or without a space, the same in Cursor, Claude Code and Codex, in the panels and in the terminal. Any prompt that starts with either one keeps your model, no exceptions, so a prompt that itself starts with a path needs the marker in front: ~ ~/project/app.py is failing. One marker character is removed before the prompt is sent (the example reaches the model as ~/project/app.py is failing), except in Cursor and with claude in a terminal, where the prompt goes as you typed it and OptiFlume tells the model to ignore the marker. In the terminal, a ! typed first belongs to the tool’s own shell mode (it runs a command and never reaches OptiFlume), so use ~ there.
~ refactor the billing module to use the new Stripe clientPicking a model yourself does not turn routing off: the next prompt is checked again.
On Pro, the prompts you send your own way also teach OptiFlume your preferences over time.
Choosing among several models in Cursor
In suggest-only mode in Cursor, when several cheaper models are rated for the work at a similar price, the note lists up to four of them, numbered, each with how its price compares with your current model. Switch to the one you want in the model picker and send the prompt again, or start it with ! to keep yours.
The note also offers !1, !2 and so on as a shortcut for naming your pick. Sending !2 your prompt holds the prompt and confirms the second model by name; suggest-only mode never changes the model for you, so select it in the picker and send the prompt again starting with !. The numbers refer only to the most recent list. With no list to pick from, a number works like a plain !: the prompt goes on your current model.
When OptiFlume is switching automatically there is no list: it picks the best-suited model itself and switches to it.
When it stays quiet
Most prompts go through without a switch. OptiFlume leaves your model alone when:
- the saving against your current model would be small;
- your current model is already the best-value model rated for the work;
- in Cursor, the better option is only a variant of the model you have (in Claude Code and Codex, OptiFlume may change the effort level instead);
- the prompt is a short reply such as “yes”, “continue” or “looks good”;
- it is not sure. An unnecessary switch costs you more than a missed saving, so when the choice isn’t clear, nothing happens;
- the prompt starts with
~in Claude Code and Codex, or!in Cursor, or switching is off.
Which models it chooses from
Only models you can already use: in Claude Code, the models your Claude account can run; in Codex, the models your ChatGPT account can run; in Cursor, the models you have turned on in Cursor’s settings (turn a model off there and OptiFlume will not switch to it). Cursor prices come from Cursor’s published per-token prices and stay current without an OptiFlume update.
Your preference decides between the candidates: cost first (the default) picks the lowest-priced model rated for the work; quality first picks the strongest, newest model rated for it. It applies in Cursor, Claude Code and Codex. Change it with optiflume configure.
When automatic switching can’t run
On the free tier, in every tool, OptiFlume names a better-suited model and your prompt goes ahead on yours; it is never stopped (see Free tier and Pro). In Cursor, OptiFlume also suggests instead of switching, and says why, when:
- Cursor does not have Accessibility permission;
- the OptiFlume Bridge extension is not running in that Cursor window, or is out of date;
- automatic switching is paused for your Cursor version (see Status).
If anything in OptiFlume fails, your prompt goes through unchanged on the model you selected. It cannot lock you out of your tool.
Long conversations
When your tool compacts a long conversation, or OptiFlume switches models mid-session, the working memory of the session goes with it, so the model picks up where you were. This works in Cursor, Claude Code and Codex, and a new conversation can pick up the latest working memory from another tool in the same project. See Working memory and session watchdog.
Does a switch mid-session cost more?
Sometimes, a little, once. Model providers keep the recent conversation in a short-lived cache, so the next request can re-read it at a lower price. Each model has its own cache, so the first request after a switch starts the new model cold: it reads the conversation once at the full price, and from then on its cache works as usual. When the saving would be small, OptiFlume leaves your model alone (see When it stays quiet, above).
What we measured in our own use (Cursor in September 2026, and Claude Code):
- The cache expires after a few minutes without a request (five in Cursor). 62% of our Cursor requests came after a pause that long, when the cache was already cold, so a switch then cost nothing extra.
- Switching while the cache was still warm cost $15 of a $1,737 month in Cursor, and about $1.20 per switch in Claude Code.
- Of the warm switches in Cursor that moved to a cheaper model, 9 of 12 earned that cost back within the same chat.
- Taking out every OptiFlume switch from that Cursor month would have cost $105 more on the prompts it decided: $561 instead of $456.
On a Claude or ChatGPT plan the same effect shows up as a little of your allowance rather than dollars. After a compaction, the working memory means the new model does not start from scratch either.
Per-project settings
cd ~/code/my-project
optiflume configure --projectWrites .optiflume/config.json in the project with that project’s mode (switch automatically, suggest only or off) and its cost-or-quality preference. Project settings win over your global ones when you work in that project folder, in Cursor, Claude Code and Codex. A project set up with an older version keeps working from its .cursor/intent-router.json, and running the command again carries those settings over. Every key a project file can hold is in the Settings reference.