How to change OpenClaw's thinking level (reasoning effort), for one chat or for good
/think sets the reasoning effort for the conversation you are in; agents.defaults.thinkingDefault sets the install-wide default, and unset it follows the model's provider default or medium. The levels, the resolution order, and how to check what actually ran.
Two places, two scopes. /think <level> in chat sets the reasoning effort for the conversation you are in and persists until you clear it with /think default. agents.defaults.thinkingDefault in the config sets the install-wide default every new conversation starts from. The ladder runs off, minimal, low, medium, high, xhigh, with adaptive, max and ultra available on models that support them. Left unset, a model’s own provider default applies where it declares one (Anthropic’s Claude 4.6 models use adaptive, Opus 4.7 and 4.8 keep thinking off, and Opus 5.5 thinks adaptively at medium), and other reasoning-capable models resolve to medium. To see what a conversation is actually running, send /think with no argument.
The levels, and who supports which
The names map onto the familiar “think, think hard, think harder, ultrathink” progression, with two additions: adaptive hands the decision to the provider (Anthropic’s current models default to it), and ultra enables proactive sub-agent orchestration on top of maximum effort. Not every model exposes the full ladder. As of the docs in October 2026: Anthropic’s Claude 4.6 models default to adaptive, Opus 4.7 and 4.8 keep thinking off until you set a level, Opus 5.5 always thinks adaptively and defaults to medium, and Opus 4.7 and later are the Claude models with xhigh and max; DeepSeek V4 exposes xhigh and max; Ollama models expose low through max; OpenAI GPT models vary by sign-in route, and /think off sends an explicit “no reasoning” on the routes that support it, though GPT-6 Astra and GPT-6.1 Sol cannot switch reasoning off at all, so there it sends no such request; MiniMax M2 models are simply on or off. Type a level the model lacks and OpenClaw refuses it with the model’s valid levels and keeps your previous setting; a level already stored that the model in use lacks, after you switch models for instance, is moved to the nearest supported one, with a notice (“Thinking level set to high (xhigh not supported for …)”).
Which setting wins
OpenClaw resolves the effort for each turn in a fixed order, and knowing it explains most “why is it still thinking so little” moments:
- An inline directive in the current message (
/t highat the start of a prompt) applies to that message only. - A session override, set by sending a directive on its own (
/think high,/think:highor/thinking high), persists for that conversation until/think default(aliases:inherit,clear,reset,unpin). - The per-agent default,
agents.entries.<id>.thinkingDefault. - A default for the model in use, set as
params.thinkingon that model’s entry under the agent’smodels, then underagents.defaults.models. - The global default,
agents.defaults.thinkingDefault. - Otherwise the provider’s declared default, and failing that
mediumfor a reasoning-capable model.
The consequence people trip on: a conversation that carries its own /think pick ignores a later change to the config default, exactly as a session-scoped model pick does. Change the default and your existing chats keep thinking at whatever they were pinned to until you clear the pin.
A low effort fails quietly
An effort lower than you assume breaks nothing visible: the answers are just shallower than they need to be. On the builds of August 2026, an agent with no reasoning effort set anywhere resolved to low, and nothing in the chat said so. The run traces show it, because the runtime stamps the effort it actually sent: an isolated openclaw agent --thinking xhigh run records effort=xhigh, and ordinary turns record the level they really ran at.
The docs now say medium for the unset case where the provider declares no default of its own, and the lesson survives the change: if the depth of the answers matters to you, set the default explicitly and check it once. The check is one message:
/think # prints the current thinking level for this conversation
/model # on recent builds also prints the effort, e.g. "Think: high"CopiedDo not ask the agent instead. On OpenClaw 2026.9.1 an agent can report its reasoning effort as “off” while the configured default is high and the run traces agree with the config. The model does not see its own sampling parameters; it guesses. The command reads the setting.
Asking the agent to change it
You can, and it works, with one thing to understand about scope. Asked in plain chat to think harder from now on, an agent on the builds of late August 2026 can patch the session’s thinking level through the Gateway’s own CLI and confirm it with a status call, and the setting then survives a session reset. What it leaves alone is thinkingDefault, so every other conversation stays where it was. That is the right behaviour, and it is the same session-versus-install distinction as the list above: “think harder” in a chat means this chat. If you want the install-wide default changed by the agent, say so; on OpenClaw 2 a configuration edit becomes a proposal you approve rather than something the agent does silently.
Setting the default yourself
openclaw config set agents.defaults.thinkingDefault '"high"' --strict-jsonCopiedPer-model parameters also exist, under the model’s entry in agents.defaults.models, for the cases where one model should run differently from the rest:
agents.defaults.models["<provider>/<model>"].paramsCopiedHigher effort costs more output tokens and more seconds per reply; on a metered key it is the second-largest dial after the model itself, and the model guide is where the two decisions meet. A sensible pattern is a strong default for the conversations you care about and /think low pinned on the chats that are really just lookups.