How should reasoning content and encrypted reasoning content be passed in BYOK responses

Hey, thanks for the question. This is the well-known BYOK mismatch. For GPT-5 family models, Cursor builds a payload in the Responses API format (input, reasoning, include), but sends it to /chat/completions and then parses the reply as Chat Completions streaming chunks. There’s no official ETA for a native fix yet.

On the proxy side, the general workaround is:

  • Forward the request to the upstream /v1/responses endpoint, not /chat/completions.
  • On the way back, translate the Responses SSE events into Chat Completions chunks (choices[].delta), otherwise Cursor won’t render anything.

The quickest reference for handling the reasoning fields specifically, including how to pass reasoning across formats, is this community bridge. It covers your exact case: GitHub - Pil0tXia/Cursor-OpenAI-BYOK-Bridge: Bridge Cursor OpenAI-compatible BYOK requests to Responses API endpoints. · GitHub

Note: this isn’t an official solution and we don’t support it, but it works well as a workaround.

Full context with example request and response shapes from other users is here: Cursor Agent sends Responses API format to /chat/completions endpoint

If you get stuck on specifics, share an example payload and we can take a look.