Lo que Diwall no hace a sus espaldas
Lo que Diwall garantiza, cada una con el archivo que la hace cumplir — y lo que ninguna de esas garantías cubre.
Está considerando dar un navegador a un agente. Es una decisión seria. Estas son las bases en las que se apoya, cada una con el archivo que la hace cumplir — no con nuestra palabra.
Diwall nunca pone sus credenciales en un terminal
Nunca pasan por su shell, su historial de comandos ni los registros de Diwall.
→ lib/repertoire_chiffre.py — cómo llega realmente una credencial a un formulario →
La misma regla vale dentro de evaluer: una acción de escenario que lleva un
valor en texto plano en un campo con aspecto de password/secret es
rechazada — action_secret_en_clair, verificado antes de que el escenario
llegue siquiera a Playwright, nunca auditado después.
Lo que Diwall escribe por sí mismo se expurga por defecto. Los valores de
retorno, las URL y los mensajes de error que pasan por la salida estándar o
el registro de operaciones se neutralizan salvo que usted pida
expresamente lo contrario (--no-filtre-evaluer, que entonces la propia salida
JSON señala). Las capturas y los archivos de evidencias se escriben con
600/700, nunca con los permisos predeterminados del sistema de archivos.
→ lib/sanitisation.py
Lo que esto no cubre: el agente que pilota Diwall tiene, por su parte, su propio acceso a su máquina. Si le da un terminal, puede leer su directorio cifrado montado como cualquier otro archivo. Diwall protege el camino que controla — no el que usted abre al lado.
Lo que Diwall señala, no lo decide
pret_a_agir: false significa se ha percibido una fricción — una firma de
WAF, una deriva de sesión, un tope de navegación. No significa me niego a
ejecutarme. Diwall señala lo que ha advertido y le deja a usted la decisión.
La detección de WAF se basa en palabras clave y puede equivocarse. Se informa
como un recuento, nunca se lanza como una excepción que detenga la ejecución, y
--ignorer-waf está ahí para el día en que usted lo haya comprobado y la detección se
haya equivocado.
La distinción importa más de lo que parece. Una herramienta que moraliza sobre el acceso se convierte en una herramienta que se esquiva, y una herramienta que se esquiva deja de señalar nada en absoluto.
El agente no decide lo que hace
Cada clic, cada pulsación, cada navegación es una línea que usted escribió en un archivo de escenario. Diwall ejecuta esa lista; no la inventa ni la completa.
→ scenarios/schema.json
Qué sale de su máquina, y por qué vía
Las capturas, los análisis y los resultados se escriben en el disco donde se ejecuta Diwall. Lo que sale de ese disco depende de quién los lea.
El modelo que pilota Diwall lee todo lo que se le muestra. La captura, el árbol de accesibilidad, las etiquetas Set-of-Mark y los resultados de evaluer son la salida de Diwall, escrita para que ese modelo la lea. Si el modelo está alojado, su proveedor recibe todo lo que la página mostró: datos, nombres, las tablas de una interfaz autenticada. Para una interfaz cuyo contenido no debe salir de su máquina, el modelo que pilota Diwall también tiene que ser local — cualquier modelo que pueda ejecutar un comando de shell puede pilotarlo.
Dos cosas nunca llegan a ese modelo. Las credenciales se resuelven en la memoria del proceso Playwright en el momento en que se escriben — nunca en el escenario, el shell, el registro ni una URL. Los campos de aspecto sensible (tipo password, o un nombre o id que sugiera una contraseña, un token, un secreto o un código de un solo uso) se difuminan en cada captura, y sus valores se eliminan del árbol de accesibilidad. Si alguno de los dos pasos falla, la salida JSON lo indica (capture_masquage_echoue, a11y_redaction_echouee), y un árbol de accesibilidad que no pudo ser expurgado se retiene en lugar de enviarse tal cual.
→ lib/repertoire_chiffre.py, shot.py
El propio Diwall envía algo al exterior en tres casos, cada uno tras una opción que usted activa.
diwall-shot --llm claudeenvía la captura utilizada porcliquer_visuela una API remota. Nunca es la opción predeterminada, y el módulo Pythonanthropicque necesita no se instala con Diwall: usted mismo lo añade. Sin la opción, el análisis de imágenes se ejecuta en su máquina —--llm local, una instancia de Ollama enlocalhost, conqwen3-vl:2b.diwall-watch --llm claude(desde la 1.24.2) envía a la misma API las dos capturas que compara, la de referencia y la actual, reducidas a 1568 píxeles en su lado más largo. Mismas condiciones: nunca es la opción predeterminada, el mismo módulo, que usted añade por su cuenta.diwall-watch --ntfy-urlenvía una notificación cuando detecta un cambio: la URL vigilada y una descripción del cambio, ambas expurgadas, al servidor ntfy que usted indicó.
→ lib/vision.py, watch.py
Puede revisarlo todo después
Cada ejecución produce una captura por paso y un registro fechado. Lo que el agente vio, usted puede mirarlo — no solo el resumen que le hace.
→ journal.py
Y por último, lo que Diwall no pretende
No es más prudente que el escenario que usted le da. Un escenario mal escrito causa daños reales, a velocidad de máquina.