antrophiclove
← Kütüphaneye dön
0

Üretim veritabanına yazmayı engelleyen hook

Claude yanlışlıkla canlı veritabanına DROP/DELETE/TRUNCATE çalıştırmasın diye komutu çalışmadan önce durduran kanca. CLAUDE.md'ye 'dikkatli ol' yazmaktan farkı: bu, Claude'un kararından bağımsız çalışır.

yazan kuscubasiece·8 Eylül 2026

Kaynak: Claude Code dokümantasyonu

Kurulum
curl -sL https://www.antrophiclove.com/api/kaynak/uretim-veritabanina-yazmayi-engelleyen-hook/raw

Bu içerik mevcut dosyaya elle harmanlanmalı: .claude/settings.json

.claude/settings.json

{ "hooks": { "PreToolUse": [ { "matcher": "Bash", "hooks": [ { "type": "command", "command": "${CLAUDE_PROJECT_DIR}/.claude/hooks/db-guard.sh", "statusMessage": "Veritabanı komutu denetleniyor..." } ] } ] } }

.claude/hooks/db-guard.sh (chmod +x)

#!/bin/bash CMD=$(jq -r '.tool_input.command // ""')

Canlı bağlantı dizesi geçiyor mu?

if echo "$CMD" | grep -qiE '(prod|production|live)[-_.]?(db|database)|@db.[a-z0-9]+.supabase.co|amazonaws.com:5432'; then

Yıkıcı ifade var mı?

if echo "$CMD" | grep -qiE '\b(drop|truncate|delete from|alter table .* drop)\b'; then jq -n '{ hookSpecificOutput: { hookEventName: "PreToolUse", permissionDecision: "deny", permissionDecisionReason: "Canlı veritabanında yıkıcı ifade engellendi. Önce staging kopyasında dene." } }' exit 0 fi

Yıkıcı değil ama yine de canlıya dokunuyor: onay iste

jq -n '{ hookSpecificOutput: { hookEventName: "PreToolUse", permissionDecision: "ask", permissionDecisionReason: "Bu komut canlı veritabanına bağlanıyor." } }' exit 0 fi

exit 0 # karar yok, normal izin akışı işler

Not

Hook kararı izin kurallarını baypas etmez: eşleşen bir deny kuralı, hook "allow" dese bile komutu durdurur.