Max is a tax rate, not a budget
DeepSeek's reasoning-effort dial runs from 1 to 100, and its technical report explains how the model learned to obey it. The explanation shows that the number in the prompt names a price the model was trained under, and that a benchmark row quoting it is saying less than it appears to.
The argumentA reasoning-effort setting is a tax rate the model learned to respond to rather than a compute budget it is held to, so "max" in a results table names a policy, not an amount of thinking.
On 17 October DeepSeek published what it calls a minor update. The model card for DeepSeek-V4.1-Flash-1017 reports Terminal-Bench 4.0 rising from 31.2 to 42.3, HLE from 36.8 to 42.6, and DeepSWE from 74.2 to 77.0, while, in the card's words, reducing "task execution time and output length". Better and shorter at once is the combination everyone wants, so it deserves a slow read. The slow read begins with a question the card never answers: at what reasoning effort were these numbers measured?
The previous card answers it. Every instruct result there uses the maximum setting, reasoning_effort=100. The new card is silent. And behind that silence is a more interesting fact about what the number even is.
A reasoning-effort setting is a tax rate that the model learned to respond to, not a budget it is held to. That makes "max" in a results table the name of a policy, not an amount of thinking. The practical consequence is that a cell in a model-card table has several unstated inputs, and DeepSeek's own documents show them moving a score by more than the release being announced.
Start with what you might assume: that effort is a compute allowance, something like a token cap that the serving system enforces. DeepSeek's technical report, which covers the September V4.1-Flash release that the 1017 model builds on, says otherwise. The setting is text. A line is prepended to the system prompt: Reasoning Effort: {effort}, with a range of 1 to 100. Nothing in the serving stack counts tokens against it. The model has simply been trained to behave differently when it reads different numbers.
The training trick is in the reward. This is reinforcement learning, where the model samples several answers to a prompt and each is scored. For every training prompt, the report samples responses at several effort levels. Responses at the same level are compared only with each other, using group-relative advantages (each response is judged against the average of its own group, a method the library covers under GRPO). What differs between levels is one extra term in the reward, a length penalty:
penalty = − min(C_max, k(b) × ℓ / L_norm)
Here ℓ is the number of reasoning tokens, L_norm is a reference length, C_max caps the damage, and k(b) is the penalty coefficient at effort b. The coefficient shrinks exponentially as effort rises: every time b increases by an amount τ, k is multiplied by 1/e, roughly 0.37. So at low effort each token costs a lot of reward, and at high effort tokens are cheap.
Think of it as a tax. At b=50 the model is taxed heavily per token of thinking, so it learns to stop early unless an extra token buys a lot. At b=100 the tax is light, so it thinks longer. The report does not publish k0, τ, or the training levels, so I cannot give you the real rates. Purely to show the shape: if τ were 25 effort points, going from 50 to 75 would cut the per-token tax to about 37% of what it was, and going to 100 would cut it to about 14%.
Appendix C gives the reason an exponential is a sensible choice. Suppose a problem's chance of being solved rises with thinking length but with diminishing returns that decay exponentially at a problem-specific rate s. The model maximises solve probability minus the tax, and the optimum length comes out as a straight line in b with slope s/τ. Two things follow, and both are worth remembering. The same step in effort should add more tokens on problems where extra thinking keeps paying (large s) than on problems where it stops paying fast. And the whole mapping is about incentives: the model finds its own stopping point, and the dial moves the price it faces.
The report is careful about this, and I want to be as careful. It calls the derivation "a local reward-level approximation, not a claim that measured average lengths must be linear or pointwise monotonic". What it measures is consistent with the story, not a proof of it.
What the measurements say
Across eight reasoning benchmarks, raising effort from 25 to 100 lengthens responses by 2.0 to 3.1 times. On AIME 2026 the average goes from 4.6k to 11.4k tokens, an extra 6.8k. On MathArena Apex 2025 it goes from 29.1k to 86.1k, an extra 57k. Same dial, same 75-point turn, and the added thinking differs by a factor of eight. That is what a tax predicts: the model decides how much extra to buy, and the answer depends on the problem. It is also why "effort 75" cannot be translated into a number of tokens or dollars without knowing the task.
Accuracy moves with it, mostly. MathArena Apex climbs 40.3 points, from 25.3% to 65.6%, between the two ends. The report says the largest gains sit in the low-to-mid range with diminishing returns after. The API exposes three presets, max, high and low, which are b=100, 75 and 50.
Now put an agent harness around the model. The report's appendix on scaffolds says raising effort lengthens trajectories in every scaffold, but that accuracy "tracks this growth only loosely", with plateaus and dips at intermediate settings. And the scaffolds are "calibrated differently": on DeepSWE, Claude Code is the flattest curve and spends comparatively few extra tokens, while DeepSeek's own minimal harness starts lowest and gains the most at the largest token cost. The sentence I would pin above any leaderboard is this one: scaffold choice "matters at least as much as the effort tier once the task is nearly saturated".
One checkpoint, eight harnesses
The report's Table 4 holds the checkpoint, sampling settings and effort (100) fixed and changes only the harness. On DeepSWE v1.1 the resolved rate runs from 65.5 under OpenCode to 74.2 under mini-SWE, a spread of 8.7 points, with Claude Code at 69.8 and Codex at 65.6. On Terminal-Bench 2.1 the spread is 84.1 to 90.6. Compare that with the headline improvement of the 1017 update on DeepSWE, which is 2.8 points. These are different checkpoints, so the comparison is about scale rather than a controlled test, but the scale is the point. The decision about which harness to run can be worth three times what a model release is.
Which brings back the card's footnote. The 1017 card says it used "the Claude Code harness for Terminal-Bench 4.0". The September card lists the same old-model value, 31.2, and says its code-agent benchmarks, Terminal-Bench 4.0 among them, ran in the Minimal mode of DeepSeek Harness. The same cell cannot come from two harnesses. Either the numbers were rerun for the new card, or one footnote is a carry-over error, and nothing I opened settles which. The stakes are not trivial, since the comparison columns on both cards (GPT-5.6 Sol at 39.9, Opus 5 at 51.8) are identical across the two. I am not accusing anyone of anything. A table with this many unstated settings is hard to keep consistent, even for people who clearly know what they are doing.
The objection runs: all of this is how a good dial should work. A tax on tokens is exactly how you price a scarce resource, the response is smooth, the report says the cost of a tier "can be estimated in advance", and it is far better than a hard cap that cuts off the model mid-thought. A developer who chooses 75 gets a predictable middle path, and a learner should not be told to distrust that.
I agree with nearly all of it. The dial is a better interface than a cap, and nothing here says DeepSeek's is badly built. The disagreement is narrower. Predictable per benchmark is not predictable per task, as the factor of eight shows. And a dial that is excellent for the person turning it is a poor basis for comparing two labs, because each lab's 100 sits at a different point on its own tax schedule. Two models at "max" have each been told to stop thinking when their own price says to. They have not been given the same amount of thinking, and nothing in the number says what the difference is.
The 1017 card also says something it cannot yet show. A model "reduced output length" at the same effort setting has either learned to be more efficient or been taxed more heavily, and the card does not distinguish them. The first is a capability gain. The second is a move along the same frontier that happens to look like one. I did not find a report for 1017, only the card, so I cannot say which it is.
When you read a row in a model-card table, write down three things before the score: the effort or thinking setting, the harness, and the benchmark version. The 1017 card quotes Terminal-Bench 4.0, while the September report's scaffold table uses Terminal-Bench 2.1, a benchmark on which the same family scores around 90. Those are not the same test, and the number alone does not tell you.
Ask for tokens per task next to the score. A result that is better and shorter is two claims, and you should see both measured. If you build with a model, run your own task at three settings and plot the curve. The report itself says the largest gains come early and that returns diminish, so your task may sit on the flat part, where the cheaper tier is the right one.
And hold the idea beneath it. Reinforcement learning shapes behaviour through what is rewarded and what is charged for. Once you see that the effort number is a charge, a lot of confusing model behaviour becomes legible, from verbosity to premature stopping.
The last line of the prompt
The dial looks like a knob on a machine, something you turn to release more power. It is a sentence in a system prompt. During training every such sentence came paired with a bill for what followed, and the model learned to act as if the bill were real. So the useful question about a result is rarely how hard the model was made to think. It is how much it had been taught to charge itself for thinking, and whether the table says.
What this is argued from
Reporting and primary material the piece rests on, dated at the time of writing. The interpretation is mine; the facts belong to these.
Editorials on this site are written to be argued with. If you think the reading is wrong, it probably is in some particular way, and that is the useful part.