You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[Bug]: Cursor shows "SDK catalog request failed" when the account plan is rejected (403 plan_required) #15075
I searched existing issues and did not find a duplicate.
I included enough detail to reproduce or investigate the problem.
Area
apps/server
Steps to reproduce
Sign in to the Cursor provider with a free-plan Cursor account.
Open provider settings, or start a Cursor thread.
Expected behavior
The provider status explains that Cursor rejected the account's plan, e.g. "Cursor's SDK requires a paid plan (plan_required)"
Actual behavior
Cursor shows as Unavailable with "Cursor SDK catalog request failed. Check server logs for details." The real reason only appears in server.trace.ndjson. checkCursorProviderStatus treats only 401 as an auth failure, so a 403 plan_required gets the generic message.`
Cursor SDK catalog probe failed
name: UnknownAgentError
message: [plan_required] Cloud Agent is not available for free users. Please upgrade to Pro.
code: plan_required, status: 403, isRetryable: false
endpoint: GET /v1/models (also GET /v1/me)
Carrying over from #19766: the same 403 plan_required also breaks browser sign-in. After login, the verification probe returns auth: unknown (only 401 counts as an auth failure in CursorSdkCatalog), so runLogin in packages/provider-cursor/src/server/auth.ts deletes the new credential and shows the generic "Cursor sign-in failed or expired" instead of the plan error, then the next check reports "Not authenticated". A fix here should surface the plan_required reason both in provider status and in the sign-in failure message. #16224 (Enterprise /v1/me 403) goes through the same path.
Confirmed the same behavior and found a working workaround for free-tier users who want to use Cursor in T3 Code without staying on outdated nightly versions.
Root Cause Confirmation
When signing in with a free/hobby Cursor account, @cursor/sdk creates an API key, but Cursor's remote backend rejects Cursor.me / GET /v1/me with:
{
"name": "UnknownAgentError",
"message": "[plan_required] Cloud Agent is not available for free users. Please upgrade to Pro.",
"code": "plan_required",
"status": 403
}
Because isAuthenticationFailure in packages/provider-cursor/src/server/CursorSdkCatalog.ts only checks for 401 (cause.status === 401), 403 is treated as an unexpected failure. runLogin then immediately executes options.store.clear() and reports "Cursor sign-in failed or expired".
Working Workaround for Free Accounts: Use Cursor via ACP
If you have cursor-agent CLI installed locally (~/.local/bin/cursor-agent), it officially supports ACP (cursor-agent acp) and runs against your existing local Cursor session token (no Pro / Cloud Agent subscription required).
You can register it directly in T3 Code as an ACP provider instance in settings.json:
This connects to cursor-agent acp via cursor_login auth, discovers all 47 models (Auto, Composer 2.5, Claude Opus 5, Sonnet 5, etc.), and executes prompts cleanly under standard account limits.
Activity
juliusmarminge commentedon Oct 15, 2026
Note
Grok responding on behalf of Julius.
Carrying over from #19766: the same
403 plan_requiredalso breaks browser sign-in. After login, the verification probe returnsauth: unknown(only 401 counts as an auth failure inCursorSdkCatalog), sorunLogininpackages/provider-cursor/src/server/auth.tsdeletes the new credential and shows the generic "Cursor sign-in failed or expired" instead of the plan error, then the next check reports "Not authenticated". A fix here should surface the plan_required reason both in provider status and in the sign-in failure message. #16224 (Enterprise/v1/me403) goes through the same path.pancake37 commentedon Oct 17, 2026
Note
Gemini responding on behalf of pancake37.
Confirmed the same behavior and found a working workaround for free-tier users who want to use Cursor in T3 Code without staying on outdated nightly versions.
Root Cause Confirmation
When signing in with a free/hobby Cursor account,
@cursor/sdkcreates an API key, but Cursor's remote backend rejectsCursor.me/GET /v1/mewith:{ "name": "UnknownAgentError", "message": "[plan_required] Cloud Agent is not available for free users. Please upgrade to Pro.", "code": "plan_required", "status": 403 }Because
isAuthenticationFailureinpackages/provider-cursor/src/server/CursorSdkCatalog.tsonly checks for 401 (cause.status === 401), 403 is treated as an unexpected failure.runLoginthen immediately executesoptions.store.clear()and reports"Cursor sign-in failed or expired".Working Workaround for Free Accounts: Use Cursor via ACP
If you have
cursor-agentCLI installed locally (~/.local/bin/cursor-agent), it officially supports ACP (cursor-agent acp) and runs against your existing local Cursor session token (no Pro / Cloud Agent subscription required).You can register it directly in T3 Code as an ACP provider instance in
settings.json:This connects to
cursor-agent acpviacursor_loginauth, discovers all 47 models (Auto, Composer 2.5, Claude Opus 5, Sonnet 5, etc.), and executes prompts cleanly under standard account limits.