ClaudeHowSupport Us

max_tokens is too small once xhigh thinking is included

The symptom

A request set to the highest available effort level comes back truncated — cut off mid-answer, sometimes mid-sentence — even though the same prompt and max_tokens value worked cleanly at a lower effort level moments earlier. Nothing about the request failed outright; it just stopped producing before it was actually done.

Why raising effort silently shrinks your answer budget

max_tokens is a ceiling on thinking and the visible answer combined, not a ceiling on the answer alone — and the highest effort level, by design, spends substantially more of that shared budget on thinking before it ever gets to the response. A max_tokens value that comfortably covered a full answer at a lower effort level can leave only a sliver of room for the actual response once thinking at the top effort level has taken its share first, and the model simply stops once the ceiling is hit, wherever that happens to land in the answer.

Why this doesn't throw a clear error

The request itself is valid — a large thinking block followed by a truncated answer isn't a malformed request, it's exactly what a tight max_tokens ceiling combined with heavy thinking produces. That makes this one of the harder failures to catch in testing, because it doesn't surface as an error at all; it surfaces as an answer that looks plausible but stops early, which is easy to miss unless you're specifically checking whether responses are landing at the token ceiling.

The fix

Raise max_tokens substantially before testing at the highest effort level — treat it as a different budgeting problem from lower effort levels, not the same ceiling that happened to work before. If your max_tokens value is fixed across effort levels in your request-building code, that's the first thing worth changing: scale it with effort level rather than leaving one ceiling for all of them. See the effort & thinking cost estimator for how much of that budget thinking actually consumes at each level before you decide where to set it.

Verified 2026-08-08 against ClaudeHow facts module (src/data/facts/) — see /about/#accuracy.