Dinoer

Lo que Dinoer no hace a sus espaldas

Cinco garantías, cada una con el documento que la respalda; y, para la garantía que no es absoluta, exactamente qué no cubre.

Usted está considerando dar a un pipeline de investigación acceso a sus credenciales y al tráfico saliente de su máquina. Es una decisión seria. Esto es en lo que se basa, con el archivo que lo impone cada vez — no nuestra palabra.

Dinoer nunca pone sus credenciales en una terminal

Nunca pasan por su shell, su historial de comandos ni los registros de Dinoer.

→ lib/repertoire_chiffre.py — cómo una credencial realmente llega a un formulario →

La misma regla se aplica dentro de evaluer: una acción de escenario que lleve 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, no auditado después de los hechos.

Por defecto, lo que escribe Dinoer se oculta. 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, a menos que solicite explícitamente lo contrario (--no-filtre-evaluer, que luego se informa en la propia salida JSON).

→ lib/sanitisation.py

Lo que esto no cubre: el agente que controla Dinoer tiene su propio acceso a su máquina. Si usted le da una terminal, puede leer su directorio montado como cualquier otro archivo. Dinoer protege la ruta que controla — no la que usted abre a su lado.

El corpus es lo que al modelo delegado se le permite abandonar

opencode.jsonc niega websearch/webfetch al modelo que redacta su informe — existe porque una ejecución real el 14 de agosto de 2026 detectó lo contrario: doce búsquedas en directo, invisibles en el texto final, que aportaron contenido que el corpus recopilado nunca contuvo. Verificado mediante la captura del flujo completo de eventos del modelo, no confiando en lo que devolvió.

→ opencode.jsonc, lib/modeles.py::invoquer_opencode()

Lo que esto no cubre: bash permanece permitido; los escenarios reales lo necesitan. Y un modelo denegado websearch ha alcanzado la web en funcionamiento a través de bash curl en una ejecución de verificación. Esta es la única garantía en esta página que no es absoluta, y se menciona como tal en lugar de redondearse al alza a uno.

No depende de dónde lo ejecutes. OpenCode lee opencode.jsonc del directorio desde el que se ejecuta, y el paquete .deb no instala ese archivo. Desde 1.0.1, invoquer_opencode() por lo tanto establece la misma denegación por sí mismo, en OPENCODE_CONFIG_CONTENT, combinada con cualquier valor que ya tuvieras. Medido el 25 de septiembre de 2026 con opencode debug config (OpenCode 1.18.32), al iniciarse desde /tmp con ese valor: websearch y webfetch son deny, bash sigue siendo allow. Sin él, desde el mismo directorio, los dos primeros son allow — por eso el valor se establece en cada llamada en lugar de dejarse al directorio.

Lo que Dinoer informa, no lo decide

pret_a_agir: false significa se percibió una fricción — una firma de WAF, una desviación de sesión, un límite de navegación. No significa me niego a funcionar. Dinoer informa lo que ha notado y le deja a usted la decisión.

La detección de WAF se basa en palabras clave y puede ser incorrecta. Se informa como un conteo, nunca se genera como una excepción que detiene la ejecución, y --ignorer-waf está ahí para cuando ha verificado y resultó ser incorrecto.

La distinción es más importante de lo que parece. Una herramienta que moraliza sobre el acceso se convierte en una herramienta que evitas, y una herramienta que la gente evita termina dejando de reportar cualquier cosa.

El agente no decide qué hace, con una excepción específica

Cada clic, cada pulsación de tecla, cada navegación que realiza el núcleo del navegador retenido se registra como una línea en un archivo de escenario. Esa parte de Dinoer ejecuta una lista; no la inventa.

→ scenarios/schema.json

La línea de investigación no es la misma afirmación. campagne.py delega un juicio interpretativo real a un modelo: si una página responde a una pregunta abierta, si dos páginas describen el mismo evento. Esa delegación es el punto de la línea de investigación, no una laguna en ella; pero eso significa que esta garantía, entendida literalmente, cubre el núcleo del navegador y no el paso de síntesis que está por encima. Expresarlo claramente en lugar de permitir que la formulación de la era RPA implique más de lo que ahora cubre.

Usted puede revisar todo después

Cada ejecución queda registrada en un registro de operaciones fechado, de solo adición — lo que se intentó, dónde, con qué resultado, etiquetado con la intención que lo motiva. Lo que hizo el pipeline, usted puede consultarlo — no solo el informe que le entrega.

→ journal.py, /var/log/dinoer/operations.jsonl

Qué sale de su máquina, y por cuál puerta

Tres cosas pueden, y cada una es su elección: las consultas enviadas a la instancia de SearXNG que usted configure, el texto recopilado enviado al modelo de OpenCode y una notificación enviada a un servidor ntfy (ntfy.sh a menos que configure otro). Sus credenciales no. La tabla completa, con el archivo detrás de cada línea, está en la página de arquitectura; el precio de la segunda se indica en decisiones técnicas.

Y lo que Dinoer no afirma:

No es más preciso que el escenario o la documentación que le proporcione. Uno mal redactado puede causar daños reales, a la velocidad de una máquina, y la garantía del corpus mencionada anteriormente cubre de dónde proviene una respuesta, no si la pregunta fue buena.