Dozvole
Kontrolirajte koje radnje zahtijevaju odobrenje za pokretanje.
OpenCode koristi permission konfiguraciju da odluči da li će se određena radnja pokrenuti automatski, zatražiti od vas ili biti blokirana.
Od v1.1.1, naslijeđena tools logička konfiguracija je zastarjela i spojena je u permission. Stara tools konfiguracija je još uvijek podržana za kompatibilnost unatrag.
Akcije
Svako pravilo dozvole rješava jedno od:
"allow"— pokrenuti bez odobrenja"ask"— upit za odobrenje"deny"— blokiraj akciju
Konfiguracija
Dozvole možete postaviti globalno (sa *) i nadjačati određene alate.
{ "$schema": "https://opencode.ai/config.json", "permission": { "*": "ask", "bash": "allow", "edit": "deny" }}Također možete postaviti sve dozvole odjednom:
{ "$schema": "https://opencode.ai/config.json", "permission": "allow"}Granularna pravila (sintaksa objekta)
Za većinu dozvola, možete koristiti objekt za primjenu različitih radnji na osnovu unosa alata.
{ "$schema": "https://opencode.ai/config.json", "permission": { "bash": { "*": "ask", "git *": "allow", "npm *": "allow", "rm *": "deny", "grep *": "allow" }, "edit": { "*": "deny", "packages/web/src/content/docs/*.mdx": "allow" } }}Pravila se procjenjuju na osnovu podudaranja uzorka, pri čemu **pobjeđuje **poslednje odgovarajuće pravilo*_. Uobičajeni obrazac je da se prvo pravilo "*" stavi sveobuhvatno, a poslije njega konkretnija pravila.
Zamjenski znakovi
Uzorci dozvola koriste jednostavno podudaranje zamjenskih znakova:
*odgovara nula ili više bilo kojeg znaka?odgovara tačno jednom znaku- Svi ostali likovi se bukvalno podudaraju
Proširenje kućnog direktorija
Možete koristiti ~ ili $HOME na početku obrasca da referencirate svoj početni direktorij. Ovo je posebno korisno za external_directory pravila.
~/projects/*->/Users/username/projects/*$HOME/projects/*->/Users/username/projects/*~->/Users/username
Vanjski direktoriji
Koristite external_directory da dozvolite pozive alata koji dodiruju putanje izvan radnog direktorija gdje je OpenCode pokrenut. Ovo se odnosi na bilo koji alat koji uzima putanju kao ulaz (na primjer read, edit, list, glob, grep i mnoge bash komande).
Proširenje kuće (poput ~/...) utiče samo na način na koji je obrazac napisan. Ne čini vanjsku stazu dijelom trenutnog radnog prostora, tako da staze izvan radnog direktorija i dalje moraju biti dozvoljene preko external_directory.
Na primjer, ovo omogućava pristup svemu pod ~/projects/personal/:
{ "$schema": "https://opencode.ai/config.json", "permission": { "external_directory": { "~/projects/personal/**": "allow" } }}Svaki direktorij koji je ovdje dozvoljen nasljeđuje iste zadane postavke kao trenutni radni prostor. Pošto je read zadano na allow, čitanje je također dozvoljeno za unose pod external_directory osim ako se ne poništi. Dodajte eksplicitna pravila kada bi alat trebao biti ograničen na ovim stazama, kao što je blokiranje uređivanja uz zadržavanje čitanja:
{ "$schema": "https://opencode.ai/config.json", "permission": { "external_directory": { "~/projects/personal/**": "allow" }, "edit": { "~/projects/personal/**": "deny" } }}Držite ovu listu fokusiranom na pouzdane putanje, a dodatna allow/deny pravila dodajte po potrebi za druge alate (npr. bash).
Dostupne dozvole
Dozvole OpenCode su označene imenom alata, plus nekoliko sigurnosnih mjera:
read— čitanje datoteke (odgovara putanji datoteke)edit— sve izmjene fajlova (pokrivaedit,write,patch,multiedit)glob— globbiranje fajla (odgovara glob uzorku)grep— pretraga sadržaja (podudara se sa regularnim izrazom)list— lista fajlova u direktorijumu (podudara se sa putanjom direktorijuma)bash— izvođenje komandi ljuske (podudara se s raščlanjenim komandama kao što jegit status --porcelain)task— pokretanje subagenta (odgovara tipu podagenta)skill— učitavanje vještine (odgovara nazivu vještine)lsp— pokretanje LSP upita (trenutno negranularno)todoread,todowrite— čitanje/ažuriranje liste obavezawebfetch— dohvaćanje URL-a (odgovara URL-u)websearch,codesearch— pretraživanje weba/koda (odgovara upitu)external_directory— pokreće se kada alat dodirne staze izvan radnog direktorija projektadoom_loop— aktivira se kada se isti poziv alata ponovi 3 puta sa identičnim unosom
Defaults
Ako ništa ne navedete, OpenCode počinje od dozvoljenih zadanih vrijednosti:
- Većina dozvola je zadana na
"allow". doom_loopiexternal_directoryzadano na"ask".readje"allow", ali.envfajlovi su po defaultu odbijeni:
{ "permission": { "read": { "*": "allow", "*.env": "deny", "*.env.*": "deny", "*.env.example": "allow" } }}Šta radi “Ask”.
Kada OpenCode zatraži odobrenje, korisničko sučelje nudi tri ishoda:
once— odobri samo ovaj zahtjevalways— odobri buduće zahtjeve koji odgovaraju predloženim obrascima (za ostatak trenutne OpenCode sesije)reject— odbiti zahtjev Skup obrazaca koje bialwaysodobrio pruža alat (na primjer, bash odobrenja obično stavljaju na bijelu listu sigurni prefiks komande kao što jegit status*).
Agenti
Možete nadjačati dozvole po agentu. Dozvole agenta su spojene sa globalnom konfiguracijom, a pravila agenta imaju prednost. Saznajte više o dozvolama agenta.
{ "$schema": "https://opencode.ai/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" } } } }}Također možete konfigurirati dozvole agenta u Markdownu:
---description: Code review without editsmode: subagentpermission: edit: deny bash: ask webfetch: deny---
Only analyze code and suggest changes.