Guardrails para o Cursor, feitos com as tuas próprias regras.
As regras da tua empresa chegam ao Cursor antes de cada alteração. O que ele nunca deve fazer fica bloqueado antes de correr.
npx -y @cybedefend/vibedefend@latest install
Cursor 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 CursorO instalador encontra os agentes no teu computador e seleciona-os por ti.
- Programa como sempreAbre o Cursor 1.7 ou mais recente: o VibeDefend corre ao lado dele.
O que o VibeDefend acrescenta ao Cursor.
Regras servidas
As tuas regras de negócio e de segurança chegam ao Cursor antes de cada edição.
Cursor 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
Proteção de segredos
As leituras diretas de segredos são recusadas; o Cursor recebe a referência gerida.
Cursorwebhooks.ts
cat .env | grep STRIPEBloqueado: leitura direta de um segredo
Em vez disso
process.env.STRIPE_WEBHOOK_SECRETnpm test -- webhooksOs 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.
Cursor
rm -rf dist/Permitido: saída do build
rm -rf .cache/Permitido: cache
rm -rf ./storage/uploadsBloqueado: 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.
Cursor
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
As tuas perguntas.
O VibeDefend altera a minha configuração do Cursor?
~/.cursor/hooks.json, ~/.cursor/mcp.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?
De que versão do Cursor 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.Regras do Cursor ou VibeDefend: qual é a diferença?
Detalhes técnicos para o Cursor
- Servidor MCP
- Disponível
~/.cursor/mcp.json - Regras antes de cada alteração
- Disponível
preToolUseEdit|Write|MultiEdit - Ações perigosas bloqueadas
- Disponível
preToolUse - Regras carregadas no arranque
- Disponível
sessionStart - Revisão no fim da sessão
- Disponível
stop - Revisão das sessões longas
- Disponível
preCompact - Lembrete a cada prompt
- IndisponívelSem equivalenteNão disponível no Cursor.
O que escreve para o Cursor
~/.cursor/hooks.json~/.cursor/mcp.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.
Cursor 1.7 ou mais recente: as versões anteriores ignoram o hooks.json. Se o comando cursor não estiver no teu PATH, o instalador não consegue ler a versão e liga os hooks na mesma, por isso confirma-a tu.
Um hook que falha não te bloqueia. Só um veredicto de recusa do guard trava uma chamada de ferramenta.
Algo não bate certo? O vibedefend status dá um relatório só de leitura, e o vibedefend doctor repara o que conseguir.