# エージェントが使うモデルを固定する：計画は一方、実行はもう一方

> エージェント実行のモデルを特定のモデルに強制し、プランモードと実行を分離：イングレスの許可リスト + catch-all モデルマッピング + プランモードのスクリプト切り替えにより、開発者が単純なタスクを Opus に回すことを防ぎます。

正規 URL: https://www.gatellm.io/ja/use-cases/enforce-model-policy/

クライアント側のモデル選択を無効化し、プランモードと実行を分離します。強いモデルが計画し、安いモデルが実行します。

## コミュニティが実際に不満を言っていること
「開発者が変更履歴を要約するために Claude Code を Opus に切り替える」「全員が設定で別々のモデルを使っていて、誰がいくら使ったか分からない」「クライアント側のポリシーを試したが、誰でも書き戻せてしまう」。
モデルの選択は開発者の好みではなくコストの判断です。リクエストが実際に着地するゲートウェイで強制する必要があります。

## GateLLM の実現方法
3 つの層があり、どれも省けません。キーグループのモデル許可リスト（イングレスゲート）が許可されていないモデル名を 403 で拒否し、catch-all のモデルマッピングが「*」から任意のリクエストを承認済みモデルへ書き換え、before スロットのスクリプトがプランモードの間は強いモデルを維持し、終了時に実行モデルへ切り替えます。
Claude Code の会話タイトル生成のようなバイパス的なリクエストにはプランのマーカーがないため、安い実行モデルへ落ちます。これはまさに「要約に Opus を走らせない」という望む動作です。

## 実際に効果が出る 5 つのレバー
- イングレスゲート：キーグループのモデル許可リストが、ルーティング前に許可されていないモデル名を拒否
- catch-all マッピング：「*」から承認済みモデルへ。要求されたすべての名前を 1 つのモデルに正規化
- plan / 実行の分離：before スロットのスクリプトがプランモードのマーカーを読み、プランを抜けた後にのみルーティングを切り替え
- 可観測：切り替えられたリクエストにはログで SW タグが付き、各リクエストの実際の着地モデルを監査可能
- ホットリロード：マッピングとルールは即時反映。再起動も開発者ごとの展開も不要

## FAQ
### プランモードに宣言的な switch-route ルールを使わないのはなぜですか？
switch-route の述語は構造的な存在確認と小さな値の等価判定しかできず、文字列値の内容を読むことはありません。それが大きな本文をディスクに保つ理由でもあります。プランモードのマーカーはメッセージ本文にあるため before スロットのスクリプトが必要で、構造的なチェック（画像 → ビジョンモデル）は switch-route の得意分野です。

### クライアントは自分の設定を編集して Opus を選べますか？
いいえ。イングレスゲートが許可リスト外のモデル名を 403 で拒否し、catch-all マッピングが残りを承認済みモデルに正規化します。リクエストがゲートウェイに到達した時点で、モデルの選択はクライアントの判断ではなくなります。

### スクリプトが効いていないようで、ログにもエラーが出ません。なぜですか？
多くの場合スクリプトの OOM です。各スクリプトは独自の QuickJS サンドボックスで 64MB のヒープ上限（SCRIPT_MEMORY_LIMIT_MB）を持ち、メモリ不足時は既定の「ログして続行」モードが useModel を含むすべての副作用を黙って破棄するため、ルーティングが切り替わりません。Claude Code のツール定義が先にメモリを消費するので、上限を上げてください（再起動が必要です）。

- [詳細手順：プランモードによるモデル切り替え（docs）](https://docs.gatellm.io/en/howto/script-switch-model-by-plan-mode)

## 関連するユースケース
- [クライアントにモデル選択をさせない：ゲートウェイが自動で階層化](https://www.gatellm.io/ja/use-cases/automatic-model-tiering.md)

## 関連ページ
- [ホーム](https://www.gatellm.io/ja/index.md)
- [料金](https://www.gatellm.io/ja/pricing.md)
- [コスト計算ツール](https://www.gatellm.io/ja/calculator.md)
- [会社概要](https://www.gatellm.io/ja/about.md)
- [デモを予約](https://www.gatellm.io/ja/demo.md)
- [FAQ](https://www.gatellm.io/ja/faq.md)
- [AI ゲートウェイ比較](https://www.gatellm.io/ja/compare.md)
- [LiteLLM 比較](https://www.gatellm.io/ja/compare/litellm.md)
- [OpenRouter 比較](https://www.gatellm.io/ja/compare/openrouter.md)
- [Alibaba Cloud AI Gateway 比較](https://www.gatellm.io/ja/compare/alibaba-cloud.md)
- [Azure API Management 比較](https://www.gatellm.io/ja/compare/azure-apim.md)
- [Apigee 比較](https://www.gatellm.io/ja/compare/apigee.md)
- [Cloudflare AI Gateway 比較](https://www.gatellm.io/ja/compare/cloudflare.md)
- [Kong AI Gateway 比較](https://www.gatellm.io/ja/compare/kong.md)
- [Portkey 比較](https://www.gatellm.io/ja/compare/portkey.md)
- [LiteLLM vs Kong AI Gateway](https://www.gatellm.io/ja/compare/litellm-vs-kong.md)
- [LiteLLM vs OpenRouter](https://www.gatellm.io/ja/compare/litellm-vs-openrouter.md)
- [LiteLLM vs Portkey](https://www.gatellm.io/ja/compare/litellm-vs-portkey.md)
- [ユースケース](https://www.gatellm.io/ja/use-cases.md)
- [LLM コスト削減](https://www.gatellm.io/ja/use-cases/reduce-cost.md)
- [高可用性](https://www.gatellm.io/ja/use-cases/high-availability.md)
- [マルチテナント分離](https://www.gatellm.io/ja/use-cases/multi-tenant.md)
- [コンプライアンスと監査](https://www.gatellm.io/ja/use-cases/compliance-audit.md)
- [症状別トラブルシューティング](https://www.gatellm.io/ja/use-cases/troubleshooting.md)
- [マルチベンダー混合モデル構成](https://www.gatellm.io/ja/use-cases/mixed-model-stack.md)
- [Office 内での AI セルフホスト](https://www.gatellm.io/ja/use-cases/self-hosted-office-ai.md)
- [Token 使用量の可視化と帰属](https://www.gatellm.io/ja/use-cases/token-ops.md)
- [Token FinOps：AI コストの配賦と統制](https://www.gatellm.io/ja/use-cases/token-finops.md)
- [MCP ツールガバナンス](https://www.gatellm.io/ja/use-cases/mcp-tool-governance.md)
- [すべてのモデルに Web 検索を追加](https://www.gatellm.io/ja/use-cases/web-search-grounding.md)
- [マルチキーのローテーションと待機系](https://www.gatellm.io/ja/use-cases/multi-key-pooling.md)
- [接続クライアントの受付制御](https://www.gatellm.io/ja/use-cases/client-admission-control.md)
- [クライアントにモデル選択を公開しない](https://www.gatellm.io/ja/use-cases/automatic-model-tiering.md)
- [1 つのプロトコルで、あらゆるモデル](https://www.gatellm.io/ja/use-cases/one-protocol-any-model.md)
- [Office / Microsoft 365 アドイン](https://www.gatellm.io/ja/office-addin.md)
- [用語集](https://www.gatellm.io/ja/glossary.md)
- [モデルカタログ](https://www.gatellm.io/ja/models.md)
- [SDK・フレームワーク連携](https://www.gatellm.io/ja/integrations.md)
- [AI コーディングエージェントとハーネス](https://www.gatellm.io/ja/coding-agents.md)
- [セキュリティとコンプライアンス](https://www.gatellm.io/ja/security.md)
