Des garde-fous pour Windsurf, tirés de vos propres règles.
Vos règles d'entreprise arrivent dans Windsurf avant chaque écriture de fichier. Une écriture qui les enfreint n'aboutit jamais.
npx -y @cybedefend/vibedefend@latest install
Windsurf écritbilling/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); }
Chaque requête est cloisonnée par tenant.
rules/data-access.mdUn remboursement de plus de 500 € demande un second validateur.
Approuvée une fois par Sofia M.Vérifié avant le commit : rien à corriger
Prêt en quatre étapes.
- Lancez une commandeDans n'importe quel terminal, sur macOS, Linux ou Windows. Node 18.17 ou plus récent.
- Choisissez la région, connectez-vousUE ou US. Votre navigateur s'ouvre pour la connexion, aucune clé à coller.
- Cochez WindsurfL'installeur trouve les agents présents sur votre machine et les coche pour vous.
- Codez comme d'habitudeOuvrez Windsurf : VibeDefend tourne à ses côtés.
Ce que VibeDefend ajoute à Windsurf.
Règles servies
Écritures seulementÉcritures de fichiers seulement : pre_write_code est le moment qu'expose Windsurf.
Windsurf écritsrc/billing/cart-checkout.ts
const total = new Decimal128(cart.sum); const rows = await db.query( "SELECT * FROM carts WHERE id = $1", [id] );
Les montants utilisent Decimal128, jamais Number.
Tirée de src/billing.ts:14Toute requête qui mêle une saisie utilisateur est paramétrée.
OWASP Top 10Servies avant la modification
Alertes en direct
Les alertes SAST, SCA, secrets, IaC et CI/CD, en direct dans la session.
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
Dans le contexte de l'agent, en direct
Limites dans Windsurf
- Garde-fou des secretsPar .windsurfrules
- Garde-fou des actionsÉcritures seulement
Vos questions.
VibeDefend modifie-t-il ma configuration Windsurf ?
~/.codeium/windsurf/hooks.json, ~/.codeium/windsurf/mcp_config.json, .windsurfrules. Vos propres hooks restent : relancer l'installeur ne remplace que les entrées de VibeDefend.Qu'est-ce qui quitte ma machine ?
Quelle version de Windsurf faut-il ?
Faut-il relier chaque dépôt ?
vibedefend link une fois. La commande écrit .cybedefend/config.json avec l'identifiant du projet.Comment le retirer ?
vibedefend uninstall : la commande retire chaque fichier installé par VibeDefend. Si vous avez installé le paquet globalement, lancez ensuite npm uninstall -g @cybedefend/vibedefend.Pourquoi les Action Guards sont-ils limités dans Windsurf ?
pre_write_code de Windsurf peut bloquer les écritures de fichiers, pas les lectures, les commandes shell ni les requêtes réseau. Pour celles-ci, VibeDefend ajoute à .windsurfrules un extrait qui demande à l'agent d'appeler d'abord cybe_guards_check par MCP. Cela tient si le modèle suit son fichier de règles.Détails techniques pour Windsurf
- Serveur MCP
- Disponible
~/.codeium/windsurf/mcp_config.json - Règles avant chaque modification
- Écritures seulement
pre_write_codeÉcritures de fichiers seulement : pre_write_code est le moment qu'expose Windsurf. - Actions dangereuses bloquées
- Écritures seulement
pre_write_code.windsurfrulesLes écritures sont bloquées net. Pour les lectures, les commandes shell et les requêtes réseau, un extrait de .windsurfrules demande à l'agent d'appeler d'abord cybe_guards_check : cela tient si le modèle suit son fichier de règles. - Règles chargées au démarrage
- À chaque prompt
pre_user_promptWindsurf n'a pas d'événement de début de session. VibeDefend utilise pre_user_prompt, qui se déclenche à chaque tour ; la vérification est légère et répond aussitôt quand rien n'est en attente. - Revue en fin de session
- Disponible
post_cascade_responseTourne à la fin de chaque réponse, une fois le seuil de modifications franchi. - Revue des longues sessions
- Non disponiblePas d'équivalentWindsurf n'a pas d'événement avant la compaction.
- Rappel à chaque prompt
- Non disponiblePas d'équivalentNon disponible dans Windsurf.
Ce qu'il écrit pour Windsurf
~/.codeium/windsurf/hooks.json~/.codeium/windsurf/mcp_config.json.windsurfrules
Plus le runner des hooks dans ~/.cybedefend/. Vos propres hooks restent : relancer l'installeur ne remplace que les entrées de VibeDefend.
Lancez l'installeur à la racine de votre dépôt : l'extrait .windsurfrules est écrit dans le dossier d'où vous le lancez.
Windsurf expose moins de moments que les autres agents. Les écritures de fichiers sont bloquées net ; les autres actions reposent sur l'agent qui suit .windsurfrules.
Quelque chose cloche ? vibedefend status donne un état en lecture seule, et vibedefend doctor répare ce qu'il peut.