Explain the Router's model selection reasoning

Where does the bug appear (feature/product)?

Cursor IDE

Describe the Bug

While using Cursor Router’s “Auto Balanced” mode, I usually get routed to Grok 4.5/4.6 which I agree is the appropriately balanced model for my tasks. However, during a recent session it routed everything to Grok until I prompted a simple “Please commit and push, then I’ll keep an eye on the pipeline.” It routed to Opus 5. Fortunately I stopped it immediately and manually assigned it to Composer 2.5, fully capable of completing that task for much less cost.

It hadn’t done this in the past and it isn’t reproducible. I have no way to know why it made that choice - maybe it wanted the commit message to be a poem and I just lost out on some nice reading material.

Potential feature request from this: It would be helpful to get a justification for the model choice each time the Router is used. As a user we don’t get any information about individual decisions. Something like “Routed to GPT 5.X anticipating the need for strong natural language processing”, “Routed to Composer 2.X as this is a routine task that this model can accomplish cheaply”, “Routed to Fable 5.X for this initial planning phase as you’ve described the problem as long-tailed, something this model excels at”. This can educate the user a bit about the models and might help them choose which Router setting (Cost, Balance, Intelligence) fits them best. And if they disagree with the reasoning (“No, I don’t think this is a long-tailed problem”) it will be easier to catch and stop the inappropriate model choice.

Steps to Reproduce

Unable to reproduce.

Expected Behavior

Router’s model choice to match the expected need for the prompt with the lowest cost.

Operating System

Linux

Version Information

Version: 3.13.10
VS Code Extension API: 1.128.0
Commit: 4f02290ccd9304f0e6bf8ee85f6e9106f02ac1f0
Date: 2026-07-23T21:41:07.333Z
Layout: IDE
Build Type: Stable
Release Track: Default
Electron: 40.10.3
Chromium: 144.0.7559.236
Node.js: 24.15.0
V8: 14.4.258.32-electron.0
xterm.js: 6.1.0-beta.256
OS: Linux x64 5.15.0-190-generic

Does this stop you from using Cursor

No - Cursor works, but with this issue

Hey @Michael_Oden, thanks for the write-up!

Dug into your request. In Balanced mode, the router isn’t following fixed rules per task type: a learned model reads your recent conversation and predicts, for each candidate model, both how well it’s likely to do and what it will cost, then picks within a cost budget.

On that commit-and-push message, it predicted a small quality edge for Opus over the cheaper options and picked it.

Your suggestion to show the reasoning behind each pick is an interesting one! Will pass along to the team.

That is good to know, thanks @Colin !

The conversation before that commit-and-push was somewhat complex design, so that could justify using Opus. The specific next task was just an inappropriate time to switch.

This also makes me think that if I’m working on something with a mix of task complexity, where the conversation history is a bad predictor of the next task, it is probably better to manually select the models. Not a big deal.

I’ve noticed the same.

I think an opt-in setting when in auto mode that requires you to approve elevating to a higher model could be a good idea as well.

So default would be to allow auto to route however it chooses, but an opt-in setting would prompt the user to approve switching to Opus, etc – perhaps with reasoning for the switch as Oden suggested.