Where does the bug appear (feature/product)?
Cursor SDK
Describe the Bug
Our Team plan Integrations API key suddenly only sees 4 models via the SDK catalog. GPT and Claude are gone and cannot be selected even by hardcoding model IDs.
This is not a UI filtering issue on our side: we call Cursor.models.list() and surface that list. The server rejects any other model at CreateAgent time.
Important: this does not look like the usual “regional restriction / CN IP” case that staff have been pointing people to:
- Exit IP is US Bay Area (San Mateo, CA / AWS AS16509), not a restricted region.
- On the same machine,
agent --list-modelsstill returns the full catalog (GPT, Claude, etc.). - Only the API key / SDK path is restricted.
Environment
- Plan: Company Team Plan
- API key: Integrations / User API Key (
crsr_…), key namenext_team - Account email associated with key:
the linked email to my current account - Python package:
cursor-sdk0.1.8 - Agent CLI (same host):
2026.07.23-e383d2b - Host egress (ipinfo): San Mateo CA, US
What we observe
1. SDK catalog (API key)
Cursor.models.list() →
auto-smart
grok-4.5
composer-2.5
composer-2
2. REST catalog (same API key)
GET https://api.cursor.com/v1/models
Authorization: Bearer $CURSOR_API_KEY
→ items: auto-smart, grok-4.5, composer-2.5
3. Agent CLI on the same host (user session, not the API key)
agent --list-models
→ full list including gpt-5.5-*, claude-opus-*, etc.
4. CreateAgent rejects non-catalog models
Hardcoding IDs that used to work fails immediately:
BadRequestError: invalid_argument: Cannot use this model: gpt-5.5.
Available models: auto-smart, grok-4.5, composer-2.5, composer-2.
Use Cursor.models.list() to discover valid selections.
Same rejection for claude-opus-4-8, gpt-5.4, CLI-style ids like gpt-5.5-high / claude-opus-4-8-thinking-high.
5. Models that still work
composer-2.5, grok-4.5, and auto-smart (with optimize_for) create and finish successfully.
Why we don’t think this is regional filtering
Forum answers for “only Composer/Grok/Kimi/GLM” usually cite provider regional restrictions based on request IP. That doesn’t fit here:
- US Bay Area egress
- Same host, same network: CLI full catalog vs SDK/API key 4-model catalog
- Rejection message enumerates exactly those 4 IDs as the allowed set for this key
Impact
Our internal SDK-backed agent UI (solo chat model picker) can no longer offer GPT/Claude because the server catalog for this API key no longer includes them, and CreateAgent hard-rejects those IDs.
Happy to provide request IDs, timestamps, or a minimal repro script if useful.
Steps to Reproduce
-
Export a Team Integrations API key as
CURSOR_API_KEY. -
Run:
from cursor_sdk import Cursor print([m.id for m in Cursor.models.list()]) -
Observe only
auto-smart,grok-4.5,composer-2.5,composer-2. -
Try:
from cursor_sdk import Agent, AgentOptions, LocalAgentOptions Agent.create(AgentOptions( api_key=..., model="gpt-5.5", local=LocalAgentOptions(cwd="."), )) -
Get
Cannot use this model: gpt-5.5. Available models: auto-smart, grok-4.5, composer-2.5, composer-2. -
On the same machine, run
agent --list-modelsand observe GPT/Claude still listed.
Expected Behavior
For a Team plan API key on a US Bay Area egress IP, Cursor.models.list() / GET /v1/models should expose the same GPT/Claude models that the Team account can use in CLI/IDE (or at least document why the Integrations API key catalog is intentionally narrowed to Cursor-owned models + Router).
If this is intentional policy for API keys / SDK, please confirm:
- Is the SDK/
crsr_key catalog now intentionally limited toauto-smart/ Composer / Grok? - How can a Team admin restore GPT/Claude for Integrations API keys?
- Why does CLI on the same host still see the full list while the API key does not?
Operating System
Linux
Version Information
- Plan: Company Team
- API key: Integrations / User API Key (
crsr_…), key namenext_team - Account email associated with key:
the email linked to this account - Python package:
cursor-sdk0.1.8 - Agent CLI (same host):
2026.07.23-e383d2b - Host egress (ipinfo): San Mateo CA, US
Does this stop you from using Cursor
Yes - Cursor is unusable