Reasoning effort controls how much thinking the model applies to your prompts. Lower effort levels produce faster, shorter responses and use fewer credits. Higher levels spend more tokens on deeper analysis, multi-step reasoning, and thorough code generation.
| Capability | IDE | CLI | Web | Mobile |
|---|---|---|---|---|
| Reasoning effort selection | ✓ | ✓ | — | — |
Available levels:
| Level | Behavior |
|---|---|
low | Fast, concise responses. Good for simple questions and quick lookups. |
medium | Balanced reasoning. Suitable for most development tasks. |
high | Thorough analysis. Better for complex refactoring and architecture decisions. |
xhigh | Extended reasoning. Useful for multi-file changes and nuanced problems. |
max | Maximum depth. Best for difficult debugging, security analysis, and intricate logic. |
Not all models support every level. The picker only shows levels available for your current model - see supported models below.
Click the model name in the chat input bar to open the model selector, then choose an effort level from the Effort panel on the right side.
Your effort selection appears next to the model name (e.g., "Claude Opus 4.6 · max") and applies to all subsequent messages in the conversation.
Each model defines the values it accepts for the reasoning-related fields in its configuration schema. The output_config.effort column lists the effort levels available for that model; thinking.type and thinking.display control reasoning behavior and visibility; max_tokens sets the output length limit.
Claude models use output_config.effort with thinking.type and thinking.display controls:
| Model | thinking.type | thinking.display | output_config.effort | max_tokens |
|---|---|---|---|---|
| Claude Opus 5 | adaptive, disabled | summarized, omitted | low, medium, high, xhigh, max | 1024–128000 |
| Claude Opus 4.8 | adaptive, disabled | summarized, omitted | low, medium, high, xhigh, max | 1024–128000 |
| Claude Opus 4.7 | adaptive, disabled | summarized, omitted | low, medium, high, xhigh, max | 1024–64000 |
| Claude Opus 4.6 | adaptive, disabled | summarized, omitted | low, medium, high, max | 1024–64000 |
| Claude Sonnet 5 | adaptive, disabled | summarized, omitted | low, medium, high, xhigh, max | 1024–128000 |
| Claude Sonnet 4.6 | adaptive, disabled | summarized, omitted | low, medium, high, max | 1024–64000 |
GPT-5.6 models use reasoning.effort:
| Model | reasoning.effort |
|---|---|
| GPT-5.6 Terra | none, low, medium, high, xhigh, max |
| GPT-5.6 Sol | none, low, medium, high, xhigh, max |
| GPT-5.6 Luna | none, low, medium, high, xhigh, max |
GPT-5.6 models default to effort: "high".
Your effort choice persists automatically. Set a level with /effort or --effort and Kiro remembers it for future sessions - there's no extra step to make it the default. Preferences are stored in ~/.kiro/settings/cli.json. See In-session settings for more on how preferences persist.
To set default model parameters per model - so you don't have to run /effort at the start of every session - add chat.modelDefaults to your settings file:
Claude models (use output_config.effort):
{ "chat.modelDefaults": { "claude-sonnet-4.6": { "output_config": { "effort": "high" } }, "claude-opus-4.7": { "output_config": { "effort": "max" } } } }
GPT-5.6 models (use reasoning.effort):
{ "chat.modelDefaults": { "gpt-5.6-sol": { "reasoning": { "effort": "max" } }, "gpt-5.6-terra": { "reasoning": { "effort": "low" } } } }
Control whether the model uses extended thinking and how it displays reasoning:
{ "chat.modelDefaults": { "claude-opus-4.8": { "thinking": { "type": "adaptive", "display": "summarized" } }, "claude-sonnet-4.6": { "thinking": { "type": "disabled" } } } }
thinking.type - adaptive enables extended thinking when the model determines it's needed; disabled turns it off entirely.thinking.display - summarized shows a condensed version of reasoning; omitted hides it from output. Only applies when type is adaptive.Set the maximum number of tokens the model can generate per response:
{ "chat.modelDefaults": { "claude-opus-4.8": { "max_tokens": 128000 }, "claude-sonnet-4.6": { "max_tokens": 32000 } } }
max_tokens limits per model:
| Model | Minimum | Maximum |
|---|---|---|
| Claude Opus 4.8 | 1024 | 128000 |
| Claude Opus 4.7 | 1024 | 64000 |
| Claude Opus 4.6 | 1024 | 64000 |
| Claude Sonnet 5 | 1024 | 128000 |
| Claude Sonnet 4.6 | 1024 | 64000 |
| GPT-5.6 Terra | 1024 | 128000 |
| GPT-5.6 Sol | 1024 | 128000 |
| GPT-5.6 Luna | 1024 | 128000 |
You can combine output_config, thinking, and max_tokens in a single model entry:
Claude example:
{ "chat.modelDefaults": { "claude-opus-4.8": { "output_config": { "effort": "max" }, "thinking": { "type": "adaptive", "display": "summarized" }, "max_tokens": 128000 } } }
GPT-5.6 example:
{ "chat.modelDefaults": { "gpt-5.6-sol": { "reasoning": { "effort": "max" }, "max_tokens": 128000 } } }
To open your settings file in your editor:
kiro-cli settings open
Or place a .kiro/settings/cli.json in your project root to set workspace-level defaults that apply to everyone working in that repository.
When determining the effort level for a session, Kiro applies this priority order:
/effort, or --effort during the current sessionchat.modelDefaults in .kiro/settings/cli.jsonchat.modelDefaults in ~/.kiro/settings/cli.jsonmax for security reviews, complex debugging sessions, or when you need the agent to consider many interacting constraints
Reasoning effort