OpenAI API key breaks Composer model

Where does the bug appear (feature/product)?

Cursor IDE

Describe the Bug

After adding an OpenAI API key, I can’t use Composer 2.5 Fast or Grok anymore.

Steps to Reproduce

  1. Open Settings → Models
  2. Add OpenAI API Key
  3. Enable OpenAI API access
  4. Start a new chat
  5. Select Composer 2.5 Fast in model dropdown and prompt

Expected Behavior

I’m still able to use my included usage of Cursor models that I have paid for.

Operating System

MacOS

Version Information

Version: 3.14.27
VS Code Extension API: 1.128.0
Commit: 047548b00c1a079373d74d00183f32510a4a41e0
Date: 2026-08-04T03:29:11.183Z
Layout: Agent Window
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.291
OS: Darwin arm64 25.6.0

For AI issues: which model did you use?

Composer 2.5 Fast

For AI issues: add Request ID with privacy disabled

Request ID: 30d641ec-06d7-4798-ad42-f43e5eb739e9
{“error”:“ERROR_BAD_REQUEST”,“details”:{“title”:“Bad Request”,“detail”:“This model does not support custom API keys.”,“isRetryable”:false,“additionalInfo”:{},“buttons”:,“planChoices”:,“analyticsMetadata”:{“actionRequired”:“config”}},“isExpected”:true}
This model does not support custom API keys.
Bad Request This model does not support custom API keys.
ActionRequiredError: Bad Request This model does not support custom API keys.
at D9_ (vscode-file://vscode-app/Applications/Cursor.app/Contents/Resources/app/out/vs/workbench/workbench.glass.main.js:8654:111816)
at gsa (vscode-file://vscode-app/Applications/Cursor.app/Contents/Resources/app/out/vs/workbench/workbench.glass.main.js:8654:110730)
at Z9_ (vscode-file://vscode-app/Applications/Cursor.app/Contents/Resources/app/out/vs/workbench/workbench.glass.main.js:8655:12878)
at Object.classify (vscode-file://vscode-app/Applications/Cursor.app/Contents/Resources/app/out/vs/workbench/workbench.glass.main.js:8655:17452)
at G9_ (vscode-file://vscode-app/Applications/Cursor.app/Contents/Resources/app/out/vs/workbench/workbench.glass.main.js:8655:5856)
at async Isa.run (vscode-file://vscode-app/Applications/Cursor.app/Contents/Resources/app/out/vs/workbench/workbench.glass.main.js:8655:16804)
at async ege.runAgentLoop (vscode-file://vscode-app/Applications/Cursor.app/Contents/Resources/app/out/vs/workbench/workbench.glass.main.js:14591:15413)
at async Jgl.streamFromAgentBackend (vscode-file://vscode-app/Applications/Cursor.app/Contents/Resources/app/out/vs/workbench/workbench.glass.main.js:18950:15595)
at async Jgl.getAgentStreamResponse (vscode-file://vscode-app/Applications/Cursor.app/Contents/Resources/app/out/vs/workbench/workbench.glass.main.js:18950:32201)
at async B7e._submitChatMaybeAbortCurrent (vscode-file://vscode-app/Applications/Cursor.app/Contents/Resources/app/out/vs/workbench/workbench.glass.main.js:8762:2569)

Additional Information

It seems to be fine with Anthropic and Google API keys.

Does this stop you from using Cursor

Yes - Cursor is unusable

Hi @Flor1an Thank you for the post.

Composer 2.5 Fast and Grok are Cursor-hosted models, so they always run on Cursor infrastructure and cannot use a custom API key. Your included Cursor usage remains. What is happening is that with the OpenAI API key enabled, selecting one of those models still sends the custom key along, and the request is rejected with “This model does not support custom API keys.”

That is also why Anthropic and Google keys do not get in the way. Those keys apply only to Claude and Gemini models. The OpenAI key is broader, and it applies to other selections, including Composer and Grok.

For now, you can:

  • In Cursor Settings > Models, turn off the OpenAI API Key when you want to use Composer or Grok. You can leave the key saved and turn it back on when you want an OpenAI or OpenAI-compatible model.
  • Keep the OpenAI key enabled and use Auto. Auto does not send the custom key when it routes to a Cursor-hosted model. Auto does not always pick Composer 2.5 Fast, so if you want that model every time, turn the OpenAI key off and select it directly.

Let me know any follow-up questions!

Thanks Kevin, that explains it.

The current behaviour is highly misleading, though — the models stay selectable and only fail at request time. Can the team scope the OpenAI key like the Anthropic and Google ones, so it isn’t sent with Cursor-hosted models at all?