01-개념
01. 개념 — 권한 게이트는 도구 디스패처 직전에 있다
섹션 제목: “01. 개념 — 권한 게이트는 도구 디스패처 직전에 있다”1챕터에서 본 6개 층 중 2번 권한 게이트가 본 챕터의 주제다. 모델이 도구를 부르고 디스패처가 실행하기 직전, canUseTool(tool, args, context)가 호출돼 allow / deny / ask를 결정한다.
Ken Huang의 분석을 그대로 인용한다.
“five permission modes: default (interactive approval), auto (classifier-based), plan (upfront approval), acceptEdits (code review workflows), and bubble (subagent inheritance).”
의역 — 다섯 가지 권한 모드. default(매번 사용자 확인), auto(분류기 기반 자동), plan(미리 전체 계획 승인), acceptEdits(코드 리뷰 워크플로), bubble(서브에이전트 상속).
다섯 모드 한 줄씩
섹션 제목: “다섯 모드 한 줄씩”| 모드 | 핵심 동작 | 적합 상황 |
|---|---|---|
default | 모든 위험 작업에 대화형 확인 | 처음 쓸 때, 낯선 저장소 |
auto | 분류기가 안전 판정 → 자동 실행 | 신뢰된 저장소, 반복 작업 |
plan (Plan Mode) | 실행 없이 계획만, 사용자 승인 후 일괄 실행 | 큰 작업, 비가역 변경 |
acceptEdits | 파일 편집은 자동, 셸은 확인 | 코드 리뷰형 워크플로 |
bubble | 서브에이전트가 부모의 규칙을 상속 | 멀티 에이전트 |
두 가지 보호선: 권한 게이트 ≠ sandbox
섹션 제목: “두 가지 보호선: 권한 게이트 ≠ sandbox”이 둘은 자주 혼동되지만 다른 층이다.
- 권한 게이트는 허용된 도구를 어떤 인자로 부를 수 있는가를 본다 (예:
Bash는 되지만rm -rf패턴은 금지). - sandbox는 애초에 사고가 나도 영향 범위를 격리한다 (예: Devcontainer 안이라 호스트 홈 디렉터리에 손이 닿지 않음).
OpenHands 논문은 sandbox(runtime)를 핵심 설계 결정으로 든다. 권한 게이트가 뚫려도 sandbox가 살아 있으면 피해가 없다. 두 보호선을 모두 두는 것이 본 챕터의 핵심 처방.