Autorizzazioni
Controlla quali azioni richiedono approvazione per essere eseguite.
Dropstone utilizza la configurazione permission per decidere se una determinata azione deve essere eseguita automaticamente, se richiedere approvazione o se bloccarla.
La configurazione legacy tools booleana è deprecata; è stata incorporata in permission. La vecchia configurazione tools è ancora supportata per compatibilità con le versioni precedenti.
Azioni
Ogni regola di autorizzazione si risolve in una delle seguenti:
"allow": esegui senza approvazione"ask": richiedi approvazione"deny": blocca l'azione
Configurazione
Puoi impostare le autorizzazioni globalmente (con *) e sovrascrivere strumenti specifici.
{
"$schema": "https://dropstone.io/schema/config.json",
"permission": {
"*": "ask",
"bash": "allow",
"edit": "deny"
}
}
Puoi anche impostare tutte le autorizzazioni contemporaneamente:
{
"$schema": "https://dropstone.io/schema/config.json",
"permission": "allow"
}
Regole Granulari (Sintassi Oggetto)
Per la maggior parte delle autorizzazioni, puoi utilizzare un oggetto per applicare azioni diverse in base all'input dello strumento.
{
"$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"
}
}
}
Le regole vengono valutate tramite corrispondenza di pattern, con l'ultima regola corrispondente che vince. Un pattern comune è inserire la regola catch-all "*" per prima, seguita da regole più specifiche.
Caratteri Jolly
I pattern di autorizzazione utilizzano semplici corrispondenze con caratteri jolly:
*corrisponde a zero o più caratteri qualsiasi?corrisponde a esattamente un carattere- Tutti gli altri caratteri corrispondono letteralmente
Espansione della Directory Home
Puoi utilizzare ~ o $HOME all'inizio di un pattern per fare riferimento alla tua directory home. Questo è particolarmente utile per le regole external_directory.
~/projects/*->/Users/username/projects/*$HOME/projects/*->/Users/username/projects/*~->/Users/username
Directory Esterne
Utilizza external_directory per consentire chiamate di strumenti che toccano percorsi al di fuori della directory di lavoro in cui Dropstone è stato avviato. Questo si applica a qualsiasi strumento che accetta un percorso come input (ad esempio read, edit, glob, grep e molti comandi bash).
L'espansione della home (come ~/...) influisce solo su come viene scritto un pattern. Non rende un percorso esterno parte dell'area di lavoro corrente, quindi i percorsi al di fuori della directory di lavoro devono comunque essere consentiti tramite external_directory.
Ad esempio, questo consente l'accesso a tutto ciò che si trova sotto ~/projects/personal/:
{
"$schema": "https://dropstone.io/schema/config.json",
"permission": {
"external_directory": {
"~/projects/personal/**": "allow"
}
}
}
Qualsiasi directory consentita qui eredita gli stessi valori predefiniti dell'area di lavoro corrente. Poiché read è impostato per impostazione predefinita su allow, anche le letture sono consentite per le voci sotto external_directory a meno che non vengano sostituite. Aggiungi regole esplicite quando uno strumento deve essere limitato in questi percorsi, ad esempio bloccando le modifiche mantenendo le letture:
{
"$schema": "https://dropstone.io/schema/config.json",
"permission": {
"external_directory": {
"~/projects/personal/**": "allow"
},
"edit": {
"~/projects/personal/**": "deny"
}
}
}
Mantieni l'elenco focalizzato su percorsi affidabili e aggiungi regole di autorizzazione o negazione aggiuntive secondo necessità per altri strumenti (ad esempio bash).
Autorizzazioni Disponibili
Le autorizzazioni di Dropstone sono codificate per nome dello strumento, più un paio di protezioni di sicurezza:
read: lettura di un file (corrisponde al percorso del file)edit: tutte le modifiche ai file (copreedit,write,patch)glob: globbing di file (corrisponde al pattern glob)grep: ricerca di contenuti (corrisponde al pattern regex)bash: esecuzione di comandi shell (corrisponde ai comandi analizzati comegit status --porcelain)task: avvio di subagent (corrisponde al tipo di subagent)skill: caricamento di una skill (corrisponde al nome della skill)lsp: esecuzione di query LSP (attualmente non granulare)question: fare domande all'utente durante l'esecuzionewebfetch: recupero di un URL (corrisponde all'URL)websearch: ricerca web (corrisponde alla query)external_directory: attivato quando uno strumento tocca percorsi al di fuori della directory di lavoro del progettodoom_loop: attivato quando la stessa chiamata di strumento si ripete 3 volte con input identico
Valori Predefiniti
Se non specifichi nulla, Dropstone inizia con valori predefiniti permissivi:
- La maggior parte delle autorizzazioni è impostata per impostazione predefinita su
"allow". doom_loopeexternal_directorysono impostati per impostazione predefinita su"ask".readè"allow", ma i file.envsono negati per impostazione predefinita:
{
"permission": {
"read": {
"*": "allow",
"*.env": "deny",
"*.env.*": "deny",
"*.env.example": "allow"
}
}
}
Cosa fa "Ask"
Quando Dropstone richiede approvazione, l'interfaccia utente offre tre risultati:
once: approva solo questa richiestaalways: approva le richieste future che corrispondono ai pattern suggeriti (per il resto della sessione Dropstone corrente)reject: nega la richiesta
L'insieme di pattern che always approverebbe è fornito dallo strumento (ad esempio, le approvazioni bash in genere inseriscono nella whitelist un prefisso di comando sicuro come git status*).
Agent
Puoi sovrascrivere le autorizzazioni per agent. Le autorizzazioni dell'agent vengono unite alla configurazione globale e le regole dell'agent hanno la precedenza. Scopri di più sulle autorizzazioni dell'agent.
Note:
Fai riferimento alla sezione Regole Granulari (Sintassi Oggetto) sopra per esempi di corrispondenza di pattern più dettagliati.
{
"$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"
}
}
}
}
}
Puoi anche configurare le autorizzazioni dell'agent in Markdown:
---
description: Code review without edits
mode: subagent
permission:
edit: deny
bash: ask
webfetch: deny
---
Only analyze code and suggest changes.
Suggerimento:
Utilizza la corrispondenza di pattern per i comandi con argomenti. "grep *" consente grep pattern file.txt, mentre "grep" da solo lo bloccherebbe. Comandi come git status funzionano per il comportamento predefinito ma richiedono un'autorizzazione esplicita (come "git status *") quando vengono passati argomenti.