Guardrails para Devin Desktop, hechos con tus propias reglas.
Las reglas de tu empresa llegan a Devin Desktop, el antiguo Windsurf, antes de que escriba en un archivo. Una escritura que las incumple no llega a producirse.
npx -y @cybedefend/vibedefend@latest installDevin Desktop está escribiendo
billing/refund.ts
export async function refund(req: Request) { const { id, amount } = await req.json(); const invoice = await db.invoices.find({ id, tenant: req.tenant, }); if (amount > 500) await approvals.second(invoice); return payments.refund(invoice, amount); }
Cada consulta se limita al tenant.
rules/data-access.mdLos reembolsos de más de 500 € necesitan un segundo aprobador.
Aprobada una vez por Sofia M.Revisado antes del commit: limpio
Listo en cuatro pasos.
- Ejecuta un comandoEn cualquier terminal, en macOS, Linux o Windows. Node 18.17 o posterior.
- Elige la región e inicia sesiónUE o EE. UU. Tu navegador se abre para iniciar sesión, sin clave que pegar.
- Marca Devin DesktopEl instalador encuentra los agentes de tu equipo y los marca por ti.
- Programa como siempreAbre Devin Desktop: VibeDefend funciona a su lado.
Lo que VibeDefend añade a Devin Desktop.
Reglas servidas
Solo escriturasSolo escrituras de archivos: pre_write_code es el momento que exponen los hooks de Windsurf.
Devin Desktop está escribiendo
src/billing/cart-checkout.ts
const total = new Decimal128(cart.sum); const rows = await db.query( "SELECT * FROM carts WHERE id = $1", [id] );
Los importes usan Decimal128, nunca Number.
Extraída de src/billing.ts:14Toda consulta que mezcla datos del usuario va parametrizada.
OWASP Top 10Servidas antes de la edición
Protección de secretos
Las lecturas directas de secretos se rechazan; Devin Desktop recibe la referencia gestionada.
Devin Desktop
webhooks.ts
cat .env | grep STRIPEBloqueado: lectura directa de un secreto
En su lugar
process.env.STRIPE_WEBHOOK_SECRETnpm test -- webhooksLos tests pasan
Registrado para el equipo
Control de acciones
Comandos destructivos, borrados de esquema y rutas protegidas se detienen antes de ejecutarse.
Devin Desktop
rm -rf dist/Permitido: salida del build
rm -rf .cache/Permitido: caché
rm -rf ./storage/uploadsBloqueado: ruta protegida, archivos de los usuarios
Registrado para el equipo
Hallazgos en vivo
Los hallazgos de SAST, SCA, secretos, IaC y CI/CD, en vivo en la sesión.
Devin Desktop
SAST
src/db/users.repo.ts:42SQL injection
SCA
package.jsonlodash 4.17.20, CVE-2021-23337
Secrets
config/prod.ymlAWS access key
IaC
infra/main.tfS3 bucket public-read
CI/CD
.github/workflows/deploy.ymlpull_request_target
En el contexto del agente, en vivo
Límites en Devin Desktop
- Herramientas MCP y peticiones webCon .windsurfrules
Preguntas frecuentes.
¿VibeDefend modifica mi configuración de Devin Desktop?
~/.codeium/windsurf/hooks.json, ~/.codeium/windsurf/mcp_config.json, .windsurfrules. Tus propios hooks se mantienen: volver a ejecutar el instalador solo sustituye las entradas de VibeDefend.¿Qué sale de mi máquina?
¿Qué versión de Devin Desktop necesito?
¿Tengo que vincular cada repositorio?
vibedefend link una vez. El comando escribe .cybedefend/config.json con el ID del proyecto.¿Cómo lo desinstalo?
vibedefend uninstall: elimina todos los archivos que instaló VibeDefend. Si instalaste el paquete de forma global, ejecuta después npm uninstall -g @cybedefend/vibedefend.¿Hasta dónde llegan los Action Guards en Devin Desktop?
pre_write_code, pre_read_code y pre_run_command permiten a VibeDefend bloquear en firme escrituras y lecturas de archivos y comandos de shell. Estos hooks no tienen evento para las peticiones web y no filtran las llamadas a herramientas MCP: para esas, VibeDefend añade a .windsurfrules un fragmento que pide al agente que llame antes a cybe_guards_check por MCP. Se cumple siempre que el modelo siga su archivo de reglas.Detalles técnicos para Devin Desktop
- Servidor MCP
- Disponible
~/.codeium/windsurf/mcp_config.json - Reglas antes de cada edición
- Solo escrituras
pre_write_codeSolo escrituras de archivos: pre_write_code es el momento que exponen los hooks de Windsurf. - Acciones peligrosas bloqueadas
- Escrituras, lecturas, shell
pre_write_codepre_read_codepre_run_commandLas escrituras y lecturas de archivos y los comandos de shell se bloquean en firme. Para herramientas MCP y peticiones web, un fragmento de .windsurfrules pide al agente que llame antes a cybe_guards_check: se cumple siempre que el modelo siga su archivo de reglas. - Reglas cargadas al inicio
- En cada prompt
pre_user_promptLos hooks de Windsurf no tienen evento de arranque de sesión. VibeDefend usa pre_user_prompt, que se dispara en cada turno; la comprobación es ligera y responde al instante cuando no hay nada pendiente. - Revisión al final de la sesión
- Disponible
post_cascade_responseSe ejecuta al final de cada respuesta, una vez superado el umbral de ediciones. - Revisión de las sesiones largas
- No disponibleSin equivalenteLos hooks de Windsurf no tienen ningún evento previo a la compactación.
- Recordatorio en cada prompt
- No disponibleSin equivalenteNo disponible en Devin Desktop.
Lo que escribe para Devin Desktop
~/.codeium/windsurf/hooks.json~/.codeium/windsurf/mcp_config.json.windsurfrules
Además, el runner de los hooks en ~/.cybedefend/. Tus propios hooks se mantienen: volver a ejecutar el instalador solo sustituye las entradas de VibeDefend.
Ejecuta el instalador desde la raíz de tu repositorio: el fragmento de .windsurfrules se escribe en la carpeta desde la que lo ejecutas.
Los hooks de Windsurf exponen menos momentos que los demás agentes. Las escrituras y lecturas de archivos y los comandos de shell se bloquean en firme; las herramientas MCP y las peticiones web dependen de que el agente siga .windsurfrules.
¿Algo no va bien? vibedefend status da un informe de solo lectura, y vibedefend doctor repara lo que puede.