0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Claude Codeが安全装置のフラグで勝手にモデルを切り替えるのを止める——未文書設定 switchModelsOnFlag(既定true)

0
Posted at

会話の途中で勝手にモデルが変わる、その正体

Claude Code を使っていて、こんな経験はないでしょうか。

  • セキュリティ調査やデバッグなど、正当な作業を頼んだのに、会話の途中で応答の雰囲気が急に変わった。
  • 固定したつもりのモデルと違う挙動になり、費用も想定より膨らんだ。
  • 何が起きたのか画面には明確な説明が出ない。

この一因が、本記事で扱う**「安全装置がメッセージをフラグしたときの自動のモデル切り替え」**です。新しいモデルの安全の分類器は、正当な作業(認可されたセキュリティ研究、学術、防御的な作業など)を取り違えてフラグすることがあります。そのとき Claude Code は、既定では会話を止めずに別のモデルへ切り替えて続行します。

この挙動は、settings.json の1つの設定で止められます。公式のドキュメントにはまだ載っていない設定なので、手元の Claude Code の本体(@anthropic-ai/claude-code のバンドル実体)を直接調べて確かめました。


設定: switchModelsOnFlag

本体の設定スキーマには、次のように定義されています。

When safety measures flag a message, automatically switch to a different model to keep chatting. When off, your session will pause instead.

訳すと「安全装置がメッセージをフラグしたとき、会話を続けるために自動で別のモデルへ切り替える。オフにすると、切り替える代わりにセッションが一時停止する」。

そして**既定値は true(切り替える)**です。本体の中で switchModelsOnFlag ?? true という形で解決されているのを確認しました(設定が無ければ true にフォールバックする)。

つまり、何も設定していない状態では、フラグされると黙って別のモデルに移って続行します。これを止めたい場合は、明示的に false を設定します。

{
  "switchModelsOnFlag": false
}

false にすると、フラグされたときにモデルを切り替えず、セッションが一時停止します。勝手に別のモデルへ移ることがなくなり、「今どのモデルで動いているか」の前提が崩れません。


どちらを選ぶか

これはトレードオフのある設定です。自分の使い方で選んでください。

false(切り替えない・一時停止)が向く場合

  • モデルを固定して使いたい(挙動と費用の前提を一定に保ちたい)。
  • 正当な作業がフラグされて、知らないうちに別のモデル(しばしばより大きく高価なモデル)へ移され、費用が膨らむのを避けたい。
  • 何が起きたかを自分で把握してから続けたい。

既定の true(切り替えて続行)のままが向く場合

  • 途中で止まらず、とにかく会話を続けたい。
  • フラグの頻度が低く、モデルが変わっても気にならない。

セキュリティ研究や、長時間の自動運用で費用を一定に保ちたい人ほど、false の価値が大きいです。


切り替えが起きていたか、あとから確かめる

「自分の場合、実際に切り替わっていたのか」を知りたいときは、セッションのログ(JSONL)に各応答のモデル名が記録されているので、そこを見れば時系列で確認できます。固定したはずのモデルが途中で変わっていないかを数える方法は、別記事にまとめました。

検出(ログで確かめる)とこの記事の防止(switchModelsOnFlag: false)を組み合わせると、モデルの透明性を自分の側で取り戻せます。

なお、安全の分類器がデータ消失などの別の事故につながった事例と利用者側の対策は、こちらにまとめています。


正直に書いておくこと

  • フラグの判定そのものはモデル側の挙動で、利用者から確率を厳密に測ることはできません。この記事で言えるのは、「フラグされたときにモデルを自動で切り替える挙動が既定で有効で、false で止められる」という、本体で確認できた事実までです。
  • 切り替え先のモデルが必ずより高価とは限りません。ただ、固定の前提が崩れ、費用が予想とずれる経路が確かに存在します。

まとめ

  • Claude Code は、安全装置がメッセージをフラグすると、既定で別のモデルへ自動で切り替えて続行する(switchModelsOnFlag の既定は true)。
  • settings.json"switchModelsOnFlag": false を書くと、切り替えずに一時停止する。モデルの前提と費用を一定に保ちたい人に向く。
  • 実際に切り替わっていたかは、セッションのログ(JSONL)のモデル名で時系列に確認できる。

モデルの切り替えや安全の挙動を含めて、Claude Code を事故なく安全に運用するための初期設定とフック集は、無料で公開している cc-safe-setup にまとめています。あわせてどうぞ。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?