İzinler
Hangi işlemlerin onay gerektirdiğini kontrol edin.
kodine’da bir eylemin doğrudan çalıştırılması, size sorulması ya da engellenmesi permission yapılandırmasıyla belirlenir.
v1.1.1 sürümünden itibaren eski tools boolean yapılandırması kullanımdan kaldırılmış ve permission ile birleştirilmiştir. Geriye dönük uyumluluk adına eski tools yapılandırması hâlâ çalışmaktadır.
Eylemler
Bir izin kuralı üç değerden birine çözümlenir:
"allow"— onay istemeden çalıştır"ask"— kullanıcıdan onay iste"deny"— eylemi engelle
Yapılandırma
İzinleri genel olarak (* ile) tanımlayıp tek tek araçlar için ezebilirsiniz.
{ "$schema": "https://kodine.net/config.json", "permission": { "*": "ask", "bash": "allow", "edit": "deny" }}İsterseniz bütün izinleri tek seferde de ayarlayabilirsiniz:
{ "$schema": "https://kodine.net/config.json", "permission": "allow"}Ayrıntılı Kurallar (Nesne Sözdizimi)
Çoğu izinde, aracın aldığı girdiye göre farklı kararlar uygulamak için nesne sözdizimini kullanabilirsiniz.
{ "$schema": "https://kodine.net/config.json", "permission": { "bash": { "*": "ask", "git *": "allow", "npm *": "allow", "rm *": "deny", "grep *": "allow" }, "edit": { "*": "deny", "packages/web/src/content/docs/*.mdx": "allow" } }}Kurallar desen eşleşmesiyle değerlendirilir ve son eşleşen kural geçerli olur. Yaygın kullanım, en başa genel bir "*" kuralı koyup ardından daha özel kuralları eklemektir.
Joker Karakterler
İzin desenleri basit joker karakterlerle çalışır:
*sıfır veya daha fazla karakterle eşleşir?tam bir karakterle eşleşir- Geri kalan tüm karakterler birebir eşleşir
Ana Dizin Genişletme
Desenin başında ~ veya $HOME kullanarak ana dizininizi işaret edebilirsiniz. Bu, özellikle external_directory kurallarında işe yarar.
~/projects/*->/Users/username/projects/*$HOME/projects/*->/Users/username/projects/*~->/Users/username
Harici Dizinler
kodine’un başlatıldığı çalışma dizininin dışındaki yollara erişen araç çağrılarına izin vermek için external_directory kullanın. Yol alan tüm araçlar (read, edit, glob, grep ve pek çok bash komutu gibi) bu kapsamdadır.
Ana dizin genişletmesi (~/... gibi) yalnızca desenin yazım biçimini değiştirir; mevcut çalışma alanının dışındaki bir yolu içeride saymaz. Bu yüzden çalışma dizini dışındaki yollar için yine external_directory üzerinden izin vermeniz gerekir.
Örneğin aşağıdaki yapılandırma ~/projects/personal/ altındaki her şeye erişim verir:
{ "$schema": "https://kodine.net/config.json", "permission": { "external_directory": { "~/projects/personal/**": "allow" } }}İzin verdiğiniz her dizin, mevcut çalışma alanının varsayılanlarını devralır. read varsayılan olarak allow olduğundan, aksi belirtilmedikçe external_directory kapsamındaki okumalara da izin verilir. Bir aracın bu yollarda kısıtlanması gerekiyorsa (örneğin okumalar serbest kalırken düzenlemeleri engellemek için) açık kurallar ekleyin:
{ "$schema": "https://kodine.net/config.json", "permission": { "external_directory": { "~/projects/personal/**": "allow" }, "edit": { "~/projects/personal/**": "deny" } }}Listeyi güvendiğiniz yollarla sınırlı tutun ve bash gibi diğer araçlar için gereken ek allow/deny kurallarını ayrıca ekleyin.
Mevcut İzinler
kodine izinleri araç adına ve birkaç güvenlik kontrolüne göre tanımlanır:
read— dosya okuma (dosya yolu ile eşleşir)edit— tüm dosya değişiklikleri (edit,write,patchdahil)glob— dosya desen eşleştirme (glob deseniyle eşleşir)grep— içerik arama (regex deseniyle eşleşir)bash— kabuk komutu çalıştırma (git status --porcelaingibi ayrıştırılmış komutlarla eşleşir)task— alt agent başlatma (alt agent türüyle eşleşir)skill— skill yükleme (skill adıyla eşleşir)lsp— LSP sorguları (şu an ayrıntılı eşleşme yok)webfetch— URL getirme (URL ile eşleşir)websearch— web araması (sorguyla eşleşir)external_directory— bir araç proje çalışma dizini dışındaki bir yola eriştiğinde devreye girerdoom_loop— aynı araç çağrısı aynı girdiyle üç kez tekrarlandığında devreye girer
Varsayılanlar
Hiçbir şey tanımlamazsanız kodine izin verici varsayılanlarla başlar:
- İzinlerin çoğu varsayılan olarak
"allow"durumundadır. doom_loopveexternal_directoryvarsayılan olarak"ask"değerini taşır.read"allow"değerindedir; ancak.envdosyaları varsayılan olarak engellenir:
{ "permission": { "read": { "*": "allow", "*.env": "deny", "*.env.*": "deny", "*.env.example": "allow" } }}“Sor” Ne Yapar?
kodine onay istediğinde arayüzde üç seçenek sunulur:
once— yalnızca bu isteği onaylaralways— önerilen desenlerle eşleşen sonraki istekleri de onaylar (mevcut kodine oturumu boyunca)reject— isteği reddeder
always seçildiğinde onaylanacak desen kümesi araç tarafından belirlenir (örneğin bash onayları genelde git status* gibi güvenli bir komut önekini beyaz listeye ekler).
Agent’lar
İzinleri agent bazında da ezebilirsiniz. Agent izinleri genel yapılandırmayla birleştirilir ve agent kuralları üstün gelir. Daha fazla bilgi.
{ "$schema": "https://kodine.net/config.json", "permission": { "bash": { "*": "ask", "git *": "allow", "git commit *": "deny", "git push *": "deny", "grep *": "allow" } }, "agent": { "build": { "permission": { "bash": { "*": "ask", "git *": "allow", "git commit *": "ask", "git push *": "deny", "grep *": "allow" } } } }}İzinleri Markdown ile agent tanımında da yapılandırabilirsiniz:
---description: Code review without editsmode: subagentpermission: edit: deny bash: ask webfetch: deny---
Only analyze code and suggest changes.