Skip to content

SDK should allow decoupling of reasoning effort from thinking configuration for Claude models and allow them to be undefined #1294

@JakubK44

Description

@JakubK44

From the SessionConfig side, the only control I can find for controlling both output_config.effort and thinking is reasoningEffort.

    /**
     * Reasoning effort level for models that support it.
     * Only valid for models where capabilities.supports.reasoningEffort is true.
     * Use client.listModels() to check supported values for each model.
     */
    reasoningEffort?: ReasoningEffort;

Using Opus 4.6, when I set reasoningEffort = undefined, I'm still seeing the SDK configuring both output_config.effort and thinking:

output_config = {effort: 'medium'}
thinking = {type: 'adaptive', display: 'summarized'}

Issue 1: reasoningEffort = undefined should not be setting output_config.effort at all - do not assume effort: medium.
Issue 2: There is no config option that allows independent control over output_config.effort and thinking.

For example, my custom orchestrator uses the following Claude request config:

{
  "config": {
    "parameters": {
      "stream": true,
      "output_config": {
        "effort": "medium"
      }
    }
  }
}

The client can choose to opt-in to thinking (adaptive for Opus 4.6+), but doesn't force setting thinking while allowing controlling for effort.

This is important because these are independent properties - and hence we'd like to experiment with the independently:

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions