Skip to content
Go back

Claude Code thinking triggers: ultrathink, /effort, and when to use each

Updated:  at  01:33 AM

Sometimes Claude gives you a plan that’s… fine. Surface level. Missing the edge cases you know are going to bite you later. There are two ways to fix that: the official way and the informal way.

The official way is the /effort command. In Claude Code, type /effort max (or /effort low, /effort high, etc.) and it changes how hard Claude thinks for the rest of your session. I wrote a full breakdown of the effort parameter covering all five levels.

The informal way is trigger words. Drop “think harder” or “ultrathink” into your prompt and Claude responds with deeper reasoning. These aren’t official settings. They’re prompt tricks that work in practice because the model picks up on the intent. But they do work, and sometimes they’re faster than switching effort levels mid-conversation.

Table of contents

Open Table of contents

The trigger words

Drop them naturally into your prompt: “Ultrathink about why this auth flow keeps failing.”

Here’s roughly how they map to /effort levels:

Trigger wordRoughly equivalent to
(no trigger)Whatever your current /effort is set to
thinkNudge toward more reasoning
think hardLeaning toward high territory
think harderLeaning toward max territory
ultrathinkmax territory

These aren’t exact mappings. The trigger words don’t literally set the effort level. They’re prompt cues that encourage deeper reasoning. If you want a guaranteed, persistent setting, use /effort (covered in detail in the effort parameter post).

When to still reach for ultrathink

Even with adaptive thinking, I still use the triggers. Here’s when:

Debugging. There are so many variables that get overlooked in a quick pass. Race conditions, state mutations, that one edge case you forgot about three files ago. Making Claude actually think through the problem instead of pattern-matching to a solution changes everything. It’s like the difference between asking your kid “did you clean your room?” and “show me under the bed.”

Architecture decisions. When I’m asking Claude to evaluate tradeoffs between approaches, I want it to actually weigh the options, not just pick the first reasonable one.

When it’s not clicking. I’ve given context and examples and it’s still off. That’s when I stop treating Claude like a tool and start treating it like a coworker. “Think with me here, what are we missing?” Sounds silly. Works surprisingly well.

When I would have said “be thorough” in the old days. If you catch yourself adding “make sure to consider all edge cases” or “be comprehensive,” just say “ultrathink” instead. It’s more direct and the model responds to it better.

If you’re using the API directly

The trigger words are a Claude Code convenience. If you’re building with the API, here’s what to actually set:

# Opus 4.6 - adaptive thinking (recommended)
response = client.messages.create(
    model="claude-opus-4-6",
    max_tokens=16000,
    thinking={"type": "adaptive"},
    output_config={"effort": "high"},  # or "max", "medium", "low"
    messages=[{"role": "user", "content": "..."}],
)

# Older models - manual thinking budget
response = client.messages.create(
    model="claude-sonnet-4-5-20250929",
    max_tokens=16000,
    thinking={"type": "enabled", "budget_tokens": 10000},
    messages=[{"role": "user", "content": "..."}],
)

The budget_tokens approach still works on Opus 4.6 but it’s deprecated. Anthropic says they’ll remove it in a future release.1

One more thing: interleaved thinking

This didn’t exist when I wrote the original post. With adaptive thinking on Opus 4.6, Claude can think between tool calls automatically. It reads a file, thinks about what it found, decides what to do next, calls another tool, thinks again.

On older models you needed a beta header for this. On 4.6 with adaptive thinking, it just happens. This is a big deal for Claude Code specifically, since most of what it does is chain tool calls together (read files, edit files, run commands). The model is reasoning between each step instead of planning everything upfront and hoping for the best.

So which should you use?

/effort when you’re switching modes. About to do a batch of quick edits? /effort low. Stuck on a hard bug? /effort max. It’s a setting, it sticks, you don’t have to think about it again.

Trigger words when you’re mid-conversation. You’re already in a flow and want Claude to think harder on this specific prompt without changing your session setting. “Ultrathink about why this auth flow keeps failing” is faster than /effort max followed by your prompt followed by /effort high to reset.

Both work. /effort is the official one. Trigger words are the quick-and-dirty one. I use both depending on the situation.

Want more Claude Code productivity tips? Check out the effort parameter breakdown and my full workflow.

Footnotes

  1. Adaptive Thinking - Anthropic Docs

More in this series

New posts, shipping stories, and nerdy links straight to your inbox.

Real insights. Zero filler.


Share this post on:

Previous Post
How to edit your previous prompt in Claude Code
Next Post
How to resume, search, and manage Claude Code conversations