Good question. Routing here is decided by the API key, not the model name.
Here’s how it works: if you set your own OpenAI API key plus Override OpenAI Base URL, and that key is different from Cursor’s internal keys, then requests for OpenAI-family models (anything that’s not claude-* and not gemini-*) go to your custom endpoint. The model name (gpt-5.5 in your example) is just forwarded as-is. It’s not used as a signal to pick the route.
So to answer the main question: with BYOK + an override URL set up, you’re calling your own gpt-5.5 endpoint, not Cursor’s native one. There isn’t really a conflict. The same slot is filled by either your key or ours, depending on your settings.
On the UI split between built-in and custom models, that’s a fair point. I’ll pass it on as feedback. Right now there’s no clear visual label, and from settings it’s not always obvious where the request will go.
Small caveat: with a custom endpoint on /chat/completions, there’s a known issue right now with the payload format in some scenarios, but that’s not about routing itself.