OpenAI BYOK + custom Base URL hangs on Windows 3.22.12; endpoint works in other clients

Where does the bug appear (feature/product)?

Cursor IDE

Describe the Bug

OpenAI BYOK requests hang when using Override OpenAI Base URL in Cursor 3.22.12 on Windows x64 (stable, user setup).

Both “Use OpenAI API Key” and “Override OpenAI Base URL” are enabled.

The Base URL has this structure:
https://api.example.com:59000/v1
(Placeholder hostname; the actual hostname is redacted.)

The endpoint is an OpenAI-compatible CLIProxyAPI service backed by my own Codex OAuth subscription, behind an HTTPS Nginx reverse proxy.

Expected behavior:
Cursor should send requests to the configured endpoint and display the streamed response.

Actual behavior:
Requests hang at “Planning Next Moves” or “Taking longer than expected”. After a prolonged wait, Cursor sometimes shows a user-provided-key / rate-limit-related error. I do not have the exact wording of that final error yet.

The issue affects:

  • Built-in GPT-5.5.
  • Custom model “gpt-6-astra”.
  • Custom alias “astra-nas”, which is correctly listed by /v1/models.

Built-in Claude Opus 5.5 responds normally.

The issue also reproduces in a completely empty folder. I have not observed corresponding requests in the Nginx access log or proxy backend logs during these attempts, including after some failed attempts ended. I understand that missing access-log entries alone do not conclusively prove no connection was attempted.

The same endpoint works with curl and Cherry Studio:

  • GET /v1/models succeeds.
  • POST /v1/responses with GPT-6 Astra succeeds with SSE streaming, ending in response.completed, status “completed”, error null.
  • POST /v1/chat/completions succeeds.
  • Public HTTPS access works from both domestic and overseas networks.

Console messages include:

  • [composer] No first token received within 2s / 4s / 6s / …
  • [composer] Failed to resolve hook model legacy slug undefined
  • ConnectError: [invalid_argument] Error at getGithubAccessTokenForRepos
  • [hasGithubAccess] unexpected error checking GitHub access
  • ComposerNotLoadedError: [composer] No loaded composer found
  • [otel.error] writeInitialRequest: You can only call end() on a span once.

Some ComposerNotLoadedError entries occurred during conversation cleanup/deletion and may be secondary.

Share Data was enabled before the latest reproduction.

Latest Request ID:
fc291240-0f20-426d-9d9c-9dcd1eae7dfb

Reproduction time:
October 1, 2026, 12:13 PM UTC+8 / 04:13 UTC.

Please trace this request to determine whether Cursor used the configured Override Base URL, preserved port 59000, or blocked/rerouted the request before contacting the endpoint.

I can provide the actual hostname privately to Cursor staff.

Steps to Reproduce

  1. Open Cursor 3.22.12 (stable, user setup) on Windows x64.

  2. Open a completely empty local folder.

  3. In Settings → Models, enter a valid API key for a publicly reachable OpenAI-compatible endpoint.

  4. Enable “Use OpenAI API Key”.

  5. Enable “Override OpenAI Base URL” and set the endpoint URL, including its HTTPS port and /v1 path:
    https://api.example.com:59000/v1
    (Placeholder hostname; actual hostname redacted.)

  6. Add and enable the custom model “gpt-6-astra”, or its server-side alias “astra-nas”. Confirm the endpoint lists the selected ID in GET /v1/models.

  7. Start a new Agent chat, manually select that model instead of Auto, and send a minimal prompt such as “Reply OK”.

  8. Observe that Cursor remains at “Planning Next Moves” / “Taking longer than expected”, with repeated “No first token received” Console warnings. A rate-limit-related error may appear after a prolonged wait.

  9. Repeat in a new chat using built-in GPT-5.5 with the same BYOK and Base URL configuration. It also hangs.

  10. As controls, call the same endpoint through curl or Cherry Studio: requests succeed. Test built-in Claude Opus 5.5 in Cursor: it responds normally.

Operating System

Windows 10/11

Version Information

Version: 3.22.12 (user setup)
VS Code Extension API: 1.128.0
Commit: 3a92974361033b2051526321308c2740fe5912c0
Date: 2026-09-26T04:55:12.125Z
Layout: IDE
Build Type: Stable
Release Track: Default
Electron: 42.10.0
Chromium: 148.0.7778.280
Node.js: 24.18.1
V8: 14.8.178.38-electron.0
xterm.js: 6.1.0-beta.291
OS: Windows_NT x64 10.0.26300

For AI issues: which model did you use?

Affected models:

  • gpt-6-astra (custom model)
  • astra-nas (server-side alias for gpt-6-astra)
  • GPT-5.5 (built-in model, with OpenAI BYOK and Base URL Override enabled)

Control:

  • Built-in Claude Opus 5.5 responds normally.

For AI issues: add Request ID with privacy disabled

fc291240-0f20-426d-9d9c-9dcd1eae7dfb

Privacy Mode was disabled (Share Data selected) before reproduction.

October 1, 2026, 12:13 PM UTC+8 / 04:13 UTC

Does this stop you from using Cursor

Sometimes - I can sometimes use Cursor

Hey @BuzzerBroadcast, t

Cursor did use your Override OpenAI Base URL with port 59000. But requests are sent from Cursor’s servers, not your machine, and our servers can’t open a connection to your endpoint. That’s why curl works locally but nothing reaches Nginx. The rate-limit style error at the end is misleading here.

To fix it, the endpoint needs to accept inbound HTTPS from cloud networks. Test with curl from a cloud-hosted server outside your network, and check your port forwarding, firewall, and any geo-IP or IP allowlist rules.

Built-in GPT-5.5 hangs too because your key plus the override send all OpenAI models to your endpoint. To use them normally, switch off Use OpenAI API Key in Cursor Settings > Models. Your key and base URL stay saved.

Let me know what the curl test shows!

Confirmed: Cursor now works with my existing BYOK and Override Base URL configuration after fixing the QuFirewall rule.

The root cause was QuFirewall dropping incoming TCP connections to port 59000 from cloud-hosted sources.

No changes to the API key, certificate, or model alias were needed for the final fix. The rate-limit-style error was misleading.

Thanks for checking the server-side connection and helping identify the issue.