Choosing a model
Use Cursor's CLI model list, understand Auto, and keep model cost data current.
Start with the CLI list
cursor-agent modelsThis output is the default catalog. Cursor's picker can also enable models
that cursor-agent models does not print. open-cursor merges those enabled
IDE models in, using the ids Cursor actually accepts.
GLM 5.3 is the reported case. The picker label is "GLM 5.3", but the id is
glm-5p3 (and glm-5p3-flash for Flash), not glm-5.3. cursor-agent --model glm-5p3 accepts it even when cursor-agent models only lists GLM
5.2. Guessing the dotted docs id does not.
A model that is neither in the CLI list nor enabled in Cursor Settings →
Models still cannot be routed. Adding that id to opencode.json does not
make the CLI accept it.
Refresh OpenCode after Cursor changes the list. On OpenCode 2.x, restart the service; the plugin discovers models on each start:
opencode service restart
opencode models | grep cursor-acpOn OpenCode 1.x:
open-cursor sync-models
opencode models | grep cursor-acpAuto
cursor-acp/auto sends Cursor's auto model ID. Cursor chooses the model.
open-cursor does not rank the installed models or rewrite auto to a
specific provider ID.
Use Auto when you do not need a repeatable model choice. Select an explicit ID for debugging, comparisons, or work that depends on a known context or reasoning profile.
Composer and frontier models
Composer is Cursor's coding model family. It is a sensible first explicit choice for routine repository work because it is designed for that workload. A frontier model may fit a hard reasoning task better, but availability and cost differ by account.
Do not infer quality from the longest model name. Test the same representative task, then keep the cheapest model that meets the requirement.
Thinking and fast variants
The CLI may expose related IDs such as thinking, fast, low, or high variants. Keep the flat list:
open-cursor sync-modelsOr group related IDs under OpenCode variants:
open-cursor sync-models --variants --compact
open-cursor models --explainEach grouped entry keeps the exact Cursor ID in cursorModel. See
opencode.json.
Cost
The sync command attaches known prices from the package pricing table so OpenCode can display usage. Pricing changes independently of the plugin. Check Cursor's model and pricing documentation before making a cost-sensitive choice.
Repository maintainers can validate coverage with:
bun run check:pricingAn unknown price stays absent. The plugin does not invent a value.
A configured model gives no response
Run:
cursor-agent modelsIf the model is absent, remove the hand-written entry and sync the current list. If it is present but still produces no response, capture a debug log and follow Troubleshooting.