Download packages/web/src/content/docs/ko/permissions.mdx from SaylorTwift/opencode: direct link, hf CLI and curl.
- Browser
- Download file 7.17 kB
-
https://huggingface.co/SaylorTwift/opencode/resolve/main/packages/web/src/content/docs/ko/permissions.mdx
- Command line
-
hf download hf://SaylorTwift/opencode/packages/web/src/content/docs/ko/permissions.mdx
-
curl -L -o permissions.mdx https://huggingface.co/SaylorTwift/opencode/resolve/main/packages/web/src/content/docs/ko/permissions.mdx
7.17 kB
| --- | |
| title: ๊ถํ | |
| description: ์คํ ์น์ธ์ด ํ์ํ ์์ ์ ์ ์ดํฉ๋๋ค. | |
| --- | |
| opencode๋ ์ฃผ์ด์ง ๋์์ด ์๋์ผ๋ก ์คํ๋๋์ง ๊ฒฐ์ ํ๊ธฐ ์ํด `permission` config๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ์ฐจ๋จํฉ๋๋ค. | |
| `v1.1.1`์ ๊ฒ๊ณผ ๊ฐ์ด, ์ ์ฐ `tools` ๋ถ๋ฆฐ ๊ตฌ์ฑ์ deprecated์ด๊ณ `permission`๋ก ํฉ๋ณ๋์์ต๋๋ค. ์ค๋๋ `tools` config๋ ์ฌ์ ํ ๋ค์ชฝ ํธํ์ฑ์ ์ํด ์ง์๋ฉ๋๋ค. | |
| --- | |
| ## ๋์ | |
| ๊ฐ ๊ถํ ๊ท์น์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค: | |
| - `"allow"` - ์น์ธ์์ด ์คํ | |
| - `"ask"` - ์น์ธ์์ํ prompt | |
| - `"deny"` - ๋์ ์ฐจ๋จ | |
| --- | |
| ## ๊ตฌ์ฑ | |
| ๊ธ๋ก๋ฒ ๊ถํ(`*` ํฌํจ) ๋ฐ ํน์ ๋๊ตฌ๋ฅผ ๋ถ์ฌํ ์ ์์ต๋๋ค. | |
| ```json title="opencode.json" | |
| { | |
| "$schema": "https://opencode.ai/config.json", | |
| "permission": { | |
| "*": "ask", | |
| "bash": "allow", | |
| "edit": "deny" | |
| } | |
| } | |
| ``` | |
| ํ ๋ฒ์ ๋ชจ๋ ๊ถํ์ ์ค์ ํ ์ ์์ต๋๋ค. | |
| ```json title="opencode.json" | |
| { | |
| "$schema": "https://opencode.ai/config.json", | |
| "permission": "allow" | |
| } | |
| ``` | |
| --- | |
| ## ์ธ๋ถ ๊ท์น (๊ฐ์ฒด ๊ตฌ๋ฌธ) | |
| ๋๋ถ๋ถ์ ๊ถํ์ ์ํด ๋๊ตฌ ์ ๋ ฅ์ ๊ธฐ๋ฐ์ผ๋ก ๋ค๋ฅธ ์์ ์ ์ ์ฉ ํ ์ ์์ต๋๋ค. | |
| ```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" | |
| } | |
| } | |
| } | |
| ``` | |
| ๊ท์น์ ํจํด ์ผ์น์ ์ํด ํ๊ฐ๋ฉ๋๋ค, ** ๋ง์ง๋ง ์ผ์น ๊ท์น ์ฐ์น **. ์ผ๋ฐ์ ์ธ ํจํด์ catch-all `"*"` ๊ท์น์ ๋จผ์ ๋ฃ๋ ๊ฒ์ ๋๋ค, ๊ทธ๋ฆฌ๊ณ ๊ทธ ํ์ ๋ ๊ตฌ์ฒด์ ์ธ ๊ท์น. | |
| ## ์์ผ๋์นด๋ | |
| Permission ๋ณธ ์ฌ์ฉ ๊ฐ๋จํ wildcard ์ผ์น: | |
| - `*`๋ ์ด๋ค ์ฑ๊ฒฉ๋ ์ง์ 0๊ฐ ์ด์ ์ผ์นํฉ๋๋ค | |
| - `?`๋ ์ ํํ ํ๋์ ๋ฌธ์ ์ผ์น | |
| - ๋ค๋ฅธ ๋ชจ๋ ๋ฌธ์ ์ผ์น ๋ง ๊ทธ๋๋ก | |
| ## ํ ๋๋ ํ ๋ฆฌ ํ์ฅ | |
| `~` ๋๋ `$HOME`๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค ํจํด์ ์์์ ํ ๋๋ ํ ๋ฆฌ๋ฅผ ์ฐธ์กฐ. ์ด๊ฒ์ ํนํ ์ ์ฉํฉ๋๋ค [`external_directory`](#external-directories) ๊ท์น. | |
| - `~/projects/*` -> `/Users/username/projects/*` | |
| - `$HOME/projects/*` -> `/Users/username/projects/*` | |
| - `~` -> `/Users/username` | |
| ## ์ธ๋ถ ๋๋ ํฐ๋ฆฌ | |
| `external_directory`๋ฅผ ์ฌ์ฉํ์ฌ ๋๊ตฌ๊ฐ opencode๊ฐ ์์๋ ์์ ๋๋ ํ ๋ฆฌ ๋ฐ์ ํฐ์น ๊ฒฝ๋ก๊ฐ ํธ์ถ๋๋๋กํฉ๋๋ค. ์ด๊ฒ์ ์ ๋ ฅ (์ : `read`, `edit`, `glob`, `grep` ๋ฐ ๋ง์ `bash` ๋ช ๋ น)๋ก ๊ฒฝ๋ก๋ฅผ ์ํํ๋ ๋ชจ๋ ๋๊ตฌ์ ์ ์ฉ๋ฉ๋๋ค. | |
| ํ ํ์ฅ (`~/...`์ ๊ฐ์) ํจํด์ด ์์ฑ๋ ๋ฐฉ๋ฒ์ ์ํฅ์ ๋ฏธ์นฉ๋๋ค. ๊ทธ๊ฒ์ ํ์ฌ์ ์์ ๊ณต๊ฐ์ ์ธ๋ถ ๊ฒฝ๋ก ๋ถ๋ถ์ ๋ง๋ค์ง ์์ต๋๋ค, ๊ทธ๋์ ์์ ๋๋ ํ ๋ฆฌ ์ธ๋ถ ๊ฒฝ๋ก๋ ์ฌ์ ํ `external_directory`๋ฅผ ํตํด ํ์ฉํด์ผํฉ๋๋ค. | |
| ์๋ฅผ ๋ค์ด, ์ด๊ฒ์ `~/projects/personal/`์ ๋ชจ๋ ๊ฒ์ ์ก์ธ์ค ํ ์ ์์ต๋๋ค. | |
| ```json title="opencode.json" | |
| { | |
| "$schema": "https://opencode.ai/config.json", | |
| "permission": { | |
| "external_directory": { | |
| "~/projects/personal/**": "allow" | |
| } | |
| } | |
| } | |
| ``` | |
| ์ฌ๊ธฐ์ ํ์ฉ๋๋ ๋ชจ๋ ๋๋ ํ ๋ฆฌ๋ ํ์ฌ ์์ ๊ณต๊ฐ๊ณผ ๋์ผํ ๊ธฐ๋ณธ๊ฐ์ ์์ํฉ๋๋ค. [`read` defaults to `allow`](#defaults)๋ `external_directory`์์ `external_directory`์ ํญ๋ชฉ์ ๋ํด ์ฝ์ ์ ์์ต๋๋ค. ๋๊ตฌ๊ฐ ์ด๋ฌํ ๊ฒฝ๋ก์ ์ ํ ๋ ๋ ๋ช ์์ ๊ท์น์ ์ถ๊ฐํ์ญ์์ค. | |
| ```json title="opencode.json" | |
| { | |
| "$schema": "https://opencode.ai/config.json", | |
| "permission": { | |
| "external_directory": { | |
| "~/projects/personal/**": "allow" | |
| }, | |
| "edit": { | |
| "~/projects/personal/**": "deny" | |
| } | |
| } | |
| } | |
| ``` | |
| ์ ๋ขฐํ ์์๋ ๊ฒฝ๋ก์ ์ด์ ์ ๋ง์ถ ๋ชฉ๋ก์ ์ ์งํ๊ณ ๋ค๋ฅธ ๋๊ตฌ (์ : `bash`)์ ํ์ํ๋๋ก ์ถ๊ฐ ํ์ฉํ๊ฑฐ๋ deny ๊ท์น์ ์ธต์ ์ค์ ํฉ๋๋ค. | |
| --- | |
| ## ์ฌ์ฉ ๊ฐ๋ฅํ ๊ถํ | |
| opencode ๊ถํ์ ๋๊ตฌ ์ด๋ฆ์ ์ํด ํค ์ ๋ ฅ๋๋ฉฐ, ๋ ๊ฐ์ ์์ ๊ฐ๋ : | |
| - `read` - ํ์ผ ์ฝ๊ธฐ (ํ์ผ ๊ฒฝ๋ก์ ๋งค์นญ) | |
| - `edit` - ๋ชจ๋ ํ์ผ ์์ (covers `edit`, `write`, `patch`) | |
| - `glob` - ํ์ผ globbing (glob ํจํด ๋งค์นญ) | |
| - `grep` - ์ฝํ ์ธ ๊ฒ์ ( regex ํจํด ๋งค์นญ) | |
| - `bash` - shell ๋ช ๋ น ์คํ (`git status --porcelain`์ ๊ฐ์ ํ ๋ช ๋ น) | |
| - `task` - ์์ด์ ํธ ์คํ (์์ ์์ด์ ํธ ์ ํ) | |
| - `skill` - ๊ธฐ์ ์ ๋ก๋ฉ (๊ธฐ์ ์ด๋ฆ์ ๋งค์นญ) | |
| - `lsp` - LSP ์ฟผ๋ฆฌ ์คํ (ํ์ฌ ๋น ๊ณผ๋ฆฝ) | |
| - `webfetch` - URL์ fetching ( URL์ ๋งค์นญ) | |
| - `websearch` - ์น ๊ฒ์ (๋ฌธ์ ์ฟผ๋ฆฌ) | |
| - `external_directory` - ํ๋ก์ ํธ ์์ ๋๋ ํ ๋ฆฌ ์ธ๋ถ์ ๋๊ตฌ ์ ์ด ๊ฒฝ๋ก ๋ ํธ๋ฆฌ๊ฑฐ | |
| - `doom_loop` - ๋์ผํ ๋๊ตฌ ํธ์ถ์ด ๋์ผํ ์ ๋ ฅ์ผ๋ก 3 ๋ฒ ๋ฐ๋ณต ํ ๋ ํธ๋ฆฌ๊ฑฐ | |
| --- | |
| ## ๊ธฐ๋ณธ๊ฐ | |
| ์๋ฌด๊ฒ๋ ์ง์ ํ์ง ์๋ ๊ฒฝ์ฐ, opencode๋ permissive ๊ธฐ๋ณธ๊ฐ์์ ์์ํฉ๋๋ค. | |
| - `"allow"`์ ๊ธฐ๋ณธ ๊ถํ. | |
| - `doom_loop` ๋ฐ `external_directory` ๊ธฐ๋ณธ์ ์ผ๋ก `"ask"`. | |
| - `read`๋ `"allow"`์ด๊ณ , ๊ทธ๋ฌ๋ `.env` ํ์ผ์ ๊ธฐ๋ณธ์ ์ผ๋ก denied: | |
| ```json title="opencode.json" | |
| { | |
| "permission": { | |
| "read": { | |
| "*": "allow", | |
| "*.env": "deny", | |
| "*.env.*": "deny", | |
| "*.env.example": "allow" | |
| } | |
| } | |
| } | |
| ``` | |
| --- | |
| ## "Ask"๋ ๋ฌด์์ ๋๊น? | |
| opencode๊ฐ ์น์ธ๋๋ฉด UI๋ ์ธ ๊ฐ์ง ๊ฒฐ๊ณผ๋ฅผ ์ ๊ณตํฉ๋๋ค. | |
| - `once` - ์ด ์์ฒญ์ ์น์ธ | |
| - `always` - ์ ์ ๋ ํจํด๊ณผ ์ผ์นํ๋ ๋ฏธ๋ ์์ฒญ (ํ์ฌ opencode ์ธ์ ์ ๋๋จธ์ง) | |
| - `reject` - ์์ฒญ์ ๊ฑฐ๋ถ | |
| `always`๋ ๋๊ตฌ (์๋ฅผ ๋ค๋ฉด, bash ์น์ธ ์ผ๋ฐ์ ์ผ๋ก `git status*`์ ๊ฐ์ ์์ ํ ๋ช ๋ น ์ ๋์ฌ)์ ์ํด approve๊ฐ ์ ๊ณต ๋ ํจํด์ ์งํฉ. | |
| --- | |
| ## ์์ด์ ํธ | |
| ์์ด์ ํธ ๋น ๊ถํ์ด ๋ถ์ฌ ๋ ์ ์์ต๋๋ค. ์์ด์ ํธ ๊ถํ์ ๊ธ๋ก๋ฒ ๊ตฌ์ฑ๊ณผ ํฉ๋ณ๋๋ฉฐ, ์์ด์ ํธ ๊ท์น์ ์ฐ์ ํฉ๋๋ค. [Learn more](/docs/agents#permissions) ์ฝ ์์ด์ ํธ ๊ถํ. | |
| :::note | |
| [Granular Rules (Object Syntax)](#granular-rules-object-syntax))์ ๋ํ ์์ธํ ํจํด ๋งค์นญ ์์ ๋ฅผ ์ฐธ์กฐํ์ญ์์ค. | |
| ::: | |
| ```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" | |
| } | |
| } | |
| } | |
| } | |
| } | |
| ``` | |
| Markdown์ ์์ด์ ํธ ๊ถํ์ ๊ตฌ์ฑํ ์ ์์ต๋๋ค. | |
| ```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 | |
| ์ธ์์ ๋ช ๋ น์ ๋ํ ํจํด ๋งค์นญ์ ์ฌ์ฉํฉ๋๋ค. `"grep *"`๋ `grep pattern file.txt`๋ฅผ ํ์ฉํ๊ณ , `"grep"`๋ ํผ์ ๊ทธ๊ฒ์ ๋ง์ ๊ฒ์ ๋๋ค. `git status`์ ๊ฐ์ ๋ช ๋ น์ ๊ธฐ๋ณธ ๋์์ ์ํด ์๋ํ์ง๋ง, ์ธ์๊ฐ ์ ๋ฌ๋ ๋ ๋ช ์๋ ๊ถํ (`"git status *"`์ ๊ฐ์)์ด ํ์ํฉ๋๋ค. | |
| ::: | |