SIGN IN SIGN UP

fix(cursor): reach a model's thinking and Fast knobs, and hold the permission switch

The settings model picker listed `cursor-agent models` flat — around 200 ids,
one per combination — so a thinking level or the Fast flag was reachable only
by knowing an id like `claude-opus-5-thinking-max-fast` by heart. Group the
catalog into families and offer Thinking / Effort / Fast beside the family
name, each shown only when the family varies on it. No id is synthesized: the
suffix grammar is ambiguous (Cursor ships legacy aliases such as
`claude-4.5-opus-high` whose own name ends in an effort token), so every value
handed back is one the CLI reported. A combination that does not exist clamps
to its nearest sibling, holding the dimension the user just moved.

`CURSOR_FORCE` was written as "1" for Run Everything and DELETED for Ask,
leaving the launch unable to tell "the user chose Ask" from "never
configured". The panel rendered the missing key as Run Everything while the
launch read it as Ask, so the switch showed one mode and the session ran
another. Write both states explicitly and read the same rule on both sides,
with unset resolving to Ask — what these sessions have always actually done,
so no existing install silently loses its confirmation prompts.

In session, a `model` preference saved under cursor-agent's older variant
picker holds a stringified variant that the parameterized picker rejects
outright — failing on every connect, logged and skipped, so the user silently
kept landing on whatever model Cursor chose. Heal it back to its base id. The
heal matches the value rather than the agent id, since the capability gate
keys on the launch recipe and a custom agent wrapping `cursor-agent … acp`
would otherwise be stranded; requiring cursor's own parameter vocabulary and a
flat (non-namespaced) base keeps other agents' arbitrary model ids intact.
X
xintaofei committed
ce08328e9b12b01eda301481571307cc6778ac11
Parent: d7cdd8e