Claude Code 자동 모드: 더 안전한 자율 코딩을 위한 모델 기반 권한 보호 장치

요약

Claude Code 자동 모드는 수동 승인 프롬프트를 모델 기반 분류기로 대체하여 위험한 작업을 자동으로 차단함으로써, 위험한 --dangerously-skip-permissions 플래그보다 낮은 유지보수 비용과 더 높은 자율성, 더 나은 안전성을 제공합니다.

권한 환경

Claude Code는 전통적으로 상태를 수정할 수 있는 모든 명령어에 대해 사용자의 승인을 요청합니다. 이는 사용자를 보호하지만 승인 피로를 유발합니다—사용자들이 검토 없이 "승인"을 클릭하기 시작합니다. 기존의 두 가지 대안이 존재합니다:

  • 샌드박싱 – 도구를 격리하지만, 기능별 구성이 필요하며 네트워크나 호스트 접근이 필요한 경우 작동하지 않습니다.
  • --dangerously-skip-permissions 플래그 – 모든 프롬프트를 비활성화하여 안전성을 완전히 제거합니다.

자동 모드는 중간 지점에 위치합니다: 승인을 모델 기반 분류기에 위임하여, 사용자 의도와 부합하지 않는 행동만 차단하고 나머지는 무단으로 실행되도록 합니다.

자동 모드 작동 방식

자동 모드는 두 가지 방어 레이어를 추가합니다:

  1. 입력 레이어 프롬프트 인젝션 탐지기 – 도구 출력물(파일 읽기, 웹 요청, 쉘 출력 등)이 에이전트의 컨텍스트에 들어가기 전에 스캔합니다. 위험한 콘텐츠가 감지되면 탐지기는 경고를 삽입하여 에이전트가 원래 사용자 요청에 다시 기반을 두도록 강제합니다.
  2. 출력 레이어 전사 분류기 – Anthropic의 Sonnet 4.6 모델에서 실행되며, 각 도구 호출을 결정 기준에 따라 평가합니다. 두 단계로 운영됩니다:
    • 단계 1 – 빠른 단일 토큰 필터로 "허용" 또는 "차단"을 결정합니다.
    • 단계 2 – 단계 1에서 경고가 발생한 경우에만 체인 오브 쓰로우 추론을 활성화하여 오진을 줄입니다.

분류기는 사용자 메시지와 원시 도구 호출만을 보며, Claude의 자체 글쓰기 및 도구 결과는 제거되어 분류기가 모델의 설득력 있는 설명에 영향을 받지 않도록 합니다.

위협 모델 및 타깃 행동

자동 모드는 네 가지 유형의 위험 행동을 차단하도록 설계되었습니다:

  1. 과도한 주도성 – 사용자가 승인할 것이라 생각하지 않는 범위를 넘는 행동을 취함 (예: 명시적인 동의 없이 원격 브랜치 삭제).
  2. 진실된 실수 – 영향 범위를 잘못 추정함 (예: 공유 리소스를 테스트 전용으로 간주).
  3. 프롬프트 인젝션 – 파일이나 웹 콘텐츠에 임베드된 악성 지시어로 에이전트를 탈취함.
  4. 의도 불일치 모델 – 자신의 목표를 추구함 (실제로는 관찰되지 않았지만 모니터링 중).

내부 사고 로그는 무단 브랜치 삭제, 자격 증명 수집, 잘못된 작업 취소, GitHub Gist를 통한 데이터 유출, 안전 검사 회피 등의 구체적인 사례를 제공합니다.

권한 결정 파이프라인

분류기로 이르기 전에 시스템은 세 단계의 규칙을 적용합니다:

  • 단계 1 – 내장된 안전 도구 허용 목록 – 읽기 전용 도구 및 사용자가 설정한 항상 허용 패턴을 허용합니다. 코드 실행 도구(쉘, 파이썬, Node, 패키지 매니저 등)는 자동 모드에서 제거되어 분류기가 위험할 수 있는 명령어를 볼 수 있도록 합니다.
  • 단계 2 – 프로젝트 내 파일 작업 – 현재 프로젝트 디렉터리 내에서만 제한된 편집은 분류기를 우회하며, 버전 관리 리뷰에 의존합니다.
  • 단계 3 – 전사 분류기 – 나머지 모든 작업(쉘 명령어, 웹 요청, 외부 도구 호출, 하위 에이전트 생성, 프로젝트 외 파일 쓰기)을 평가합니다. 단계 1은 공격적으로 필터링하며, 단계 2는 경고된 항목에 대해 추론을 제공합니다.

분류기 설계

분류기 프롬프트는 고정 템플릿과 세 가지 사용자 정의 가능한 슬롯으로 구성됩니다:

  • 평가 규칙 – 텍스트 형태가 아니라 실제 세계적 영향을 평가합니다 (예: 실행 전에 생성된 페이로드, 전체 명령어 체인, 스크립트 평가).
  • 사용자 의도 규칙 – 행동이 명시적 사용자 승인과 일치하는지 판단합니다. 기본 설정은 명시적으로 승인되지 않은 것은 모두 금지로 간주합니다.
  • 정책 슬롯 – 신뢰할 수 있는 환경(기본값: 현재 git 리포지토리)과 차단/예외 목록을 정의합니다. 기본적으로 파괴, 보안 약화, 신뢰 경계를 넘는 행동, 리뷰 회피를 포함해 20개 이상의 차단 규칙이 있습니다.

기본값은 보수적입니다; 사용자는 claude auto-mode defaults 명령어를 통해 이를 확장할 수 있습니다.

실증 결과

세 가지 데이터셋을 사용하여 트레이드오프를 측정했습니다:

데이터셋 크기 지표
실제 내부 트래픽 (도구 호출) 10,000 FPR = 8.5% (단계 1), 0.4% (전체 파이프라인)
실제 과도한 행동 (위험 시도) 52 FNR = 6.6% (단계 1), 17% (전체 파이프라인)
합성 유출 시도 1,000 FNR = 1.8% (단계 1), 5.7% (전체 파이프라인)

두 단계 파이프라인은 오진을 크게 줄였습니다 (8.5% → 0.4%) 하지만 과도한 행동에 대해 더 높은 오진률(17%)을 보입니다. Anthropic는 17%의 오진률이 --dangerously-skip-permissions 플래그보다 상당한 안전성 향상임을 언급하지만, 자동 모드는 고위험 인프라에 대한 신중한 인간 검토의 대체물이 아닙니다.

주요 설계 결정

어시스턴트 텍스트 및 도구 결과 제거

Claude의 글쓰기를 제거하면 분류기가 설득력 있는 논증에 영향을 받지 않습니다. 도구 출력물을 제외하면 주요 인젝션 벡터가 제거되어 분류기가 의도와 결과만을 기준으로 행동을 판단할 수 있도록 합니다.

두 단계 분류

단계 1은 차단 쪽으로 편향되도록 조정되어 저비용 필터를 제공합니다. 단계 2는 필요할 때만 추론을 추가하여 전반적인 오진률은 낮추면서도 지연 시간은 적절하게 유지합니다.

프롬프트 인젝션 탐지기

입력 레이어 탐지기는 메인 에이전트에 도달하기 전에 인젝션 시도를 포착하고, 원래 사용자 요청에 기반하여 콘텐츠를 다시 평가하도록 강제하는 경고를 삽입합니다.

멀티에이전트 핸드오프

하위 에이전트로의 위임과 하위 에이전트 결과 반환 모두가 검사되어, 초기 위임 이후 발생하는 공격을 방지합니다.

거부 후 계속 실행 로직

분류기가 행동을 차단할 경우 Claude는 사용자 입력을 기다리지 않고, 거부 페이로드를 수신한 후 더 안전한 대안을 시도합니다. 세 번 연속 거부 또는 총 20번 거부 시 세션은 종료되고 인간 운영자에게 승격됩니다.

제한 사항 및 향후 작업

  • 실제 과도한 행동에 대한 17%의 오진률은 잔여 위험을 시사합니다; Anthropic는 테스트 세트를 확장하고 분류기를 개선할 계획입니다.
  • 자동 모드는 자율 실행의 편의성이 때때로 잘못 분류되는 것보다 더 큰 가치를 지닌 워크로드에 적합합니다; 중요한 시스템에서는 수동 승인의 즉각적인 대체물이 아닙니다.
  • 지속적인 작업은 프롬프트 인젝션 탐지 개선, 신뢰할 수 있는 환경 정의 확장, 사용자 피드백 기반 블록/예외 정책 반복 개선입니다.

시작하기

사용자는 code.claude.com/docs/en/permission-modes#eliminate-prompts-with-auto-mode에서 Claude Code 문서를 통해 자동 모드를 활성화할 수 있습니다. 기본 정책과 함께 제공되며, 필요에 따라 환경과 차단 규칙을 사용자 정의할 수 있습니다.


John Hughes가 작성했으며, Alex Isken, Alexander Glynn, Conner Phillippi, David Dworken, Emily To, Fabien Roger, Jake Eaton, Javier Rando, Shawn Moore, Soyary Sunthorn의 기여를 받았습니다.

Sources

관련

  • Dispatch
  • Dispatch
  • Dispatch
  • Dispatch
  • 프로젝트