Veltron Onopen
Mira que se ejecuta cuando abres un repositorio.
Clonas algo, o un agente lo clona por ti, y lo abres. Antes de leer una linea, una tarea de VS Code puede dispararse, un hook de agente puede lanzar una shell, un servidor MCP puede descargar y ejecutar un paquete que ningun lockfile fija.
Si abro esto, que se ejecuta en mi maquina?
Salida real de onopen sobre un repositorio de prueba.
Lo medimos
25.0% de los repositorios mas populares de GitHub ejecutan algo antes de que leas una linea.
De los que traen configuracion de un agente de IA, el 62.3%. Escaneamos 9,997 repositorios sin clonar ni ejecutar ninguno, y publicamos el programa y los datos.
Leer el estudioInstalacion
Tres formas de tenerlo
Onopen 0.4.0 esta publicado. No hay que compilar nada a mano, ni crear una cuenta, ni aceptar terminos.
cargo install onopen --lockedCompila desde la fuente con las versiones exactas del lockfile.
cargo binstall onopenDescarga el binario del release en lugar de compilarlo. Linux, macOS Intel, macOS ARM y Windows.
uses: NULVEC/onopen@v0Los hallazgos llegan a la pestana Security de GitHub, sobre el diff que alguien ya esta leyendo.
Cada binario del release lleva checksums y attestation de procedencia de GitHub: se puede comprobar que salio del commit que dice y no de la maquina de nadie. Una herramienta cuyo argumento es que sepas que vas a ejecutar no tiene por que pedirte que te fies.
El hueco
La configuracion tambien ejecuta
Los escaneres de dependencias leen codigo y versiones. Una parte creciente de los ataques de cadena de suministro no vive ahi: vive en la configuracion, que casi todas las herramientas tratan como texto inerte.
- VS Code, Cursor, Claude Code, Gemini CLI, npm, Composer y Bundler aceptan archivos de configuracion que pueden llevar un comando de shell.
- Varios lo ejecutan al abrir la carpeta o al arrancar una sesion de agente, detras de un aviso de confianza que casi nadie lee.
- La superficie de los agentes aparecio hace meses y ningun escaner estaba apuntado a ella.
- La defensa que se recomienda hoy es revisar la configuracion a mano. Eso no es una defensa.
Cobertura
Que lee
Diez escaneres, cada uno sobre una familia de archivos. Ninguno ejecuta nada.
Tareas con runOn: folderOpen, incluidas las de un workspace multi-raiz, ajustes que le pasan un binario a una extension e inyeccion de entorno en terminales.
Tareas que JetBrains lanza al abrir el proyecto, File Watchers que corren al cambiar un archivo, Lisp que Emacs evalua al visitar uno, y el rc local de Vim.
Hooks de comando, comandos de entorno de Cursor y listas de permisos que quitan el aviso.
Servidores que se lanzan al iniciar la sesion, y los que bajan y ejecutan con npx o uvx sin lockfile.
Scripts de instalacion, codigo propio de pnpm y Yarn que corre al arrancar, aprobaciones de build y dependencias traidas fuera del registro.
Archivos de setup que son codigo ejecutable, backends de build locales e imports que ocurren solos al arrancar el interprete.
Build scripts, y los campos que sustituyen el compilador, el enlazador o el runner por algo del propio repositorio.
Hooks que se disparan al entrar en el directorio, y los shell hooks de un entorno de desarrollo de Nix.
initializeCommand, que corre en el anfitrion y no dentro del contenedor, mas el resto del ciclo de vida.
core.hooksPath redirigido, hooks vivos en el clon, scripts esperando a que alguien los conecte y entradas locales de pre-commit.
Como se ordena
Tres niveles, y solo uno rompe la build
Se ejecuta al abrir, al iniciar sesion de agente o al instalar. Sin que hagas nada mas. Es el unico que devuelve codigo de salida 1.
Se ejecuta, pero despues de un acto deliberado: instalar, depurar, commitear, construir el contenedor.
No se ejecuta solo, pero amplia la superficie o quita un aviso que habria mostrado algo.
Lo que no hace
No hace falta confiar en nosotros
Es una herramienta de seguridad que te pide correr un binario sobre tus repositorios. Esa desconfianza es sana, asi que la respuesta no es pedir confianza sino quitarle motivo.
Nunca ejecuta lo que encuentra. Lee y analiza, nada mas.
Nunca abre una conexion de red. Sin telemetria, sin consultas, sin actualizaciones automaticas.
Sin cuentas, sin servidor y sin plan de pago.
Codigo abierto desde el primer commit. Se puede leer entero.
Honestidad
Lo que no cubre, y por que
Onopen reporta rutas de ejecucion, no intenciones. Un postinstall que compila un modulo nativo y uno que se lleva tu .npmrc aparecen los dos: la herramienta te dice donde mirar, no juzga lo que encuentra.
Tampoco reporta cada comando de cada sistema de build, y es una decision, no un olvido. No inspecciona comandos de Gradle, CMake, Make o Docker, workflows de CI alojados, ni instrucciones en prosa como CLAUDE.md o AGENTS.md. Un Makefile ejecuta comandos porque para eso existe, asi que reportarlos dispararia sobre casi todos los repositorios que escanee, y un escaner que se dispara en el caso corriente ensena a saltarse su salida. Con la prosa es peor: no hay forma fiable de distinguir un CLAUDE.md que dice ejecuta los tests de uno que dice otra cosa, sin entender el texto.
Corre uno ahora
Sobre cualquier repositorio que tengas a mano. Tarda menos que leer esta pagina.
Ver el codigo