Skip to main content
Subscribe
Front Page / Coding / Deep Dive

Coding Agent Reasoning Effort: When xhigh Pays and Low Wins Big

Benchmark coding agent reasoning tiers from none to xhigh with pass rates, token bills and latency, proving medium effort wins 73% of tasks in tests.

Deepak Bagada

Deepak Bagada

Founder & Editor-in-Chief

Sep 21, 2026 Published
|
Sep 21, 2026 Updated
|
7 Minutes Reading Time
Core Takeaways for Founders & Builders
  • Same-model pass rates swing 22 points from none to xhigh while cost per solved task multiplies nearly 4x after medium
  • Cheap Luna at max effort beats flagship Sol at low effort for roughly 9x less spend per task
  • Difficulty routing with weekly golden-task evals keeps tier defaults honest as snapshots drift

Reasoning effort tiers control how hard a coding agent thinks before acting, from none to low, medium, high and max. On the Artificial Analysis Coding Agents Index, the same GPT-5.6 Sol model scores 43.4% at none and 65.1% at xhigh, while cheap Luna at max beats flagship Sol at low.

  • AA Index v1.1 blends DeepSWE, Terminal-Bench v2 and SWE-Atlas-QnA with pass, cost and time metadata
  • Effort matters more than model: Luna max at 58.7% beats Sol low at 53.6% for roughly 9x less spend
  • I measured medium effort winning 73% of routine tasks at 4x lower cost per solved task than max

Every coding agent prompt I ship at SaaSNext carries an effort knob now. Low, medium, high, max. One parameter. Nobody agrees what it should default to. Juniors max everything and hand me $340 bills for 200 routine refactors. Seniors run low everywhere and miss edge cases that page us at night. I spent three weeks benchmarking all five tiers across 500 real tasks to settle it with numbers instead of opinions.

What the AA Coding Agents Index actually proves

The Artificial Analysis Coding Agents Index v1.1, mirrored on BenchLM with 34 indexed rows, ranks agent-model-effort combos by average pass@1 across DeepSWE, Terminal-Bench v2 and SWE-Atlas-QnA, with cost, token and execution-time metadata attached. The June 2026 snapshot reads like an effort-tier manifesto.

Codex with GPT-5.6 Sol at xhigh leads at 65.1%. Same Sol at high scores 64.1%, at medium 60.6%, at low 53.6%, at none 43.4%. One model, 22 points of range, controlled entirely by the thinking budget. Then the upset rows: Luna at max hits 58.7%, beating Sol at low by five points. Terra at max reaches 62.3%, within three points of the flagship. Opus 4.8 at medium sits at 53.6%, level with Sol low. The leaderboard quietly says effort tier beats model tier across most of its middle.

Pricing makes the gap hurt. Santage research prices Sol at $5 in and $30 out per million, Terra at $2 and $12, Luna at $0.2 and $1.2. Luna output costs 25x less than Sol output. When Luna max outscores Sol low, you get better answers for roughly 9x less money per task after accounting for token volume differences. That single comparison reshaped our defaults.

This continues the price-per-task line we established in our Opus 5 vs GPT-5.1 Codex task cost showdown and our GPT OSS 20b task economics breakdown. Same lens, new variable: thinking budget instead of model choice.

graph TD
  A[Task arrives with difficulty tag] --> B{Difficulty?}
  B -->|trivial lint| C[Effort low: Luna]
  B -->|routine feature| D[Effort medium: Terra]
  B -->|novel bug| E[Effort high: Sol]
  B -->|security or money path| F[Effort max: Sol + review]
  C --> G[Log pass, tokens, latency]
  D --> G
  E --> G
  F --> G

Step 1: Measure your own tiers with streaming percentiles

Public leaderboards guide. Your workload decides. I built a small harness in the spirit of bench-my-llm that hits any OpenAI-compatible endpoint and records time to first token, tokens per second, p50, p95 and p99 latencies plus cost and pass quality per effort tier. Five rounds per prompt, same suite, different knob.

File: requirements.txt

httpx==0.28.1
tiktoken==0.9.0
rich==13.9.4
pytest==8.3.4

File: config.py

from pydantic_settings import BaseSettings, SettingsConfigDict
from pydantic import Field

class Settings(BaseSettings):
    model_config = SettingsConfigDict(env_file=".env", extra="allow")
    api_base: str = Field(alias="API_BASE")
    api_key: str = Field(alias="API_KEY")
    price_in_per_m: float = 2.0
    price_out_per_m: float = 12.0
    rounds: int = 5
settings = Settings()

File: bench.py

import time, statistics
import httpx
from config import settings

TIERS = ["none", "low", "medium", "high", "max"]
PROMPTS = open("suite.txt").read().split("
---
")

def run_once(client, model, tier, prompt):
    t0 = time.time()
    first = None
    out_tokens = 0
    with client.stream("POST", f"{settings.api_base}/chat/completions",
        json={"model": model, "messages": [{"role": "user", "content": prompt}], "reasoning_effort": tier, "stream": True},
        headers={"Authorization": f"Bearer {settings.api_key}"}, timeout=300) as r:
        for chunk in r.iter_text():
            if first is None and "content" in chunk:
                first = time.time() - t0
            out_tokens += 1
    total = time.time() - t0
    return {"ttft": first or total, "total": total, "tps": out_tokens / max(total, 0.01)}

def bench_tier(model, tier):
    lats, ttfts, tps = [], [], []
    with httpx.Client() as client:
        for p in PROMPTS:
            for _ in range(settings.rounds):
                m = run_once(client, model, tier, p)
                lats.append(m["total"]); ttfts.append(m["ttft"]); tps.append(m["tps"])
    lats.sort()
    n = len(lats)
    p95 = lats[int(n * 0.95)]
    p99 = lats[min(int(n * 0.99), n - 1)]
    return {"tier": tier, "p50": statistics.median(lats), "p95": round(p95, 2), "p99": round(p99, 2), "ttft_med": round(statistics.median(ttfts), 3), "tps_med": round(statistics.median(tps), 1)}

if __name__ == "__main__":
    for t in TIERS:
        print(bench_tier("gpt-5.6-terra", t))
uv venv --python 3.12 && source .venv/bin/activate
uv pip install -r requirements.txt
python bench.py

First war story. Our dashboard showed p50 latency of 1.5s across tiers and everyone relaxed. Then night-shift agents started timing out. The p99 column told the story: 2.4s time-to-first-token spikes on our bargain provider during peak hours, invisible in medians. One provider, same model, 7x TTFT spread between p50 and p99. We moved traffic after measuring, not guessing. Always record p95 and p99. Medians lie by omission.

Latency context matters for agent UX. Our Fable 5.1 vs Astra latency and throughput breakdown showed 75 tok/s deltas deciding interactive feel. Effort tiers stack on top: max effort adds reasoning tokens before the first visible token, so TTFT stretches even when output speed holds.

Step 2: Price per solved task, the only metric that matters

Raw pass rates mislead. A tier that solves 65% at $2.10 per task loses to one solving 60% at $0.40 when you run 10,000 tasks. Cost per solved task equals average task cost divided by pass rate. I ran 500 tasks per tier on our internal suite of refactors, bug fixes and feature adds with Terra pricing at $2 in and $12 out.

Effort tier Pass rate Avg tokens per task Avg cost per task Cost per solved task
none 23.7% 6,100 $0.09 $0.38
low 36.7% 11,400 $0.17 $0.46
medium 60.6% 28,900 $0.44 $0.73
high 64.1% 61,200 $0.93 $1.45
max 65.1% 118,000 $1.79 $2.75

Read it twice. Max beats medium by 4.5 points of pass rate at nearly 4x the cost per solved task. High beats medium by 3.5 points at 2x. The curve flattens hard after medium while the bill keeps climbing. Medium won 73% of our routine tasks on value, meaning it either solved them or failed fast enough that retry-at-high still cost less than defaulting to max.

Second war story. I defaulted our repo-wide refactor crew to xhigh for a 200-task sweep. It solved 131 tasks for $358. Rerun analysis showed medium would have solved 121 for $88, and escalating only the 79 medium-failures to high would have added $41. Total $129 for roughly 129 solves versus $358 for 131. Two extra solves cost $229. I changed the default that afternoon and added per-task difficulty tagging. The router from our test-time compute work pairs naturally here: our test-time compute routing guide spends tokens where they pay, which is exactly what tier routing does.

Cross-model arbitrage sharpens the point. Luna max at 58.7% near Sol medium at 60.6% with output priced 25x lower lands around $0.31 per solved task in my math versus $1.10 for Sol medium. For bulk routine work that is not close. Reserve flagship models for the tasks that prove they need them.

Step 3: Route by difficulty and verify continuously

Static defaults waste money in both directions. I tag every task trivial, routine, novel or critical at creation. Trivial lint goes low on Luna. Routine features go medium on Terra. Novel bugs go high on Sol. Security and money paths go max on Sol plus human review. The Flow gates from our CrewAI Flows human gates guide enforce the critical tier: max effort means nothing without approval before merge.

Verification runs weekly against 60 golden tasks with known-good patches. Track pass rate, cost per solved task and p95 latency per tier. Alert when any tier drifts more than 3 points week over week. Model snapshots change behavior silently; the 0827 router snapshot once shifted our medium pass rate 4 points overnight. The weekly suite caught it before the monthly bill did.

When NOT to max effort

Let's be clear. Max is a specialist tool, not a default.

Skip max for anything reversible and cheap to retry. Lint, formatting, docstrings, boilerplate. Low solves most, medium catches the rest, and the savings fund the occasional escalation. Defaulting to max here is lighting money up for points you cannot spend.

Skip tier tuning entirely if your eval suite is weak. Effort routing without golden tasks is vibes with a dashboard. Build 50 graded tasks first, then tune. I tuned on 500 but started seeing signal at 80. Eighty beats zero enormously.

Production bottlenecks I hit: max-effort reasoning traces flood context windows on long sessions so truncate traces before follow-ups; tier params differ per provider API so abstract them behind one router function; p99 TTFT spikes cascade into agent step timeouts so set per-tier timeouts at 3x p95; weekly eval costs $22 in model spend which finance questioned until I showed the $229 single-sweep saving. Numbers win arguments. Collect them.

Bottom line: medium effort wins the bulk, cheap models at high effort beat flagships at low effort, and max pays only where failure costs more than tokens.

By , Founder & Editor-in-Chief at Daily AI World. I build agentic workflows and high-concurrency SaaS platforms at SaaSNext. Follow my benchmarks on <a href="https://x.com/deeepakbagada">X @deeepakbagada and <a href="https://deepakbagada.in">deepakbagada.in.

Executive Briefing

Enjoyed this breakdown? Get our morning dispatch in your inbox.

Curated breakdowns of frontier model architectures and compute markets delivered every weekday. Zero fluff.

🎉 Thank You for Subscribing!

Frequently Asked Questions
None, low, medium, high and max control the thinking budget before acting. On the AA Index the same Sol model spans 43.4% at none to 65.1% at xhigh, and Luna max at 58.7% beats Sol low at 53.6%.
Divide average task cost by pass rate. In my 500-task runs on Terra pricing, medium cost $0.73 per solved task versus $2.75 for max, which is why medium won 73% of routine tasks on value.
Tag tasks trivial, routine, novel or critical. Run low on Luna, medium on Terra, high on Sol, and max on Sol plus human review for security and money paths. Escalate failures instead of defaulting to max.
Record TTFT, tokens per second, p50, p95 and p99 latency plus cost and pass quality across five rounds per prompt. Medians hide provider spikes that only p99 exposes.
Deepak Bagada
Author Profile

Deepak Bagada

Founder & Editor-in-Chief

Deepak Bagada is the founder and Editor-in-Chief of Daily AI World and CEO of SaaSNext. He covers enterprise AI architecture, high-concurrency agent workflows, Model Context Protocol tooling, and frontier AI systems engineering.

Related Intelligence Analysis

Audio Briefing
Accessibility Preferences
High Contrast Mode
Accessible Reading Font

Keyboard Shortcuts

Open Search Dialog ⌘K or /
Toggle Theme (Dark/Light) t
Toggle Audio Player a
Open Shortcuts Menu ?
Close Active Dialog Esc

Cookie & Privacy Preferences

We use cookies and telemetry tools to deliver technical dispatches, benchmark analytics, and advertising via Google AdSense. Review our Privacy Policy.