GPT-6 Astra Rejects none Reasoning Effort
The mistake
Moving a request from an older model to GPT-6 Astra or GPT-6.1 Sol by changing only the model name — keeping reasoning.effort set to none (or minimal), along with temperature, top_p or log probabilities — and getting errors or rejected parameters instead of a faster, cheaper answer.
Why this happens
none was the natural setting for latency-sensitive calls on recent models: GPT-5.4, GPT-5.5 and the GPT-5.6 family all accept it, and on several of them it was the default. The GPT-6 family splits on this. GPT-6 Sol and GPT-6 Luna still accept none; GPT-6 Astra and GPT-6.1 Sol don't, and their effort range starts at low. Neither of those accepts minimal either. The sampling parameters trip people up the same way: when reasoning effort is anything other than none, OpenAI says to remove temperature, top_p and top_logprobs — and with GPT-6 Astra and GPT-6.1 Sol, effort is never none.
Why it matters
A request that fails outright is the easy case. The harder one is a codebase where the old parameters are set in a shared client wrapper, so every call routed to the new model breaks at once, or where a fallback path quietly sends traffic back to the older model and nobody notices the migration never really happened. It also matters for cost: none was often chosen to keep output tokens down, and low produces some reasoning tokens, which bill as output.
The fix
Set reasoning.effort to low in place of none — OpenAI's own migration advice — and if you were using minimal, start at low and compare results on representative tasks. Remove temperature, top_p and top_logprobs; on Chat Completions also remove logprobs, and on Responses drop message.output_text.logprobs from include. If you use tools, use the Responses API: GPT-6 Astra and GPT-6.1 Sol support Chat Completions, but tool calling requires Responses. Or, if none matters to your workload, choose GPT-6 Sol or GPT-6 Luna, which keep it.
Watching the cost after the switch
output_tokens_details.reasoning_tokens shows what low actually costs on your traffic. If the added reasoning hurts a latency-critical path, GPT-6 Sol or GPT-6 Luna at none may be a better destination than forcing GPT-6 Astra or GPT-6.1 Sol into a role their effort range wasn't designed for.
See also
Reasoning effort on Codex lists every model's accepted levels and default, and migrating from GPT-6 Sol to GPT-6.1 Sol covers the move where losing none most often surprises people.
Verified 2026-10-01 against CodexHow facts module (src/data/facts/) — see /about/#accuracy.