Reasoning effort "xhigh" silently downgraded to "medium" (not "max") on models without xhigh (e.g. claude-opus-4.6, claude-sonnet-4.6)
- 主要言語
- Shell
- スター
- 11.2k
- フォーク
- 1.9k
- 平均マージ
- 14時間 16分
- マージ済み PR(30日)
- 6
説明
## Summary
When a reasoning effort of `xhigh` is configured (persisted `effortLevel` in settings, or selected via `/model`) and the active model does **not** advertise `xhigh` in its CAPI capabilities, the CLI silently falls back to the model **default (`medium`)** instead of clamping to the model's highest supported level (`max`). The result is the opposite of intent: asking for *maximum* reasoning yields one of the *lower* levels — and it happens silently.
## Affected models
CAPI `/models` advertises a per-model `reasoning_effort` list. As observed on CLI 1.0.62 (enterprise endpoint):
| model | advertised efforts | supports `xhigh`? |
|---|---|---|
| `claude-opus-4.6` | low, medium, high, **max** | ❌ (ceiling = `max`) |
| `claude-sonnet-4.6` | low, medium, high, **max** | ❌ (ceiling = `max`) |
| `claude-opus-4.7` | low, medium, high, **xhigh**, max | ✅ |
| `claude-opus-4.8` | low, medium, high, **xhigh**, max | ✅ |
## Steps to reproduce
1. Configure reasoning effort `xhigh` (e.g. `effortLevel: "xhigh"` in `settings.json`, or via `/model`).
2. Run a request using `claude-opus-4.6` (or `claude-sonnet-4.6`).
3. Inspect the reasoning effort actually applied to the model call.
## Actual
The applied reasoning effort is `medium` (the model default). Verified across a large number of sessions: `xhigh`-configured requests on `claude-opus-4.6` are applied as `medium` — never `xhigh`, and never the model's real ceiling `max`. (The CLI's model-resolution still reflects the configured `xhigh`; only the effective model call is downgraded, which makes this hard to notice.)
## Expected
One of:
- **Clamp** an unsupported-but-higher request to the model's highest supported level (`xhigh` → `max`), or
- **Warn** that `xhigh` is unsupported for the selected model and report what was used instead.
Silently substituting the **default** (`medium`) for an explicit "maximum" request is surprising.
## Impact
- Users/automation setting `xhigh` for "maximum reasoning" actually get `medium` on these models.
- Fixed-`xhigh` model comparisons (e.g. evals) are invalid for models lacking `xhigh` — they run at a *lower* effort than peers, not an equal or higher one.
- The downgrade is silent, so it's easy to ship results under a false assumption.
## Open question
Is the fallback-to-default intentional, or should an unsupported level clamp to the nearest supported ceiling? Filing to start that discussion rather than assuming it's a bug.
## Environment
- Copilot CLI 1.0.62, Windows, enterprise plan.
コントリビューションガイド
調査の方向性
Start at the `/model` entry point and the persisted `effortLevel` setting, then trace how the CAPI `/models` reasoning_effort list is used before the effective model call. Reproduce with a model that advertises `max` but not `xhigh`; done means the behavior follows an agreed clamp or warning policy and is covered by a regression test.
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- shell
- 領域
- cli
- issue の種類
- バグ
- 難易度
- 3/5
- 見積もり時間
- 1〜2日
- 活発さ
- 静か
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 55/100