anthropics / anthropics/claude-code
[BUG] Desktop macOS 1.49585.0: effort slider is inert — all models stuck at Max, every session
- 主要言語
- Python
- スター
- 145k
- フォーク
- 23.1k
- PR マージ指標
- PR 指標を取得中
説明
## Summary
On the macOS desktop app (Code tab), the effort/reasoning slider in the model picker at the bottom of the window is completely non-responsive. Every model is stuck at **Max** effort and cannot be changed from the UI. This affects all sessions, both pre-existing and newly created.
## Environment
- Claude desktop app: **1.49585.0** (macOS)
- Embedded CLI: **2.1.260**
- macOS: **27.0** (build 26A5425a)
- Affected models: all tested — Haiku 4.5, Sonnet 4.6, Opus 5
## Symptoms
- The model picker opens normally.
- The `?` affordance renders its hint text correctly, so the popover itself is alive.
- The effort slider does not respond to interaction — it cannot be dragged or clicked to a different level.
- Effort stays pinned at **Max** for every model.
- Reproduces in every chat session, old and new.
- `/model ` via slash command still switches models successfully. Model selection works; it is specifically the effort control that is inert.
## The bug is confined to the UI — `/effort` still works
Running `/effort medium` succeeded and immediately changed the effort actually in use. The session transcript (`~/.claude/projects//.jsonl`) carries an `effort` field per assistant turn, and the split across a single session is unambiguous:
| effort recorded | turns | when |
| --- | --- | --- |
| `max` | 50 | every turn before `/effort medium` |
| `medium` | 7 | every turn after `/effort medium` |
Two things follow:
1. The effort subsystem itself is healthy — the slash-command path sets effort correctly.
2. The defect is in the picker UI: the slider renders but never commits a value.
This also independently corroborates the "stuck at Max" symptom — 50 consecutive turns were pinned at `max` with no way to change them from the UI, matching what the inert slider displayed.
(Noting for completeness that this field is the client-recorded value; #88842 documents a case where the transcript recorded a different level than was actually sent. It is strong evidence, not proof of the wire value.)
## Steps to reproduce
1. Open the Claude desktop app on macOS (Code tab).
2. Click the model/effort selector at the bottom of the window.
3. Attempt to move the effort slider to any level other than Max.
4. Slider does not move; effort remains Max.
5. Repeat in a brand-new chat session — same result.
## What I ruled out
No effort override is present in configuration:
- `~/.claude/settings.json` — no `effortLevel` key
- project `.claude/settings.json` and `.claude/settings.local.json` — absent
- `/Library/Application Support/ClaudeCode/managed-settings.json` — absent
- `~/.claude.json` — a recursive search over the whole file finds no `effortLevel` at any depth
So this does not look like the known "settings override disconnects the picker" pattern reported in #91184.
## Possibly relevant
`~/.claude.json` contains launch-effort unpin flags, but only for older models:
```json
"unpinOpus47LaunchEffort": true,
"unpinOpus48LaunchEffort": true,
"unpinFable5LaunchEffort": true
```
There is no corresponding key for Opus 5, Sonnet 5, Fable 5.1, or Haiku 4.5. If newer models have their effort pinned at launch, and the unpin path is what writes these flags, then a broken or missing unpin handler for the current model generation would explain a slider that renders but never commits a change — and would explain why the pin resolves to Max across every model and every session.
## Workaround
`/effort ` sets effort correctly, but only for the current session — it has to be re-run in every new chat, since the UI control that would make it stick is the thing that is broken.
## Expected behavior
The effort slider should allow selecting any supported effort level for the active model, and the selection should persist for the session.
コントリビューションガイド
このリポジトリのコントリビューションガイドは索引されていません
調査の方向性
Start by reproducing in the macOS desktop app Code tab, comparing the inert model picker effort slider with the working `/effort medium` slash command. Check the UI path that commits slider changes and any launch-effort pin/unpin state, using the mentioned settings files and session JSONL as evidence. Done means the slider can select a non-Max effort for supported models and the chosen effort persists for the session.
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- macos
- 領域
- desktop, frontend
- issue の種類
- バグ
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 活発さ
- 活発
- 明瞭さ
- 明確に書かれている
- 初心者へのやさしさ
- 52/100