Des garde-fous pour Devin Desktop, tirés de vos propres règles.
Vos règles d'entreprise arrivent dans Devin Desktop, l'ancien Windsurf, avant chaque écriture de fichier. Une écriture qui les enfreint n'aboutit jamais.
npx -y @cybedefend/vibedefend@latest installDevin Desktop écrit
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); }
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 Devin DesktopL'installeur trouve les agents présents sur votre machine et les coche pour vous.
- Codez comme d'habitudeOuvrez Devin Desktop : VibeDefend tourne à ses côtés.
Ce que VibeDefend ajoute à Devin Desktop.
Règles servies
Écritures seulementÉcritures de fichiers seulement : pre_write_code est le moment qu'exposent les hooks Windsurf.
Devin Desktop écrit
src/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
Garde-fou des secrets
Les lectures brutes de secrets sont refusées ; Devin Desktop reçoit la référence gérée à la place.
Devin Desktop
webhooks.ts
cat .env | grep STRIPEBloqué : lecture brute d'un secret
À la place
process.env.STRIPE_WEBHOOK_SECRETnpm test -- webhooksLes tests passent
Consigné pour l'équipe
Garde-fou des actions
Commandes destructrices, suppressions de schéma, chemins protégés : arrêtés avant de s'exécuter.
Devin Desktop
rm -rf dist/Autorisé : sortie de build
rm -rf .cache/Autorisé : cache
rm -rf ./storage/uploadsBloqué : chemin protégé, fichiers des utilisateurs
Consigné pour l'équipe
Alertes en direct
Les alertes SAST, SCA, secrets, IaC et CI/CD, en direct dans la session.
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
Dans le contexte de l'agent, en direct
Limites dans Devin Desktop
- Outils MCP et requêtes webPar .windsurfrules
Vos questions.
VibeDefend modifie-t-il ma configuration Devin Desktop ?
~/.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 Devin Desktop 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.Jusqu'où vont les Action Guards dans Devin Desktop ?
pre_write_code, pre_read_code et pre_run_command permettent à VibeDefend de bloquer net les écritures et lectures de fichiers et les commandes shell. Ces hooks n'ont pas d'événement pour les requêtes web et ne filtrent pas les appels d'outils MCP : pour ceux-là, 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 Devin Desktop
- 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'exposent les hooks Windsurf. - Actions dangereuses bloquées
- Écritures, lectures, shell
pre_write_codepre_read_codepre_run_commandLes écritures et lectures de fichiers et les commandes shell sont bloquées net. Pour les outils MCP et les requêtes web, 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_promptLes hooks Windsurf n'ont 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'équivalentLes hooks Windsurf n'ont pas d'événement avant la compaction.
- Rappel à chaque prompt
- Non disponiblePas d'équivalentNon disponible dans Devin Desktop.
Ce qu'il écrit pour Devin Desktop
~/.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.
Les hooks Windsurf exposent moins de moments que les autres agents. Les écritures et lectures de fichiers et les commandes shell sont bloquées net ; les outils MCP et les requêtes web 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.