Permessi
Controlla quali azioni richiedono l'approvazione per essere eseguite.
OpenCode utilizza la configurazione permission per decidere se una determinata azione deve essere eseguita automaticamente, chiedere conferma o essere bloccata.
Dalla versione v1.1.1, la vecchia configurazione booleana tools e deprecata ed e stata unita in permission. La vecchia configurazione tools e ancora supportata per compatibilita.
Azioni
Ogni regola di permesso si risolve in uno dei seguenti valori:
"allow"— esegui senza approvazione"ask"— chiedi approvazione"deny"— blocca l’azione
Configurazione
Puoi impostare i permessi globalmente (con *) e sostituire strumenti specifici.
{ "$schema": "https://opencode.ai/config.json", "permission": { "*": "ask", "bash": "allow", "edit": "deny" }}Puoi anche impostare tutti i permessi contemporaneamente:
{ "$schema": "https://opencode.ai/config.json", "permission": "allow"}Regole granulari (Sintassi oggetto)
Per la maggior parte dei permessi, puoi utilizzare un oggetto per applicare diverse azioni in base all’input dello strumento.
{ "$schema": "https://opencode.ai/config.json", "permission": { "bash": { "*": "ask", "git *": "allow", "npm *": "allow", "rm *": "deny" }, "edit": { "*": "deny", "packages/web/src/content/docs/*.mdx": "allow" } }}Le regole vengono valutate per corrispondenza di pattern, con l’ultima regola corrispondente che vince. Un pattern comune e inserire prima la regola generale "*" e poi regole piu specifiche.
Caratteri jolly
I pattern di permesso utilizzano la corrispondenza di caratteri jolly semplice:
*corrisponde a zero o piu caratteri?corrisponde esattamente a un carattere- Tutti gli altri caratteri corrispondono letteralmente
Permessi disponibili
I permessi di OpenCode sono indicizzati per nome strumento, piu alcune protezioni di sicurezza:
read— leggere un file (corrisponde al percorso del file)edit— tutte le modifiche ai file (copreedit,write,patch,multiedit)glob— ricerca file glob (corrisponde al pattern glob)grep— ricerca contenuto (corrisponde al pattern regex)list— elencare i file in una directory (corrisponde al percorso della directory)bash— eseguire comandi shell (corrisponde ai comandi analizzati comegit status --porcelain)task— avviare subagenti (corrisponde al tipo di subagente)skill— caricare un’abilita (corrisponde al nome dell’abilita)lsp— eseguire query LSP (attualmente non granulare)todoread,todowrite— leggere/aggiornare l’elenco di cose da farewebfetch— recuperare un URL (corrisponde all’URL)websearch,codesearch— ricerca web/codice (corrisponde alla query)external_directory— attivato quando uno strumento tocca percorsi fuori dalla directory di lavoro del progettodoom_loop— attivato quando la stessa chiamata strumento si ripete 3 volte con input identico
Valori predefiniti
Se non specifichi nulla, OpenCode parte da permessi permissivi predefiniti:
- La maggior parte dei permessi e predefinita su
"allow". doom_loopeexternal_directorysono predefiniti su"ask".reade"allow", ma i file.envsono negati per impostazione predefinita:
{ "permission": { "read": { "*": "allow", "*.env": "deny", "*.env.*": "deny", "*.env.example": "allow" } }}Cosa fa “Ask”
Quando OpenCode chiede l’approvazione, l’interfaccia utente offre tre risultati:
once— approva solo questa richiestaalways— approva richieste future che corrispondono ai pattern suggeriti (per il resto della sessione OpenCode corrente)reject— nega la richiesta
L’insieme di pattern che always approverebbe e fornito dallo strumento (ad esempio, le approvazioni bash in genere aggiungono alla whitelist un prefisso di comando sicuro come git status*).
Agenti
Puoi sostituire i permessi per agente. I permessi degli agenti vengono uniti con la configurazione globale e le regole degli agenti hanno la precedenza. Ulteriori informazioni sui permessi degli agenti.
{ "$schema": "https://opencode.ai/config.json", "permission": { "bash": { "*": "ask", "git status": "allow" } }, "agent": { "build": { "permission": { "bash": { "*": "ask", "git status": "allow", "git push": "allow" } } } }}Puoi anche configurare i permessi degli agenti in Markdown:
---description: Revisione del codice senza modifichemode: subagentpermission: edit: deny bash: ask webfetch: deny---
Solo analizzare il codice e suggerire modifiche.