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 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.

View original on GitHub ↗

This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗