Skip to main content
Lesson 4 of 12 · ChatGPT in 2026: From GPT-5.6 to GPT-6

Reasoning in 2026: From none to max, plus pro and ultra modes

Lesson 4 of 12 Updated November 5, 2026 Intermediate
On this page
  1. The six levels of GPT-5.6
  2. Accepted values vary by model
  3. Pro mode: More work, same per-token rate
  4. Max and ultra: Going further
  5. A method for setting effort
  6. Your turn
  7. Key takeaways

Status as of November 5, 2026. The GPT-6 family retains these levels, but none is accepted only by GPT-6.1 Terra, GPT-6 Sol, and GPT-6 Luna. GPT-6 Astra and GPT-6.1 Sol start at low; sending a request with none to Astra returns an HTTP 400 error. Since September 3, you can also change the effort level mid-conversation without losing the cache, using a configuration_update element (Lesson 9).

Configurable reasoning effort didn’t start with GPT-5.6. Since GPT-5 launched in 2025, OpenAI models have reasoned more or less based on a parameter, replacing the old o-series. What changes between versions are the accepted values and the default setting. GPT-5.6 added the max level and the pro mode to the API, while ChatGPT received the “ultra” setting. These details matter: a changed default can alter your application’s latency and bill without a single line of code changing.

The six levels of GPT-5.6

On the three GPT-5.6 models, the reasoning.effort parameter accepts six levels. OpenAI’s guide describes their use cases as follows:

LevelUse case
noneTasks where latency is critical and reasoning adds no value: voice, quick information lookup, classification
lowEfficient reasoning for slightly higher latency: data analysis, drafting, executable code, customer support
mediumQuality and reliability, planning, and judgment; the default for most use cases
highDifficult reasoning, complex debugging, deep planning, agentic work
xhighDeep research and long agentic tasks, only if your evaluations show a net gain
maxMaximum reasoning for the most complex tasks; compare against xhigh

You set the level directly in the API call. Here, we ask Terra to debug a function with sustained effort, because a subtle logic error deserves more than a skim read:

response = client.responses.create(
    model="gpt-5.6-terra",
    input="Find the logic error in this function and fix it.",
    reasoning={"effort": "high"},
)

If the same application then reformulates a commit message, nothing stops you from switching back to low for the next request. A router could also attempt a first pass at medium, detect an uncertain response, and retry the same request at high on the same model with the same prompt.

Accepted values vary by model

Model fact sheets, recorded on November 5, 2026, show how this parameter has evolved:

ModelAccepted valuesDefault
gpt-5minimal, low, medium, highunspecified
gpt-5.1none, low, medium, highnone
gpt-5.4none to xhighnone
gpt-5.5none to xhighmedium
GPT-5.6 Sol, Terra, and Lunanone to maxmedium
gpt-6-astralow to maxunspecified
gpt-6.1-sollow to maxmedium
gpt-6.1-terra, gpt-6-sol, gpt-6-lunanone to maxmedium

Two pitfalls stand out in this table. The first concerns the default value: gpt-5.1 and gpt-5.4 did not reason if you specified nothing, whereas gpt-5.5, GPT-5.6, and the listed GPT-6 models start at medium. An application migrating from gpt-5.4 to GPT-5.6 without setting the effort will suddenly start reasoning, incurring higher latency and more billed tokens. The GPT-6 migration guide sums this up in one rule: preserve your effective effort when the new model accepts it, and write it explicitly. The second pitfall involves missing values: minimal exists on neither GPT-5.6 nor GPT-6 (start with low instead), and none is rejected by GPT-6 Astra and GPT-6.1 Sol.

Pro mode: More work, same per-token rate

GPT-5.6 introduced a second, independent setting: reasoning.mode, which defaults to standard or can be set to pro. In pro mode, the model performs more work before responding, suited for difficult tasks that tolerate higher latency. Tokens are billed at the model’s standard rate, but since more tokens are used, the total cost rises. This mode replaces the old “pro” models: the deprecations page recommends gpt-5.6-sol in pro mode instead of o3-pro and gpt-5-pro.

response = client.responses.create(
    model="gpt-5.6-sol",
    reasoning={"effort": "medium", "mode": "pro"},
    input="Review this disaster recovery plan and flag any single points of failure.",
)

Max and ultra: Going further

The max level gives the model even more time than xhigh to reason, explore alternative paths, verify, and revise its approach. It exists in both the API and in ChatGPT Work and Codex, where you enable it in the settings.

Ultra, however, changes the execution mode entirely. According to the July 9 announcement, it coordinates four agents in parallel by default across simultaneous work streams. OpenAI also demonstrated configurations with sixteen agents for specific evaluations (BrowseComp, SEC-Bench Pro). The trade-off is clear: higher token consumption in exchange for better results and reduced completion time on heavy tasks. Ultra is available only in products: ChatGPT Work for Pro and Enterprise plans, and Codex starting at Plus at launch. There is no ultra value in the API; you achieve a comparable effect with the multi-agent function of the Responses API (in beta), which lets the model launch sub-agents in parallel within a single request. Reserve this for work that breaks down into independent chunks.

Three ways to do more Three columns. Max: in the API and in ChatGPT Work and Codex, more thinking time on a task, at the cost of more tokens. Pro mode: in the API with reasoning.mode, more model work, billed at the standard rate but using more tokens. Ultra: in ChatGPT Work and Codex only, four agents in parallel by default, significantly more tokens; in the API, the multi-agent beta plays this role. BEYOND EFFORT Three ways to do more Max Where API, ChatGPT Work, and Codex Principle More thinking time Cost More reasoning tokens Pro mode Where API, with reasoning.mode Principle More model work Cost Standard rate, more tokens Ultra Where ChatGPT Work and Codex Principle Four agents in parallel Cost Significantly more tokens In the API, there is no ultra value: the Responses API multi-agent beta plays this role.
Based on the Reasoning models guide in the OpenAI API documentation (November 2026) and the GPT-5.6 announcement (OpenAI, July 9, 2026).

A method for setting effort

Don’t set these levels based on intuition. Take a representative sample of your real-world requests, run them at medium then high, compare quality, latency, and cost, and let the numbers decide the default for each task type. This is the same approach you should take with publisher benchmarks: your data decides, not general impressions.

Your turn

Find the right level for a task. Choose ten representative requests for a single task. Run them at low, medium, and high, then record the quality (using your own rubric), latency, and the number of reasoning tokens shown in usage. Keep the lowest level that satisfies you on nine out of ten requests, and write it explicitly in your code. Without API access, do the same exercise in ChatGPT using the reasoning selector in Chat mode.

Official sources: Reasoning models · Using GPT-6 · Multi-agent · Deprecations (OpenAI API documentation) · GPT-5.6 Announcement (OpenAI, July 9, 2026)

Key takeaways

  • Configurable effort dates back to GPT-5; GPT-5.6 added the max level and pro mode
  • Accepted values and defaults vary by model: always specify effort explicitly
  • Pro mode makes the model work harder at the standard per-token rate; it replaces o3-pro and gpt-5-pro
  • Ultra, defaulting to four parallel agents, is reserved for ChatGPT Work and Codex; the API uses the multi-agent beta
  • Set effort based on your evaluations, not intuition