hermes - 💡(How to fix) Fix Copilot gpt-5.5 xhigh reasoning is clamped to high despite live catalog support

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…

GitHub Copilot's live model catalog now advertises xhigh as a supported reasoning effort for gpt-5.5, but Hermes appears to clamp xhigh down to high before sending the request.

This makes agent.reasoning_effort: xhigh ineffective for Copilot gpt-5.5 even though the provider reports support for it.

Root Cause

  • #18871 — sibling reasoning-config propagation issue, but for background review agents falling back to medium.
  • #21256 / #31589 — related per-model/provider reasoning configuration requests, but this issue is about a supported effort being downgraded after config resolution.
  • #17167 — similar xhighhigh mapping for Kimi, where the provider did not accept native xhigh. The Copilot gpt-5.5 case differs because the live catalog advertises xhigh support.

Fix Action

Workaround

No config-only workaround is apparent. The clamp happens after agent.reasoning_effort / model reasoning config has already been read.

Code Example

supports.reasoning_effort = ["none", "low", "medium", "high", "xhigh"]

---

if requested_effort == "xhigh" and "high" in supported_efforts:
    requested_effort = "high"

---

if requested_effort == "xhigh" and "xhigh" not in supported_efforts and "high" in supported_efforts:
    requested_effort = "high"

---

if (
    requested_effort == "xhigh"
    and "xhigh" not in supported_efforts
    and "high" in supported_efforts
):
    requested_effort = "high"

---

supports = ["none", "low", "medium", "high", "xhigh"]
requested = "xhigh"
expected  = {"effort": "xhigh"}

supports = ["low", "medium", "high"]
requested = "xhigh"
expected  = {"effort": "high"}
RAW_BUFFERClick to expand / collapse

Summary

GitHub Copilot's live model catalog now advertises xhigh as a supported reasoning effort for gpt-5.5, but Hermes appears to clamp xhigh down to high before sending the request.

This makes agent.reasoning_effort: xhigh ineffective for Copilot gpt-5.5 even though the provider reports support for it.

Repro

  1. Configure a Copilot-backed session with gpt-5.5 and agent.reasoning_effort: xhigh.
  2. Inspect the live Copilot model catalog for gpt-5.5.

The catalog reports:

supports.reasoning_effort = ["none", "low", "medium", "high", "xhigh"]
  1. Inspect the reasoning payload builder for GitHub Models routes:
if requested_effort == "xhigh" and "high" in supported_efforts:
    requested_effort = "high"

Expected

If the requested effort is xhigh and the model's supported efforts include xhigh, Hermes should send xhigh.

Fallback from xhigh to high should only happen when xhigh is not supported but high is supported.

Actual

Hermes downgrades xhigh to high whenever high is present in the supported effort list, even if xhigh is also present.

Suspected cause

AIAgent._github_models_reasoning_extra_body() treats xhigh as a Hermes-internal alias that should map to high for GitHub-model routes. That was likely correct for providers/models that only accepted low/medium/high, but it is no longer correct for Copilot gpt-5.5 now that the live catalog advertises native xhigh support.

A narrower guard should preserve native xhigh when present:

if requested_effort == "xhigh" and "xhigh" not in supported_efforts and "high" in supported_efforts:
    requested_effort = "high"

Suggested fix

Preserve native xhigh when the model advertises it, and only fall back to high when xhigh is missing:

if (
    requested_effort == "xhigh"
    and "xhigh" not in supported_efforts
    and "high" in supported_efforts
):
    requested_effort = "high"

Suggested regression coverage:

supports = ["none", "low", "medium", "high", "xhigh"]
requested = "xhigh"
expected  = {"effort": "xhigh"}

supports = ["low", "medium", "high"]
requested = "xhigh"
expected  = {"effort": "high"}

This keeps the compatibility alias for models that only support high, while avoiding the Copilot gpt-5.5 downgrade.

Workaround

No config-only workaround is apparent. The clamp happens after agent.reasoning_effort / model reasoning config has already been read.

Related

  • #18871 — sibling reasoning-config propagation issue, but for background review agents falling back to medium.
  • #21256 / #31589 — related per-model/provider reasoning configuration requests, but this issue is about a supported effort being downgraded after config resolution.
  • #17167 — similar xhighhigh mapping for Kimi, where the provider did not accept native xhigh. The Copilot gpt-5.5 case differs because the live catalog advertises xhigh support.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING