Des garde-fous pour Google Antigravity, tirés de vos propres règles.

Vos règles d'entreprise arrivent dans Antigravity juste après chaque édition. Ce qu'il ne doit jamais faire est bloqué avant de s'exécuter.

npx -y @cybedefend/vibedefend@latest install

Créer un compte gratuitAntigravity 2.0 ou plus récentLire la documentation

Google Antigravity é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.md

Un 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.

  1. Lancez une commandeDans n'importe quel terminal, sur macOS, Linux ou Windows. Node 18.17 ou plus récent.
  2. Choisissez la région, connectez-vousUE ou US. Votre navigateur s'ouvre pour la connexion, aucune clé à coller.
  3. Cochez Google AntigravityL'installeur trouve les agents présents sur votre machine et les coche pour vous.
  4. Codez comme d'habitudeUne fois, dans Antigravity : ouvrez Customizations, Installed, MCP Servers et cliquez sur Authenticate à côté de cybedefend.

Vérifiez à tout moment : vibedefend status

Ce que VibeDefend ajoute à Google Antigravity.

Règles servies

Après l'édition

Pour chaque édition, et chaque commande shell qui écrit des fichiers, les règles arrivent dans Antigravity à son appel de modèle suivant : une étape après l'édition, avant qu'il ne continue.

Google Antigravity é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:14

Toute requête qui mêle une saisie utilisateur est paramétrée.

OWASP Top 10

Servies à l'étape suivante

Garde-fou des secrets

Les lectures brutes de secrets sont refusées ; Google Antigravity reçoit la référence gérée à la place.

Google Antigravitywebhooks.ts

  1. cat .env | grep STRIPE

    Bloqué : lecture brute d'un secret

  2. À la placeprocess.env.STRIPE_WEBHOOK_SECRET

  3. npm test -- webhooks

    Les 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.

Google Antigravity

  1. rm -rf dist/

    Autorisé : sortie de build

  2. rm -rf .cache/

    Autorisé : cache

  3. rm -rf ./storage/uploads

    Bloqué : 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.

Google Antigravity

  1. SASTsrc/db/users.repo.ts:42

    SQL injection

  2. SCApackage.json

    lodash 4.17.20, CVE-2021-23337

  3. Secretsconfig/prod.yml

    AWS access key

  4. IaCinfra/main.tf

    S3 bucket public-read

  5. CI/CD.github/workflows/deploy.yml

    pull_request_target

Dans le contexte de l'agent, en direct

Vos questions.

VibeDefend modifie-t-il ma configuration Google Antigravity ?
Il ajoute ses hooks et enregistre le serveur MCP cybedefend, dans ~/.gemini/config/hooks.json, ~/.gemini/config/mcp_config.json. Vos propres hooks restent : relancer l'installeur ne remplace que les entrées de VibeDefend.
Qu'est-ce qui quitte ma machine ?
L'analyse tourne dans la région choisie à l'installation, UE ou US. La décision de bloquer une action est prise sur votre machine. Avant une modification, le hook envoie la partie du fichier en cours d'écriture, pour trouver les règles qui s'appliquent. La revue de fin de session envoie les fichiers modifiés pendant la session. Les deux sont analysés au passage : nous ne gardons rien de votre code, seulement la trace des règles servies et des actions refusées. Votre jeton de connexion reste dans le trousseau de votre système.
Quelle version de Google Antigravity faut-il ?
Google Antigravity 2.0 ou plus récent, et Node 18.17 ou plus récent. L'installeur tourne sous macOS, Linux et Windows.
Faut-il relier chaque dépôt ?
Pas pour les projets importés depuis GitHub ou GitLab : VibeDefend lit l'origin du dépôt et retrouve le projet. Pour tout autre dépôt, lancez vibedefend link une fois. La commande écrit .cybedefend/config.json avec l'identifiant du projet.
Comment le retirer ?
Lancez 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 Antigravity répond-il Unauthorized après l'installation ?
Antigravity n'ouvre pas la connexion CybeDefend de lui-même. Dans l'app, ouvrez Customizations, Installed, MCP Servers et cliquez sur Authenticate à côté de cybedefend ; dans le CLI agy, lancez /mcp, choisissez cybedefend, puis Authenticate.
Détails techniques pour Antigravity
Serveur MCP
Disponible~/.gemini/config/mcp_config.json
Règles avant chaque modification
Après l'éditionPreToolUsePreInvocationPour chaque édition, et chaque commande shell qui écrit des fichiers, les règles arrivent dans Antigravity à son appel de modèle suivant : une étape après l'édition, avant qu'il ne continue.
Actions dangereuses bloquées
DisponiblePreToolUseChaque appel d'outil, dans l'app, l'IDE et le CLI agy. agy --dangerously-skip-permissions ne lance aucun hook.
Règles chargées au démarrage
DisponibleSessionStart
Revue en fin de session
DisponibleStop
Revue des longues sessions
Non disponiblePas d'équivalentAntigravity n'a pas d'événement avant la compaction.
Rappel à chaque prompt
Non disponiblePas d'équivalentNon disponible dans Antigravity.

Ce qu'il écrit pour Antigravity

  • ~/.gemini/config/hooks.json
  • ~/.gemini/config/mcp_config.json

Plus le runner des hooks dans ~/.cybedefend/. Vos propres hooks restent : relancer l'installeur ne remplace que les entrées de VibeDefend.

Connectez-vous une fois dans Antigravity : il n'ouvre pas la connexion CybeDefend de lui-même. Dans l'app, ouvrez Customizations, Installed, MCP Servers et cliquez sur Authenticate à côté de cybedefend. Dans le CLI, lancez /mcp, choisissez cybedefend, puis Authenticate. L'app, l'IDE et le CLI gardent chacun leur propre connexion.

Un seul fichier de hooks sert l'app, l'IDE et agy : ~/.gemini/config/hooks.json, global, jamais par projet. Sous Windows, un dossier personnel dont le chemin contient un espace n'est pas encore pris en charge : l'installeur le signale plutôt que de brancher un hook qui ne tournerait jamais.

Quelque chose cloche ? vibedefend status donne un état en lecture seule, et vibedefend doctor répare ce qu'il peut.