권한 모드(Permission Mode)는 APC가 아닌 APX에 존재합니다
요약
APC(휴대 가능한 컨텍스트 계층)와 APX(런타임 및 툴링 계층)의 분리를 통해 권한 모드가 왜 APX에 위치해야 하는지 설명합니다. 권한은 프로젝트의 속성이 아닌 머신의 정책이므로, 리포지토리의 휴대성을 유지하기 위해 로컬 런타임 설정인 APX에서 관리되어야 합니다.
핵심 포인트
- 권한 모드는 프로젝트 메타데이터가 아닌 머신 정책(Machine Policy)임
- APC는 프로젝트의 휴대성을 위해 git에서 검토 가능한 데이터만 포함해야 함
- APX는 total, automatico, permiso 세 가지 권한 모드를 제공함
- 권한 설정을 APC에 포함할 경우 리포지토리 클론 시 보안 정책 충돌 발생 가능
권한 모드(Permission Mode)는 APC가 아닌 APX에 존재합니다
APC는 휴대 가능한 컨텍스트 계층(portable context layer)입니다. APX는 일상적인 사용을 위한 런타임(runtime) 및 툴링(tooling) 계층입니다. 이러한 분리가 권한 모드가 리포지토리(repo)가 아닌 APX에 속해야 하는 이유입니다.
권한(Permissions)은 프로젝트의 진실(project truth)이 아닙니다. 그것은 머신 정책(machine policy)입니다.
사소하게 들릴 수 있지만, 이는 중요합니다. 리포지토리는 노트북, 데스크톱, 러너(runners) 사이를 깔끔하게 이동할 수 있어야 합니다. 권한 설정이 리포지토리가 도달하는 모든 곳에서 동일한 위험 수준을 강제해서는 안 됩니다. 만약 권한 상태를 APC에 포함시킨다면, 프로젝트의 휴대성을 떨어뜨리고 로컬 신뢰(local trust)와 공유 컨텍스트(shared context)를 혼합하게 됩니다.
APX가 실제로 저장하는 것
APX 코드는 경계를 명확하게 만듭니다. 권한 모드는 .apc/가 아닌 ~/.apx/config.json에 존재합니다.
사용 가능한 모드는 다음과 같습니다:
total- 확인 절차 없이 모든 도구(tool)를 실행automatico- 안전한 읽기 및 안전한 셸(shell) 작업을 직접 허용; 파괴적(destructive), 외부 발신(outbound), 런타임(runtime), MCP, 또는 파일 시스템 변경 작업에 대해서는 확인을 요청permiso-allowed_tools에 있는 도구만 직접 실행; 그 외 모든 작업은 확인 필요
automatico가 기본값입니다. 이는 모든 동작을 수동으로 만들지 않으면서도 런타임을 사용 가능하게 유지하므로, 일상적인 사용을 위한 합리적인 선택입니다.
이것이 APC에 존재할 수 없는 이유
APC는 휴대 가능한 계층입니다: 프로젝트 메타데이터(metadata), 에이전트(agents), 스킬(skills), MCP 힌트(hints), 그리고 지속적인 프로젝트 컨텍스트(durable project context)가 여기에 해당합니다. 해당 콘텐츠는 git에서 검토 가능해야 하며 도구 전반에 걸쳐 안정적이어야 합니다.
권한 모드는 다릅니다. 그것은 다음 사항에 따라 달라집니다:
- 누가 머신(machine)의 소유자인가
- 머신이 개인용인가 아니면 공유용인가
- 현재 작업이 탐색적(exploratory)인가 아니면 고위험(high-risk)인가
- 사용자가 오늘 런타임에 어느 정도의 신뢰를 부여하고자 하는가
이것들은 런타임 사실(runtime facts)이지, 프로젝트 사실(project facts)이 아닙니다.
권한을 APC로 옮기면 두 가지 나쁜 일이 발생합니다:
- 리포지토리를 다른 곳에 클론(Clone)하면, 새로운 머신에 맞지 않을 수 있는 정책을 상속받게 됩니다.
- git에서 권한 상태를 편집하면, 로컬의 안전 선택을 공유 프로젝트의 짐(baggage)으로 바꾸게 됩니다.
그것은 잘못된 방향입니다. 저장소(repo)는 작업 내용을 기술해야 합니다. APX는 그 작업을 수행하는 동안 로컬 런타임(local runtime)이 어느 정도의 권한을 가질지 결정해야 합니다.
가드(Guard) 또한 런타임 코드입니다
APX는 이 경계를 문서뿐만 아니라 코드에서도 강제합니다.
createPermissionGuard()는 globalConfig.super_agent.permission_mode와 allowed_tools를 읽은 다음, 활성화된 모드에 따라 도구 호출(tool call)을 차단하거나 허용합니다.
규칙은 간단합니다:
total은 가드(guard)를 건너뜁니다.automatico는 사용자가 확인하지 않는 한 위험한 동작을 차단합니다.permiso는 명시적으로 허용된 도구를 제외한 모든 것을 차단합니다.
이는 실제 작업 방식과 일치하기 때문에 유용한 형태입니다. 파일을 읽는 것은 저장소(repo)를 변형(mutating)하는 것과 같지 않습니다. 안전한 조회(lookup)는 런타임을 실행하거나 MCP 연결을 건드리는 것과 같지 않습니다.
APX는 그 구분을 마땅히 있어야 할 곳인 런타임(runtime)에 유지합니다.
실질적인 예시
개인 노트북을 사용 중이고 APX가 대부분 개입하지 않기를 원한다고 가정해 봅시다. 이 경우 automatico가 적합합니다.
이제 동일한 저장소(repo)가 공유 워크스테이션에서 열리거나, 아주 작은 도구 세트만 자유롭게 실행되어야 하는 환경에서 열린다고 상상해 보십시오. 그럴 때는 permiso가 적합할 수 있습니다.
동일한 APC 프로젝트이지만, APX 정책은 다릅니다.
이것이 바로 핵심입니다. 프로젝트는 변경되지 않은 상태로 유지되지만, 로컬 런타임(local runtime)은 실행 중인 머신에 맞춰 적응할 수 있습니다.
더 깊은 규칙
설정이 어디에 속해야 하는지 결정하는 데는 간단한 테스트가 도움이 됩니다:
- 만약
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기