Seguridad y secretos
This content is not available in your language yet.
Qué cubre esta página
- Cómo manejar secretos en el framework y en Purutos generados
- Qué riesgos cubren
.env,.gitignorey.env.example - Qué límites aplicar en IPC para reducir superficie de riesgo
- Qué revisar antes de publicar un repo Puruto
Principio base
Puruto asume una regla simple:
Los secretos viven en
.env, no en Git.
Esta regla aparece en las plantillas generadas, en los comentarios de .env.example y en reglas del framework (CLAUDE.md).
Patrón recomendado (framework y Purutos)
1. Versiona .env.example
Debe contener:
- nombres de variables
- comentarios
- valores de ejemplo/no sensibles
2. Mantén .env local
Debe contener:
- tokens reales
- rutas locales
- configuraciones específicas de tu máquina
3. Asegura .gitignore
El generador incluye .gitignore con .env y patrones comunes (Python, node_modules, etc.).
El validador además emite warning missing-gitignore si detecta .env sin .gitignore.
Secretos comunes por tipo de Puruto
puruto-telegram
Variables sensibles típicas:
PURUTO_TELEGRAM_BOT_TOKENPURUTO_TELEGRAM_DEFAULT_CHAT_ID(dato sensible, aunque no siempre secreto estricto)
Riesgo principal:
- publicar token del bot por error en commits, logs o capturas
puruto-gateway
Variable sensible:
PURUTO_GATEWAY_API_KEY
Riesgo principal:
- dejar el placeholder
changemeen producción - exponer el servicio sin rotar credenciales
puruto-cron
Suele manejar más rutas que secretos, pero puede tocar:
- rutas a
puruto-telegram - outboxes/notifications
Riesgo principal:
- registrar datos sensibles en
notifications/*.jsonlo artefactos de runs
Reglas operativas recomendadas
- Nunca pegues valores reales de
.enven issues o documentación. - Si compartes logs, redáctalos antes (tokens, chat IDs, API keys).
- Mantén
.env.examplesincronizado con el runtime real. - Revalida con
validate.pydespués de cambios estructurales. - Si cambias templates del framework, actualiza docs/tests del repo
puruto.
Seguridad en IPC (delegación)
Puruto no resuelve toda la seguridad del runtime, pero el scaffold IPC reduce riesgo con:
allowed_targetsallowed_actionsmax_hopsdefault_timeout_sec
Recomendaciones prácticas
- Empieza con
allowed_targets: []y abre solo lo necesario. - Restringe
allowed_actionspor target. - Mantén
max_hopsbajo para evitar cadenas difíciles de auditar. - No metas secretos en
InvocationRequest. - Usa
puruto-datapara compartir datos, no prompts con credenciales.
Antes de publicar un repo Puruto (checklist)
- Revisa
.gitignorey confirma que.envestá ignorado. - Verifica que
.env.exampleno contiene tokens reales. - Busca cadenas sospechosas:
rg -n "TOKEN=|API_KEY=|SECRET=|password" . --glob '!*.md'- Ejecuta
validate.py --json - Si el repo usa IPC, revisa
.puruto-ipc.json(allowlists y límites)
Qué hacer si ya subiste un secreto por error
- Rótalo inmediatamente (nuevo token/API key)
- Elimina el valor del repo (no basta con borrarlo localmente)
- Limpia historial si el riesgo lo requiere
- Actualiza
.env.exampley documentación para evitar que vuelva a ocurrir
Alcance y límites
Puruto no sustituye:
- un gestor de secretos
- controles de red/firewall
- auditoría de runtime
- hardening del agente o del proveedor del LLM
Sí ayuda a estandarizar buenas prácticas básicas de repos y configuración local.
Siguientes pasos
Última verificación
Contenido contrastado con /Users/pepetox/Documents/01-code/puruto/CLAUDE.md, generate.py, validate.py y templates .env.example/.gitignore del generador el 25 de febrero de 2026.