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.
Los cuatro niveles
Sección titulada «Los cuatro niveles»| Nivel | Entrega |
|---|---|
low | Entrega directa + auditoría. |
medium | Entrega directa + auditoría + una notificación visible. |
high | Confirmación atendida obligatoria (biometría / kovra approve) antes de la entrega. |
inject-only | Nunca 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:
~/my-app % kovra add secret:dev/app/api-key --sensitivity highAdded dev/app/api-key (High).PS C:\my-app> kovra add secret:dev/app/api-key --sensitivity highAdded dev/app/api-key (High).Bajarlo de nuevo es un downgrade vigilado — en macOS aparece un prompt biométrico (Touch ID) antes de aplicarse:
~/my-app % kovra edit secret:dev/app/api-key --sensitivity medium# high → medium is a downgrade: approve the Touch ID prompt to continueEdited dev/app/api-key.PS C:\my-app> kovra edit secret:dev/app/api-key --sensitivity medium# high → medium is a downgrade: approve the Windows Hello prompt to continueEdited 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.
Bajar un nivel es un acto vigilado
Sección titulada «Bajar un nivel es un acto vigilado»Elevar la protección es gratis. Bajarla — por ejemplo high → medium — 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.
prod es un entorno, no un nivel
Sección titulada «prod es un entorno, no un nivel»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:
- Un secreto
prodnacehigh. Al crear un secreto cuyo entorno esprod, kovra fuerza su nivel ahighdesde su nacimiento — nunca puede revelarse en silencio. - El plaintext de
prodnunca entra en el contexto de un agente de IA. Incluso un secretoprodrevealable, 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 deprod.
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ó.
Dos gates independientes
Sección titulada «Dos gates independientes»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
highrequiere un bioProve antes de revelarse o inyectarse; la inyección delow/medium/inject-onlyprocede sin prompt. Este gate no mira el entorno. - El gate de allowlist es para la inyección de
highoprod. 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
highgateado por un bioProve einject-onlyque nunca se revela. - Dashboard (loopback) — nunca renderiza plaintext de
high/inject-onlyen 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-prody no-highque haya sido habilitado explícitamente para reveal.