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; press Esc while it switches to keep the current model. - 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 pausing OptiFlume apply to every tool, globally or per project. Suggest-only mode is for Cursor for now; see Modes and Stop/Keep.
Want a moment to reconsider each switch? Turn on the Stop/Keep notice: each switch then waits a few seconds while a notification 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.
In Claude Code and Codex, the marker is ~, with or without a space. It works in the panels and in the terminal. The ~ is removed before the prompt is sent, except with claude in a terminal, where it stays and OptiFlume tells the model to ignore it. If your prompt itself starts with a path, add the marker in front: ~ ~/project/app.py is failing. A leading ! also works in the Claude Code and Codex panels in VS Code, but not in the terminal, where ! belongs to the shell.
~ refactor the billing module to use the new Stripe clientIn Cursor, the marker is !:
! 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 OptiFlume is paused.
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. See Working memory and session watchdog.
Per-project settings
cd ~/code/my-project
optiflume configure --projectWrites .cursor/intent-router.json in the project with that project’s mode (switch automatically, suggest only or paused) and its cost-or-quality preference. Project settings win over your global ones when you work in that project folder, in any tool. Claude Code and Codex use the project’s preference and its paused setting; they do not have suggest-only yet, so they keep switching in a suggest-only project. Every key a project file can hold is in the Settings reference.