ACP model pinning ignored in JetBrains (PhpStorm) — falls back to non-existent auto-smart, triggering “Upgrade your plan”
Environment:
Cursor CLI: 2026.07.20
PhpStorm: 2026.2
OS: Linux
Steps to reproduce:
Install Cursor via ACP registry in PhpStorm AI Chat.
Run cursor-agent --list-models — confirms auto exists as Auto (default), but no auto-smart id is present anywhere in the list.
Create custom agent in ~/.jetbrains/acp.json with "args": ["--model", "auto", "acp"], pointing to the same cursor-agent binary.
Restart PhpStorm, select the custom pinned agent, send a message.
Expected: Agent uses auto (free/unlimited) model as pinned.
Actual: Session still routes to/displays auto-smart, an id that doesn’t exist in --list-models output, and returns "Upgrade your plan to continue" — implying it silently falls back to a billed/premium model instead of respecting the pinned auto.
Impact: Not just cosmetic — it consumes paid credits or blocks usage entirely for accounts without spare credit, even though the equivalent standalone Cursor app correctly uses the free auto model for the same account.
For AI issues: which model did you use?
Model name (e.g., Sonnet 4, Tab…)
For AI issues: add Request ID with privacy disabled
Request ID: f9a7046a-279b-47e5-ab48-6e8dc12daba1
For Background Agent issues, also post the ID: bc-…
Additional Information
Add any other context about the problem here.
Does this stop you from using Cursor?
Yes - Cursor is unusable
Sometimes - I can sometimes use Cursor
No - Cursor works, but with this issue
The more details you provide, the easier it is for us to reproduce and fix the issue. Thanks!
The auto-smart id you’re seeing is expected, not a phantom model. As of Jul 22, “Auto” on Team plans is powered by Cursor Router, and auto-smart is its internal id for the Auto row. That’s why cursor-agent --list-models still shows auto/default while your ACP session reports auto-smart - the two lists aren’t in sync yet, which we’re improving.
The “Upgrade your plan to continue” is a known issue from that rollout, and we’re already working on a fix. Once you hit your team’s usage limit, Router’s Auto isn’t yet recognized by the continued-access path that keeps free models available at the limit, so it gets incorrectly blocked instead of falling back. It’s not silently picking a premium model at that point - the request is being rejected.
To unblock yourself right now, in your ~/.jetbrains/acp.json pin composer-2.5 instead of auto:
"args": ["--model", "composer-2.5", "acp"]
Composer 2.5 stays available even at the usage limit, so it should let you keep working immediately. (Use the plain composer-2.5 id, not the Fast variant.)
On the billing question you raised: Auto’s Balance and Intelligence modes do bill on whichever model the router picks, which is why they can draw premium/on-demand usage. Auto’s Cost mode uses the previous Auto routing and keeps the bundled Auto pricing you’re used to - you can set that under Auto → Optimize For in the model picker. Details here: Cursor Router | Cursor Docs
If you’d rather stay on Auto specifically, asking your team admin to raise the usage limit will also get you going while the fix ships. Let me know if the Composer 2.5 pin unblocks you!
Quick follow‑up: pinning --model composer-2.5 now runs cleanly at the cap (the earlier fallback rejection is fixed), and the banner/switch‑button confusion is resolved. On the Auto side, one bit that’s by design: Auto Balance (auto‑smart) stays paused at the cap - so over ACP either pin composer-2.5 or use Auto’s Cost option.