ERROR_OPENAI: “Missing required parameter: ‘tools[10].custom’” when using Plan Mode with Azure GPT-5

Where does the bug appear (feature/product)?

Cursor IDE

Describe the Bug

When sending a prompt in Plan Mode using Azure OpenAI (GPT-5), Cursor fails the request and surfaces an ERROR_OPENAI with a 400 response from the provider. The error states that a required parameter is missing: tools[10].custom. This started a few hours ago and was working previously with the same setup. It looks like Cursor is assembling a tools array with a gap/invalid shape for one of the tool entries.

Steps to Reproduce

  1. Open Cursor and switch to Plan Mode.
  2. Set provider to Azure OpenAI and select a GPT-5 deployment.
  3. Send any prompt (no special tools required).
  4. Observe the error toast/log.

Expected Behavior

Cursor should successfully send the request to the provider (Azure OpenAI GPT-5) without referencing a non-existent tool index or missing custom fields, and return the model’s response in Plan Mode.

Actual Behavior
Request fails with provider 400 and Cursor shows ERROR_OPENAI. The provider complains about a missing parameter in the tools payload: tools[10].custom.

Environment

  • OS: macOS (Cursor.app path indicates macOS; Apple Silicon)
  • Cursor: latest stable (please pull from my account if needed)
  • Mode: Plan Mode
  • Provider: Azure OpenAI
  • Model/Deployment: GPT-5 (Azure deployment)
  • Started: a few hours ago; previously working with the same config

Additional Context / Logs
Request ID: 6986d7c8-387c-458c-bf3b-a28999d20a2d

Raw error surfaced by Cursor:
{“error”:“ERROR_OPENAI”,“details”:{“title”:“Unable to reach the model provider”,“detail”:“We encountered an issue when using your API key: Provider was unable to process your request\n\nAPI Error:\n\n\nRequest failed with status code 400: {\n \"error\": {\n \"message\": \"Missing required parameter: 'tools[10].custom'.\",\n \"type\": \"invalid_request_error\",\n \"param\": \"tools[10].custom\",\n \"code\": \"missing_required_parameter\"\n }\n}\n”,“additionalInfo”:{},“buttons”:,“planChoices”:},“isExpected”:true}

Stack trace (from devtools/console):
ConnectError: [invalid_argument] Error at Tqc.$endAiConnectTransportReportError (…/workbench.desktop.main.js:7337:399337)
at nwo._doInvokeHandler (…/workbench.desktop.main.js:490:36007)
at nwo._invokeHandler (…/workbench.desktop.main.js:490:35749)
at nwo._receiveRequest (…/workbench.desktop.main.js:490:34514)

Operating System

MacOS

Current Cursor Version (Menu → About Cursor → Copy)

Version: 2.0.34
VSCode Version: 1.99.3
Commit: 45fd70f3fe72037444ba35c9e51ce86a1977ac10
Date: 2025-10-29T06:51:29.202Z
Electron: 34.5.8
Chromium: 132.0.6834.210
Node.js: 20.19.1
V8: 13.2.152.41-electron.0
OS: Darwin arm64 25.0.0

For AI issues: which model did you use?

GPT 5

For AI issues: add Request ID with privacy disabled

Request ID: 6986d7c8-387c-458c-bf3b-a28999d20a2d
{“error”:“ERROR_OPENAI”,“details”:{“title”:“Unable to reach the model provider”,“detail”:“We encountered an issue when using your API key: Provider was unable to process your request\n\nAPI Error:\n\n\nRequest failed with status code 400: {\n \"error\": {\n \"message\": \"Missing required parameter: 'tools[10].custom'.\",\n \"type\": \"invalid_request_error\",\n \"param\": \"tools[10].custom\",\n \"code\": \"missing_required_parameter\"\n }\n}\n”,“additionalInfo”:{},“buttons”:,“planChoices”:},“isExpected”:true}

Does this stop you from using Cursor

Yes - Cursor is unusable

2 Likes

Hey, thanks for the report. It looks like an issue with how Cursor builds the tools payload when using Azure GPT-5 in Plan Mode.

Azure GPT-5 has known BYOK limitations in Cursor, but your error is different - it’s about a malformed tools array, not endpoint compatibility.

Temporary workarounds while we investigate:

  • Try using Agent Mode instead of Plan Mode
  • If you need Plan Mode, temporarily switch to a different model

Let me know if you notice anything else.

Hey Deanrie,

Thanks for the quick response.

Unfortunately, for us it’s a breaking issue not being able to use BYOK. We spend around $500 in tokens per day across 10 licenses, all running through Azure OpenAI because of an internal deal with Microsoft, so switching providers isn’t really an option.

Also, just to note, the problem isn’t limited to Plan Mode. It’s happening in Build and Ask modes too.

Would really appreciate if you could prioritize a fix or at least confirm if there’s a temporary patch we can apply on our end.

Thanks again,
Pedro

2 Likes

Adding, just to complement my previous message:

The issue seems to follow a clear pattern. It was fully working earlier today, and then broke again exactly at 16h (São Paulo time), same time as yesterday. Looks like something is changing or reloading on your end around that hour, which might be resetting the tools configuration or breaking the payload structure again.

Might be worth checking your deployment logs around that timestamp.

Hey @Pedro_Maia ! Not at all a solution to your current specific issue. But in case you could benefit from better azure gpt-5 support in cursor overall, I’m the maintainer of this project: GitHub - gabrii/Cursor-Azure-GPT-5: A service that allows Cursor to use Azure GPT-5 deployments.

It allows using gpt-5-pro / gpt-5-codex, changing reasoning effort for different request, changing verbosity or summary detail level… And can be deployed to be used by many different users simultaniously.

Hey @gabrii,

Thanks for the tip, I understand what your project does, and it’s really cool work. :raising_hands:

However, it looks like the latest Cursor version is bugged with the custom route for OpenAI too. I tried using OpenRouter with BYOK, and it throws the same kind of payload/build error. So it might not be limited to Azure GPT-5, seems related to how Cursor is handling custom endpoints in general right now.

Hey @gabrii,

Thanks again for the awesome work you’ve done on that project, it’s really solid. :folded_hands:

I actually cloned it and ran it on Heroku, made a few tweaks and improvements:

  • Removed all auth checks and added full header logging for debugging.
  • Fixed JSON handling crashes and improved Azure error masking/log visibility.
  • Resolved the 415/500 issues (non-POST routes and normalization).
  • Added proper model routing logic, “gemini” models now go to gpt-5-mini, reasoning fields only included for gpt-5* models, and default reasoning effort applied when valid.
  • atest deployment is live and returning 200 for /chat/completions.

Everything seems to be running fine on the proxy side, but Cursor still throws unauthorized calls no matter what, so it looks like the problem is on their client side when it tries to talk to any custom LLM route.

Honestly, Cursor is pretty messy when it comes to supporting other LLM providers or custom routes, and they don’t seem to give it much attention.

1 Like

support!

Same problem here. This is holding up several people on my development team, forcing them to use other IDEs. Any idea when this might be resolved, support team?

same here with all modes

same problem

same problem, fix when?

I’ve had the same problem, but until my last update I was able to use the Ask agent mode. I’m now getting the issue with all agent modes.
I am evaluating copilot with BYOK. Does anyone have a better solution?

Will this ever be fixed? or moving away from cursor is the only option left?