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
Windsurf 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.mdReembolsos acima de 500 € precisam de um segundo aprovador.
Aprovada uma vez por Sofia M.Verificado antes do commit: limpo
Pronto em quatro passos.
- Executa um comandoEm qualquer terminal, no macOS, Linux ou Windows. Node 18.17 ou mais recente.
- Escolhe a região e inicia sessãoUE ou EUA. O teu browser abre-se para iniciares sessão, sem chave para colar.
- Seleciona o WindsurfO instalador encontra os agentes no teu computador e seleciona-os por ti.
- Programa como sempreAbre o Windsurf: o VibeDefend corre ao lado dele.
O que o VibeDefend acrescenta ao Windsurf.
Regras servidas
Só escritas de ficheirosSó escritas de ficheiros: pre_write_code é o momento que o Windsurf expõe.
Windsurf 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:14Qualquer consulta que misture dados do utilizador é parametrizada.
OWASP Top 10Servidas antes da edição
Descobertas em direto
As descobertas de SAST, SCA, segredos, IaC e CI/CD, em direto na sessão.
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
No contexto do agente, em direto
Limites no Windsurf
- Proteção de segredosPelo .windsurfrules
- Controlo de açõesSó escritas de ficheiros
As tuas perguntas.
O VibeDefend altera a minha configuração do Windsurf?
~/.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?
De que versão do Windsurf preciso?
Tenho de associar cada repositório?
vibedefend link uma vez. O comando escreve .cybedefend/config.json com o ID do projeto.Como é que o desinstalo?
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?
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 ficheiros
pre_write_codeSó escritas de ficheiros: pre_write_code é o momento que o Windsurf expõe. - Ações perigosas bloqueadas
- Só escritas de ficheiros
pre_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 prompt
pre_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ível
post_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.