Güvenlik bariyeri olarak kurallar
Onaylanmış bir engelleme kalıbı taşıyan bir Pathrule kuralı, kurala aykırı bir değişikliği daha uygulanmadan nasıl durdurabilir; diğer tüm kurallar ise yalnızca bağlam olarak eşlik eder.
Bu sayfada
Pathrule'da bir kural, asistanın sonradan okuyacağı bir not değildir. Asistan işe başlamadan önce gelen bir güvenlik bariyeridir. Dokümantasyonun çoğu, bir şey yayına çıktıktan sonra neyin yanlış gittiğini anlatır. Bir güvenlik bariyeri ise değişikliği daha uygulanmadan durdurabilir.
Bu sayfa, bir turu bilgilendiren bağlam ile bir turu engelleyebilen kural arasındaki farkı açıklar. Hook'ların bağlamı nasıl ilettiğinin ayrıntıları için önce Hook'lar nasıl çalışır sayfasını okuyun. Bu sayfa ise o bağlam yerine oturduktan sonra katı bir kuralın ne yaptığıyla ilgilidir.
Pull sorar. Push kendiliğinden gelir.
Eski model pull modelidir. Asistan herhangi bir şeyi düzenlemeden önce kurallarınızı sormayı hatırlamalı, bir araç çağırmalı ve sonucu okumalıdır. Unutursa körlemesine düzenleme yapar, sorunu da siz incelemede fark edersiniz.
Hook modeli push modelidir. Claude Code ve Codex'te bağlam, siz bir prompt gönderdiğinizde ve asistan bir aracı kullanmadan hemen önce, asistan istemeden gelir. Cursor ve GitHub Copilot'ta prompt gönderme hook'u yoktur; bu yüzden orada başlangıç bağlamını oturum başlangıcı hook'u, dokunulan yolun kurallarını ise araç hook'ları taşır. Her iki durumda da asistan bir dosyaya yazmak üzereyken o yola bağlı kurallar zaten önündedir. Windsurf'te hook yoktur: Pathrule'un kurallar dosyasını okur ve fazlası için yerel MCP sunucusuna başvurur; dolayısıyla Windsurf'te kurallar bilgilendirir ama engellemez.
İki düzey: tavsiye ve engelleme
Her kural asistanın işini bölmemelidir. Pathrule kuralları iki düzeyde ele alır.
- Tavsiye niteliğindeki kurallar bağlam olarak eşlik eder. Asistanın dokunmak üzere olduğu dosyanın yanında, öncelikleriyle birlikte görünürler; böylece asistan bunları hesaba katabilir. Hiçbir şeyi durdurmazlar. Kuralların çoğu, önceliği ne olursa olsun tavsiye niteliğindedir.
- Katı kurallar engelleyebilir. Bir kural, bir kişinin onayladığı bir engelleme kalıbını taşıdığında katı hâle gelir: içerikte yasak bir biçim (örneğin bir import, bir tanımlayıcı, bir sınıf adı veya bir CSS bildirimi), bir dosya için yasak bir konum ya da her ikisi. Asistan bir dosyayı bu kalıpla eşleşecek şekilde düzenlemek veya yazmak üzereyken hook, dosya yazılmadan önce araç çağrısını durdurur ve gerekçeyi döndürür. Asistan gerekçeyi okur ve bu kez kısıtın içinde kalarak yeniden dener.
Öncelik ve engelleme birbirinden bağımsızdır. Öncelik (yüksek, orta, düşük) bir kuralın ne kadar belirgin şekilde öne çıkacağını ve yer kısıtlı olduğunda hangi kuralların dahil edileceğini belirler. Engellemeye karar vermez: yola ait her katı kural, önceliği ne olursa olsun kontrol edilir.
Bir kural nasıl katı hâle gelir
Asistan bir engelleme kalıbını kendi başına devreye alamaz.
- Kural önce sade bir dille yazılır; bunu siz ya da bu işi verdiğiniz bir asistan yapar.
- Asistan, kurallar için MCP yazma ve güncelleme araçları aracılığıyla bu kurala bir engelleme kalıbı önerebilir. Tercih edilen biçim, yasak metni tam olarak kuralda yazıldığı şekliyle adlandırır; yakalanması gereken gerçek örnekleri ve yakalanmaması gereken yakın benzerleri de içerir. Pathrule kalıbı bunlardan oluşturur ve her iki kümeye karşı test eder; ikisinden biri başarısız olursa öneri zayıflatılmak yerine gerekçesiyle reddedilir.
- Öneri kuralla birlikte saklanır ve uygulanmaz.
- Hook ancak bir kişi öneriyi onayladıktan sonra engellemeye başlar; bunun için yazılan çözüm de asistanın gördüğü "bunun yerine şunu yap" kısmı olur.
Bir kural ayrıca zorunlu bir kontrol de taşıyabilir: tur bitmeden önce başarılı olmuş olması gereken bir doğrulama komutu, örneğin bir paketin test takımı. Engelleme kalıbında olduğu gibi bu da önerilir ve bir kişi onaylayana kadar uygulanmaz. Onaylandıktan sonra Claude Code ve Codex'te hook, komut başarılı olana kadar turu açık tutar ve çalıştırılacak komutu tam haliyle verir.
Asistan ne görür
Engellenen bir düzenleme; kuralın adı, kuralın kısa bir önizlemesi, onaylanmış çözüm ve kuralın tamamına bir yönlendirmeyle geri döner. "No direct database client in UI components" adlı bir kural için şöyle görünür:
Pathrule blocked: "No direct database client in UI components"
UI components never import the database client. Data goes through the data layer hooks.
Do this instead: call the data layer hook for this resource.
Your edit matches this rule's forbidden pattern. Read the full rule via pathrule_read_rule(<id>) and retry without the violation.
Claude Code, Codex, Cursor ve GitHub Copilot bunu, her istemcinin kendi hook biçiminde, araç çağrısının reddi olarak alır. Windsurf'te hook olmadığı için orada hiçbir şey engellenmez. Engelleme dosya düzenleme ve yazma işlemleri için geçerlidir; bir kabuk komutu ise kuralı yine bağlam olarak alır.
Bu ayrım bilinçlidir. Düşük riskli bir düzenlemeyi engellemek hem asistanın hem de sizin turunuzu boşa harcar. Engelleme, ihlalin gerçek bir gerilemeye yol açtığı ve birinin tam olarak neyin ihlal sayılacağını onayladığı kurallara ayrılmıştır.
Öncesi ve sonrası
Gizli bilgilerin asla commit edilen dosyalara girmemesini söyleyen ve sağlayıcınızın kullandığı anahtar biçimi için onaylanmış bir engelleme kalıbı taşıyan bir kural düşünün.
| Güvenlik bariyeri olmadan | Güvenlik bariyeriyle | |
|---|---|---|
| Asistanın niyeti | Bir özelliği çalıştırmak için bir yapılandırma dosyasına API anahtarı eklemek | Aynı |
| Ne olur | Düzenleme uygulanır | Hook, eşleşen araç çağrısını dosya yazılmadan önce engeller |
| Ne zaman fark edersiniz | Sonra, incelemede (ya da hiç) | Aynı turda. Asistan kural metnini görür ve bir ortam değişkenine geçer |
| Diskteki sonuç | Commit edilmiş bir gizli bilgi | Eşleşen düzenleme yazılmadı |
Aynı yaklaşım, bir ekibin bedelini production'da ödediği her kural için geçerlidir: kullanıcıya göre filtreleme yapması gereken bir veri erişim politikası, bir migration konvansiyonu, otomatik üretilen ve elle düzenlenmemesi gereken bir dosya. Kural, birinin asistanın okuduğunu umduğu bir yorum olmaktan çıkar ve düzenleme uygulanmadan önce çalışan bir kontrole dönüşür. Bir engelleme kalıbı, onaylandığı biçimleri yakalar; bu nedenle incelemenin yerini almaz, onu tamamlar.
Dosya adları doğru hafıza kaydını getirir
Her zaman bir araç çağrısını beklemeniz gerekmez. Claude Code ve Codex'te prompt'unuz, bağlı bir hafıza kaydının konusu olan bir dosyayı andığında prompt hook'u, asistan herhangi bir şeyi açmadan önce o hafıza kaydının içeriğini öne çıkarabilir. Üzerinde çalıştığınız dosyanın adını anmak, ilk turda doğru bağlamı asistanın önüne koymak için çoğu zaman yeterlidir. Aynı dosya adıyla birden fazla hafıza kaydı eşleştiğinde hook tahmin yürütmek yerine adayları gösterir.
Tasarım gereği fail-open
Bozulduğunda iş akışınızı da bozan bir güvenlik bariyeri, hiç olmamasından kötüdür. Pathrule fail-open çalışır, yani hata durumunda açık kalır. Hook bir kuralı değerlendiremezse, hata verirse veya zaman aşımına uğrarsa işinizi engellemez. Değişiklik devam eder. Otomatik denetim bir güvenlik ağıdır, arkasında takılıp kalabileceğiniz bir kapı değil.
Kontrol sizde kalır. Hook'ları tamamen kapatmak isterseniz tek bir dosya bunu yapar.
Kendiniz doğrulayın
Bu davranışa körü körüne güvenmeniz gerekmez.
Yapay zekâ istemcinizin hangi hook'ları kaydettiğini görmek için ayarlar dosyasını okuyun. Pathrule, Claude Code için hook'larını projenin ayarlarına kaydeder:
cat .claude/settings.json
Cursor .cursor/hooks.json, Codex .codex/hooks.json, GitHub Copilot ise .github/hooks/pathrule.json dosyasını kullanır.
Tüm Pathrule hook'larını anında kapatmak için (acil durdurma anahtarı) tek bir dosya oluşturun:
touch ~/.pathrule/kill-hooks
Sonraki araç çağrısı, Pathrule hiç devreye girmeden doğrudan geçer. Hook'ları yeniden açmak için dosyayı silin:
rm ~/.pathrule/kill-hooks
Bir kuralın gerçekten bir yola bağlı olduğunu doğrulamak için klasörde pathrule rule list komutunu çalıştırın ya da editörünüzde asistanın Pathrule bağlam yüzeyini açın. Kural, asistan o yolda işe başlamadan önce önceliğiyle birlikte görünür; katı bir kural ise bir düzenleme onunla ilk kez eşleştiğinde engellemesini gösterir.
Sırada ne okumalı
- İletim mekanizması ve boş durumdaki davranış için Hook'lar nasıl çalışır.
- Uygulanmaya değer bir kuralın nasıl yazılacağı için Kural yazma.
- Hook yetmediğinde asistanın kullandığı derin yol için MCP'ye genel bakış.