Permission modes

Permission modes (권한 모드)

Permission modes는 에이전트가 내 머신, 내 코드, 내 Snowflake 계정을 건드리는 도구를 실행하기 전에 언제 멈춰 물어볼지를 제어해요. 모든 채팅에는 승인 모드(Default Approvals 또는 Bypass Approvals)가 있고, 이 모드가 에이전트가 언제 확인을 위해 멈추고 언제 스스로 행동할지를 결정해요.

출처: Permission modes

본문

중요

Bypass Approvals는 모든 도구 호출의 수동 승인을 끄는데, 파일 편집, 터미널 명령, Snowflake SQL을 포함해요. 신뢰하는 프롬프트, 신뢰하는 프로젝트에서, 에이전트가 무엇을 하려는지 이해할 때만 켜요. 에이전트는 여전히 파괴적인 변경을 할 수 있어요. 다만 먼저 묻지 않을 뿐이에요.

승인 모드 한눈에 보기

승인 모드 선택기는 채팅 입력의 왼쪽 아래에 있어요. 언제든 전환할 수 있고, 변경은 현재 채팅과 바꾸기 전까지의 모든 미래 채팅에 적용돼요.

모드 아이콘 동작
Default Approvals shield CoCo가 구성된 도구별·편집별·URL별 승인 설정을 사용해요. 새롭거나 위험한 도구 호출은 확인을 요청해요. 일상적인 사용에 권장되는 설정이에요.
Bypass Approvals warning 모든 도구 호출이 확인 없이 자동 승인돼요. 신뢰하는 상황에서만 드물게 사용해요.

승인 모드는 머신 전체 설정이에요. 한 채팅에서 전환하면 같은 머신의 모든 프로젝트의 모든 채팅에 영향을 줘요.

Default Approvals

Default Approvals에서는 에이전트가 부수 효과를 낼 수 있는 도구 호출을 실행하기 전에 멈춰 물어봐요. 도구 하나를 한 번 승인하면 보통 그 채팅의 나머지에서도 허용되고, 영구히 허용할 수도 있어요. 승인은 세 가지 독립 범주로 추적돼요.

도구 호출

bash, 터미널 명령, MCP 도구, 브라우저 자동화, SQL 실행 같은 도구 호출은 승인을 요청해요. 각 프롬프트는 다음을 제공해요.

  • Allow once: 이 단일 호출을 실행해요.
  • Allow for session: 이 채팅에서 이 도구에 대한 향후 프롬프트를 건너뛰어요.
  • Always allow: 이 머신에서 이 도구를 다시는 묻지 않아요.
  • Reject: 이 호출을 취소하고 에이전트가 다른 방법을 시도하게 해요.

일부 도구는 의도적으로 자동 승인 대상이 아니며, 무엇을 클릭하든 항상 프롬프트해요. 항상 프롬프트하는 도구를 참고해요.

SQL과 저장 프로시저 승인

SQL 실행은 다른 도구 호출과 똑같이 취급되므로 Allow once, Allow for session, Always allow 선택이 동일하게 적용돼요. SQL 특유의 다음 동작에 주의해요.

  • 저장 프로시저 호출(CALL)은 "Always allow" 후에도 다시 프롬프트할 수 있어요. CALL은 상태를 바꿀 수 있고 에이전트가 프로시저가 무엇을 하는지 항상 판단하지 못하므로, 이전에 승인한 CALL 문장에 대해 다시 프롬프트될 수 있어요. 같은 프로시저를 반복 실행할 때(예: 많은 계정에서 맥락을 전환할 때) 프롬프트를 줄이려면 Allow for session을 선택하거나, 신뢰하는 상황에서 Bypass Approvals를 사용해요.
  • 문장 텍스트가 중요해요. 승인은 표시된 특정 문장에 적용돼요. 다른 문장(다른 프로시저, 인자, 또는 대상)은 새것으로 취급되어 다시 프롬프트해요.

승인이 "always allow"에 붙어 있는 것 같거나 에이전트가 다시 프롬프트하기를 원하면, 도구 확인 초기화를 해요.

파일 편집

파일 편집은 편집이 자동 승인될지 프롬프트될지 결정하는 glob 패턴 목록으로 게이트돼요. 기본값은 대부분의 파일을 자동 승인하지만, 다음은 명시적 승인을 요구해요.

  • **/.vscode/*.json
  • **/.git/**
  • 중요 프로젝트 파일: package.json, package-lock.json, .env, build.rs 등
  • 프로젝트 파일: *.code-workspace, *.csproj, *.fsproj, *.vcxproj, *.proj, *.targets, *.props

마지막으로 일치하는 패턴이 이겨요. 설정에서 추가 파일을 잠그거나 자동 승인을 넓히는 내 패턴을 추가할 수 있어요.

URL

네트워크 가져오기 도구는 구성 가능한 URL 패턴 목록을 확인해요. 패턴은 정확한 호스트(https://example.com), 와일드카드(https://*.example.com), 경로 범위(https://example.com/api/*)일 수 있어요. 각 항목은 URL을 전면 승인하거나, 항상 프롬프트하거나, 요청 승인과 응답 승인을 구분할 수 있어요.

Bypass Approvals

Bypass Approvals로 전환하면 위의 모든 승인 확인이 비활성화돼요. 에이전트는 다음을 하게 돼요.

  • 묻지 않고 아무 터미널 명령이나 실행.
  • 묻지 않고 프로젝트의 어떤 파일이든 편집.
  • MCP 도구를 포함한 어떤 도구든 묻지 않고 호출.
  • 묻지 않고 어떤 Snowflake SQL이든 실행.

Bypass Approvals는 도구별·편집별·URL별 설정을 덮어써요. 소수의 고위험 도구는 여전히 항상 프롬프트해요. 항상 프롬프트하는 도구를 참고해요.

중요

웹 페이지, 파일, 또는 모델 출력을 통한 프롬프트 주입 공격은 에이전트가 의도하지 않은 명령을 내리게 할 수 있어요. 에이전트의 맥락에 들어가는 모든 것(웹 가져오기, 파일 내용, 도구 출력)은 지침을 담을 수 있어요. Default Approvals에서는 프롬프트를 보고 거부하겠지만, Bypass Approvals에서는 그냥 실행돼요. Bypass Approvals를 검증되지 않은 스크립트를 root로 실행하는 것처럼 취급해요.

조직 전체에서 Bypass Approvals 차단

관리자는 permissions.dangerouslyAllowAll 관리 설정으로 Bypass Approvals를 기기 전체에서 비활성화할 수 있어요. 차단되면 모드 선택기에 Bypass Approvals가 비활성화된 채 "Blocked by your organization" 메시지가 표시되고, 이전에 켠 사람은 Default Approvals로 초기화돼요. Managed settings를 참고해요.

도구 확인 초기화

모든 "Always allow" 선택과 내가 부여한 워크스페이스별 승인은 세션 간에 기억돼요. 이를 지우고 에이전트가 깨끗한 상태에서 다시 프롬프트하게 하려면:

  1. Cmd+Shift+P(macOS) 또는 Ctrl+Shift+P(Windows)로 Command Palette를 열어요.
  2. Reset Tool Confirmations를 실행해요.

이것은 실수로 "Always allow"나 "allow in this workspace"를 선택했을 때, 또는 머신이나 프로젝트를 다른 사람에게 넘길 때 도움이 돼요. 확인 초기화는 승인 모드를 바꾸지 않아요. 기억된 도구별·편집별·URL별·워크스페이스별 승인만 지울 뿐이에요.

모드 선택하기

  • 완전히 신뢰하지 않는 새 프로젝트 또는 작업. Default Approvals.
  • 신뢰할 수 없는 출처(인터넷에서 복사한 프롬프트, 고객 파일, 가져오는 웹 페이지). Default Approvals.
  • 샌드박스 브랜치에서 반복적이고 잘 이해된 작업(예: 많은 파일에 걸친 codemod). Bypass Approvals가 합리적일 수 있어요. 작업이 끝나자마자 되돌려요.
  • 밤새 자동화 실행. Default Approvals. 확인 프롬프트에 부딪힌 자동화는 멈추겠지만, 통제 불능 에이전트를 자동 승인하는 것보다 안전해요. 멈춤을 피하려면 새 자동화에 Run now once를 사용해 필요한 도구를 승인하세요. 이후 실행은 프롬프트 없이 진행돼요. Automations > Permissions를 참고해요.

항상 프롬프트하는 도구

소수의 도구는 의도적으로 자동 승인 면제이며, 승인 모드나 관리자 정책에 관계없이 항상 프롬프트해요.

  • 브라우저 코드 실행(browser_evaluate, browser_run_code): 활성 페이지의 임의 JS는 최고 위험 도구라서, 방문한 페이지의 프롬프트 주입이 무해한 첫 호출 이후 조용히 데이터를 빼돌릴 수 없어요.
  • 클립보드 읽기(browser_read_clipboard): 시스템 클립보드는 비밀번호나 토큰을 담을 수 있어요.
  • 하위 에이전트와 자동 승인을 거부하는 일부 파괴적 도구.

에이전트 터미널 샌드박스

에이전트 터미널 사용 주변에 추가 보호 계층을 원한다면, CoCo가 에이전트가 실행하는 명령을 샌드박스로 감싸게 할 수 있어요. 샌드박스가 켜지면 채팅 에이전트가 내는 터미널 명령은 내 머신에서 직접이 아니라 제한된 환경 안에서 실행돼요.

설정에 다음을 넣어 켜요.

"chat.agent.sandbox.enabled": "on"

샌드박스는 승인 모드를 보완하는 defense-in-depth 조치예요. 승인된(또는 자동 승인된) 터미널 명령이 할 수 있는 일을 제한하며, Bypass Approvals로 실행하거나 신뢰할 수 없는 출처의 프롬프트를 실행할 때 특히 유용해요.

더 알아보기