Webinar em inglêsWebinar com Jason Lee, quarta, 14/10Your newest insider is an AI agent.Jason LeeFormer CISO, Zoom & SplunkInscreva-se

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

As regras da tua empresa chegam ao Windsurf antes de cada escrita num ficheiro. O código que as viola nunca chega a ser escrito.

npx -y @cybedefend/vibedefend@latest install

Criar uma conta gratuitaQualquer versão recente do WindsurfLer a documentação

WindsurfWindsurf 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 WindsurfO instalador encontra os agentes no teu computador e seleciona-os por ti.
  4. Programa como sempreAbre o Windsurf: o VibeDefend corre ao lado dele.

Verifica quando quiseres: vibedefend status

O que o VibeDefend acrescenta ao Windsurf.

Regras servidas

Só escritas de ficheiros

Só escritas de ficheiros: pre_write_code é o momento que o Windsurf expõe.

WindsurfWindsurf 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 antes da edição

Descobertas em direto

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

WindsurfWindsurf

  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

Limites no Windsurf

  • Proteção de segredosAs leituras não são bloqueadas à força: um excerto do .windsurfrules pede ao Windsurf que as verifique primeiro.Pelo .windsurfrules
  • Controlo de açõesAs escritas de ficheiros são bloqueadas à força. Os comandos de shell dependem de o Windsurf seguir o .windsurfrules.Só escritas de ficheiros

As tuas perguntas.

O VibeDefend altera a minha configuração do Windsurf?
Acrescenta os seus hooks e regista o servidor MCP cybedefend, em ~/.codeium/windsurf/hooks.json, ~/.codeium/windsurf/mcp_config.json, .windsurfrules. 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. O teu token de autenticação fica no porta-chaves do teu sistema operativo.
De que versão do Windsurf preciso?
Uma versão recente do Windsurf, 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 os Action Guards são limitados no Windsurf?
O hook pre_write_code do Windsurf consegue bloquear escritas de ficheiros, mas não leituras, comandos shell nem pedidos de rede. Para esses, o VibeDefend acrescenta ao .windsurfrules um excerto que pede ao agente que chame primeiro o cybe_guards_check através do MCP. Funciona quando o modelo segue o seu ficheiro de regras.
Detalhes técnicos para o Windsurf
Servidor MCP
Disponível~/.codeium/windsurf/mcp_config.json
Regras antes de cada alteração
Só escritas de ficheirospre_write_codeSó escritas de ficheiros: pre_write_code é o momento que o Windsurf expõe.
Ações perigosas bloqueadas
Só escritas de ficheirospre_write_code.windsurfrulesAs escritas são mesmo bloqueadas. Para leituras, comandos shell e pedidos de rede, um excerto no .windsurfrules pede ao agente que chame primeiro o cybe_guards_check: funciona quando o modelo segue o seu ficheiro de regras.
Regras carregadas no arranque
A cada promptpre_user_promptO Windsurf não tem evento de início de sessão. O VibeDefend usa o pre_user_prompt, que dispara a cada turno; a verificação é leve e responde de imediato quando não há nada pendente.
Revisão no fim da sessão
Disponívelpost_cascade_responseCorre no fim de cada resposta, assim que se ultrapassa o limiar de alterações.
Revisão das sessões longas
IndisponívelSem equivalenteO Windsurf não tem evento antes da compactação.
Lembrete a cada prompt
IndisponívelSem equivalenteNão disponível no Windsurf.

O que escreve para o Windsurf

  • ~/.codeium/windsurf/hooks.json
  • ~/.codeium/windsurf/mcp_config.json
  • .windsurfrules

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.

Corre o instalador na raiz do teu repositório: o excerto do .windsurfrules é escrito na pasta a partir da qual o corres.

O Windsurf expõe menos momentos do que os outros agentes. As escritas de ficheiros são mesmo bloqueadas; as outras ações dependem de o agente seguir o .windsurfrules.

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