Skip to content

Browse catalog

Search catalog

[READY] Type a title, tag, or description.

Cursor

Cursor cut user token cost 7%

AUTHOR
Bartłomiej Krupa
PUBLISHED
2026.10.12
READ_TIME
6 min

If you use Cursor, a 7% token-cost cut already shipped inside the product. If you assemble your own agent requests, Cursor’s 23 September write-up is a list of cuts with the denominator attached. On 23 September 2026, Jediah Katz, Connor O’Keefe, and Calvin Yee reported that harness changes reduced user token cost by 7% with no reduction in agent quality.

A 66% shorter system prompt is 66% of the system prompt. The bill moved by 7%.

What each percentage is a share of

A harness is the code that builds each model request: the system prompt, the tool list, the cache markers, and which notes a subagent (a second model call) is allowed to carry. Cursor’s spend chart is an image. The article text does not give each bar’s share, so those widths stay out of this piece. MCP is the protocol a coding agent uses to call an external tool server. One row below is an earlier MCP change, measured only on sessions that called an MCP tool.

ChangeResultThis percentage is a share of
The harness changes togethertoken cost down 7%, quality unchangedthe bill
System prompt trimabout 66% shorterthe system prompt
Built-in tools loaded on demanddescription tokens down 60%tool-description tokens in the static prompt
MCP tools moved on demand earliertotal tokens down 46.9%sessions that actually called an MCP tool
Explicit cache breakpointscold cache misses down 20%the miss rate
Line numbers on every tenth linecache-read tokens down 1.6%cache-read tokens

Every figure is Cursor’s own production measurement or A/B test. Nothing here is an independent rerun.

What stayed in every request

Static context is text sent on every turn: tool definitions and rules. Dynamic context is a tool definition loaded only when that tool is needed.

Cursor had added extra tools - background shells, cloud subagents, and web access - on top of the main shell tool. Most of those added tools are used in fewer than 20% of conversations, and each one still occupied the prompt. They A/B tested which definitions the model needs to see from the first turn, watching tokens, cost, latency, tool-call errors, and whether people kept using the agent.

What stayed static:

  • read, search, edit, and the main shell tool
  • ask_question, because some models invented calls to it when the definition was absent
  • create_plan, because Plan Mode (the agent writes a plan before it edits) needs it immediately

Everything else loads on demand. An earlier move of MCP tools into that same pattern had already cut total tokens 46.9% on sessions that called an MCP tool.

The system prompt shrank by about 66% for a separate reason. Weaker models needed lists of “DO NOT”, “You must”, and “Important” before they would follow a tool. Newer models followed a plain description of what the tool does. Cursor says that result held across model families, and that they test on real traffic because their test sets cluster on hard problems and miss ordinary requests.

The cache breakpoint, then the line numbers

A prompt cache reuses the unchanged front of a request so you do not pay full input price again. A cold cache miss is a turn that cannot reuse that front. Before GPT-5.6, OpenAI picked the cache boundary automatically. From GPT-5.6, the client can mark an explicit breakpoint.

Cursor puts the breakpoint after the part of the request that does not change from turn to turn, and before the conversation, which keeps growing. Skills (instruction blocks attached to the agent), the subagent list, and environment info move past that breakpoint into a phantom user message: request-specific text that must not sit inside the cached prefix. Cold cache misses fell 20%.

The same rule, stated from the provider side: a cache hit requires the prefix to stay byte-for-byte the same. The checklist for that is Don’t break the prompt cache. The one-line version is Cache-stable prefix.

File reads were the other quiet tax. The Read tool numbered every line, because models are bad at counting and need line numbers to cite code. One number is about 3 to 5 tokens. Across tens of thousands of lines that adds up. Numbering every tenth line cut cache-read tokens 1.6%. Cursor says models could still cite code, and quality did not drop.

Subagents, only when something else asks

A subagent is a second model call with its own context window. It returns a result to the parent, so the parent does not have to keep the search transcript. That saves tokens. It also duplicates work when the two calls cannot see each other’s notes. Subagent context isolation is the same trade.

Cursor deleted instructions that pushed subagents for codebase exploration. The pattern was already in training data, and the extra prompt produced more subagents than the task needed. They also stopped the parent from picking a different model for the subagent unless the user or the harness asked for one. Cursor can still pair a planner model with a cheaper one.

Grok Bot is another agent product named at the end of the post. The post says the same lessons are going there, and it gives no numbers.

What to copy

You cannot flip these on. They are already how Cursor builds a request. If you own the harness, five moves from the post are concrete:

  1. Delete “DO NOT” lists once the model follows a one-line tool description. Check that on ordinary sessions. Cursor A/B tests on real traffic because eval sets cluster on hard problems.
  2. Keep read, search, edit, and the main shell tool in the static prompt. Defer an added tool used in under 20% of conversations.
  3. Leave a tool in the static prompt when models invent calls to it. That is why ask_question stayed.
  4. Put skills, subagent lists, and environment info after the cache breakpoint.
  5. Number every tenth line on file reads, not every line.

Remember 7% when you look at the invoice. The 66% and the 60% are prompt cuts behind that bill change. The 46.9% is earlier, and only on sessions that called an MCP tool.

FAQ

How much did Cursor's harness changes cut token cost?
7% of user token cost, with no reported drop in agent quality. Cursor published the figure on 23 September 2026 in "Improved token efficiency for longer agent runs." The 7% is the bill. Bigger percentages nearby measure something else: the system prompt (about 66%), static tool descriptions (60%), tokens on sessions that called an MCP tool (46.9%, from an earlier change), or the cache-miss rate (20%).
Which Cursor tools stay in every request?
Read, search, edit, shell, ask_question, and create_plan. Cursor kept ask_question in the static prompt because some models hallucinated calls to it, and create_plan because Plan Mode needs it from the start. Other built-in tools load when the agent needs them. That cut static-context tool-description tokens by 60%.
Does numbering every line waste tokens?
Cursor says one line number is about 3 to 5 tokens. Numbering every tenth line, instead of every line, cut cache-read tokens by 1.6% with no reduction in quality. Models could still cite the code.

Sources

  1. Improved token efficiency for longer agent runsCursor