
Chain of thought prompting has a 2026 problem the top guides skip: the same trick that made models smarter back in 2022 can quietly make a reasoning model worse today. Wei et al. introduced it in 2022, and it lifted accuracy on hard math and logic by getting models to show their reasoning steps. There was a catch. It only kicked in once models passed roughly 100 billion parameters. Now o-series and GPT-5 reasoning models do that thinking internally, so telling them to "think step by step" often just burns tokens. When should you still use it, and when should you skip it?
Key takeaways:
- Chain of thought prompting shows a model's reasoning steps and lifts accuracy on multi-step math, logic, and code.
- It's an emergent ability: it barely helps small models, and reasoning models already do it internally.
- On o-series, GPT-5 reasoning, and Claude extended thinking, manual "think step by step" is often redundant.
- Still use manual CoT on non-reasoning and local open-source models, or when you need an auditable reasoning path.
What Is Chain of Thought Prompting?
Chain of thought (CoT) prompting is a technique that asks a language model to work through a problem in explicit intermediate steps before giving a final answer. Introduced by Wei et al. in 2022, it improves accuracy on multi-step math, logic, and commonsense tasks, and it makes the model's reasoning visible.
Ask a plain model a word problem cold and it often blurts the wrong number. Ask it to reason first, and the odds jump. Take "A shelf has 3 boxes of 7 books; I remove 5. What's left?" Cold, a small model might answer "21." Add "Let's think step by step" and it writes: 3 x 7 = 21, then 21 - 5 = 16. Same model, better answer, and you can see where it slipped if it does. CoT is one tool inside the wider toolkit in our prompt engineering guide; this post zooms all the way in on it.
How It Works (and Why It Only Clicked at Scale)
CoT works by having the model generate a natural-language reasoning path token by token, so each intermediate conclusion conditions the next. Wei et al. (2022) found this is an emergent ability: it barely helps small models and only produces large accuracy gains once models pass roughly 100 billion parameters.
Think of it like showing your work in math class. A model predicts one token at a time, and each word it writes becomes part of the input for the next word. When it writes "21" as an intermediate result, that "21" is now sitting in context, steering the final step toward "16." Skip the steps and the model has to leap straight to the answer with nothing to lean on. The odd part is that this benefit only appears at scale. In the founding paper, Wei's team found tiny models got almost no lift, and sometimes did worse. That's why the same prompt that flops on a 7B local model can transform a frontier one.
The Three Flavors: Zero-Shot, Few-Shot, and Self-Consistency
There are three main CoT variants. Zero-shot CoT just appends "Let's think step by step" (Kojima et al., 2022). Few-shot CoT shows worked reasoning examples first. Self-consistency (Wang et al., 2022) samples several reasoning paths and takes a majority vote on the answer, the most reliable and the most expensive of the three.
Zero-shot is the lazy magic trick. You add one sentence and the model reasons without any examples. Kojima et al. showed that "Let's think step by step" alone turns a big model into a decent zero-shot reasoner.
# Zero-shot CoT: append the trigger phrase. Best on non-reasoning models.
# Model names change fast, so treat the string below as a placeholder.
from openai import OpenAI
client = OpenAI()
prompt = (
"Q: A shelf holds 3 boxes. Each box has 7 books. "
"I remove 5 books. How many are left?\n"
"A: Let's think step by step."
)
resp = client.chat.completions.create(
model="your-non-reasoning-model",
messages=[{"role": "user", "content": prompt}],
)
print(resp.choices[0].message.content)Few-shot CoT goes further: you hand the model two or three worked examples so it copies the reasoning pattern for your domain. Self-consistency is the accuracy dial. Instead of trusting one chain, you sample five at a higher temperature and let them vote. Wang et al. found the majority answer is usually right even when individual chains wander off.
# Self-consistency: sample N reasoning paths, majority-vote the answer.
# More accurate, more expensive. Wang et al., 2022.
from collections import Counter
def self_consistency(prompt, n=5, temperature=0.7):
answers = []
for _ in range(n):
resp = client.chat.completions.create(
model="your-non-reasoning-model",
messages=[{"role": "user", "content": prompt}],
temperature=temperature, # diversity across paths
)
answers.append(extract_final_answer(resp.choices[0].message.content))
return Counter(answers).most_common(1)[0][0] # majority voteWant that reasoning as clean JSON instead of free text? Pair CoT with the patterns in our structured outputs guide so a downstream step can parse it.
The 2026 Shift: Reasoning Models Changed the Rules
Reasoning models, OpenAI's o-series and GPT-5 reasoning, Claude's extended thinking, and DeepSeek R1, do chain of thought internally before answering. OpenAI's own guidance says explicitly telling these models to "think step by step" is unnecessary, and that asking a reasoning model to reason more may actually hurt performance. The scaffolding is built in.
This is the part the older guides pretend isn't happening. A reasoning model produces a private chain of thought before it ever shows you an answer, so the step-by-step you used to write by hand now happens under the hood. OpenAI's reasoning best practices put it bluntly: "Avoid chain-of-thought prompts: Since these models perform reasoning internally, prompting them to 'think step by step' or 'explain your reasoning' is unnecessary." Their o3/o4-mini prompting guide goes one step further: "Asking a reasoning model to reason more may actually hurt the performance."
Anthropic's extended thinking is the same idea productized. You give Claude a thinking budget instead of a step-by-step script, and the newest models decide how deep to think on their own. On this class of model you tune reasoning_effort or the thinking budget, not the wording. For the open reasoning-model side, including DeepSeek R1, see our Qwen vs DeepSeek vs GLM breakdown.
When Manual CoT Still Helps vs When It Backfires
Manual CoT still helps on non-reasoning and small or local open-source models, or when you need one specific reasoning structure or an auditable trail. It backfires on native reasoning models (redundant and slower), on simple one-step tasks, and on latency- or cost-sensitive paths, where it just burns tokens for no accuracy gain.
| Manual CoT still helps when | Manual CoT backfires when |
|---|---|
| You're on a non-reasoning model (older GPT, base Llama) | You're on a reasoning model (o-series, GPT-5 reasoning, Claude thinking) |
| You run a small or local open-source model | The task is a one-step lookup, classification, or format change |
| You need one fixed, auditable reasoning structure | You're on a latency-sensitive, real-time path |
| The task is multi-step math, logic, or planning | You're on a high-volume, cost-sensitive endpoint |
| You want a visible trail you can inspect or grep | The model already reasons internally, so the steps just repeat |
Here's a real example from our own shop. The 12-agent pipeline that wrote this post runs on Claude models, and we deliberately never tell those agents to "think step by step," because the models already reason internally and it would only add noise. What we do hand-write is rigid, greppable reasoning scaffolds. Our validator agent runs a fixed 100-point rubric (50 quality, 50 SEO) plus eight sequential gate checks. The translator follows a set checklist: match the source H2 count, run a diacritics grep that has to return more than zero, and stay inside an 80 to 120 percent line-count band. The publisher runs pre- and post-publish gates that regex-check the publishedAt datetime, then query the CMS to confirm the body isn't empty.
None of that is about more thinking. It's a fixed, auditable path we can inspect and grep, which is exactly the "manual CoT still helps" case. We added those gates for a reason: a date-only publishedAt value once silently hid an entire post from our blog index, so the rigid step sequence now exists to stop the model skipping a verification. One honest caveat: this is an operational observation, not a benchmark. We haven't run a controlled accuracy A/B on "think step by step" versus no instruction, so treat it as a structure-and-auditability lesson, not a numbers claim.
Running local models where manual CoT still pays off? Our best open-source LLMs of 2026 roundup covers the field. And if you ever surface a model's chain of thought to users, treat it as untrusted output; our prompt injection prevention guide explains why.
The Hidden Cost: Tokens, Latency, and Your Bill
CoT isn't free. Every reasoning step is output tokens you pay for, and longer generations raise latency. Reasoning models bill hidden reasoning tokens on top of the visible answer. On high-volume or real-time endpoints, forcing step-by-step output can quietly multiply cost, so budget for it or cap it with reasoning_effort.
Every "step 1, step 2, step 3" the model writes is output tokens, and output tokens are the expensive kind. A chain five times longer than the bare answer costs roughly five times as much on that call, and streams back slower. Reasoning models add a twist: they bill reasoning tokens for the internal thinking you never see, so a short final answer can hide a long, paid-for chain. On a low-volume endpoint that's noise; on a high-traffic one it creeps up fast. Two habits keep it sane. Cache the stable parts of your context so you're not paying to re-read them (our prompt caching guide shows how), and measure whether the extra tokens actually buy accuracy before rolling CoT out everywhere. Our LLM evals guide covers that measurement, so you don't pay for reasoning that doesn't move the score.
How to Use CoT in 2026: A Decision Checklist
First, identify your model class. On a reasoning model, skip manual CoT and tune reasoning_effort or the thinking budget instead. On a non-reasoning or local model, add zero-shot "Let's think step by step," upgrade to few-shot for domain tasks, and add self-consistency only when accuracy matters more than token cost.
Here's the whole decision in five steps:
- Identify your model class. Reasoning model or not? That single fact decides everything below.
- On a reasoning model, don't hand-write CoT. Tune
reasoning_effortor the thinking budget instead, and let the model reason internally. - On a non-reasoning or local model, add zero-shot "Let's think step by step." It's one line and free to try.
- For domain-specific tasks, upgrade to few-shot CoT with two or three worked examples. Add self-consistency only when accuracy beats token cost.
- If you expose the reasoning, measure it with evals and treat the visible chain as untrusted output.
The trigger phrase itself usually lives in your system prompt. Our system prompt examples show where it goes and how to phrase it.
# On a reasoning model, don't hand-write CoT. Tune the effort instead.
# Param names and levels change per provider and version, so check current docs.
resp = client.responses.create(
model="your-reasoning-model",
reasoning={"effort": "medium"}, # e.g. low | medium | high
input="Prove that the square root of 2 is irrational.",
)
# Anthropic equivalent: an extended-thinking budget.
# budget_tokens MUST be less than max_tokens.
# thinking = {"type": "enabled", "budget_tokens": 4000}Wiring this into a production stack is fiddlier than a blog example makes it look. If you'd rather not tune reasoning budgets and eval harnesses yourself, our team builds these pipelines end to end. See AI integration or get in touch.
About the Author
Mert Batur Gurbuz is Co-Founder of Techsy.io, where the team ships AI agents, automation systems, and voice/SDR pipelines for B2B clients. He studies at the University of Birmingham and writes about the LLM tooling stack the Techsy team actually uses in production.
Co-Founder, Techsy.io, University of Birmingham. Connect on LinkedIn.
Frequently Asked Questions
Is chain of thought prompting still relevant in 2026?
Yes, but its job shrank. On non-reasoning and small or local open-source models, manual CoT still lifts accuracy on multi-step tasks. On reasoning models it's mostly redundant. The strongest remaining use is forcing one fixed, auditable reasoning path you can inspect.
Does chain of thought prompting work on reasoning models like GPT-5, o3, or Claude?
These models already reason internally, so manual CoT is usually redundant and sometimes harmful. OpenAI's docs say prompting them to "think step by step" is unnecessary, and that asking them to reason more "may actually hurt the performance." Tune reasoning effort instead of writing steps.
What is zero-shot chain of thought prompting?
Zero-shot CoT means adding a trigger phrase, usually "Let's think step by step," without giving any worked examples first. Kojima et al. (2022) showed this alone turns a large model into a decent reasoner. It's the cheapest CoT variant: one line, no example curation, quick to test.
What is self-consistency in chain of thought prompting?
Self-consistency, from Wang et al. (2022), samples several independent reasoning chains at a higher temperature, then takes a majority vote on the final answer. It's the most accurate CoT variant because wrong chains rarely agree, but you pay for every sampled path, so it's also the most expensive.
What's the difference between chain of thought and few-shot prompting?
Few-shot prompting shows the model example input-output pairs. Chain of thought focuses on the reasoning between input and output. They combine well: few-shot CoT gives worked examples that include the reasoning steps, so the model copies your reasoning pattern, not just your answer format.
Chain of thought vs prompt chaining vs tree of thought: what's the difference?
Chain of thought reasons inside one prompt. Prompt chaining splits a task across several separate model calls, passing outputs forward. Tree of thought explores multiple reasoning branches and prunes weak ones. CoT is a single linear path; the other two add external structure around the model.
Who invented chain of thought prompting?
Chain of thought prompting was introduced by Jason Wei and colleagues at Google in the 2022 paper "Chain-of-Thought Prompting Elicits Reasoning in Large Language Models." Kojima et al. later added zero-shot CoT, and Wang et al. added self-consistency, both also in 2022.
Does chain of thought prompting work for code generation?
Yes, on non-reasoning models. Asking the model to plan the logic before writing code catches edge cases and reduces bugs on complex tasks. On reasoning models the planning happens internally, so a plain instruction usually works better than a hand-written "reason step by step" prefix.