claude-code - 💡(How to fix) Fix Settings migration silently removes user's explicit model pin without notification or backup

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…

Root Cause

  • 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

Fix Action

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.

RAW_BUFFERClick to expand / collapse

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 model setting 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 .bak file, or prompt the user to confirm

Steps to reproduce

  1. Set "model": "claude-opus-4-6[1m]" in ~/.claude/settings.json
  2. Wait for the unpinOpus47LaunchEffort migration to fire on next launch
  3. 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.

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…

FAQ

Expected behavior

  • A user's explicit model setting 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 .bak file, or prompt the user to confirm

Still need to ship something?

×6

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

Back to top recommendations

TRENDING

claude-code - 💡(How to fix) Fix Settings migration silently removes user's explicit model pin without notification or backup