Reasoning effort for custom models in Codex
Most tools show the same three reasoning options for every model. That is a guess, and it is wrong often enough to cause real failures — a rejected request, or worse, a silently ignored parameter that makes you think you changed something when you did not.
Why guessing fails
- Model families expose different sets. Some offer low and high only. Some add a maximum tier. Some have no notion of effort at all.
- A provider can accept an unsupported value and ignore it. You get no error and no change in behavior, which is the worst outcome because it is invisible.
- The same model ID on two providers can behave differently, so a name-based lookup is not sound.
This is also why probing every value is a bad idea. A silent accept tells you nothing, so a probe can only detect an explicit rejection — never confirm support.
The resolution order
- Your override. If you set the values, they win, and refreshing metadata will not overwrite them.
- Provider metadata. If the provider returns it, it is used.
- Models.dev, matched exactly on the API URL and the model ID together. Never the ID alone.
- Nothing. No effort parameter is sent, and the provider’s own default applies.
What you see in the app
The Codex picker shows exactly the values the model supports — three entries if it advertises three, and Codex labels the lowest tier “Light”. Your selection persists across a window restart. If a model’s advertised set is missing or wrong, set the values yourself and they stay set.
What this does not claim
- CodexUse is not affiliated with OpenAI, and this is not a way around OpenAI billing. A custom-provider profile does not call OpenAI at all — it calls the provider you configured, with your own credential, and you pay that provider directly.
- A profile is either an OpenAI account or a custom provider. It is never both. Your ChatGPT profiles keep using ChatGPT exactly as before.
- Hosted ChatGPT features do not work on a custom-provider profile — dictation, browser remote control, and anything that calls ChatGPT’s own backend need a ChatGPT account. Chat, tool calls, and reasoning effort do work.
- Your provider must speak the OpenAI Responses or Chat Completions shape. Providers with a bespoke protocol are not supported.
- macOS on Apple Silicon only. Intel Mac, Windows, and Linux desktop builds are not in the current release line.
- You are responsible for the third-party provider’s terms and costs, and for reviewing your own OpenAI plan terms.
Related
Why is 'Medium' missing for my model?
Because the model does not advertise it. A fixed low / medium / high list is an assumption; the picker shows what the model actually supports. If you know the metadata is wrong, override it.
Can I set the values myself?
Yes, and a user override takes priority over everything else. Refreshing discovered metadata will not overwrite it.
What if my provider returns no metadata at all?
Then no effort parameter is sent and the provider's own default applies. That is deliberate — sending an invented value risks an error or a silent no-op.