Guardrails para Windsurf, hechos con tus propias reglas.
Las reglas de tu empresa llegan a Windsurf antes de que escriba en un archivo. Una escritura que las incumple no llega a producirse.
npx -y @cybedefend/vibedefend@latest install
Windsurf está escribiendobilling/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 WindsurfEl instalador encuentra los agentes de tu equipo y los marca por ti.
- Programa como siempreAbre Windsurf: VibeDefend funciona a su lado.
Lo que VibeDefend añade a Windsurf.
Reglas servidas
Solo escriturasSolo escrituras de archivos: pre_write_code es el momento que expone Windsurf.
Windsurf está escribiendosrc/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
Hallazgos en vivo
Los hallazgos de SAST, SCA, secretos, IaC y CI/CD, en vivo en la sesión.
Windsurf
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 Windsurf
- Protección de secretosCon .windsurfrules
- Control de accionesSolo escrituras
Preguntas frecuentes.
¿VibeDefend modifica mi configuración de Windsurf?
~/.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 Windsurf 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.¿Por qué los Action Guards tienen límites en Windsurf?
pre_write_code de Windsurf puede bloquear escrituras de archivos, pero no lecturas, comandos de shell ni peticiones de red. Para esos casos, 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 Windsurf
- 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 expone Windsurf. - Acciones peligrosas bloqueadas
- Solo escrituras
pre_write_code.windsurfrulesLas escrituras se bloquean en firme. Para lecturas, comandos de shell y peticiones de red, 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_promptWindsurf no tiene 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 equivalenteWindsurf no tiene ningún evento previo a la compactación.
- Recordatorio en cada prompt
- No disponibleSin equivalenteNo disponible en Windsurf.
Lo que escribe para Windsurf
~/.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.
Windsurf expone menos momentos que los demás agentes. Las escrituras de archivos se bloquean en firme; las demás acciones 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.