Settings migration silently removes user's explicit model pin without notification or backup
Resolved 💬 3 comments Opened May 18, 2026 by gdb-mtx Closed Jun 17, 2026
What happened
My ~/.claude/settings.json had an explicit model pin: "model": "claude-opus-4-6[1m]". On 2026-05-18, Claude Code silently removed this field during startup via the unpinOpus47LaunchEffort migration. No notification was shown, no backup was created, and the model picker silently switched to Opus 4.7.
Expected behavior
- A user's explicit
modelsetting in their own settings file should not be silently removed by a migration - At minimum: show a notification ("Your model pin was changed from X to Y"), create a
.bakfile, or prompt the user to confirm
Steps to reproduce
- Set
"model": "claude-opus-4-6[1m]"in~/.claude/settings.json - Wait for the
unpinOpus47LaunchEffortmigration to fire on next launch - Model field is silently stripped from settings.json
Why this matters
- Users pin models for a reason — workflow consistency, quality preference, cost management
- The migration treats a deliberate user choice as if it were a default that needs updating
- Re-adding the field manually works, but users who don't notice the change have no way to know it happened
Workaround
Manually re-add "model": "claude-opus-4-6[1m]" to ~/.claude/settings.json. The unpinOpus47LaunchEffort: true flag in ~/.claude.json prevents re-running, so the fix sticks — until a future migration does the same thing.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗