Bug: `agent acp` model switching updates session metadata but does not change the inference backend

,

Where does the bug appear (feature/product)?

Cursor CLI

Describe the Bug

When using the Cursor CLI in ACP (Agent Client Protocol) mode (agent acp), switching models via session/set_config_option correctly updates session metadata (configOptions.currentValue and models.currentModelId in subsequent session/new responses), but the actual model serving completions does not change. All responses come from the same underlying model regardless of which model is selected.

This was verified by switching to models from different providers (OpenAI, Anthropic, Google, xAI) and asking identity/behavioral questions. Every response came from the same model.

Contrast with interactive CLI: The interactive CLI (agent without acp) correctly switches between models — the status bar updates, and the model’s self-reported identity and behavior change with the selection.

Steps to Reproduce

Steps to Reproduce

  1. Start the Cursor CLI in ACP mode: cursor-agent acp
  2. Send initialize (protocol version 1, standard client capabilities)
  3. Send authenticate (methodId: cursor_login)
  4. Send session/new — note the available models in configOptions (category model)
  5. Send session/set_config_option with configId: "model" and value: "gpt-5.4[reasoning=medium,context=272k,fast=false]" (or any OpenAI model)
  6. Send session/new again — observe configOptions now reports the new model ✓
  7. Send session/prompt with prompt: "Which company created and trained you? Reply with only the company name, nothing else."
  8. Observe the response — it does not come from an OpenAI model

Repeat steps 5–8 with models from different providers (Claude, Gemini, etc.) — the response always comes from the same model.

A Go-based ACP test harness was built to automate this. Source is available upon request.

Expected Behavior

After session/set_config_option with a model value like gpt-5.4[...], subsequent session/prompt completions should be served by that model (GPT-5.4 from OpenAI), not by a fixed default. Provider-identifying probes should reflect the actual backend:

  • OpenAI models should identify as OpenAI/GPT
  • Anthropic models should identify as Anthropic/Claude
  • Google models should identify as Google/Gemini

This works correctly in the interactive CLI (agent without acp), where switching models changes both the status bar indicator and the actual model behavior.

Screenshots / Screen Recordings

diag-stderr-2.txt (8.82 KB)

Operating System

Windows 10/11

Version Information

Cursor CLI version: 2026.04.08-a41fba1 (fresh reinstall confirmed)

Does this stop you from using Cursor

No - Cursor works, but with this issue

Hey @brendenguy!

Without seeing your test harness I can’t comment on what could be going on on your end. I built a small Node.js reproduction using the ACP SDK and model switching works correctly — different providers respond differently.

acp-model-switch-repro.zip (4.5 KB)

cd /Users/cmueller/Source/everysphere/packages/agent-cli && npx tsx src/acp/repro-model-switch.ts -- cursor-agent acp 2>&1
=== ACP Model-Switching Reproduction ===
Agent: cursor-agent acp

[init] protocol=1
[auth] authenticating via cursor_login
[session] 2147cf96-246a-41ea-9526-f71b50c3bc35
[model config] current=composer-2, 45 models available

--- Testing 4 models ---

[switch] Setting model to: Sonnet 4.6 (claude-sonnet-4-6)
[config] reported currentValue: claude-sonnet-4-6
[prompt] "Which company created and trained you? Reply with ONLY the company name, nothing else."
[response] Anthropic

[switch] Setting model to: GPT-5.4 (gpt-5.4)
[config] reported currentValue: gpt-5.4
[prompt] "Which company created and trained you? Reply with ONLY the company name, nothing else."
[response] OpenAI

[switch] Setting model to: Gemini 3.1 Pro (gemini-3.1-pro)
[config] reported currentValue: gemini-3.1-pro
[prompt] "Which company created and trained you? Reply with ONLY the company name, nothing else."
[response] Google

[switch] Setting model to: Grok 4.20 (grok-4-20)
[config] reported currentValue: grok-4-20
[prompt] "Which company created and trained you? Reply with ONLY the company name, nothing else."
[response] xAI


=== Summary ===

Model                    Config Value        Response
----------------------------------------------------------------------
claude-sonnet-4-6        claude-sonnet-4-6   Anthropic
gpt-5.4                  gpt-5.4             OpenAI
gemini-3.1-pro           gemini-3.1-pro      Google
grok-4-20                grok-4-20           xAI

4 unique response(s) across 4 model(s).
Responses differ — model switching appears to be working.
[agent exited] code=143

@Colin Thanks for sharing the test harness. I ran your exact repro zip (acp-model-switch-repro.zip) on my end and got very different results — all four models responded identically with “Cursor,” which suggests the model switching is not working for my account/environment:

=== ACP Model-Switching Reproduction ===
Agent: cursor-agent acp
[init] protocol=1
[auth] authenticating via cursor_login
[session] 2110d261-db3a-45be-b0b0-2669d86e663e
[model config] current=grok-4-20[thinking=true], 25 models available

--- Testing 4 models ---

[switch] Setting model to: claude-sonnet-4-6 (claude-sonnet-4-6[thinking=true,context=200k,effort=medium])
[config] reported currentValue: claude-sonnet-4-6[thinking=true,context=200k,effort=medium]
[prompt] "Which company created and trained you? Reply with ONLY the company name, nothing else."
[response] Cursor

[switch] Setting model to: gpt-5.3-codex (gpt-5.3-codex[reasoning=medium,fast=false])
[config] reported currentValue: gpt-5.3-codex[reasoning=medium,fast=false]
[prompt] "Which company created and trained you? Reply with ONLY the company name, nothing else."
[response] Cursor

[switch] Setting model to: gemini-3.1-pro (gemini-3.1-pro[])
[config] reported currentValue: gemini-3.1-pro[]
[prompt] "Which company created and trained you? Reply with ONLY the company name, nothing else."
[response] Cursor

[switch] Setting model to: grok-4-20 (grok-4-20[thinking=true])
[config] reported currentValue: grok-4-20[thinking=true]
[prompt] "Which company created and trained you? Reply with ONLY the company name, nothing else."
[response] Cursor

=== Summary ===
1 unique response(s) across 4 model(s).
>> All responses identical - model may not be switching on the backend.

A few differences I notice between our outputs that may be relevant:

Model parameter syntax: Your config values are bare (e.g., claude-sonnet-4-6), while mine include parameter annotations (e.g., claude-sonnet-4-6[thinking=true,context=200k,effort=medium]). This could indicate a different account tier, config, or server-side behavior.

Available model count: You see 45 models, I see 25.

Default model: Yours defaults to composer-2, mine to grok-4-20[thinking=true].
Identity responses: Your models correctly self-identify by their provider (Anthropic, OpenAI, Google). All of mine respond “Cursor” — which suggests either they’re all being routed to the same underlying model, or a system prompt is overriding their identity in a way that doesn’t happen on your end.

The fact that I’m running your exact test harness and getting uniformly “Cursor” responses across all four providers strongly suggests this is a real issue, likely account- or environment-specific rather than a client-side bug. Could you investigate what might differ server-side for my account?

The only change I made to your script was adding shell: process.platform === “win32” to the spawn options since cursor-agent is registered as a .cmd on Windows — this doesn’t affect the ACP communication itself.

Hello @brendenguy @Colin

I experienced the same issue. Updating the CLI version resolved it. CLI version: 2026.04.13-a9d7fb5

However, I encountered another issue after the update. When I change the model to claude-sonnet-4-6[thinking=true,context=200k,effort=medium], the following error occurs upon sending a prompt request: "AI Model Not Found Model name is not valid: “claude-sonnet-4-6"”

Below is the RPC log.

agent --api-key "{{user key}}" acp

{"jsonrpc":"2.0","id":0,"method":"initialize","params":{"protocolVersion":1,"clientInfo":{"name":"agent-test","version":"1.0.0"},"capabilities":{}}}

{"jsonrpc":"2.0","id":1,"method":"session/new","params":{"cwd":".","mcpServers":[]}}

{"jsonrpc":"2.0","id":2,"method":"session/set_config_option","params":{"sessionId":"524c638f-c29f-4708-bf15-086cbcc406fc","configId":"model","value":"claude-sonnet-4-6[thinking=true,context=200k,effort=medium]"}}

{"jsonrpc":"2.0","id":2,"result":{"configOptions":[{"id":"mode","name":"Mode","description":"Controls how the agent executes tasks","category":"mode","type":"select","currentValue":"agent","options":[{"value":"agent","name":"Agent","description":"Full agent capabilities with tool access"},{"value":"plan","name":"Plan","description":"Read-only mode for planning and designing before implementation"},{"value":"ask","name":"Ask","description":"Q&A mode - no edits or command execution"}]},{"id":"model","name":"Model","description":"Controls which model variant is used for responses","category":"model","type":"select","currentValue":"claude-sonnet-4-6[thinking=true,context=200k,effort=medium]","options":[{"value":"default[]","name":"Auto"},{"value":"composer-2[fast=true]","name":"composer-2"},{"value":"composer-1.5[]","name":"composer-1.5"},{"value":"gpt-5.3-codex[reasoning=medium,fast=false]","name":"gpt-5.3-codex"},{"value":"gpt-5.4[reasoning=medium,context=272k,fast=false]","name":"gpt-5.4"},{"value":"claude-sonnet-4-6[thinking=true,context=200k,effort=medium]","name":"claude-sonnet-4-6"},{"value":"claude-opus-4-6[thinking=true,context=200k,effort=high,fast=false]","name":"claude-opus-4-6"},{"value":"claude-opus-4-5[thinking=true]","name":"claude-opus-4-5"},{"value":"gpt-5.2[reasoning=medium,fast=false]","name":"gpt-5.2"},{"value":"gemini-3.1-pro[]","name":"gemini-3.1-pro"},{"value":"gpt-5.4-mini[reasoning=medium]","name":"gpt-5.4-mini"},{"value":"gpt-5.4-nano[reasoning=medium]","name":"gpt-5.4-nano"},{"value":"claude-haiku-4-5[thinking=true]","name":"claude-haiku-4-5"},{"value":"gpt-5.3-codex-spark[reasoning=medium]","name":"gpt-5.3-codex-spark"},{"value":"grok-4-20[thinking=true]","name":"grok-4-20"},{"value":"claude-sonnet-4-5[thinking=true,context=200k]","name":"claude-sonnet-4-5"},{"value":"gpt-5.2-codex[reasoning=medium,fast=false]","name":"gpt-5.2-codex"},{"value":"gpt-5.1-codex-max[reasoning=medium,fast=false]","name":"gpt-5.1-codex-max"},{"value":"gpt-5.1[reasoning=medium]","name":"gpt-5.1"},{"value":"gemini-3-flash[]","name":"gemini-3-flash"},{"value":"gpt-5.1-codex-mini[reasoning=medium]","name":"gpt-5.1-codex-mini"},{"value":"claude-sonnet-4[thinking=false,context=200k]","name":"claude-sonnet-4"},{"value":"gpt-5-mini[]","name":"gpt-5-mini"},{"value":"gemini-2.5-flash[]","name":"gemini-2.5-flash"},{"value":"kimi-k2.5[]","name":"kimi-k2.5"}]}]}}

{"jsonrpc":"2.0","id":3,"method":"session/prompt","params":{"sessionId":"524c638f-c29f-4708-bf15-086cbcc406fc","prompt":[{"type":"text","text":"Which company created and trained you? Reply with ONLY the company name, nothing else."}]}}

{"jsonrpc":"2.0","method":"session/update","params":{"sessionId":"524c638f-c29f-4708-bf15-086cbcc406fc","update":{"sessionUpdate":"agent_message_chunk","content":{"type":"text","text":"\n\nError: I: AI Model Not Found Model name is not valid: \"claude-sonnet-4-6\""}}}}

{"jsonrpc":"2.0","id":3,"result":{"stopReason":"end_turn"}}

Below is the Test log

=== ACP Model-Switching Reproduction ===
Agent: cursor-agent acp

[init] protocol=1
[auth] authenticating via cursor_login
[session] 2129db4e-fb95-455e-aea8-6966cfb572cb
[model config] current=claude-sonnet-4-6, 25 models available

--- Testing 4 models ---

[switch] Setting model to: Sonnet 4.6 (claude-sonnet-4-6)
[config] reported currentValue: claude-sonnet-4-6
[prompt] "Which company created and trained you? Reply with ONLY the company name, nothing else."
[response] Error: I: AI Model Not Found Model name is not valid: "claude-sonnet-4-6"

[switch] Setting model to: Codex 5.3 (gpt-5.3-codex)
[config] reported currentValue: gpt-5.3-codex
[prompt] "Which company created and trained you? Reply with ONLY the company name, nothing else."
[response] OpenAI

[switch] Setting model to: Gemini 3.1 Pro (gemini-3.1-pro)
[config] reported currentValue: gemini-3.1-pro
[prompt] "Which company created and trained you? Reply with ONLY the company name, nothing else."
[response] 구글

[switch] Setting model to: Grok 4.20 (grok-4-20)
[config] reported currentValue: grok-4-20
[prompt] "Which company created and trained you? Reply with ONLY the company name, nothing else."
[response] **xAI**


=== Summary ===

Model                    Config Value             Response
---------------------------------------------------------------------------
claude-sonnet-4-6        claude-sonnet-4-6        Error: I: AI Model Not Found Model name is not valid: "claude-sonnet-4-6"
gpt-5.3-codex            gpt-5.3-codex            OpenAI
gemini-3.1-pro           gemini-3.1-pro           구글
grok-4-20                grok-4-20                **xAI**

4 unique response(s) across 4 model(s).
>> Responses differ - model switching appears to be working.
[agent exited] code=143

@Colin I can confirm that the latest CLI update seems to have fixed the model switching issue. I am now seeing the same issue as @nzzi reported:

claude-sonnet-4-6 gets “AI Model Not Found: Model name is not valid”.

This looks like the model ID may have changed or been retired on the backend. The fuzzy match in the test picks claude-sonnet-4-6 but that ID isn’t recognized by the server anymore.

@Colin I’ve now tested all of the models that were available in my list via ACP. Switching appears to work for all of them, but when you send a prompt to them, many are currently failing.

Broken models (switch OK, prompt fails):

  • gpt-5.4 (and -mini, -nano)

  • claude-opus-4-6, claude-opus-4-5

  • claude-sonnet-4-6, claude-sonnet-4-5, claude-sonnet-4

  • claude-haiku-4-5

  • gpt-5.3-codex-spark

Working models (15):

  • default, composer-2, composer-1.5

  • gpt-5.3-codex, gpt-5.2, gpt-5.2-codex, gpt-5.1, gpt-5.1-codex-max, gpt-5.1-codex-mini, gpt-5-mini

  • gemini-3.1-pro, gemini-3-flash, gemini-2.5-flash

  • grok-4-20

  • kimi-k2.5

I wrote another test to confirm this. The test goes through each model that is listed available via ACP, switches to it, then tries to send a trivial prompt.

Results:

================================================================================
POST-SWITCH PROMPT DIAGNOSTIC REPORT
================================================================================
Timestamp: 2026-04-14T23:25:09.397639700Z
Agent path: C:\Users\brend\AppData\Local\cursor-agent\agent.cmd
Agent version: v2026.04.13-a9d7fb5

Test: for each ACP model, switch via session/set_config_option,
then send a trivial prompt and inspect the response for errors.

Models to test: 25

--- Testing: default[] (Auto) ---
  Switch OK (confirmed: default[])
  Prompt RPC: OK
  Notifications received: 1
  Response text (first 300 chars): 
HELLO
  Contains error pattern: false

--- Testing: composer-2[fast=true] (composer-2) ---
  Switch OK (confirmed: composer-2[fast=true])
  Prompt RPC: OK
  Notifications received: 1
  Response text (first 300 chars): 
HELLO
  Contains error pattern: false

--- Testing: composer-1.5[] (composer-1.5) ---
  Switch OK (confirmed: composer-1.5[])
  Prompt RPC: OK
  Notifications received: 1
  Response text (first 300 chars): 
HELLO
  Contains error pattern: false

--- Testing: gpt-5.3-codex[reasoning=medium,fast=false] (gpt-5.3-codex) ---
  Switch OK (confirmed: gpt-5.3-codex[reasoning=medium,fast=false])
  Prompt RPC: OK
  Notifications received: 2
  Response text (first 300 chars): HELLO
  Contains error pattern: false

--- Testing: gpt-5.4[reasoning=medium,context=272k,fast=false] (gpt-5.4) ---
  Switch OK (confirmed: gpt-5.4[reasoning=medium,context=272k,fast=false])
  Prompt RPC: OK
  Notifications received: 1
  Response text (first 300 chars): 

Error: I: AI Model Not Found Model name is not valid: "gpt-5.4"
  Contains error pattern: true

--- Testing: claude-sonnet-4-6[thinking=true,context=200k,effort=medium] (claude-sonnet-4-6) ---
  Switch OK (confirmed: claude-sonnet-4-6[thinking=true,context=200k,effort=medium])
  Prompt RPC: OK
  Notifications received: 1
  Response text (first 300 chars): 

Error: I: AI Model Not Found Model name is not valid: "claude-sonnet-4-6"
  Contains error pattern: true

--- Testing: claude-opus-4-6[thinking=true,context=200k,effort=high,fast=false] (claude-opus-4-6) ---
  Switch OK (confirmed: claude-opus-4-6[thinking=true,context=200k,effort=high,fast=false])
  Prompt RPC: OK
  Notifications received: 1
  Response text (first 300 chars): 

Error: I: AI Model Not Found Model name is not valid: "claude-opus-4-6"
  Contains error pattern: true

--- Testing: claude-opus-4-5[thinking=true] (claude-opus-4-5) ---
  Switch OK (confirmed: claude-opus-4-5[thinking=true])
  Prompt RPC: OK
  Notifications received: 1
  Response text (first 300 chars): 

Error: I: AI Model Not Found Model name is not valid: "claude-opus-4-5"
  Contains error pattern: true

--- Testing: gpt-5.2[reasoning=medium,fast=false] (gpt-5.2) ---
  Switch OK (confirmed: gpt-5.2[reasoning=medium,fast=false])
  Prompt RPC: OK
  Notifications received: 2
  Response text (first 300 chars): HELLO
  Contains error pattern: false

--- Testing: gemini-3.1-pro[] (gemini-3.1-pro) ---
  Switch OK (confirmed: gemini-3.1-pro[])
  Prompt RPC: OK
  Notifications received: 1
  Response text (first 300 chars): HELLO
  Contains error pattern: false

--- Testing: gpt-5.4-mini[reasoning=medium] (gpt-5.4-mini) ---
  Switch OK (confirmed: gpt-5.4-mini[reasoning=medium])
  Prompt RPC: OK
  Notifications received: 1
  Response text (first 300 chars): 

Error: I: AI Model Not Found Model name is not valid: "gpt-5.4-mini"
  Contains error pattern: true

--- Testing: gpt-5.4-nano[reasoning=medium] (gpt-5.4-nano) ---
  Switch OK (confirmed: gpt-5.4-nano[reasoning=medium])
  Prompt RPC: OK
  Notifications received: 1
  Response text (first 300 chars): 

Error: I: AI Model Not Found Model name is not valid: "gpt-5.4-nano"
  Contains error pattern: true

--- Testing: claude-haiku-4-5[thinking=true] (claude-haiku-4-5) ---
  Switch OK (confirmed: claude-haiku-4-5[thinking=true])
  Prompt RPC: OK
  Notifications received: 1
  Response text (first 300 chars): 

Error: I: AI Model Not Found Model name is not valid: "claude-haiku-4-5"
  Contains error pattern: true

--- Testing: gpt-5.3-codex-spark[reasoning=medium] (gpt-5.3-codex-spark) ---
  Switch OK (confirmed: gpt-5.3-codex-spark[reasoning=medium])
  Prompt RPC: OK
  Notifications received: 1
  Response text (first 300 chars): 

Error: I: AI Model Not Found Model name is not valid: "gpt-5.3-codex-spark"
  Contains error pattern: true

--- Testing: grok-4-20[thinking=true] (grok-4-20) ---
  Switch OK (confirmed: grok-4-20[thinking=true])
  Prompt RPC: OK
  Notifications received: 2
  Response text (first 300 chars): HELLO
  Contains error pattern: false

--- Testing: claude-sonnet-4-5[thinking=true,context=200k] (claude-sonnet-4-5) ---
  Switch OK (confirmed: claude-sonnet-4-5[thinking=true,context=200k])
  Prompt RPC: OK
  Notifications received: 1
  Response text (first 300 chars): 

Error: I: AI Model Not Found Model name is not valid: "claude-sonnet-4-5"
  Contains error pattern: true

--- Testing: gpt-5.2-codex[reasoning=medium,fast=false] (gpt-5.2-codex) ---
  Switch OK (confirmed: gpt-5.2-codex[reasoning=medium,fast=false])
  Prompt RPC: OK
  Notifications received: 2
  Response text (first 300 chars): HELLO
  Contains error pattern: false

--- Testing: gpt-5.1-codex-max[reasoning=medium,fast=false] (gpt-5.1-codex-max) ---
  Switch OK (confirmed: gpt-5.1-codex-max[reasoning=medium,fast=false])
  Prompt RPC: OK
  Notifications received: 2
  Response text (first 300 chars): HELLO
  Contains error pattern: false

--- Testing: gpt-5.1[reasoning=medium] (gpt-5.1) ---
  Switch OK (confirmed: gpt-5.1[reasoning=medium])
  Prompt RPC: OK
  Notifications received: 2
  Response text (first 300 chars): HELLO
  Contains error pattern: false

--- Testing: gemini-3-flash[] (gemini-3-flash) ---
  Switch OK (confirmed: gemini-3-flash[])
  Prompt RPC: OK
  Notifications received: 1
  Response text (first 300 chars): HELLO
  Contains error pattern: false

--- Testing: gpt-5.1-codex-mini[reasoning=medium] (gpt-5.1-codex-mini) ---
  Switch OK (confirmed: gpt-5.1-codex-mini[reasoning=medium])
  Prompt RPC: OK
  Notifications received: 2
  Response text (first 300 chars): HELLO
  Contains error pattern: false

--- Testing: claude-sonnet-4[thinking=false,context=200k] (claude-sonnet-4) ---
  Switch OK (confirmed: claude-sonnet-4[thinking=false,context=200k])
  Prompt RPC: OK
  Notifications received: 1
  Response text (first 300 chars): 

Error: I: AI Model Not Found Model name is not valid: "claude-sonnet-4"
  Contains error pattern: true

--- Testing: gpt-5-mini[] (gpt-5-mini) ---
  Switch OK (confirmed: gpt-5-mini[])
  Prompt RPC: OK
  Notifications received: 2
  Response text (first 300 chars): HELLO
  Contains error pattern: false

--- Testing: gemini-2.5-flash[] (gemini-2.5-flash) ---
  Switch OK (confirmed: gemini-2.5-flash[])
  Prompt RPC: OK
  Notifications received: 1
  Response text (first 300 chars): HELLO
  Contains error pattern: false

--- Testing: kimi-k2.5[] (kimi-k2.5) ---
  Switch OK (confirmed: kimi-k2.5[])
  Prompt RPC: OK
  Notifications received: 42
  Response text (first 300 chars): HELLO
  Contains error pattern: false


================================================================================
SUMMARY
================================================================================
  Total models tested:                25
  Switch failed (RPC error):          0
  Prompt failed (RPC error):          0
  Prompt OK but response has error:   10
  Fully working:                      15

!!! MODELS WHERE SWITCH SUCCEEDS BUT PROMPT RETURNS ERROR IN RESPONSE TEXT !!!
These model values are provided by the agent's own configOptions but are
rejected by the backend when a prompt is actually sent.

  Model: gpt-5.4[reasoning=medium,context=272k,fast=false] (gpt-5.4)
    Response: 

Error: I: AI Model Not Found Model name is not valid: "gpt-5.4"

  Model: claude-sonnet-4-6[thinking=true,context=200k,effort=medium] (claude-sonnet-4-6)
    Response: 

Error: I: AI Model Not Found Model name is not valid: "claude-sonnet-4-6"

  Model: claude-opus-4-6[thinking=true,context=200k,effort=high,fast=false] (claude-opus-4-6)
    Response: 

Error: I: AI Model Not Found Model name is not valid: "claude-opus-4-6"

  Model: claude-opus-4-5[thinking=true] (claude-opus-4-5)
    Response: 

Error: I: AI Model Not Found Model name is not valid: "claude-opus-4-5"

  Model: gpt-5.4-mini[reasoning=medium] (gpt-5.4-mini)
    Response: 

Error: I: AI Model Not Found Model name is not valid: "gpt-5.4-mini"

  Model: gpt-5.4-nano[reasoning=medium] (gpt-5.4-nano)
    Response: 

Error: I: AI Model Not Found Model name is not valid: "gpt-5.4-nano"

  Model: claude-haiku-4-5[thinking=true] (claude-haiku-4-5)
    Response: 

Error: I: AI Model Not Found Model name is not valid: "claude-haiku-4-5"

  Model: gpt-5.3-codex-spark[reasoning=medium] (gpt-5.3-codex-spark)
    Response: 

Error: I: AI Model Not Found Model name is not valid: "gpt-5.3-codex-spark"

  Model: claude-sonnet-4-5[thinking=true,context=200k] (claude-sonnet-4-5)
    Response: 

Error: I: AI Model Not Found Model name is not valid: "claude-sonnet-4-5"

  Model: claude-sonnet-4[thinking=false,context=200k] (claude-sonnet-4)
    Response: 

Error: I: AI Model Not Found Model name is not valid: "claude-sonnet-4"

FULLY WORKING MODELS:
  default[] (Auto)
  composer-2[fast=true] (composer-2)
  composer-1.5[] (composer-1.5)
  gpt-5.3-codex[reasoning=medium,fast=false] (gpt-5.3-codex)
  gpt-5.2[reasoning=medium,fast=false] (gpt-5.2)
  gemini-3.1-pro[] (gemini-3.1-pro)
  grok-4-20[thinking=true] (grok-4-20)
  gpt-5.2-codex[reasoning=medium,fast=false] (gpt-5.2-codex)
  gpt-5.1-codex-max[reasoning=medium,fast=false] (gpt-5.1-codex-max)
  gpt-5.1[reasoning=medium] (gpt-5.1)
  gemini-3-flash[] (gemini-3-flash)
  gpt-5.1-codex-mini[reasoning=medium] (gpt-5.1-codex-mini)
  gpt-5-mini[] (gpt-5-mini)
  gemini-2.5-flash[] (gemini-2.5-flash)
  kimi-k2.5[] (kimi-k2.5)

================================================================================
END OF POST-SWITCH PROMPT DIAGNOSTIC REPORT
================================================================================

Hey @brendenguy!

We’re currently rolling out some work we’ve done on model parameterization, and I think you’re hitting not being opted into those changes yet. I’ve just flipped a switch for your account, could you try again and let me know if something changes?

Hi @Colin!

Looks like that fixed it. On the most recent run of my script, all models responded correctly.

Thanks for your help!

Hi @Colin,

I think I’m hitting the same ACP model-parameterization issue.

With agent acp, model switching seems to work, but prompting fails for many newer models with:

Agent version: v2026.04.17-479fd04

Error: I: AI Model Not Found Model name is not valid: "<model-name>"

Working: default, composer-2, composer-1.5, gpt-5-mini, gpt-5.1-codex-max, gpt-5.1-codex-mini, gpt-5.2, gpt-5.2-codex, gpt-5.3-codex, gemini-3.1-pro, gemini-3-flash, gemini-2.5-flash

Failing: gpt-5.3-codex-spark, gpt-5.4, gpt-5.4-mini, gpt-5.4-nano, claude-opus-4-7, claude-opus-4-6, claude-opus-4-5, claude-sonnet-4-6, claude-sonnet-4-5, claude-haiku-4-5.

Could my account need the same model-parameterization switch flipped you mentioned?

What’s this model-parameterization related switch, is it related to my account setting?

I have the same issue with acp, but all is fine in cli mode.

Error: I: AI Model Not Found Model name is not valid: "claude-opus-4-7"

Model ids are the same in acp and cli config:

❯ cat ~/.cursor/acp-config.json 
{
  "selectedModelVariantId": "claude-opus-4-7[thinking=true,effort=high]"
}

> cat ~/.cursor/cli-config.json
...
  "selectedModel": {
    "modelId": "claude-opus-4-7",
    "parameters": [
      {
        "id": "thinking",
        "value": "true"
      },
      {
        "id": "effort",
        "value": "high"
      }
    ]
  },
...

@goblinguide @sify21 I’m checking on this! Should be rolled out to all CLI users now but doesn’t seem to be the case.

Hey all (@sify21, @goblinguide)

Thanks for your patience here! We’ve identified the issue and are working on a fix.

Fix should be shipped in the latest Cursor CLI release! Please give it a try.