Izin
Kontrol tindakan mana yang memerlukan persetujuan untuk dijalankan.
Dropstone menggunakan konfigurasi permission untuk menentukan apakah tindakan tertentu harus dijalankan secara otomatis, meminta Anda, atau diblokir.
Konfigurasi boolean tools yang sudah usang telah digabungkan ke dalam permission. Konfigurasi tools lama masih didukung untuk kompatibilitas mundur.
Tindakan
Setiap aturan izin diselesaikan menjadi salah satu dari:
"allow": jalankan tanpa persetujuan"ask": minta persetujuan"deny": blokir tindakan
Konfigurasi
Anda dapat mengatur izin secara global (dengan *), dan mengganti alat tertentu.
{
"$schema": "https://dropstone.io/schema/config.json",
"permission": {
"*": "ask",
"bash": "allow",
"edit": "deny"
}
}
Anda juga dapat mengatur semua izin sekaligus:
{
"$schema": "https://dropstone.io/schema/config.json",
"permission": "allow"
}
Aturan Granular (Sintaks Objek)
Untuk sebagian besar izin, Anda dapat menggunakan objek untuk menerapkan tindakan berbeda berdasarkan masukan alat.
{
"$schema": "https://dropstone.io/schema/config.json",
"permission": {
"bash": {
"*": "ask",
"git *": "allow",
"npm *": "allow",
"rm *": "deny",
"grep *": "allow"
},
"edit": {
"*": "deny",
"packages/web/src/content/docs/*.mdx": "allow"
}
}
}
Aturan dievaluasi dengan pencocokan pola, dengan aturan yang cocok terakhir menang. Pola umum adalah menempatkan aturan catch-all "*" terlebih dahulu, dan aturan yang lebih spesifik setelahnya.
Wildcard
Pola izin menggunakan pencocokan wildcard sederhana:
*cocok dengan nol atau lebih karakter apa pun?cocok dengan tepat satu karakter- Semua karakter lainnya cocok secara harfiah
Ekspansi Direktori Home
Anda dapat menggunakan ~ atau $HOME di awal pola untuk mereferensikan direktori home Anda. Ini sangat berguna untuk aturan external_directory.
~/projects/*->/Users/username/projects/*$HOME/projects/*->/Users/username/projects/*~->/Users/username
Direktori Eksternal
Gunakan external_directory untuk mengizinkan panggilan alat yang menyentuh jalur di luar direktori kerja tempat Dropstone dimulai. Ini berlaku untuk alat apa pun yang mengambil jalur sebagai masukan (misalnya read, edit, glob, grep, dan banyak perintah bash).
Ekspansi home (seperti ~/...) hanya mempengaruhi cara pola ditulis. Ini tidak membuat jalur eksternal menjadi bagian dari ruang kerja saat ini, jadi jalur di luar direktori kerja masih harus diizinkan melalui external_directory.
Misalnya, ini mengizinkan akses ke semua yang ada di bawah ~/projects/personal/:
{
"$schema": "https://dropstone.io/schema/config.json",
"permission": {
"external_directory": {
"~/projects/personal/**": "allow"
}
}
}
Direktori apa pun yang diizinkan di sini mewarisi default yang sama dengan ruang kerja saat ini. Karena read default ke allow, pembacaan juga diizinkan untuk entri di bawah external_directory kecuali ditimpa. Tambahkan aturan eksplisit ketika alat harus dibatasi di jalur ini, seperti memblokir edit sambil menjaga pembacaan:
{
"$schema": "https://dropstone.io/schema/config.json",
"permission": {
"external_directory": {
"~/projects/personal/**": "allow"
},
"edit": {
"~/projects/personal/**": "deny"
}
}
}
Pertahankan daftar fokus pada jalur terpercaya, dan berlapis aturan allow atau deny tambahan sesuai kebutuhan untuk alat lain (misalnya bash).
Izin Tersedia
Izin Dropstone diindeks berdasarkan nama alat, ditambah beberapa penjaga keamanan:
read: membaca file (cocok dengan jalur file)edit: semua modifikasi file (mencakupedit,write,patch)glob: globbing file (cocok dengan pola glob)grep: pencarian konten (cocok dengan pola regex)bash: menjalankan perintah shell (cocok dengan perintah yang diurai sepertigit status --porcelain)task: meluncurkan subagent (cocok dengan tipe subagent)skill: memuat skill (cocok dengan nama skill)lsp: menjalankan kueri LSP (saat ini non-granular)question: mengajukan pertanyaan kepada pengguna selama eksekusiwebfetch: mengambil URL (cocok dengan URL)websearch: pencarian web (cocok dengan kueri)external_directory: dipicu ketika alat menyentuh jalur di luar direktori kerja proyekdoom_loop: dipicu ketika panggilan alat yang sama berulang 3 kali dengan masukan identik
Default
Jika Anda tidak menentukan apa pun, Dropstone dimulai dari default yang permisif:
- Sebagian besar izin default ke
"allow". doom_loopdanexternal_directorydefault ke"ask".readadalah"allow", tetapi file.envdiblokir secara default:
{
"permission": {
"read": {
"*": "allow",
"*.env": "deny",
"*.env.*": "deny",
"*.env.example": "allow"
}
}
}
Apa yang "Ask" Lakukan
Ketika Dropstone meminta persetujuan, UI menawarkan tiga hasil:
once: setujui hanya permintaan inialways: setujui permintaan masa depan yang cocok dengan pola yang disarankan (untuk sisa sesi Dropstone saat ini)reject: tolak permintaan
Kumpulan pola yang akan disetujui always disediakan oleh alat (misalnya, persetujuan bash biasanya menempatkan awalan perintah yang aman dalam daftar putih seperti git status*).
Agen
Anda dapat mengganti izin per agen. Izin agen digabungkan dengan konfigurasi global, dan aturan agen memiliki prioritas. Pelajari lebih lanjut tentang izin agen.
Note:
Lihat bagian Aturan Granular (Sintaks Objek) di atas untuk contoh pencocokan pola yang lebih terperinci.
{
"$schema": "https://dropstone.io/schema/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"
}
}
}
}
}
Anda juga dapat mengonfigurasi izin agen di Markdown:
---
description: Code review without edits
mode: subagent
permission:
edit: deny
bash: ask
webfetch: deny
---
Only analyze code and suggest changes.
Tip:
Gunakan pencocokan pola untuk perintah dengan argumen. "grep *" mengizinkan grep pattern file.txt, sementara "grep" saja akan memblokirnya. Perintah seperti git status bekerja untuk perilaku default tetapi memerlukan izin eksplisit (seperti "git status *") ketika argumen dilewatkan.