Ir al contenido

Niveles de sensibilidad

Cada secreto lleva un nivel de sensibilidad. El nivel decide cómo puede entregarse un valor — directamente, solo tras aprobación, o jamás ante los ojos de uno.

NivelEntrega
lowEntrega directa + auditoría.
mediumEntrega directa + auditoría + una notificación visible.
highConfirmación atendida obligatoria (biometría / kovra approve) antes de la entrega.
inject-onlyNunca se revela. Solo se inyecta en un proceso hijo.

Se asigna un nivel al crear un secreto, y se cambia más tarde con kovra edit:

zsh
~/my-app % kovra add secret:dev/app/api-key --sensitivity high
Added dev/app/api-key (High).

Bajarlo de nuevo es un downgrade vigilado — en macOS aparece un prompt biométrico (Touch ID) antes de aplicarse:

zsh
~/my-app % kovra edit secret:dev/app/api-key --sensitivity medium
# high → medium is a downgrade: approve the Touch ID prompt to continue
Edited dev/app/api-key.

inject-only es el nivel cotidiano más fuerte: el valor puede fluir a través de una inyección hacia un proceso que lo necesita, pero nunca se devuelve a la terminal, a una UI ni a un agente — no existe un “mostrame esto” para un secreto inject-only.

Elevar la protección es gratis. Bajarla — por ejemplo highmedium — es un downgrade auditado que requiere una confirmación atendida antes de aplicarse. No se puede despojar a un secreto de su protección en silencio.

Un punto de confusión habitual: prod no es un nivel de sensibilidad. Es un entorno — el primer segmento de una coordenada. Interactúa con la sensibilidad de dos maneras específicas:

  1. Un secreto prod nace high. Al crear un secreto cuyo entorno es prod, kovra fuerza su nivel a high desde su nacimiento — nunca puede revelarse en silencio.
  2. El plaintext de prod nunca entra en el contexto de un agente de IA. Incluso un secreto prod revealable, incluso uno con downgrade, se rechaza en el canal del agente. Solo un reveal deliberado e iniciado por un humano en la CLI puede hacer aflorar el plaintext de prod.

Así que prod es un piso adicional encima de los niveles, atado a dónde vive el secreto y no a cuán protector se lo marcó.

Cuando se entrega un secreto, kovra aplica dos verificaciones separadas. Mantenerlas distintas es lo que permite que un secreto prod deliberadamente bajado de nivel se inyecte sin fricción mientras sigue contenido:

  • El gate de confirmación es solo por sensibilidad. Un secreto high requiere un bioProve antes de revelarse o inyectarse; la inyección de low / medium / inject-only procede sin prompt. Este gate no mira el entorno.
  • El gate de allowlist es para la inyección de high o prod. El ejecutable que recibe el valor debe estar en la allowlist de ejecutores — una contención impuesta por el wrapper, independiente del prompt de confirmación. Esto es adónde se le permite ir al valor, sin importar si saltó un prompt.

El resultado: un secreto prod con downgrade se inyecta sin un prompt biométrico (su nivel ya no es high) pero solo en un ejecutable de la allowlist (sigue siendo prod).

Cómo se encuentra cada nivel con cada superficie

Sección titulada «Cómo se encuentra cada nivel con cada superficie»

El mismo secreto se entrega de manera distinta según quién pregunte (el alcance del agente lo cubre en detalle):

  • CLI (uno, atendido) — el rango completo, con high gateado por un bioProve e inject-only que nunca se revela.
  • Dashboard (loopback) — nunca renderiza plaintext de high / inject-only en la página; esos se revelan vía la CLI.
  • MCP (el canal del agente) — nunca revela plaintext de high / prod / inject-only, y solo revela un secreto no-prod y no-high que haya sido habilitado explícitamente para reveal.