Ir al contenido

Intake iniciado por el agente

Aquí kovra invierte la vía habitual de creación: en lugar de que se cree un secreto y un agente lo consuma, el agente pide un secreto que necesita pero no tiene, y se cumple. El agente nombra solo la coordenada — nunca un valor — así que nada sensible pasa jamás por el contexto del modelo (I11/I14).

  1. El agente solicita. Sobre MCP llama a request_secret(coordinate, sensitivity, description). No se aporta ningún valor; el agente recibe de vuelta un id de solicitud. (En la terminal, kovra intake request hace lo mismo.)
  2. kovra la encola. La solicitud aterriza en el broker de intake como solo metadatos — una coordenada, una sensibilidad solicitada y la nota del solicitante (mostrada entre cercas como texto no confiable).
  3. Aflora ante el usuario. La solicitud pendiente aparece donde sea que se mire: un badge en la app de barra de menú de macOS, el Dashboard o kovra intake list.
  4. Se cumple fuera de banda. Se escribe el valor en una superficie que solo un humano puede invocar. kovra lo sella bajo la coordenada y limpia la solicitud. prod nace high (la solicitud no puede bajarlo), y cumplir un secreto high es una acción atendida resguardada por una bioProve (I16).
  5. El agente sigue adelante. Se entera de que el secreto ahora existe — nunca ve el valor.

Por qué es seguro — anti-phishing por construcción

Sección titulada «Por qué es seguro — anti-phishing por construcción»

El agente solo puede crear una solicitud (que incrementa el badge); nunca puede abrir la superficie de cumplimiento ni leer el valor de vuelta. Solo un humano invoca la ventana de entrada — el agente no tiene shell para abrirla, y un agente con prompt-injection no puede fabricar la solicitud que se ve, porque kovra la construye a partir de los campos almacenados, no del llamante. El valor va directo desde las pulsaciones de teclado al vault.

La app de barra de menú kovra-menulet es la vía más rápida. Muestra un badge con el conteo de solicitudes pendientes, y su menú las lista — seleccionar una abre una ventana nativa para verificar la coordenada e ingresar el valor. El mismo menú tiene un ítem “Open Dashboard…” que abre el Dashboard completo.

El menú del menulet de kovra: solicitudes de secreto pendientes, cada una con Fulfil, más un ítem Open Dashboard….

No hace trabajo de vault por sí mismo — lee el broker y lanza kovra intake fulfill <id> --window, de modo que la misma vía de código (y la misma guarda de Touch ID) corre tanto si se cumple desde el menú como desde la terminal.

Un ítem “Start at Login” en el mismo menú mantiene el menulet corriendo entre reinicios, así el badge siempre está para captar una solicitud — activalo una vez y macOS lo relanza en cada inicio de sesión.

La app de barra de menú es solo para macOS. En Windows no hay menulet — se cumplen las solicitudes pendientes desde el Dashboard o con kovra intake en la terminal (abajo). Ver Soporte de plataformas.

El Dashboard lista las solicitudes pendientes en su vista general. Se cumple una ahí mismo — se escribe el valor en la página loopback (solo el usuario puede, sobre 127.0.0.1) y kovra lo sella — o se descarta. Ver Cumplir solicitudes del agente.

zsh
~ % kovra intake list
1782229003-92888-0 secret:dev/openai/api-key [Medium/dev] — Agent needs OpenAI key…
~ % kovra intake fulfill 1782229003-92888-0
Value: ••••••••••••
Sealed dev/openai/api-key (Medium).

fulfill toma el valor de un prompt oculto, o de --stdin / --clipboard / --window (la ventana de entrada nativa que usa el menulet). kovra intake cancel <id> descarta una solicitud sin cumplirla. Ver la referencia de la CLI.

Si se está cableando un agente, request_secret es la herramienta a la que recurrir cuando falta un valor — nunca hay que pedir al usuario que pegue un secreto en el chat. Ver kovra sobre MCP y la referencia de herramientas MCP.