- O desenvolvedor da plataforma web Paul Kinlan explora o potencial do navegador como um ambiente de execução seguro para agentes de programação
- Ele destaca que o navegador já possui uma poderosa estrutura de sandbox para executar código não confiável
- Para verificar isso, ele criou uma demonstração chamada Co-do, na qual testa acesso a arquivos, comunicação em rede e execução de código, tudo dentro do navegador
- O Co-do utiliza File System Access API, cabeçalhos CSP e
<iframe sandbox>, e WebAssembly in Web Workers
- É um caso que mostra que o navegador pode evoluir para um ambiente de execução de agentes de IA mesmo sem contêineres locais
A perspectiva de ver o navegador como sandbox
- Paul Kinlan, do Google, considera que é necessário um ambiente de sandbox robusto para executar agentes de programação
- Ele enfatiza que o navegador é uma plataforma que evoluiu ao longo dos últimos 30 anos para executar com segurança código malicioso ou não confiável
- Essa característica serve de base para usar o navegador como ambiente de execução de agentes
Três elementos centrais da sandbox baseada em navegador
- Kinlan apresenta três elementos centrais da sandbox: acesso ao sistema de arquivos, controle de acesso à rede e execução segura de código
- A File System Access API fornece recursos para lidar com arquivos locais no navegador e atualmente é conhecida como exclusiva do Chrome
- O acesso à rede pode ser controlado por meio de cabeçalhos CSP (Content Security Policy) e do atributo
<iframe sandbox>
- Com WebAssembly e Web Workers, é possível executar código em um ambiente isolado
Estrutura e funcionalidades da demo Co-do
- Para validar a ideia de Kinlan, foi criada uma aplicação de demonstração chamada Co-do
- O usuário seleciona uma pasta e configura o provedor de LLM e a chave de API
- O Co-do interage com o LLM por meio de chamadas de API aprovadas por CSP e oferece uma interface de chat capaz de conversar com os arquivos
- Essa estrutura é semelhante ao Claude Cowork, mas roda apenas no navegador, sem contêineres locais pesados
<iframe sandbox> e os limites das tecnologias de segurança
- A falta de documentação de
<iframe sandbox> é apontada como um problema importante
- Há grandes diferenças de implementação entre os navegadores, e o material relacionado é escasso
- Kinlan apresenta uma forma de aplicar regras de rede ao frame interno por meio da técnica de double-iframe
Descobertas e experimentos adicionais
- Foi confirmado que o atributo
<input type="file" webkitdirectory> funciona em Firefox, Safari e Chrome
- Com isso, o navegador pode realizar acesso somente leitura a um diretório inteiro
- Para testar isso, foi criada uma demo do webkitdirectory, que deverá ser aproveitada em projetos futuros
Conclusão
- O navegador já evoluiu para uma plataforma madura para isolamento de segurança e execução de código
- O caso do Co-do é uma evidência experimental de que o navegador pode se expandir para se tornar um ambiente de execução para agentes de programação com IA
1 comentários
Comentários do Hacker News
É um texto que publiquei no meu blog de links. Para entender o contexto completo, é indispensável ler o original, The Browser is the Sandbox
Acho que o motivo de o Google ter criado o NaCl levou diretamente à padronização do sandbox do WebAssembly. DOM, JS e CSS também funcionam como um sandbox de renderização. O navegador precisa limitar funcionalidades para oferecer uma experiência de usuário unificada.
É por isso também que o IE e o Edge antigo fracassaram. Sandboxes externos como Flash, ActiveX, Java Applet e Silverlight desapareceram, e com a estabilização de asm.js e WebAssembly a web ficou muito mais limpa. Aliás, o ActionScript do Flash também influenciou o design do ECMAScript e do TypeScript
Quando vi o atributo
webkitdirectorypela primeira vez, eu também me surpreendi. Faço webapps há anos e isso tinha passado batido. O sandbox do navegador é um modelo de segurança validado por bilhões de pessoas clicando em links suspeitos.É uma abordagem muito mais madura do que subir um container novo toda vez. Ainda assim, o navegador tem limitações: não pode fazer chamadas de sistema, executar binários nem acessar hardware. Para coding com IA é suficiente, mas em alguns trabalhos há limites
É interessante como systemd e o sistema de permissões de usuário do Linux quase não aparecem nessas discussões sobre sandbox. Na prática, eles também são bem poderosos e oferecem isolamento de baixo custo
A File System Access API é um grande ponto de virada na evolução da web. No co-do.xyz, você pode selecionar um diretório e deixar a IA lidar com os arquivos internos com segurança. Graças a essa API, webapps passaram a se firmar como verdadeiras ferramentas de produtividade
A execução no navegador é interessante, mas a maioria dos apps de negócio reais migrou para um modelo centrado na nuvem por motivos de manutenção, segurança e acesso a dados. Execução local é boa para produtividade pessoal, mas tem limites para apps do mainstream. É por isso também que recursos antigos de automação de desktop como AppleScript, COM e DDE desapareceram
Quero apresentar mais duas coisas possíveis no navegador
Em teoria, seria possível implementar um sistema de agentes bem completo com apenas uma URL
Antigamente, no Chrome, dava para pedir permissão de leitura e escrita em diretórios com a File System Access API, mas ao recarregar a aba a permissão sumia. Fiquei curioso se isso melhorou hoje
Essa abordagem faz sandbox apenas do sistema de arquivos. Mas as pessoas querem conectar também e-mail, calendário, chat, código-fonte, dados financeiros etc. A segurança do sistema de arquivos é só o começo; a segurança de todo o ecossistema de dados ainda continua sendo um desafio
Fico curioso sobre os limites dessa abordagem. Seria possível implementar o Gemini CLI no navegador, como uma versão com UX melhorada? Também daria para integrar com ferramentas locais?