Claude CodeでDefaultに戻せない・既定に保存できない原因の切り分け
/modelでDefaultに切り替えられない、選んだモデルを既定に保存できない。似た見た目の3つの失敗を、メッセージの文言から管理側の制限・設定ファイルの書き込み失敗のどちらかに切り分けます。
Claude Codeで/modelからDefaultを選んでも切り替わらない、選んだモデルが次のセッションに引き継がれない。この2つは見た目が似ていますが、原因の層がまったく違います。前者は組織の管理設定が止めていて、後者は手元の設定ファイルに書き込めていません。
メッセージの文言を読めば、どちらなのかは判別できます。この記事は文言から原因を引き当て、利用者側でできることと管理者に頼むことを分けて示します。
3つの失敗は別々の層で起きている
「モデルを戻せない」と感じる場面には、エラー文言の異なる3つのケースがあります。先に表で全体像を見ておくと、以降の節で迷いません。
| 画面に出る文言 | 起きる場面 | 原因の層 |
|---|---|---|
Model "..." is restricted by your organization's settings | 起きる場面起動時、または/model <名前>の入力時 | 原因の層管理コンソールの無効化、または管理設定の許可リスト・拒否リスト |
Can't switch to the default model | 起きる場面/modelでDefaultを選んだとき | 原因の層管理設定がDefaultの解決先とその代替をすべて塞いでいる |
couldn't save it as your default | 起きる場面選択したモデルを既定に保存するとき | 原因の層利用者の~/.claude/settings.jsonが書けない、または壊れている |
1行目と2行目は組織の制限、3行目だけが手元のファイルの問題です。3行目は切り替え自体には成功しているので、混同しやすい点に注意が要ります。
切り替えと既定保存は別々に失敗する
/model <名前>やピッカーでのEnterは、2つの処理を順に行います。まず現在のセッションのモデルを切り替え、次にその選択を~/.claude/settings.jsonのmodelに書き込んで既定にします。
保存だけが失敗した場合、現在のセッションは選んだモデルで動きます。次のセッションは古い値で始まります。逆に、切り替えが組織の制限で拒否されたときは、そもそも保存まで進みません。「どちらで失敗したか」が最初の切り分けになります。
Can't switch to the default modelの読み方
/model defaultを打つか、ピッカーのDefault行を選ぶと出るメッセージです。切り替えは拒否され、セッションは今のモデルのままです。
Can't switch to the default model: your organization's managed settings block it (claude-opus-4-6) in "deniedModels", and none of the models they allow can be used as the default instead. Ask your administrator to update "deniedModels" or "availableModels".コロンより後ろの文言が、何が止めているかを示します。
| コロン以降の文言 | 意味 | 利用者側の対処 |
|---|---|---|
...managed settings block it ... in "deniedModels" | 意味管理設定の拒否リストが、Defaultの解決先のモデルを塞いでいる | 利用者側の対処/modelで許可されたモデルを名前で選ぶ。管理者にdeniedModelsかavailableModelsの見直しを頼む |
...allows only the models listed in "availableModels" | 意味availableModelsMatchが"exact"の許可リストに、Defaultの解決先が載っていない | 利用者側の対処同上 |
...couldn't read your organization's managed settings... | 意味管理設定を読み込めず、確認できないまま切り替えることを避けている | 利用者側の対処Claude Codeを再起動する。続くなら管理者に管理設定の確認を頼む |
3つ目だけは制限の中身ではなく、管理設定を読めなかったことが原因です。再起動で直る可能性があります。
Defaultが塞がれる仕組み
Defaultは固定のモデルではなく、アカウントごとに解決される選択肢です。アカウントに記録されたモデルがなければ、アカウント種別の既定か、管理者が組織の既定モデルを設定していればそちらに解決されます。
この解決先がdeniedModelsで塞がれていると、Claude Codeは次の順に代わりを探します。
- 同じファミリーで許可されている最新バージョン
- 低コスト側のファミリーの最新の許可モデル。Sonnet、次にHaikuの順
availableModelsの中で最初に許可されたモデルを指す項目
3つとも使えないときに限り、Defaultは成立しません。切り替え時は今回のメッセージで拒否され、Defaultで始まるはずの起動は後述のとおり止まります。
起動できないときは別のメッセージが出る
Defaultで始まるセッションが同じ理由で起動できないと、Claude Code can't start: your organization's managed settings block the default model ...というメッセージで終了します。deniedModelsが原因なら末尾はAsk your administrator to update "deniedModels" or "availableModels".、"exact"の許可リストが原因なら"availableModels"だけを名指しします。
利用者の設定ファイルにavailableModelsやdeniedModelsを書いても、管理設定の制限は広げられません。deniedModelsは管理設定からだけ読み込まれるキーで、ほかのスコープに書いても反映されません。
Model is restricted by your organization's settingsの読み方
こちらは「戻せない」ではなく「指定したモデルが使えず、別のモデルで始まった」という通知です。起動時の形は次のとおりです。
Model "claude-opus-4-8" is restricted by your organization's settings. Using claude-sonnet-4-6 instead.通知が出るのは、--model、環境変数ANTHROPIC_MODEL、設定のmodelのいずれかが制限されたモデルを指しているときです。メッセージにはセッションが代わりに使うモデルも載ります。
3つの原因は拒否文言で見分けられる
制限の出どころは3つあります。claude.aiの管理コンソールでの無効化、管理設定のavailableModelsによる許可リストからの除外、deniedModelsによる明示的な拒否です。起動時の通知は3つとも同じ文言ですが、/model <名前>で入力すると拒否文言が分かれます。
| 出どころ | /model <名前>の拒否文言 |
|---|---|
| 管理コンソールで無効化されたモデル | /model <名前>の拒否文言Model '<name>' is restricted by your organization's settings. Run /model to choose a different model. |
| 管理設定が除外したモデル | /model <名前>の拒否文言Model '<name>' is not available. Your organization restricts model selection. |
管理コンソールでの無効化は、Claude Enterpriseプランの管理者がモデル単位で行う仕組みです。ログイン時のアカウント情報(エンタイトルメント)とともに配られ、Claude Code v2.1.187以降が対象です。availableModelsやdeniedModelsは、設定ファイルで配る管理設定の仕組みです。どちらも効いている組織では、両方を通ったモデルだけが選べます。
設定に残った古い指定が通知を繰り返す
modelの値が制限されたモデルのまま残っていると、起動のたびに同じ通知が出ます。
grep -rn '"model"' ~/.claude/settings.json .claude/settings.json .claude/settings.local.json 2>/dev/null
echo "$ANTHROPIC_MODEL"出てきた値を、許可されているモデルに書き換えるか削除します。サブエージェント、スキル、コマンドのfrontmatterに書いたmodelも同じ扱いです。通知の頭にエージェント名などが付いていれば、制限に当たったのはそのサブエージェントが要求したモデルで、本体のセッションのモデルは変わっていません。
ファミリー名のエイリアスは許可された最新版に置き換わる
opus、sonnet、haiku、fableは、そのファミリー全体への要求として扱われます。Anthropic APIでは、制限されたエイリアスが「組織が許可するそのファミリーの最新バージョン」に解決され、通知にはその版が載ります。/model <エイリアス>が拒否されるのは、ファミリーのすべての版が制限されているときだけです。この挙動はv2.1.205以降のもので、それ以前はファミリーの最新版が制限されていればエイリアスごと置き換え・拒否されました。
Couldn't save it as your defaultの読み方
こちらは組織の制限と無関係で、手元のファイルが原因です。
Set model to Fable 5.1 for this session only · couldn't save it as your default: ~/.claude/settings.json can't be written (EROFS)今のセッションは選んだモデルで動いており、次回からの既定は変わっていません。ファイルパスの後ろの文言で原因が分かれます。
can't be written (<コード>): OSの書き込みエラーです。EROFSは、ファイル(またはリンク先)が書き込みを拒むファイルシステム上にあるときのコードです。ファイルを書き込み可能にして、もう一度切り替えます。isn't valid JSON: ファイルが構文エラーで読めません。Claude Codeは内容を読み戻せないまま上書きしないため、ファイルには触れません。構文を直してから切り替えます。
別のツールがsettings.jsonを生成している環境では、そのツールの側でmodelキーを設定します。ホームを読み取り専用でマウントしたコンテナや、設定ファイルをシンボリックリンクで配っている構成が典型です。
ls -l ~/.claude/settings.json
jq . ~/.claude/settings.json > /dev/null && echo "JSON OK"1行目は権限とリンク先、2行目は構文を確かめます。jqが無ければpython3 -m json.toolでも同じ確認ができます。
保存を確認できなかったときの文言
couldn't confirm it was saved as your default (~/.claude/settings.json is still being written)は、書き込みが3秒たっても終わらなかった場合の通知です。書き込みはバックグラウンドで続くため、保存されている可能性もあります。次のセッションの起動モデルを見るか、もう一度/model <名前>を実行して確かめられます。
v2.1.265より前は、書き込みに失敗しても「新しいセッションの既定として保存した」と表示されていました。古い版を使っていて既定が戻る場合は、表示を信用せず設定ファイルの中身を直接見るほうが確実です。/modelの選択が既定値として保存される変更が入ったバージョンはClaude Code v2.1.153のリリース解説にあります。
切り分けの手順
メッセージが手元にあるなら、次の順で当てはめると原因の層が決まります。
- 文言に
couldn't save it as your defaultがあるか。あれば設定ファイルの問題で、組織は関係ない Can't switch to the default modelかClaude Code can't startか。あれば管理設定がDefaultの解決先を塞いでいるrestricted by your organization's settingsか。あれば指定したモデルが管理側で無効化または除外されている
2と3は、/modelで許可されたモデルを名前で選べば作業を続けられます。モデルを制限する側の設計は、claude.ai側の運用がClaude組織のモデルアクセス制限に、似た名前のエラーとの違いが「is not a recognized model id」の解説にあります。
管理者が直す場合の設定例
利用者の側で解決できないのが、管理設定が原因の2と3です。管理者は、Defaultの代わりになるモデルを残す方向で設定を見直します。次は拒否リストを使った管理設定の例です。
{
"availableModels": ["opus", "sonnet"],
"deniedModels": ["claude-opus-5-5"]
}deniedModelsは許可リストが許すモデルでも塞ぐキーで、許可リストなしでも単独で機能します。Claude Code v2.1.283以降が必要です。availableModelsMatchを"exact"にすると、availableModelsのモデルIDは名前どおりの版だけを許可します。新しい版は、リストに足すまで塞がれたままです。
Defaultの代替を作るなら、拒否リストを狭めるか、availableModelsに実際に使えるモデルを足します。どれも使えない状態でDefaultを選ぶと、先ほどの拒否や起動停止になります。
許可リストをDefaultにまで及ぼしたい場合はenforceAvailableModelsを併用します。詳しい書き方と落とし穴はenforceAvailableModelsの解説にあります。
切り分けで踏みやすい落とし穴
落とし穴
管理設定が読めないだけなのに、制限と思い込む
Claude Code couldn't read your organization's managed settingsは、制限の内容ではなく読み込みの失敗を示します。管理者に連絡する前に、まず再起動を試せます。
次の3点も、よく取り違えられます。
- 保存の失敗は切り替えの失敗ではありません。
for this session onlyと出ていれば、切り替えは成功しています - ユーザーの
settings.jsonにavailableModelsを書いても、管理設定の許可リストは広がりません - 通知の頭にエージェント名が付いていれば、制限されたのはサブエージェントのモデルです。本体のセッションは影響を受けていません
まとめ
Defaultに戻せない失敗は、組織の管理設定がDefaultの解決先と代替をすべて塞いだ状態です。既定に保存できない失敗は、手元の~/.claude/settings.jsonの権限か構文の問題です。同じ「戻せない」でも、前者は管理者に、後者は自分のファイルに手を入れる話になります。
メッセージのコロン以降の文言を読み、どの層で止まっているかを先に決めれば、直す相手を間違えずに済みます。