Guardrails para o Google Antigravity, feitos com as tuas próprias regras.

As regras da tua empresa chegam ao Antigravity logo após cada edição. O que ele nunca deve fazer fica bloqueado antes de correr.

npx -y @cybedefend/vibedefend@latest install

Criar uma conta gratuitaAntigravity 2.0 ou mais recenteLer a documentação

Google Antigravity está a escreverbilling/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 fica limitada ao tenant.

rules/data-access.md

Reembolsos acima de 500 € precisam de um segundo aprovador.

Aprovada uma vez por Sofia M.

Verificado antes do commit: limpo

Pronto em quatro passos.

  1. Executa um comandoEm qualquer terminal, no macOS, Linux ou Windows. Node 18.17 ou mais recente.
  2. Escolhe a região e inicia sessãoUE ou EUA. O teu browser abre-se para iniciares sessão, sem chave para colar.
  3. Seleciona o Google AntigravityO instalador encontra os agentes no teu computador e seleciona-os por ti.
  4. Programa como sempreUma vez, no Antigravity: abre Customizations, Installed, MCP Servers e clica em Authenticate ao lado de cybedefend.

Verifica quando quiseres: vibedefend status

O que o VibeDefend acrescenta ao Google Antigravity.

Regras servidas

Após a edição

Para cada edição, e cada comando shell que escreve ficheiros, as regras chegam ao Antigravity na chamada seguinte ao modelo: um passo depois da edição, antes de ele continuar.

Google Antigravity está a escreversrc/billing/cart-checkout.ts

const total = new Decimal128(cart.sum);
const rows = await db.query(
  "SELECT * FROM carts WHERE id = $1", [id]
);

Os montantes usam Decimal128, nunca Number.

Extraída de src/billing.ts:14

Qualquer consulta que misture dados do utilizador é parametrizada.

OWASP Top 10

Servidas no passo seguinte

Proteção de segredos

As leituras diretas de segredos são recusadas; o Google Antigravity recebe a referência gerida.

Google Antigravitywebhooks.ts

  1. cat .env | grep STRIPE

    Bloqueado: leitura direta de um segredo

  2. Em vez dissoprocess.env.STRIPE_WEBHOOK_SECRET

  3. npm test -- webhooks

    Os testes passam

Registado para a equipa

Controlo de ações

Comandos destrutivos, eliminações de esquema e caminhos protegidos são travados antes de correrem.

Google Antigravity

  1. rm -rf dist/

    Permitido: saída do build

  2. rm -rf .cache/

    Permitido: cache

  3. rm -rf ./storage/uploads

    Bloqueado: caminho protegido, ficheiros dos utilizadores

Registado para a equipa

Descobertas em direto

As descobertas de SAST, SCA, segredos, IaC e CI/CD, em direto na sessão.

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

No contexto do agente, em direto

As tuas perguntas.

O VibeDefend altera a minha configuração do Google Antigravity?
Acrescenta os seus hooks e regista o servidor MCP cybedefend, em ~/.gemini/config/hooks.json, ~/.gemini/config/mcp_config.json. Os teus hooks ficam onde estão: voltar a correr o instalador só substitui as entradas do VibeDefend.
O que é que sai da minha máquina?
A análise corre na região que escolheste ao instalar, UE ou EUA. A decisão de bloquear uma ação é tomada na tua máquina. Antes de uma alteração, o hook envia a parte do ficheiro que está a ser escrita, para encontrar as regras que se aplicam. A revisão da sessão envia os ficheiros que a sessão alterou. Ambos são analisados de passagem: não guardamos nada do teu código, só o registo das regras aplicadas e das ações bloqueadas. O teu token de autenticação fica no porta-chaves do teu sistema operativo.
De que versão do Google Antigravity preciso?
Google Antigravity 2.0 ou mais recente, e Node 18.17 ou mais recente. O instalador corre em macOS, Linux e Windows.
Tenho de associar cada repositório?
Não para os projetos importados do GitHub ou do GitLab: o VibeDefend lê o origin do repositório e encontra o projeto. Para qualquer outro repositório, corre vibedefend link uma vez. O comando escreve .cybedefend/config.json com o ID do projeto.
Como é que o desinstalo?
Corre vibedefend uninstall: remove todos os ficheiros que o VibeDefend instalou. Se instalaste o pacote globalmente, corre depois npm uninstall -g @cybedefend/vibedefend.
Porque é que o Antigravity responde Unauthorized depois da instalação?
O Antigravity não abre sozinho a autenticação da CybeDefend. Na app, abre Customizations, Installed, MCP Servers e clica em Authenticate ao lado de cybedefend; na CLI agy, corre /mcp, escolhe cybedefend e depois Authenticate.
Detalhes técnicos para o Antigravity
Servidor MCP
Disponível~/.gemini/config/mcp_config.json
Regras antes de cada alteração
Após a ediçãoPreToolUsePreInvocationPara cada edição, e cada comando shell que escreve ficheiros, as regras chegam ao Antigravity na chamada seguinte ao modelo: um passo depois da edição, antes de ele continuar.
Ações perigosas bloqueadas
DisponívelPreToolUseTodas as chamadas de ferramentas, na app, no IDE e na CLI agy. O agy --dangerously-skip-permissions não corre nenhum hook.
Regras carregadas no arranque
DisponívelSessionStart
Revisão no fim da sessão
DisponívelStop
Revisão das sessões longas
IndisponívelSem equivalenteO Antigravity não tem evento antes da compactação.
Lembrete a cada prompt
IndisponívelSem equivalenteNão disponível no Antigravity.

O que escreve para o Antigravity

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

E o runner dos hooks em ~/.cybedefend/. Os teus hooks ficam onde estão: voltar a correr o instalador só substitui as entradas do VibeDefend.

Inicia sessão uma vez no Antigravity: ele não abre sozinho a autenticação da CybeDefend. Na app, abre Customizations, Installed, MCP Servers e clica em Authenticate ao lado de cybedefend. Na CLI, corre /mcp, escolhe cybedefend e depois Authenticate. A app, o IDE e a CLI guardam cada um a sua própria sessão.

Um único ficheiro de hooks serve a app, o IDE e o agy: ~/.gemini/config/hooks.json, global, nunca por projeto. No Windows, uma pasta pessoal cujo caminho tem um espaço ainda não é suportada: o instalador avisa em vez de ligar um hook que nunca correria.

Algo não bate certo? O vibedefend status dá um relatório só de leitura, e o vibedefend doctor repara o que conseguir.