--- title: Dozvole description: 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. ```json title="opencode.json" { "$schema": "https://opencode.ai/config.json", "permission": { "*": "ask", "bash": "allow", "edit": "deny" } } ``` Također možete postaviti sve dozvole odjednom: ```json title="opencode.json" { "$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. ```json title="opencode.json" { "$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 imenika Možete koristiti `~` ili `$HOME` na početku obrasca da referencirate svoj početni direktorij. Ovo je posebno korisno za [`external_directory`](#external-directories) pravila. - `~/projects/*` -> `/Users/username/projects/*` - `$HOME/projects/*` -> `/Users/username/projects/*` - `~` -> `/Users/username` ### Vanjski imenici 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/`: ```json title="opencode.json" { "$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`](#defaults), č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: ```json title="opencode.json" { "$schema": "https://opencode.ai/config.json", "permission": { "external_directory": { "~/projects/personal/**": "allow" }, "edit": { "~/projects/personal/**": "deny" } } } ``` ## Neka lista bude fokusirana na pouzdane staze, a dodatni sloj dozvoljava ili odbija pravila prema potrebi za druge alate (na primjer `bash`). ## Dostupne dozvole Dozvole OpenCode-a su označene imenom alata, plus nekoliko sigurnosnih mjera: - `read` — čitanje datoteke (odgovara putanji datoteke) - `edit` — sve izmjene fajlova (pokriva `edit`, `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 je `git 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 obaveza - `webfetch` — 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 projekta - `doom_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_loop` i `external_directory` zadano na `"ask"`. - `read` je `"allow"`, ali `.env` fajlovi su po defaultu odbijeni: ```json title="opencode.json" { "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 zahtjev - `always` — odobri buduće zahtjeve koji odgovaraju predloženim obrascima (za ostatak trenutne OpenCode sesije) - `reject` — odbiti zahtjev Skup obrazaca koje bi `always` odobrio pruža alat (na primjer, bash odobrenja obično stavljaju na bijelu listu sigurni prefiks komande kao što je `git status*`). --- ## Agenti Možete nadjačati dozvole po agentu. Dozvole agenta su spojene sa globalnom konfiguracijom, a pravila agenta imaju prednost. [Saznajte više](/docs/agents#permissions) o dozvolama agenta. :::note Pogledajte gornji odjeljak [Granularna pravila (sintaksa objekata)](#granular-rules-object-syntax) za detaljnije primjere podudaranja uzoraka. ::: ```json title="opencode.json" { "$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: ```markdown title="~/.config/opencode/agents/review.md" --- description: Code review without edits mode: subagent permission: edit: deny bash: ask webfetch: deny --- Only analyze code and suggest changes. ``` :::tip Koristite podudaranje uzoraka za naredbe s argumentima. `"grep *"` dozvoljava `grep pattern file.txt`, dok bi ga samo `"grep"` blokirao. Naredbe poput `git status` rade za zadano ponašanje, ali zahtijevaju eksplicitnu dozvolu (kao `"git status *"`) kada se prosljeđuju argumenti. :::