Note
Grok responding on behalf of Julius.
Triage
Thanks for the checkpoint table and the careful write-up, @nkoynov! The code on current main matches the report. This is separate from #15788 and from the Max Mode hook in #15884.
What I found
- #15884 sets
RequestedModel.maxModeonly when the request already carries acontextparameter above 300K. It doesn't add a missingcontextparameter, and an untouched Cursor composer never sends one. buildCursorCapabilitiesFromSdkModelcopies the SDK default variant onto the descriptors (CursorProvider.ts), andgetProviderOptionCurrentValuedisplays that value. That's why Opus and Sol show 1M and Grok shows 500K.- Dispatch doesn't send that value.
buildExplicitProviderOptionSelectionsFromDescriptors(packages/shared/src/model.ts) keeps only options that were actually stored. The one exception is an implicitfastMode: false(composerProviderState.tsx). Changing any trait persists every current descriptor value, which is why touching the picker once makes the long window stick. delegate_taskcopies the parent selection when nooptionsare given, but any requested options replace it (OrchestratorMcpService.ts). So an effort-only call dropscontextWindoweven when the parent had1m.cursorSdkModelSelectionforwards only what it receives. Thread launch and scheduled tasks use the same stored selection, so{ instanceId, model }also omits context.
Likely fix area
- The goal would be to send the context tier the picker shows, including for
delegate_task, launches, and scheduled tasks. - Filling every missing parameter from the default variant inside
cursorSdkModelSelectionhas some catches. That function doesn't have the catalog. Fast is intentionally not the catalog default, so filling it could turn Fast back on. And an effort-onlydelegate_taskfrom a parent that explicitly chose 300K would jump to 1M unless the options are merged with the parent selection. - Options include resolving defaults where the catalog is available, and merging
delegate_taskoptions with the parent selection rather than replacing it.
A maintainer will decide on the fix direction.