Segurança do Modo Código (Beta)
Execução segura de MCP-como-código com sandboxing, análise de AST e rastreamento de contaminação.
O Modo Código permite que agentes executem código TypeScript para encadear múltiplas ferramentas MCP, em vez de fazer chamadas individuais de ferramentas. Essa abordagem reduz significativamente a latência e o uso de tokens, mas introduz novas considerações de segurança.
Recurso Beta: A Segurança do Modo Código está atualmente em beta. Recursos e APIs podem mudar.
O Edison Watch protege o Modo Código com uma arquitetura de defesa em profundidade combinando execução em sandbox, análise estática e rastreamento de dados ciente de contaminação (taint-aware).
Por que Modo Código?
Agentes tradicionais sofrem de deterioração de contexto. A entrada e saída de cada chamada de ferramenta deve ser adicionada à janela de contexto do LLM. Conectar um agente a muitos servidores MCP leva à deterioração de contexto, pois definições de ferramentas consomem tokens mesmo antes de qualquer ação ser tomada. Para processamento de dados complexos (ex: "resuma estes 20 arquivos"), isso pode consumir centenas de milhares de tokens apenas para mover dados.
Modo Código resolve isso permitindo que o agente escreva um script para processar dados dentro do ambiente seguro. O LLM vê apenas o resultado final, frequentemente reduzindo o uso de tokens em mais de 90%.
Arquitetura de Segurança
O Edison Watch emprega três camadas de defesa para tornar o Modo Código seguro para implantação corporativa.
1. O Sandbox Deno (Proteção RCE)
O código executa em um sandbox Deno seguro com permissões estritas:
- Sem Acesso à Rede: O script não pode fazer requisições HTTP arbitrárias. Ele só pode chamar ferramentas MCP permitidas.
- Sem Escrita no Sistema de Arquivos: O script não pode modificar o sistema de arquivos do host.
- Limites de Recursos: Limites fixos no tempo de execução (90s), memória (256MB) e tamanho de saída (10MB).
2. Análise AST (Analisabilidade)
Antes da execução, o Edison Watch analisa a Árvore de Sintaxe Abstrata (AST) do script para impor um subconjunto estrito de TypeScript. Isso previne técnicas de ofuscação que atacantes usam para esconder comportamento malicioso.
Modo Estrito: Bloqueamos recursos dinâmicos como eval(), new Function() e importações dinâmicas
(ex: import(variavel)). O código deve ser estaticamente analisável para rodar.
3. Tríade Ciente de Contaminação (Proteção de Dados)
O modelo "Tríade Letal" tradicional (bloquear Dados Privados + Conteúdo Não Confiável + Comunicação Externa) pode ser muito agressivo para execução de código. O Modo Código usa rastreamento de contaminação para ser mais preciso.
A Abordagem "Bisturi"
Em vez de sinalizar a sessão inteira quando uma ferramenta sensível é chamada, o Edison Watch rastreia o fluxo real de variáveis de dados dentro do script.
Exemplo: O Problema do Calendário Imagine que um agente lê um convite de calendário para verificar sua disponibilidade. O corpo do convite contém conteúdo não confiável (potencial injeção de prompt), mas os horários de início/fim são metadados seguros.
- Tríade Tradicional: Bloqueia a ação porque "Calendário" (Privado) e "Corpo do Convite" (Não Confiável) foram acessados, mesmo que o agente tenha apenas imprimido o horário.
- Rastreamento de Contaminação do Modo Código: Analisa o script. Se o código
console.log(event.startTime)mas nunca registraevent.body, o Edison sabe que o conteúdo não confiável nunca deixou o sandbox. A ação é permitida.
Essa precisão reduz falsos positivos enquanto mantém garantias de segurança estritas.
Observabilidade
Cada execução do Modo Código é totalmente auditada. O sistema registra:
- O código TypeScript exato gerado pelo agente.
- Resultados de validação e quaisquer erros AST.
- Saída do console e valores de retorno.
- Quais caminhos de dados específicos foram marcados como contaminados.
Esses detalhes são armazenados nos logs de auditoria seguros.
Limites Operacionais
Para prevenir negação de serviço (DoS) e abuso, o Modo Código impõe limites rígidos:
| Métrica | Limite |
|---|---|
| Tempo de Execução | 90 segundos |
| Memória | 256 MB |
| Tamanho de Saída | 10 MB |

