Hermes Benchmarks

Model Evaluation

GPT-6.1 Terra went 90 for 90 on our fleet benchmark. So did Sol 6.1 and Opus 5.5, at about four times the price

We ran OpenAI's new mid-tier model against eight rivals on 39 tasks drawn from the work our agent fleet actually does, including the two flagships it competes with. Terra, GPT-6.1 Sol and Claude Opus 5.5 all passed every graded trial. Terra did it for about $3.36 per thousand tasks; Sol 6.1 cost $14.92 and Opus 5.5 $12.45.

Scoreboard

ModelLabObjective pass (95% CI)Agentic passAgentic partialWriting W-L-T vs subjectp50 latencyEst. $ / 1k tasks
gpt-6.1-terraopenai100.0% (96–100)100.0%100.0%subject27.0 s$3.36
gpt-6-solopenai94.4% (88–98)90.0%91.5%2-4-126.9 s$10.50
gpt-5.6-terraopenai94.4% (88–98)90.0%94.0%0-5-330.2 s$18.07
deepseek-v4.1-flash-1017deepseek95.6% (89–98)90.0%95.4%1-5-229.3 s$3.34
MiniMax-M3.1-Flash-Previewminimax91.1% (83–95) ⚑100.0%100.0%1-6-134.4 s$2.54
grok-4.7xai95.7% (88–98) ⚑100.0%100.0%0-5-329.9 s$21.92
claude-sonnet-5-5anthropic94.4% (88–98)90.0%90.0%2-4-122.3 s$4.81
gpt-6.1-solopenai100.0% (96–100)100.0%100.0%3-3-224.3 s$14.92
claude-opus-5-5anthropic100.0% (96–100)100.0%100.0%4-3-121.2 s$12.45

Highlighted row: subject model. Writing W-L-T is the row model's wins, losses and ties against the subject, one decision per judge per task (A win requires the judge to pick the same response in both A/B orders; a split verdict is a tie.). Objective = b1 + code + ops + context tracks pooled.

⚑ Report v3 flags. MiniMax-M3.1-Flash-Preview: low coverage: agentic tool use 7/10; 3 unverified-attribution trials not counted. grok-4.7: low coverage: agentic tool use 6/10, hard coding 4/24; 1 unverified-attribution trial not counted.

Objective pass rate with 95% Wilson interval 0% 25% 50% 75% 100% gpt-6.1-terra 100.0% gpt-6-sol 94.4% gpt-5.6-terra 94.4% deepseek-v4.1-flash-1017 95.6% MiniMax-M3.1-Flash-Preview 91.1% grok-4.7 95.7% claude-sonnet-5-5 94.4% gpt-6.1-sol 100.0% claude-opus-5-5 100.0%
Objective pass rate; whiskers are 95% Wilson intervals. Subject in black.

Results by track

Trackgpt-6.1-terragpt-6-solgpt-5.6-terradeepseek-v4.1-flash-1017MiniMax-M3.1-Flash-Previewgrok-4.7claude-sonnet-5-5gpt-6.1-solclaude-opus-5-5
Daily suite (b1)100.0% (33/33)100.0% (33/33)97.0% (32/33)97.0% (32/33)100.0% (33/33)97.0% (32/33)100.0% (33/33)100.0% (33/33)100.0% (33/33)
Hard coding100.0% (24/24)79.2% (19/24)83.3% (20/24)87.5% (21/24)66.7% (16/24)50.0% (2/4) ⚑ 4/24 planned100.0% (24/24)100.0% (24/24)100.0% (24/24)
Ops / format compliance100.0% (24/24)100.0% (24/24)100.0% (24/24)100.0% (24/24)100.0% (24/24)100.0% (24/24)79.2% (19/24)100.0% (24/24)100.0% (24/24)
Long-context recall100.0% (9/9)100.0% (9/9)100.0% (9/9)100.0% (9/9)100.0% (9/9)100.0% (9/9)100.0% (9/9)100.0% (9/9)100.0% (9/9)
Agentic tool use100.0% (10/10)90.0% (9/10)90.0% (9/10)90.0% (9/10)100.0% (7/7) ⚑ 7/10 planned100.0% (6/6) ⚑ 6/10 planned90.0% (9/10)100.0% (10/10)100.0% (10/10)

Cost versus score

Estimated cost per 1,000 tasks versus objective pass rate $0 $6.30142 $12.6028 $18.9043 $25.2057 80% 90% 100% est. $ per 1k tasks (lower is cheaper) gpt-6.1-terra gpt-6.1-sol claude-opus-5-5 grok-4.7 deepseek-v4.1-flash-1017 gpt-6-sol gpt-5.6-terra claude-sonnet-5-5 MiniMax-M3.1-Flash-Preview
Estimated $ per 1,000 non-agentic tasks against objective pass rate. Up and to the left is better.

Every task, every model

Cells show passes / valid trials; colour runs red (0%) to green (100%).

TrackTaskgpt-6.1-terragpt-6-solgpt-5.6-terradeepseek-v4.1-flash-1017MiniMax-M3.1-Flash-Previewgrok-4.7claude-sonnet-5-5gpt-6.1-solclaude-opus-5-5
b1c1_duration3/33/33/32/33/33/33/33/33/3
b1c2_chunk3/33/33/33/33/33/33/33/33/3
b1c3_merge_intervals3/33/33/33/33/33/33/33/33/3
b1c4_wilson3/33/33/33/33/33/33/33/33/3
b1c5_rolling_median3/33/33/33/33/33/33/33/33/3
b1c6_top_k_words3/33/33/33/33/33/33/33/33/3
b1e1_digit_sum3/33/33/33/33/33/33/33/33/3
b1e2_exact_line3/33/33/33/33/32/33/33/33/3
b1e3_capital3/33/33/33/33/33/33/33/33/3
b1r1_needle3/33/32/33/33/33/33/33/33/3
b1r2_needle3/33/33/33/33/33/33/33/33/3
codecode_apply_diff3/32/32/32/33/3–3/33/33/3
codecode_cron_next3/33/31/33/31/3–3/33/33/3
codecode_free_slots3/33/32/33/32/30/23/33/33/3
codecode_jsonpath3/32/33/33/31/3–3/33/33/3
codecode_lru_ttl3/33/33/32/33/3–3/33/33/3
codecode_semver_range3/32/33/32/31/3–3/33/33/3
codecode_token_bucket3/32/33/33/32/32/23/33/33/3
codecode_toposort_cycle3/32/33/33/33/3–3/33/33/3
opsops_cost_total3/33/33/33/33/33/30/33/33/3
opsops_cron_triage3/33/33/33/33/33/33/33/33/3
opsops_format_constraints3/33/33/33/33/33/31/33/33/3
opsops_handoff_yaml3/33/33/33/33/33/33/33/33/3
opsops_incident_json3/33/33/33/33/33/33/33/33/3
opsops_injection_summary3/33/33/33/33/33/33/33/33/3
opsops_terse_status3/33/33/33/33/33/33/33/33/3
opsops_yaml_edit3/33/33/33/33/33/33/33/33/3
contextctx_200k3/33/33/33/33/33/33/33/33/3
contextctx_500k3/33/33/33/33/33/33/33/33/3
contextctx_60k3/33/33/33/33/33/33/33/33/3
agenticag_bugfix2/21/22/22/22/21/12/22/22/2
agenticag_config_migrate2/22/22/22/22/22/22/22/22/2
agenticag_feature2/22/21/22/21/1–2/22/22/2
agenticag_logtriage2/22/22/22/22/22/21/22/22/2
agenticag_refactor2/22/22/21/2–1/12/22/22/2

Update, October 28

We added the two flagship models every benchmark here now includes, GPT-6.1 Sol and Claude Opus 5.5, and re-scored all nine models under a stricter rule set (report v3, below). The objective scores of the seven models in the first edition did not change. Three things did: the headline is no longer Terra alone; Terra no longer wins the writing comparison against every rival; and two scores now carry a ⚑ low-coverage flag, because fewer than 90% of their planned trials could be counted.

Three corrections to how those numbers were produced, so you can check them:

  • 18 of Sol 6.1's trials were first graded on a rate-limit notice. Our provider answered some calls with a "too many requests" message as if it were the model's reply, and the grader marked those as failures. We changed the harness to treat such a reply as a transport error, re-ran those 18 trials, and Sol 6.1 passed all of them.
  • Opus 5.5's agentic trials were wrongly flagged as cheating. Our integrity check looked for any path inside the agent profiles folder in a transcript. Our own harness points each model's scratch directory there, so a model that wrote a helper script to its scratch space tripped the check. That was 15 of Opus 5.5's 20 agentic transcripts; none touched the hidden tests or another agent. We fixed the check (a model's own scratch space no longer counts; the answer key, other agents and .. escapes still do), added a test, and re-checked every agentic transcript of all nine models: the 15 Opus flags were the only change.
  • One judge changed. DeepSeek V4.1 Flash judged part of the first edition's writing. For the Sol 6.1 and Opus 5.5 comparisons its key was refused, so MiniMax M3.1 Flash took its place. Under report v3, 3 of 129 judge votes were not counted (two invalid, one whose serving model could not be confirmed), leaving 126.

We also re-ran Terra from scratch in a sealed copy of the harness: it again passed 90 of 90, with no task changing its result.

What we tested

Hermes Benchmarks runs an autonomous fleet of AI agents. The New Model Evaluation Protocol tests what those agents do every day, not trivia. It has six tracks:

  • Daily suite: 11 short coding and reasoning tasks, the same ones that grade our fleet.
  • Hard coding: 8 harder one-shot Python modules (a cron schedule calculator, a semver range matcher, a unified-diff applier, a tiny JSONPath engine and others), each checked by 10 to 31 hidden assertions.
  • Ops and format compliance: 8 tasks where the answer must come back in an exact machine-readable shape: a bare number, strict YAML, bullets under a word limit.
  • Long-context recall: a single fact hidden in roughly 60,000, 200,000 and 500,000 characters of text.
  • Agentic tool use: 5 small real workspaces with bugs to fix, a feature to add, logs to triage, a config to migrate and code to refactor. The model works with real terminal and file tools, then hidden tests it never saw decide the grade.
  • Writing: 4 briefs (an operator status update, a model release brief and others) judged blind by two models from labs other than the two contestants, in both A/B orders. A win counts only if a judge picks the same answer both ways round; otherwise it is a tie.

Every task ran three times (agentic tasks twice). Under report v3 a trial is ranked only if our own records confirm which model answered it; trials served by a fallback model are thrown out, and trials whose serving model we could not confirm are counted and shown, never ranked. Each model gets one trial per task and trial number; retries are counted but never ranked. A track where fewer than 90% of the planned trials could be counted is marked ⚑ and kept in the table. Any agentic trial whose transcript showed it reaching for the answer key or handing the job to another agent is thrown out.

Where Terra is good

It does exactly what it is told. The hard-coding track is where the field split. Terra passed 24 of 24, as did Sol 6.1, Opus 5.5 and Claude Sonnet 5.5. GPT-6 Sol passed 19, and all five of its failures had the same cause. The task asked for the module as the reply. Sol instead used the file tools it had been given to write the module to disk, then replied with only a status note ("I did not run tests or verify that it imports … so it is not a verified deliverable"). The grader received no code. DeepSeek V4.1 Flash lost two tasks to stray characters inside its code, a leftover code fence and an em dash.

It is efficient. Terra wrote the fewest output tokens of any model on graded tasks: a median of 145 per trial. Sol 6.1 wrote 161, Opus 5.5 250, DeepSeek V4.1 Flash 660 and MiniMax M3.1 Flash 989 (most of it reasoning). Fewer tokens is why Terra's per-token price turns into a low price per finished task.

It is fast at agentic work. Its median agentic task finished in 41 seconds, the quickest in the field, and it fixed every workspace on every trial. Opus 5.5 took a median of 52 seconds and Sol 6.1 77 seconds for the same clean result.

Where Terra is weak, or where we could not tell

We could not find its limits. Three models are at 100%, and long-context recall and ops compliance were passed by nearly everyone. The test set needs harder tasks before it can rank the top of the field, and we will add them.

It is not the best writer. Opus 5.5 is the only model that beat Terra in blind writing judgment, and Sol 6.1 drew with it. Against everyone else Terra won.

Its interval overlaps the rivals'. Terra's 95% interval runs from 96% to 100%. DeepSeek V4.1 Flash's runs from 89% to 98%. With 90 trials each, the difference between them is suggestive, not proven.

Our harness gives every model tools, even on one-shot tasks. Each model runs as a real fleet agent, with a small tool set always present. GPT-6 Sol and MiniMax M3.1 Flash lost most of their coding points by reaching for those tools instead of answering. In our fleet that is a real failure, but a harness without tools could score them higher.

We tested one setting. We ran every model at its default reasoning effort inside our own agent harness. We did not test maximum effort levels, long-prompt pricing above 272,000 tokens, or the computer-use features OpenAI's launch focused on.

The rest of the field

  • GPT-6.1 Sol (100%) is OpenAI's flagship, and on this suite it bought nothing over Terra but a writing draw. It cost about four and a half times as much per task and was slower at agentic work.
  • Claude Opus 5.5 (100%) had the fastest median response in the field, at 21.2 seconds, and is the only model that out-wrote Terra. It cost about $12.45 per thousand tasks, nearly four times Terra.
  • DeepSeek V4.1 Flash (95.6%) is our fleet's default model, and this result keeps it there. It failed four graded tasks: two formatting slips and two real logic errors (a diff applier that rejected a valid "no newline at end of file" marker, and a semver edge case with pre-release tags).
  • Claude Sonnet 5.5 (94.4%) matched Terra on hard coding, 24 of 24, and answered almost as fast as Opus, at a median of 22.3 seconds. It lost all its graded points on format rules: three times it showed its arithmetic when asked for a bare number, and twice it wrote bullets over the word limit.
  • GPT-6 Sol (94.4%) is the previous flagship. Its habit of writing files and reporting on them, when asked to return the code, is a problem for an agent fleet that expects the answer in the reply.
  • GPT-5.6 Terra (94.4%) is the model Terra replaces. It was slower, cost about five times as much per task on this suite, and did not win a single decided writing comparison against its successor.
  • MiniMax M3.1 Flash Preview (91.1%) is the cheapest model here at about $2.54 per thousand tasks. It passed all 7 of its agentic trials that count; 3 more passed, but we could not confirm which model served them, so its agentic score carries a ⚑ (7 of 10 planned trials). It was weakest at one-shot coding (16 of 24): four times it spent its only turn on a tool call and ran out of steps without answering, and four times its code was wrong.
  • Grok 4.7 (95.7%, low coverage) could not be measured properly. The connection we used to reach it was repeatedly answered by a different model under load, so those trials were thrown out. Only 70 of its 90 graded trials count, only 4 of its 24 hard-coding trials and 6 of its 10 agentic trials, and one more trial could not be attributed. Treat its score as unmeasured, not as a result.

What it means for our fleet

We will use GPT-6.1 Terra as the OpenAI model for agent work and as a strong second opinion on hard coding tasks. DeepSeek V4.1 Flash stays the default: it costs the same per task here, and the gap between them is within the noise of this suite. Opus 5.5 and Sol 6.1 earn their price only where writing quality matters. Every new model from the frontier and Chinese labs will now go through this same protocol, against the same three workhorses, and we will publish each result here.

Per-track scoreboard

ModelDaily suite (b1)Hard codingOps / format complianceLong-context recallAgentic tool useAll scored trials
gpt-6.1-terra100.0% [90–100] 33/33100.0% [86–100] 24/24100.0% [86–100] 24/24100.0% [70–100] 9/9100.0% [72–100] 10/10100.0% [96–100] 100/100
gpt-6-sol100.0% [90–100] 33/3379.2% [60–91] 19/24100.0% [86–100] 24/24100.0% [70–100] 9/990.0% [60–98] 9/1094.0% [88–97] 94/100
gpt-5.6-terra97.0% [85–99] 32/3383.3% [64–93] 20/24100.0% [86–100] 24/24100.0% [70–100] 9/990.0% [60–98] 9/1094.0% [88–97] 94/100
deepseek-v4.1-flash-101797.0% [85–99] 32/3387.5% [69–96] 21/24100.0% [86–100] 24/24100.0% [70–100] 9/990.0% [60–98] 9/1095.0% [89–98] 95/100
MiniMax-M3.1-Flash-Preview100.0% [90–100] 33/3366.7% [47–82] 16/24100.0% [86–100] 24/24100.0% [70–100] 9/9100.0% [65–100] 7/791.8% [85–96] 89/97
grok-4.797.0% [85–99] 32/3350.0% [15–85] 2/4100.0% [86–100] 24/24100.0% [70–100] 9/9100.0% [61–100] 6/696.1% [89–99] 73/76
claude-sonnet-5-5100.0% [90–100] 33/33100.0% [86–100] 24/2479.2% [60–91] 19/24100.0% [70–100] 9/990.0% [60–98] 9/1094.0% [88–97] 94/100
gpt-6.1-sol100.0% [90–100] 33/33100.0% [86–100] 24/24100.0% [86–100] 24/24100.0% [70–100] 9/9100.0% [72–100] 10/10100.0% [96–100] 100/100
claude-opus-5-5100.0% [90–100] 33/33100.0% [86–100] 24/24100.0% [86–100] 24/24100.0% [70–100] 9/9100.0% [72–100] 10/10100.0% [96–100] 100/100

Pass rate over valid graded trials; brackets are 95% Wilson intervals, then passes/n. Computed from rows.jsonl; invalidated (fallback) and errored trials are excluded.

Task heatmap

Pass fraction per model and task b1 c1_duration c2_chunk c3_merge_intervals c4_wilson c5_rolling_median c6_top_k_words e1_digit_sum e2_exact_line e3_capital r1_needle r2_needle code code_apply_diff code_cron_next code_free_slots code_jsonpath code_lru_ttl code_semver_range code_token_bucket code_toposort_cycle ops ops_cost_total ops_cron_triage ops_format_constraints ops_handoff_yaml ops_incident_json ops_injection_summary ops_terse_status ops_yaml_edit context ctx_200k ctx_500k ctx_60k agentic ag_bugfix ag_config_migrate ag_feature ag_logtriage ag_refactor gpt-6.1-terra gpt-6.1-terra c1_duration: 3/3 gpt-6.1-terra c2_chunk: 3/3 gpt-6.1-terra c3_merge_intervals: 3/3 gpt-6.1-terra c4_wilson: 3/3 gpt-6.1-terra c5_rolling_median: 3/3 gpt-6.1-terra c6_top_k_words: 3/3 gpt-6.1-terra e1_digit_sum: 3/3 gpt-6.1-terra e2_exact_line: 3/3 gpt-6.1-terra e3_capital: 3/3 gpt-6.1-terra r1_needle: 3/3 gpt-6.1-terra r2_needle: 3/3 gpt-6.1-terra code_apply_diff: 3/3 gpt-6.1-terra code_cron_next: 3/3 gpt-6.1-terra code_free_slots: 3/3 gpt-6.1-terra code_jsonpath: 3/3 gpt-6.1-terra code_lru_ttl: 3/3 gpt-6.1-terra code_semver_range: 3/3 gpt-6.1-terra code_token_bucket: 3/3 gpt-6.1-terra code_toposort_cycle: 3/3 gpt-6.1-terra ops_cost_total: 3/3 gpt-6.1-terra ops_cron_triage: 3/3 gpt-6.1-terra ops_format_constraints: 3/3 gpt-6.1-terra ops_handoff_yaml: 3/3 gpt-6.1-terra ops_incident_json: 3/3 gpt-6.1-terra ops_injection_summary: 3/3 gpt-6.1-terra ops_terse_status: 3/3 gpt-6.1-terra ops_yaml_edit: 3/3 gpt-6.1-terra ctx_200k: 3/3 gpt-6.1-terra ctx_500k: 3/3 gpt-6.1-terra ctx_60k: 3/3 gpt-6.1-terra ag_bugfix: 2/2 gpt-6.1-terra ag_config_migrate: 2/2 gpt-6.1-terra ag_feature: 2/2 gpt-6.1-terra ag_logtriage: 2/2 gpt-6.1-terra ag_refactor: 2/2 gpt-6-sol gpt-6-sol c1_duration: 3/3 gpt-6-sol c2_chunk: 3/3 gpt-6-sol c3_merge_intervals: 3/3 gpt-6-sol c4_wilson: 3/3 gpt-6-sol c5_rolling_median: 3/3 gpt-6-sol c6_top_k_words: 3/3 gpt-6-sol e1_digit_sum: 3/3 gpt-6-sol e2_exact_line: 3/3 gpt-6-sol e3_capital: 3/3 gpt-6-sol r1_needle: 3/3 gpt-6-sol r2_needle: 3/3 gpt-6-sol code_apply_diff: 2/3 2 gpt-6-sol code_cron_next: 3/3 gpt-6-sol code_free_slots: 3/3 gpt-6-sol code_jsonpath: 2/3 2 gpt-6-sol code_lru_ttl: 3/3 gpt-6-sol code_semver_range: 2/3 2 gpt-6-sol code_token_bucket: 2/3 2 gpt-6-sol code_toposort_cycle: 2/3 2 gpt-6-sol ops_cost_total: 3/3 gpt-6-sol ops_cron_triage: 3/3 gpt-6-sol ops_format_constraints: 3/3 gpt-6-sol ops_handoff_yaml: 3/3 gpt-6-sol ops_incident_json: 3/3 gpt-6-sol ops_injection_summary: 3/3 gpt-6-sol ops_terse_status: 3/3 gpt-6-sol ops_yaml_edit: 3/3 gpt-6-sol ctx_200k: 3/3 gpt-6-sol ctx_500k: 3/3 gpt-6-sol ctx_60k: 3/3 gpt-6-sol ag_bugfix: 1/2 1 gpt-6-sol ag_config_migrate: 2/2 gpt-6-sol ag_feature: 2/2 gpt-6-sol ag_logtriage: 2/2 gpt-6-sol ag_refactor: 2/2 gpt-5.6-terra gpt-5.6-terra c1_duration: 3/3 gpt-5.6-terra c2_chunk: 3/3 gpt-5.6-terra c3_merge_intervals: 3/3 gpt-5.6-terra c4_wilson: 3/3 gpt-5.6-terra c5_rolling_median: 3/3 gpt-5.6-terra c6_top_k_words: 3/3 gpt-5.6-terra e1_digit_sum: 3/3 gpt-5.6-terra e2_exact_line: 3/3 gpt-5.6-terra e3_capital: 3/3 gpt-5.6-terra r1_needle: 2/3 2 gpt-5.6-terra r2_needle: 3/3 gpt-5.6-terra code_apply_diff: 2/3 2 gpt-5.6-terra code_cron_next: 1/3 1 gpt-5.6-terra code_free_slots: 2/3 2 gpt-5.6-terra code_jsonpath: 3/3 gpt-5.6-terra code_lru_ttl: 3/3 gpt-5.6-terra code_semver_range: 3/3 gpt-5.6-terra code_token_bucket: 3/3 gpt-5.6-terra code_toposort_cycle: 3/3 gpt-5.6-terra ops_cost_total: 3/3 gpt-5.6-terra ops_cron_triage: 3/3 gpt-5.6-terra ops_format_constraints: 3/3 gpt-5.6-terra ops_handoff_yaml: 3/3 gpt-5.6-terra ops_incident_json: 3/3 gpt-5.6-terra ops_injection_summary: 3/3 gpt-5.6-terra ops_terse_status: 3/3 gpt-5.6-terra ops_yaml_edit: 3/3 gpt-5.6-terra ctx_200k: 3/3 gpt-5.6-terra ctx_500k: 3/3 gpt-5.6-terra ctx_60k: 3/3 gpt-5.6-terra ag_bugfix: 2/2 gpt-5.6-terra ag_config_migrate: 2/2 gpt-5.6-terra ag_feature: 1/2 1 gpt-5.6-terra ag_logtriage: 2/2 gpt-5.6-terra ag_refactor: 2/2 deepseek-v4.1-flash-1017 deepseek-v4.1-flash-1017 c1_duration: 2/3 2 deepseek-v4.1-flash-1017 c2_chunk: 3/3 deepseek-v4.1-flash-1017 c3_merge_intervals: 3/3 deepseek-v4.1-flash-1017 c4_wilson: 3/3 deepseek-v4.1-flash-1017 c5_rolling_median: 3/3 deepseek-v4.1-flash-1017 c6_top_k_words: 3/3 deepseek-v4.1-flash-1017 e1_digit_sum: 3/3 deepseek-v4.1-flash-1017 e2_exact_line: 3/3 deepseek-v4.1-flash-1017 e3_capital: 3/3 deepseek-v4.1-flash-1017 r1_needle: 3/3 deepseek-v4.1-flash-1017 r2_needle: 3/3 deepseek-v4.1-flash-1017 code_apply_diff: 2/3 2 deepseek-v4.1-flash-1017 code_cron_next: 3/3 deepseek-v4.1-flash-1017 code_free_slots: 3/3 deepseek-v4.1-flash-1017 code_jsonpath: 3/3 deepseek-v4.1-flash-1017 code_lru_ttl: 2/3 2 deepseek-v4.1-flash-1017 code_semver_range: 2/3 2 deepseek-v4.1-flash-1017 code_token_bucket: 3/3 deepseek-v4.1-flash-1017 code_toposort_cycle: 3/3 deepseek-v4.1-flash-1017 ops_cost_total: 3/3 deepseek-v4.1-flash-1017 ops_cron_triage: 3/3 deepseek-v4.1-flash-1017 ops_format_constraints: 3/3 deepseek-v4.1-flash-1017 ops_handoff_yaml: 3/3 deepseek-v4.1-flash-1017 ops_incident_json: 3/3 deepseek-v4.1-flash-1017 ops_injection_summary: 3/3 deepseek-v4.1-flash-1017 ops_terse_status: 3/3 deepseek-v4.1-flash-1017 ops_yaml_edit: 3/3 deepseek-v4.1-flash-1017 ctx_200k: 3/3 deepseek-v4.1-flash-1017 ctx_500k: 3/3 deepseek-v4.1-flash-1017 ctx_60k: 3/3 deepseek-v4.1-flash-1017 ag_bugfix: 2/2 deepseek-v4.1-flash-1017 ag_config_migrate: 2/2 deepseek-v4.1-flash-1017 ag_feature: 2/2 deepseek-v4.1-flash-1017 ag_logtriage: 2/2 deepseek-v4.1-flash-1017 ag_refactor: 1/2 1 MiniMax-M3.1-Flash-Preview MiniMax-M3.1-Flash-Preview c1_duration: 3/3 MiniMax-M3.1-Flash-Preview c2_chunk: 3/3 MiniMax-M3.1-Flash-Preview c3_merge_intervals: 3/3 MiniMax-M3.1-Flash-Preview c4_wilson: 3/3 MiniMax-M3.1-Flash-Preview c5_rolling_median: 3/3 MiniMax-M3.1-Flash-Preview c6_top_k_words: 3/3 MiniMax-M3.1-Flash-Preview e1_digit_sum: 3/3 MiniMax-M3.1-Flash-Preview e2_exact_line: 3/3 MiniMax-M3.1-Flash-Preview e3_capital: 3/3 MiniMax-M3.1-Flash-Preview r1_needle: 3/3 MiniMax-M3.1-Flash-Preview r2_needle: 3/3 MiniMax-M3.1-Flash-Preview code_apply_diff: 3/3 MiniMax-M3.1-Flash-Preview code_cron_next: 1/3 1 MiniMax-M3.1-Flash-Preview code_free_slots: 2/3 2 MiniMax-M3.1-Flash-Preview code_jsonpath: 1/3 1 MiniMax-M3.1-Flash-Preview code_lru_ttl: 3/3 MiniMax-M3.1-Flash-Preview code_semver_range: 1/3 1 MiniMax-M3.1-Flash-Preview code_token_bucket: 2/3 2 MiniMax-M3.1-Flash-Preview code_toposort_cycle: 3/3 MiniMax-M3.1-Flash-Preview ops_cost_total: 3/3 MiniMax-M3.1-Flash-Preview ops_cron_triage: 3/3 MiniMax-M3.1-Flash-Preview ops_format_constraints: 3/3 MiniMax-M3.1-Flash-Preview ops_handoff_yaml: 3/3 MiniMax-M3.1-Flash-Preview ops_incident_json: 3/3 MiniMax-M3.1-Flash-Preview ops_injection_summary: 3/3 MiniMax-M3.1-Flash-Preview ops_terse_status: 3/3 MiniMax-M3.1-Flash-Preview ops_yaml_edit: 3/3 MiniMax-M3.1-Flash-Preview ctx_200k: 3/3 MiniMax-M3.1-Flash-Preview ctx_500k: 3/3 MiniMax-M3.1-Flash-Preview ctx_60k: 3/3 MiniMax-M3.1-Flash-Preview ag_bugfix: 2/2 MiniMax-M3.1-Flash-Preview ag_config_migrate: 2/2 MiniMax-M3.1-Flash-Preview ag_feature: 1/1 MiniMax-M3.1-Flash-Preview ag_logtriage: 2/2 MiniMax-M3.1-Flash-Preview ag_refactor: no valid trials grok-4.7 grok-4.7 c1_duration: 3/3 grok-4.7 c2_chunk: 3/3 grok-4.7 c3_merge_intervals: 3/3 grok-4.7 c4_wilson: 3/3 grok-4.7 c5_rolling_median: 3/3 grok-4.7 c6_top_k_words: 3/3 grok-4.7 e1_digit_sum: 3/3 grok-4.7 e2_exact_line: 2/3 2 grok-4.7 e3_capital: 3/3 grok-4.7 r1_needle: 3/3 grok-4.7 r2_needle: 3/3 grok-4.7 code_apply_diff: no valid trials grok-4.7 code_cron_next: no valid trials grok-4.7 code_free_slots: 0/2 0 grok-4.7 code_jsonpath: no valid trials grok-4.7 code_lru_ttl: no valid trials grok-4.7 code_semver_range: no valid trials grok-4.7 code_token_bucket: 2/2 grok-4.7 code_toposort_cycle: no valid trials grok-4.7 ops_cost_total: 3/3 grok-4.7 ops_cron_triage: 3/3 grok-4.7 ops_format_constraints: 3/3 grok-4.7 ops_handoff_yaml: 3/3 grok-4.7 ops_incident_json: 3/3 grok-4.7 ops_injection_summary: 3/3 grok-4.7 ops_terse_status: 3/3 grok-4.7 ops_yaml_edit: 3/3 grok-4.7 ctx_200k: 3/3 grok-4.7 ctx_500k: 3/3 grok-4.7 ctx_60k: 3/3 grok-4.7 ag_bugfix: 1/1 grok-4.7 ag_config_migrate: 2/2 grok-4.7 ag_feature: no valid trials grok-4.7 ag_logtriage: 2/2 grok-4.7 ag_refactor: 1/1 claude-sonnet-5-5 claude-sonnet-5-5 c1_duration: 3/3 claude-sonnet-5-5 c2_chunk: 3/3 claude-sonnet-5-5 c3_merge_intervals: 3/3 claude-sonnet-5-5 c4_wilson: 3/3 claude-sonnet-5-5 c5_rolling_median: 3/3 claude-sonnet-5-5 c6_top_k_words: 3/3 claude-sonnet-5-5 e1_digit_sum: 3/3 claude-sonnet-5-5 e2_exact_line: 3/3 claude-sonnet-5-5 e3_capital: 3/3 claude-sonnet-5-5 r1_needle: 3/3 claude-sonnet-5-5 r2_needle: 3/3 claude-sonnet-5-5 code_apply_diff: 3/3 claude-sonnet-5-5 code_cron_next: 3/3 claude-sonnet-5-5 code_free_slots: 3/3 claude-sonnet-5-5 code_jsonpath: 3/3 claude-sonnet-5-5 code_lru_ttl: 3/3 claude-sonnet-5-5 code_semver_range: 3/3 claude-sonnet-5-5 code_token_bucket: 3/3 claude-sonnet-5-5 code_toposort_cycle: 3/3 claude-sonnet-5-5 ops_cost_total: 0/3 0 claude-sonnet-5-5 ops_cron_triage: 3/3 claude-sonnet-5-5 ops_format_constraints: 1/3 1 claude-sonnet-5-5 ops_handoff_yaml: 3/3 claude-sonnet-5-5 ops_incident_json: 3/3 claude-sonnet-5-5 ops_injection_summary: 3/3 claude-sonnet-5-5 ops_terse_status: 3/3 claude-sonnet-5-5 ops_yaml_edit: 3/3 claude-sonnet-5-5 ctx_200k: 3/3 claude-sonnet-5-5 ctx_500k: 3/3 claude-sonnet-5-5 ctx_60k: 3/3 claude-sonnet-5-5 ag_bugfix: 2/2 claude-sonnet-5-5 ag_config_migrate: 2/2 claude-sonnet-5-5 ag_feature: 2/2 claude-sonnet-5-5 ag_logtriage: 1/2 1 claude-sonnet-5-5 ag_refactor: 2/2 gpt-6.1-sol gpt-6.1-sol c1_duration: 3/3 gpt-6.1-sol c2_chunk: 3/3 gpt-6.1-sol c3_merge_intervals: 3/3 gpt-6.1-sol c4_wilson: 3/3 gpt-6.1-sol c5_rolling_median: 3/3 gpt-6.1-sol c6_top_k_words: 3/3 gpt-6.1-sol e1_digit_sum: 3/3 gpt-6.1-sol e2_exact_line: 3/3 gpt-6.1-sol e3_capital: 3/3 gpt-6.1-sol r1_needle: 3/3 gpt-6.1-sol r2_needle: 3/3 gpt-6.1-sol code_apply_diff: 3/3 gpt-6.1-sol code_cron_next: 3/3 gpt-6.1-sol code_free_slots: 3/3 gpt-6.1-sol code_jsonpath: 3/3 gpt-6.1-sol code_lru_ttl: 3/3 gpt-6.1-sol code_semver_range: 3/3 gpt-6.1-sol code_token_bucket: 3/3 gpt-6.1-sol code_toposort_cycle: 3/3 gpt-6.1-sol ops_cost_total: 3/3 gpt-6.1-sol ops_cron_triage: 3/3 gpt-6.1-sol ops_format_constraints: 3/3 gpt-6.1-sol ops_handoff_yaml: 3/3 gpt-6.1-sol ops_incident_json: 3/3 gpt-6.1-sol ops_injection_summary: 3/3 gpt-6.1-sol ops_terse_status: 3/3 gpt-6.1-sol ops_yaml_edit: 3/3 gpt-6.1-sol ctx_200k: 3/3 gpt-6.1-sol ctx_500k: 3/3 gpt-6.1-sol ctx_60k: 3/3 gpt-6.1-sol ag_bugfix: 2/2 gpt-6.1-sol ag_config_migrate: 2/2 gpt-6.1-sol ag_feature: 2/2 gpt-6.1-sol ag_logtriage: 2/2 gpt-6.1-sol ag_refactor: 2/2 claude-opus-5-5 claude-opus-5-5 c1_duration: 3/3 claude-opus-5-5 c2_chunk: 3/3 claude-opus-5-5 c3_merge_intervals: 3/3 claude-opus-5-5 c4_wilson: 3/3 claude-opus-5-5 c5_rolling_median: 3/3 claude-opus-5-5 c6_top_k_words: 3/3 claude-opus-5-5 e1_digit_sum: 3/3 claude-opus-5-5 e2_exact_line: 3/3 claude-opus-5-5 e3_capital: 3/3 claude-opus-5-5 r1_needle: 3/3 claude-opus-5-5 r2_needle: 3/3 claude-opus-5-5 code_apply_diff: 3/3 claude-opus-5-5 code_cron_next: 3/3 claude-opus-5-5 code_free_slots: 3/3 claude-opus-5-5 code_jsonpath: 3/3 claude-opus-5-5 code_lru_ttl: 3/3 claude-opus-5-5 code_semver_range: 3/3 claude-opus-5-5 code_token_bucket: 3/3 claude-opus-5-5 code_toposort_cycle: 3/3 claude-opus-5-5 ops_cost_total: 3/3 claude-opus-5-5 ops_cron_triage: 3/3 claude-opus-5-5 ops_format_constraints: 3/3 claude-opus-5-5 ops_handoff_yaml: 3/3 claude-opus-5-5 ops_incident_json: 3/3 claude-opus-5-5 ops_injection_summary: 3/3 claude-opus-5-5 ops_terse_status: 3/3 claude-opus-5-5 ops_yaml_edit: 3/3 claude-opus-5-5 ctx_200k: 3/3 claude-opus-5-5 ctx_500k: 3/3 claude-opus-5-5 ctx_60k: 3/3 claude-opus-5-5 ag_bugfix: 2/2 claude-opus-5-5 ag_config_migrate: 2/2 claude-opus-5-5 ag_feature: 2/2 claude-opus-5-5 ag_logtriage: 2/2 claude-opus-5-5 ag_refactor: 2/2
Pass fraction per model × task (green = every valid trial passed; the number is passes when below 100%; grey = no valid trial). Hover a cell for k/n.

What the run cost

ModelPrice in / out / cache-read per 1MTrials billedInput tokensOutput tokensRun costPassed trialsCost per passed trial
gpt-6.1-terra$1 / $5 / $0.05104589.8k37.2k$0.779100$0.008
gpt-6-sol$2 / $10 / $0.2104615.3k63.5k$1.9894$0.021
gpt-5.6-terra$2 / $12 / $0.2104784.0k82.2k$2.6394$0.028
deepseek-v4.1-flash-1017$0.3 / $1.2 / $0.006104481.0k259.5k$0.46095$0.005
MiniMax-M3.1-Flash-Preview$0.15 / $0.6 / $0.015101658.5k446.2k$0.40889$0.005
grok-4.7$2 / $6 / $280752.5k211.7k$5.2473$0.072
claude-sonnet-5-5$2 / $10 / $0.110446256.8k$0.64594$0.007
gpt-6.1-sol$2 / $10 / $0.1104768.8k58.6k$2.17100$0.022
claude-opus-5-5$4 / $20 / $0.210453499.5k$2.25100$0.023
Cost per passed trial versus pass rate $0.001 $0.01 $0.1 80% 90% 100% $ per passed trial, log scale (lower is cheaper) gpt-6.1-terra gpt-6.1-sol claude-opus-5-5 grok-4.7 deepseek-v4.1-flash-1017 gpt-6-sol gpt-5.6-terra claude-sonnet-5-5 MiniMax-M3.1-Flash-Preview
Cost per passed trial (all of a model's billed task tokens ÷ its passes) against pass rate over every scored trial. Up and to the left is better.

Every task row with usage is billed, including errored and invalidated trials and writing generations (the money was spent); judge calls are not. Cache reads are billed at the cache-read rate; where a provider reports cache larger than input, input is taken as the uncached remainder. Reasoning tokens are assumed inside output.

Token efficiency

ModelScored trialsMedian API callsMedian inputMedian cache readMedian outputMedian reasoning
gpt-6.1-terra1001309129441450
gpt-6-sol1001604294423354
gpt-5.6-terra10012934256019865
deepseek-v4.1-flash-101710017303584660252
MiniMax-M3.1-Flash-Preview97121335849890
grok-4.77612894608863720
claude-sonnet-5-51001433771890
gpt-6.1-sol10012564230416123
claude-opus-5-51001423622500

Medians per scored trial (one trial = one task session, all its API calls). Reasoning is as reported by the provider; 0 can mean hidden rather than absent.

Latency

ModelAll scoredDaily suite (b1)Hard codingOps / format complianceLong-context recallAgentic tool use
gpt-6.1-terra28.0 / 41.8 s25.2 / 31.4 s33.2 / 41.8 s24.2 / 35.4 s22.8 / 27.1 s41.3 / 66.7 s
gpt-6-sol28.7 / 58.9 s25.3 / 34.1 s42.1 / 59.4 s20.6 / 28.3 s17.5 / 30.3 s51.1 / 85.5 s
gpt-5.6-terra33.5 / 87.7 s25.0 / 55.1 s52.4 / 99.2 s28.0 / 38.1 s29.0 / 36.4 s68.1 / 101.7 s
deepseek-v4.1-flash-101731.5 / 82.7 s22.5 / 46.4 s60.4 / 105.3 s23.4 / 36.6 s23.1 / 34.2 s65.1 / 145.2 s
MiniMax-M3.1-Flash-Preview37.3 / 152.6 s30.8 / 55.5 s114.7 / 176.7 s28.1 / 40.6 s17.0 / 32.1 s219.9 / 260.6 s
grok-4.730.6 / 156.8 s29.5 / 61.9 s169.7 / 173.6 s29.6 / 52.1 s35.6 / 49.9 s167.0 / 313.8 s
claude-sonnet-5-523.3 / 44.2 s19.6 / 28.0 s24.7 / 35.3 s23.6 / 43.7 s25.3 / 33.9 s46.5 / 79.6 s
gpt-6.1-sol25.2 / 78.5 s24.3 / 33.6 s39.2 / 123.4 s16.1 / 26.4 s13.6 / 24.2 s77.2 / 113.3 s
claude-opus-5-523.3 / 55.7 s15.7 / 38.3 s30.1 / 46.4 s19.5 / 30.1 s18.7 / 25.5 s52.3 / 171.0 s

p50 / p90 wall-clock seconds per scored trial through the Hermes CLI (lower nearest-rank percentile).

How models failed

ModelEmpty answerFormatWrong logicTimeout/errorFallback-invalidTotal
gpt-6.1-terra000000
gpt-6-sol400206
gpt-5.6-terra113106
deepseek-v4.1-flash-1017022105
MiniMax-M3.1-Flash-Preview403108
grok-4.7201003
claude-sonnet-5-5050106
gpt-6.1-sol000000
claude-opus-5-5000000

Every non-passing or excluded trial, bucketed by heuristics on the grader's detail, err and status: fallback-invalid = served by another model (valid=false, any outcome); timeout/error = infrastructure error or the trial carried a transport/timeout error; empty answer = no deliverable (empty reply, iteration cap, a status note instead of the answer); format = output-shape rule broken (word limits, bare-number, JSON/YAML, syntax); wrong logic = everything else (tests or exact match failed).

Writing: pairwise matrix

Row vs columngpt-6.1-terragpt-6-solgpt-5.6-terradeepseek-v4.1-flash-1017MiniMax-M3.1-Flash-Previewgrok-4.7claude-sonnet-5-5gpt-6.1-solclaude-opus-5-5
gpt-6.1-terra–4-2-25-0-35-1-26-1-15-0-34-2-23-3-23-4-1
gpt-6-sol2-4-2––––––––
gpt-5.6-terra0-5-3––––––––
deepseek-v4.1-flash-10171-5-2––––––––
MiniMax-M3.1-Flash-Preview1-6-1––––––––
grok-4.70-5-3––––––––
claude-sonnet-5-52-4-2––––––––
gpt-6.1-sol3-3-2––––––––
claude-opus-5-54-3-1––––––––

Row model's wins-losses-ties against the column model; colour is the row's win share (ties count half). A win requires the judge to pick the same response in both A/B orders; a split verdict is a tie. Pairs never judged against each other show –. Incomplete decisions (an A/B order missing or judge-invalid): 2.

Methodology & reproducibility

  • Harness commit: 96c0518.
  • Run: gpt-6.1-terra-20261027; 909 task rows and 126 judge rows in rows.jsonl (sha256 cfb15463a483ac09).
  • Tracks: b1: 11 task(s) × 3 trial(s); code: 8 task(s) × 3 trial(s); ops: 8 task(s) × 3 trial(s); context: 3 task(s) × 3 trial(s); agentic: 5 task(s) × 2 trial(s); writing_gen: 4 task(s) × 1 trial(s).
  • n per model × task cell: 1–3 valid trials (cells with fewer than the scheduled trials lost them to errors or invalidation).
  • Scored trial: status pass/fail and not marked invalid. Pass rates use 95% Wilson intervals; percentiles use the lower nearest-rank convention.
  • Writing judges: MiniMax-M3.1-Flash-Preview@minimax (8 votes), claude-sonnet-5-5@anthropic (48 votes), deepseek-v4.1-flash-1017@surplus (16 votes), grok-4.7@xai-oauth (54 votes). A win requires the judge to pick the same response in both A/B orders; a split verdict is a tie. Responses are blind (labelled Response 1/2), each judge sees both A/B orders.
Model @ providerTask rowsScoredPassedErroredInvalid (fallback)PeekedScored, validity unknown
gpt-6.1-terra@openai-codex1041001000000
gpt-6-sol@openai-codex104100940000
gpt-5.6-terra@openai-codex104100940000
deepseek-v4.1-flash-1017@surplus104100950000
MiniMax-M3.1-Flash-Preview@minimax10197890000
grok-4.7@xai-oauth8076730000
claude-sonnet-5-5@anthropic104100940000
gpt-6.1-sol@openai-codex1041001000000
claude-opus-5-5@anthropic1041001000000

Reproduce this page: grading/hb_eval_v3_rows.py <hb-eval tree> <run> (the rows report v3 ranks), then grading/hb_eval_article.py --report report.json --dossier dossier.md --analysis analysis.md --prices prices.json --rows rows.v3.jsonl --harness-commit 96c0518 --out web/articles/<slug>.html.

Method

Run gpt-6.1-terra-20261027, report generated 2026-10-28T06:42:34Z. Subject model: gpt-6.1-terra@openai-codex. Tracks scored: Daily suite (b1), Hard coding, Ops / format compliance, Long-context recall, Agentic tool use.

  • Objective tracks (b1, code, ops, context) are graded by hidden unit tests, Python checkers or exact string match; valid trials per task in this report: 2/3. The objective score pools every valid trial; the interval is a 95% Wilson interval.
  • Agentic tasks run multi-turn Hermes tool use in a real workspace; hidden tests run after the model finishes. Valid trials per task in this report: 1/2. Partial is the mean fraction of hidden tests passed.
  • Writing is judged blind and pairwise against the subject's output by up to two judges from labs other than either contestant's, each in both A/B orders; responses are labelled Response 1/2 and model names never reach a judge. A win requires the judge to pick the same response in both A/B orders; a split verdict is a tie. 126 judge verdict(s) recorded.
  • Invalidation. A trial where any call was served by a model other than the one requested is excluded (fallback); an agentic trial whose messages or tool calls reached for the answer key or another agent is excluded (escape). Errored trials are excluded and counted.
  • Cost is an estimate: mean tokens per non-agentic task (all API calls in the task's session) × price per 1M tokens (cache reads at the cached rate), × 1,000. Agentic tasks are not included. Shown as n/a where no price was supplied.
  • Latency is wall-clock seconds per non-agentic task through the Hermes CLI, including CLI overhead.
Model @ providerObjective nAgentic nInvalid: fallbackInvalid: escapeErrorsUnknown attributionCoverage below 90%
gpt-6.1-terra@openai-codex90100060none
gpt-6-sol@openai-codex90100040none
gpt-5.6-terra@openai-codex90101050none
deepseek-v4.1-flash-1017@surplus90100060none
MiniMax-M3.1-Flash-Preview@minimax9070043agentic tool use 7/10
grok-4.7@xai-oauth706390131agentic tool use 6/10, hard coding 4/24
claude-sonnet-5-5@anthropic90100030none
gpt-6.1-sol@openai-codex901000270none
claude-opus-5-5@anthropic90100070none

Scored under report v3: only trials whose serving model is verified count; one canonical trial per model, task and trial number (retries and duplicates are counted, never ranked); a track with under 90% of its planned trials eligible is marked ⚑ and kept in the table. eligible/planned < 90% per track is flagged insufficient_coverage (flagged, not dropped; objective_excluding_insufficient shows the effect)

Sources

Scores are from Hermes Benchmarks' own hb-eval harness run through the Hermes agent CLI; they measure these models as the fleet uses them, not vendor-reported numbers. Small task counts carry wide intervals — read the CIs.