# Fixe o modelo que os agentes executam — planeje em um, execute em outro

> Force um modelo específico para execuções de agentes e separe o modo de plano da execução: allowlist na entrada + mapeamento catch-all de modelo + troca por script de modo de plano, para que desenvolvedores não roteiem tarefas simples para o Opus.

Canônico: https://www.gatellm.io/pt-BR/use-cases/enforce-model-policy/

Neutralize a escolha de modelo no cliente e então separe o modo de plano da execução, para que um modelo forte planeje e um modelo barato execute.

## Do que a comunidade realmente reclama
"Nossos devs trocam o Claude Code para Opus para resumir um changelog", "cada um tem um modelo diferente nas configurações e não conseguimos ver quem gastou o quê", "tentamos uma política no cliente, mas qualquer um pode simplesmente editá-la de volta".
A escolha de modelo é uma decisão de custo, não uma preferência do desenvolvedor — ela precisa ser imposta no gateway, onde a requisição realmente chega.

## Como o GateLLM faz isso
Três camadas, nenhuma dispensável: a allowlist de modelos do grupo de chaves (portão de entrada) rejeita nomes de modelo não autorizados com 403; um mapeamento catch-all a partir de "*" reescreve o que o cliente solicitar para o modelo sancionado; e um script de slot anterior mantém o modo de plano no modelo forte e troca para o modelo de execução na saída.
Requisições de contorno — como a geração de título de conversa do Claude Code — não carregam marcador de plano, então caem no modelo de execução barato. Esse é exatamente o comportamento de "não rodar o Opus em um resumo" que você queria.

## 5 alavancas que realmente funcionam
- Portão de entrada: a allowlist de modelos do grupo de chaves rejeita qualquer nome de modelo não autorizado antes do roteamento
- Mapeamento catch-all: from "*" → to o modelo sancionado normaliza todo nome solicitado para um único modelo
- Divisão plano/execução: um script de slot anterior lê os marcadores de modo de plano e troca o roteamento somente após sair do plano
- Observável: requisições trocadas recebem uma tag SW nos logs, então o modelo de destino real de cada requisição é auditável
- Recarga a quente: mapeamentos e regras entram em vigor imediatamente — sem reinício, sem implantação por desenvolvedor

## FAQ
### Por que não usar uma regra declarativa switch-route para o modo de plano?
Os predicados de switch-route só fazem existência estrutural e igualdade de pequenos valores — eles nunca leem o conteúdo de um valor de string, que é o que mantém corpos grandes em disco. O marcador do modo de plano vive no texto da mensagem, então precisa do script de slot anterior; verificações estruturais (imagem → modelo de visão) são onde o switch-route brilha.

### Um cliente ainda pode escolher o Opus editando as próprias configurações?
Não. O portão de entrada retorna 403 para qualquer nome de modelo fora da allowlist, e o mapeamento catch-all normaliza o que restar para o modelo sancionado. A escolha de modelo deixa de ser uma decisão do cliente no momento em que a requisição chega ao gateway.

### O script parece não ter efeito e os logs não mostram erro?
Provavelmente é OOM do script: cada script roda no próprio sandbox QuickJS com teto de heap de 64MB (SCRIPT_MEMORY_LIMIT_MB). Em falta de memória, o modo padrão de registrar e continuar descarta silenciosamente todos os efeitos colaterais — incluindo useModel — então o roteamento simplesmente não troca. As definições de ferramentas do Claude Code consomem memória primeiro; aumente o limite (é necessário reiniciar).

- [Guia completo: troca de modelo por modo de plano (docs)](https://docs.gatellm.io/en/howto/script-switch-model-by-plan-mode)

## Casos de uso relacionados
- [Nenhuma escolha de modelo no cliente: o gateway divide automaticamente](https://www.gatellm.io/pt-BR/use-cases/automatic-model-tiering.md)

## Relacionados
- [Início](https://www.gatellm.io/pt-BR/index.md)
- [Preços](https://www.gatellm.io/pt-BR/pricing.md)
- [Calculadora de custos](https://www.gatellm.io/pt-BR/calculator.md)
- [Sobre](https://www.gatellm.io/pt-BR/about.md)
- [Agendar uma demonstração](https://www.gatellm.io/pt-BR/demo.md)
- [FAQ](https://www.gatellm.io/pt-BR/faq.md)
- [Comparar gateways de IA](https://www.gatellm.io/pt-BR/compare.md)
- [Comparar LiteLLM](https://www.gatellm.io/pt-BR/compare/litellm.md)
- [Comparar OpenRouter](https://www.gatellm.io/pt-BR/compare/openrouter.md)
- [Comparar Alibaba Cloud AI Gateway](https://www.gatellm.io/pt-BR/compare/alibaba-cloud.md)
- [Comparar Azure API Management](https://www.gatellm.io/pt-BR/compare/azure-apim.md)
- [Comparar Apigee](https://www.gatellm.io/pt-BR/compare/apigee.md)
- [Comparar Cloudflare AI Gateway](https://www.gatellm.io/pt-BR/compare/cloudflare.md)
- [Comparar Kong AI Gateway](https://www.gatellm.io/pt-BR/compare/kong.md)
- [Comparar Portkey](https://www.gatellm.io/pt-BR/compare/portkey.md)
- [LiteLLM vs Kong AI Gateway](https://www.gatellm.io/pt-BR/compare/litellm-vs-kong.md)
- [LiteLLM vs OpenRouter](https://www.gatellm.io/pt-BR/compare/litellm-vs-openrouter.md)
- [LiteLLM vs Portkey](https://www.gatellm.io/pt-BR/compare/litellm-vs-portkey.md)
- [Casos de uso](https://www.gatellm.io/pt-BR/use-cases.md)
- [Reduzir custo de LLM](https://www.gatellm.io/pt-BR/use-cases/reduce-cost.md)
- [Alta disponibilidade](https://www.gatellm.io/pt-BR/use-cases/high-availability.md)
- [Isolamento multilocatário](https://www.gatellm.io/pt-BR/use-cases/multi-tenant.md)
- [Conformidade e auditoria](https://www.gatellm.io/pt-BR/use-cases/compliance-audit.md)
- [Solução de problemas por sintoma](https://www.gatellm.io/pt-BR/use-cases/troubleshooting.md)
- [Stack de modelos multivendor](https://www.gatellm.io/pt-BR/use-cases/mixed-model-stack.md)
- [IA auto-hospedada dentro do Office](https://www.gatellm.io/pt-BR/use-cases/self-hosted-office-ai.md)
- [Visibilidade e atribuição do uso de tokens](https://www.gatellm.io/pt-BR/use-cases/token-ops.md)
- [Token FinOps: alocação e controle de custos de IA](https://www.gatellm.io/pt-BR/use-cases/token-finops.md)
- [Governança de ferramentas MCP](https://www.gatellm.io/pt-BR/use-cases/mcp-tool-governance.md)
- [Busca na web para todos os modelos](https://www.gatellm.io/pt-BR/use-cases/web-search-grounding.md)
- [Rotação e standby de múltiplas chaves](https://www.gatellm.io/pt-BR/use-cases/multi-key-pooling.md)
- [Controle de admissão de clientes](https://www.gatellm.io/pt-BR/use-cases/client-admission-control.md)
- [Sem escolha de modelo no cliente](https://www.gatellm.io/pt-BR/use-cases/automatic-model-tiering.md)
- [Um protocolo, qualquer modelo](https://www.gatellm.io/pt-BR/use-cases/one-protocol-any-model.md)
- [Suplemento Office / Microsoft 365](https://www.gatellm.io/pt-BR/office-addin.md)
- [Glossário](https://www.gatellm.io/pt-BR/glossary.md)
- [Catálogo de modelos](https://www.gatellm.io/pt-BR/models.md)
- [Integrações de SDK e frameworks](https://www.gatellm.io/pt-BR/integrations.md)
- [Agentes de código de IA e harnesses](https://www.gatellm.io/pt-BR/coding-agents.md)
- [Segurança e conformidade](https://www.gatellm.io/pt-BR/security.md)
