Sobre o projeto

O SUNGLASSES é uma camada local de inspeção de entrada open-source para agentes de IA, descrita no README como um firewall de entrada. É escrito em Python e licenciado sob a MIT License. O projeto verifica o conteúdo antes que um agente aja sobre ele e relata os resultados em vez de reescrever ou remover conteúdo silenciosamente. Cobre seis tipos de mídia: texto, imagens, áudio, vídeo, PDFs e códigos QR/barra. A verificação de imagens pode usar OCR, metadados EXIF e detecção de texto oculto; a verificação de PDFs lê texto das páginas, metadados e anotações; a análise profunda de áudio e vídeo utiliza fala-para-texto e extração de legendas. O scanner visa injeção de prompt, exfiltração de credenciais, injeção de comando, envenenamento de memória, engenharia social e técnicas de evasão, como truques Unicode, ofuscação RTL, leetspeak, codificação Base64 e substituição de homojígrafos. O SUNGLASSES prioriza o inglês. O README afirma que o conjunto completo de regras está em inglês; 13 idiomas têm exatamente dois padrões dedicados cada; 7 idiomas possuem apenas nível de palavra-chave; e persa e bengali são listados apenas como nome, sem padrão ou palavra-chave dedicados. A normalização é independente de idioma. O projeto alerta contra esperar paridade não inglesa com o inglês e marca cobertura linguística mais profunda como uma área v0.6+. A instalação ocorre via pip: pip install sunglasses para verificação de texto sem dependências, com media ou all extras para imagens, PDFs, QR codes, áudio e vídeo. A CLI oferece scan, check, demo, info e report. A API Python expõe SunglassesEngine para texto e SunglassesScanner para mídia. Outras superfícies de integração incluem um servidor MCP, integrações LangChain e CrewAI, saída SARIF 2.1.0 para CI e uma demonstração no navegador para texto, repositórios GitHub e imagens. A CLI utiliza um contrato explícito de código de saída: 0 significa que toda a entrada foi lida e nenhuma ameaça foi encontrada; 1 significa que uma ameaça foi detectada; 2 é erro de uso ou operacional, onde nada foi analisado no escopo solicitado; 3 indica inspeção incompleta: nada foi encontrado na parte que pôde ser lida, mas alguma parte não pôde ser analisada, como um arquivo compactado, um arquivo de áudio sem análise profunda ou entrada além do limite de tamanho. A precedência é 1 > 3 > 2 > 0. A saída JSON separa threat_found, inspection_complete e is_clean, e relata truncated e extraction_complete. O mecanismo lê no máximo 1 MB por padrão, e uma análise que atinge o limite reporta truncated e bytes_scanned em vez de uma verificação limpa silenciosa. O firewall v0.4 instala-se como um hook PreToolUse do Claude Code e é descrito como best-effort: possui timeout de 10 segundos e um hook com timeout não bloqueia a chamada. Pode fixar descritores de ferramenta MCP e verificar se eles mudaram, bloquear segredos de formato exato em chamadas de ferramenta que possam transmitir bytes, aplicar um arquivo de política do usuário e registrar recibos que registram um SHA-256 da entrada da ferramenta em vez da própria entrada. O projeto separa fatos determinísticos, que podem ser bloqueados, de deteções, que são escaladas ao usuário em vez de serem automaticamente bloqueadas. O projeto falha abrindo e registra quando uma chamada não foi verificada. O README lista limitações honestas: o pinning de descritores não é em tempo real; o hook vê o texto da chamada da ferramenta, não os arquivos subjacentes; one-liners de interpretador ou socket podem esconder egresso; a faixa WARN está desligada por padrão. Os desempenhos publicados incluem 1.540 padrões, 6.931 palavras-chave únicas, 118 categorias de ataque, 17 técnicas de normalização e recall interno de 64/64 no conjunto de ataques enviado. O benchmark do README usa 38 ataques reais de entrada de agente e 76 READMEs open-source bem conhecidos como negativos, relatando precisão de 86,1%, recall de 97,4%, F1 de 0,914, 30/30 ataques de forma conhecida capturados e 7/8 paráfrases semânticas novas capturadas. Afirma que o único fracasso conhecido é uma linha de instalação pipe-to-shell que também aparece em READMEs limpos, e que um teste afirma que o scanner não a sinaliza. As figuras de latência apresentadas são aproximadamente 0,7 ms para uma entrada curta, aproximadamente 4,2 ms para uma string de ataque típica, aproximadamente 311 ms para um README real e throughput sustentado de cerca de 26 KB por segundo single-threaded. O README observa que essas figuras são regeneradas a partir de um corpus no repositório e que o hardware variará. A análise profunda de áudio e vídeo requer Whisper e FFmpeg, e o projeto marca essas análises de mídia como experimentais. A verificação roda localmente: o README afirma que não há cloud, não há chaves de API e não há telemetria para verificação. Também nota que o scanner estático não executa o conteúdo verificado, enquanto o comando pin inicia servidores MCP configurados apenas após solicitar consentimento e recusa em contextos desatendidos. O projeto se posiciona como uma camada base local que pode ser usada sozinha ou junto com ferramentas de guardrail em nuvem.