ひとことで言うと
disable-model-invocation は、「この機能はAIが自分の判断で勝手に呼び出してはいけない」と指定するための設定項目です。名前をそのまま読むと「モデル(AI)による呼び出しを無効化する」。まさにその通りの意味で、あなたが明示的に指示したときだけ動くようになります。
Claude Codeでは、スラッシュコマンドやスキルのように「AI側から自発的に使える部品」があります。便利な反面、こちらが望んでいないタイミングでAIが勝手に使い始めることもある。そういうときに「これは自動では触らないで」と札を立てるのが、この設定の役割です。
身近な例で考える
キッチンにある道具を思い出してください。包丁やまな板は毎日自由に使ってもらってかまわない。でも、来客用の高い食器や、扱いを間違えると危ないミキサーは「使うときは一声かけてね」と決めておきたい。disable-model-invocation は、その「一声かけてね」の札に相当します。
棚から道具そのものを撤去するわけではありません。道具はちゃんとそこにあって、あなたが「あれ使って」と言えば使える。ただ、AIが自分で「これ使えそうだな」と手を伸ばすルートだけを閉じておく、という発想です。
設定しない場合
AIが文脈から判断して、必要そうだと思ったタイミングで自発的にその機能を呼び出す。
設定した場合
AIは自分から呼び出さない。あなたが明示的に指示・実行したときだけ動く。
なぜこんな設定が必要なのか
AIに自由に道具を使わせると、たしかに手間は減ります。ただ、実際に使っていると「今それやらなくていいのに」という場面が出てきます。
たとえば、デプロイや外部への通知みたいに副作用が大きい処理。AIが親切心で先回りして実行してしまうと困りますよね。あるいは、単に説明を求めただけなのに、関連しそうなツールを次々呼び出してトークンを消費されるケースもあります。用途が限定されている社内向けの手順書のようなものを、汎用的な質問にまで持ち出されるのも噛み合いません。
そういうものに対して「自動発動オフ、手動なら可」という中間の状態を作れるのが、この設定の価値です。オールオアナッシングで機能を消すより現実的なんですよね。
「無効化」との違い
初めて名前を見ると「機能そのものを無効にする設定」だと思いがちですが、そこがつまずきポイントです。切っているのはAIによる自動呼び出しという経路だけで、機能自体は生きています。
| やりたいこと | この設定で足りるか |
|---|---|
| AIが勝手に使うのを止めたい。自分では使いたい | これがまさに用途 |
| そもそも存在自体をなくしたい | 別の手段(定義の削除など)が必要 |
使うときの考え方
全部に付けてしまうと、AIが自律的に動いてくれる良さが失われます。おすすめは、まず何も設定せずに使ってみて、「今の自動発動はいらなかった」と感じたものだけ後から札を立てていくやり方です。
設定を書く場所や具体的な記述方法は、その機能の定義ファイルの書式に従います。手元のバージョンで実際にどう書くかは、公式のドキュメントで確認してください。名前が長いので、タイプミスで効いていないのに気づかない、というのもわりとよくある落とし穴です。
覚えておきたいこと
結局のところ、これは「AIにどこまで自由を渡すか」を細かく調整するためのつまみです。全部任せるか全部禁止するかの二択ではなく、機能ごとに手綱の長さを変えられる。Claude Codeを長く使うほど、この手の細かい制御が効いてくる場面は増えていきます。
このページは役に立ちましたか?