본문으로 건너뛰기
LVIS AI

Host · Permissions

디렉토리 / 파일 권한

플러그인의 모든 파일 접근은 hostApi.storage.* sandboxed FS 를 통해서만 가능하고, 호스트 코어는 별도의 사용자 grant + reviewer 평가를 거칩니다. grant 저장: ~/.lvis/permissions.json (0o600).

src/permissions/permissions-store.ts
0o700 dir / 0o600 file
no fallback
디렉토리 단위 read/write 권한 부여

Plugin storage — sandbox 가 우선

플러그인이 디렉토리 접근을 위해 우선 사용하는 것은 manifest 의 namespace 안에서만 동작하는hostApi.storage sub-object 입니다:

storage.resolve(...segments) | read(relPath) | readText(relPath, encoding?)
        readJson<T>(relPath) | write(relPath, data, encoding?)
        writeJson<T>(relPath, value, indent?) | rm(relPath, options?)
        list(relPath?) | exists(relPath) | mkdir(relPath)

모든 경로는 ~/.lvis/plugins/<pluginId>/ 아래로 제한됩니다 — sandbox 탈출 불가.

호스트 사용자 grant — namespace 밖 접근

  1. 01

    요청 트리거

    builtin / mcp 도구 또는 special host 액션이 사용자 home/work 디렉토리에 파일을 쓰려고 시도 → reviewer 평가.

  2. 02

    권한 카드

    read-only / read+write / scope (이 폴더만 / 하위 포함) / 유효기간 선택. Tool category = write + RiskLevel = medium 이상이면 자동 카드.

  3. 03

    Grant 저장

    감사 추적

    ~/.lvis/permissions.json (src/permissions/permissions-store.ts) 에 grant 추가. 디렉토리 0o700, 파일 0o600.

  4. 04

    사용

    이후 같은 도구 호출은 grant 통과 시 자동, 범위 밖 접근 시 reject. 회수 후엔 fallback 없이 재허용 카드.

Sandbox + reviewer 두 단계 모두 통과 필요
Plugin 도구: (1) storage sandbox 가 경로 제한 → (2) reviewer 가 RiskLevel × Category × grant 평가. 둘 중 하나라도 reject 면 호출 실패. Builtin / MCP 도구: (2) 만 — sandbox 가 없으므로 reviewer 가 더 보수적으로 판단.