# 실행 모드와 권한 (/ko/docs/verdent-for-vscode/execution-modes/overview)

> 다양한 실행 모드와 언제 사용해야 하는지 이해하기



***

Verdent for VS Code은 AI가 파일과 상호작용하고 명령을 실행하는 방식을 제어하는 여러 실행 모드를 제공합니다. 각 모드는 제어, 속도, 안전성 사이에서 서로 다른 균형을 제공합니다.

### 이 문서에서 배울 내용 [#이-문서에서-배울-내용]

* 각 실행 모드가 작동하는 방식과 사용 시점
* 권한 모델과 안전 고려 사항
* 모드 비교와 전환 전략
* 복잡한 추론 작업을 위한 Think Hard Mode

### 사용할 수 있는 주요 모드 [#사용할-수-있는-주요-모드]

<CardGroup cols="2">
  <Card title="Manual Accept Mode" icon="hand">
    모든 보호된 작업마다 권한 요청이 필요한 기본 모드입니다. 제어와 감독 수준이 가장 높습니다.
  </Card>

  <Card title="Auto-Run Mode" icon="play">
    파일 작업은 자동으로 처리하고, 명령에는 권한이 필요합니다. 속도와 안전성의 균형을 맞춥니다.
  </Card>

  <Card title="Skip Permission Mode" icon="forward">
    격리된 환경을 위한 완전 자율 모드입니다. 어떤 작업에도 권한 프롬프트가 표시되지 않습니다.
  </Card>

  <Card title="Plan Mode" icon="clipboard-list">
    읽기 전용 플래닝 모드입니다. 실행이 시작되기 전에 전체 플랜을 검토합니다.
  </Card>
</CardGroup>

***

## 실행 모드 [#실행-모드]

<Tabs>
  <Tab title="Manual Accept Mode">
    Manual Accept Mode은 파일 수정과 명령 실행을 제어할 수 있는 기본 실행 모드입니다.

    **자동 작업:**

    * 파일 읽기와 코드 분석
    * 디렉터리 탐색

    **권한 필요:**

    * 파일 편집(생성, 수정, 삭제)
    * 명령 실행(터미널 명령, 테스트, 빌드)

    Verdent이 보호된 작업을 수행해야 할 때, 어떤 작업을 하려는지와 관련된 파일/명령이 무엇인지 표시합니다. 각 작업을 **수락**하거나 **거부**할 수 있습니다.

    **중요:** 각 권한은 해당 특정 작업에만 적용됩니다. Manual Accept Mode은 세션 내내 모든 보호된 작업마다 승인이 필요합니다.

    #### 사용 시점 [#사용-시점]

    * Verdent의 기능과 워크플로 패턴을 익힐 때
    * 세심한 감독이 필요한 익숙하지 않은 코드베이스에서 작업할 때
    * 프로덕션 코드나 보안에 민감한 영역을 중요하게 변경할 때
    * 명시적인 승인 기록이 필요한 컴플라이언스 요구 사항이 있을 때

    #### 활성화 [#활성화]

    Manual Accept Mode은 기본으로 활성화되어 있습니다. 다시 전환하려면:

    <Steps>
      <Step title="권한 메뉴 열기">
        입력 상자에서 "Switch Permission" 버튼을 선택합니다.
      </Step>

      <Step title="Manual Accept Mode 선택">
        드롭다운에서 "Manual Accept Mode"을 선택합니다.
      </Step>

      <Step title="활성화 확인">
        버튼에 "Manual"이 표시되어 모드가 활성화되었는지 확인합니다.
      </Step>
    </Steps>

    #### 안전 고려 사항 [#안전-고려-사항]

    **장점:**

    * 도구 유형별 첫 사용 승인(파일 편집, 명령, 도구)
    * 접근 권한을 부여하기 전에 전체 내용을 확인할 수 있음
    * 가장 높은 수준의 제어와 투명성

    **제한 사항:**

    * 한 도구 유형을 처음 승인한 뒤에는 이후 사용이 프롬프트 없이 진행됨
    * 승인은 작업별이 아니라 도구 유형별로 적용됨
    * 중요한 코드를 작업할 때는 새 세션을 시작해 도구 승인을 초기화하세요
  </Tab>

  <Tab title="Auto-Run Mode">
    Auto-Run Mode은 파일 작업을 자동으로 승인하면서 명령에는 권한을 요구합니다. 일상적인 파일 작업에서 권한 프롬프트를 줄이면서, 위험한 작업에는 안전성을 유지합니다.

    **자동:**

    * 워크스페이스 내 파일 읽기, 편집, 생성, 삭제
    * 워크스페이스 내 파일 이동, 이름 변경, 정리
    * 파일 검색과 탐색 작업

    **권한 필요:**

    * **현재 워크스페이스 외부 경로가 포함된 모든 명령**
    * **위험한 bash 명령:** `rm -rf`, `git commit`, `git push` 등
    * 명령 실행(터미널, 스크립트, 빌드)
    * 패키지 설치와 시스템 수정

    #### 사용 시점 [#사용-시점-1]

    | Auto-Run을 사용할 때                     | 사용하지 않을 때       |
    | ----------------------------------- | --------------- |
    | 버전 관리가 적용된 신뢰할 수 있는 코드베이스           | 익숙하지 않은 코드베이스   |
    | 빠른 프로토타이핑과 실험                       | 중요한 프로덕션 코드     |
    | 여러 파일 리팩터링(15개 이상 파일 = 프롬프트 15개 절약) | 버전 관리 안전망이 없을 때 |
    | 방해를 줄이는 집중 개발                       | 컴플라이언스 요구 사항    |

    #### 활성화 [#활성화-1]

    <Steps>
      <Step title="권한 메뉴 열기">
        현재 모드가 표시된 "Switch Permission" 버튼을 선택합니다.
      </Step>

      <Step title="Auto-Run Mode 선택">
        드롭다운에서 "Auto-Run Mode"을 선택합니다.
      </Step>

      <Step title="활성화 확인">
        버튼에 "Auto"가 표시되어 모드가 활성화되었는지 확인합니다.
      </Step>
    </Steps>

    세션과 VS Code 재시작 후에도 유지됩니다. 모든 워크스페이스에 전역으로 적용됩니다.

    #### 예시 워크플로 [#예시-워크플로]

    **POST /api/tasks 엔드포인트 만들기:**

    1. Auto-Run Mode을 활성화합니다
    2. 제출: "카테고리가 존재하는지 검증하고 데이터베이스에 저장하는 POST /api/tasks 엔드포인트를 만들어줘"
    3. Verdent이 5개 이상의 파일을 읽고, 3개 파일을 자동으로 수정합니다(프롬프트 없음)
    4. Source Control 패널에서 변경 사항을 검토합니다
    5. 테스트 요청: "tasks API의 테스트를 실행해줘"
    6. `npm test` 명령에 대한 권한 프롬프트가 표시됩니다 - 수락합니다
    7. 검증 추가: "빈 제목에 대한 검증을 추가해줘"
    8. Verdent이 자동으로 편집합니다(프롬프트 없음)
    9. 테스트를 다시 요청합니다 - 권한 프롬프트 - 수락합니다
    10. diff를 검토하고 변경 사항을 커밋합니다

    **결과:** 명령 프롬프트 3개, 파일 프롬프트 0개. Manual Accept라면 파일 프롬프트가 4개 더 필요합니다.

    #### 안전 고려 사항 [#안전-고려-사항-1]

    **장점:**

    * 변경 사항이 즉시 VS Code에 표시됨
    * 워크스페이스 범위로 제한됨(시스템 파일에 영향을 줄 수 없음)
    * Git이 롤백 안전망을 제공함

    **위험:**

    * 파일 작업에 대한 감독이 없음
    * 예상치 못한 범위("User를 Account로 이름 바꿔줘"가 수십 개 파일을 수정할 수 있음)
    * 정리 과정에서 파일 삭제 가능
    * 프롬프트에 따라 민감한 파일을 수정할 수 있음

    **완화 방법:**

    * 명확하고 구체적인 프롬프트를 사용합니다
    * 완료 후 Source Control 패널을 검토합니다
    * 깨끗한 체크포인트를 위해 자주 커밋합니다
    * 복잡한 작업에는 먼저 Plan Mode을 사용합니다
    * 민감한 파일을 보호하도록 .gitignore를 설정합니다
  </Tab>

  <Tab title="Skip Permission Mode">
    Skip Permission Mode은 모든 권한 프롬프트를 건너뛰고 완전한 자율성을 허용합니다. &#x2A;*격리되고 폐기 가능한 환경에서만 사용하세요.**

    **모든 작업 자동:**

    * 파일 작업
    * 명령 실행
    * 패키지 설치
    * 시스템 수준 작업

    <Warning>
      이 모드는 모든 안전 가드레일을 제거합니다. 실수해도 영향이 없는 완전히 격리되고 폐기 가능한 환경에서만 사용하세요. 프로덕션이나 중요한 코드베이스에서는 절대 사용하지 마세요.
    </Warning>

    #### 사용 시점 [#사용-시점-2]

    | Skip Permission을 사용할 때        | 절대 사용하지 말아야 할 때  |
    | ----------------------------- | ---------------- |
    | 격리된 컨테이너의 자동화된 CI/CD 파이프라인    | 프로덕션 환경          |
    | 폐기 가능한 개발 컨테이너(실험 후 삭제)       | 중요한 코드가 있는 개발 환경 |
    | 프로덕션 연결이 없는 샌드박스 환경           | 중요한 코드베이스        |
    | 사람의 승인이 목적을 방해하는 스크립트 기반 워크플로 | 공유 저장소           |
    |                               | 민감한 데이터가 있는 환경   |

    #### 활성화 [#활성화-2]

    <Steps>
      <Step title="권한 메뉴 열기">
        "Switch Permission" 버튼을 선택합니다.
      </Step>

      <Step title="Skip Permission Mode 선택">
        드롭다운에서 "Skip Permission Mode"을 선택합니다.
      </Step>

      <Step title="활성화 확인">
        버튼에 "Skip"이 표시되어 모드가 활성화되었는지 확인합니다.
      </Step>
    </Steps>

    **활성화 전 안전 확인:**

    * 폐기 가능한 컨테이너나 VM인가요?
    * 이 환경을 삭제해도 문제가 없나요?
    * 여기에 프로덕션 코드나 중요한 코드가 있나요?

    앞의 두 질문 중 하나라도 "아니요"이거나 세 번째 질문이 "예"라면 활성화하지 마세요.

    #### 안전 경고 [#안전-경고]

    **모든 안전 가드레일이 제거됩니다:**

    * 명령이 시스템 권한으로 즉시 실행됩니다
    * 파일이 경고 없이 수정되거나 삭제될 수 있습니다
    * 데이터베이스 작업, Git 작업(force push 포함)이 승인 없이 진행됩니다
    * 악성 패키지를 설치하거나 자격 증명을 노출할 수 있습니다

    **안전한 경우:**

    * 환경이 완전히 폐기 가능함
    * 중요한 코드나 데이터가 없음
    * 프로덕션 시스템과 연결되지 않음
    * 무엇이든 파괴될 수 있음을 받아들임
  </Tab>
</Tabs>

***

## Plan Mode [#plan-mode]

Plan Mode은 읽기 전용 상호작용 모드입니다. 이 모드에서 Verdent은 코드를 분석하고 상세한 플랜을 만들며 명확화를 위한 질문을 하지만, 사용자가 승인하기 전까지 파일을 수정하거나 명령을 실행할 수 없습니다.

#### 작동 방식 [#작동-방식]

1. **분석** - 파일을 자동으로 읽습니다
2. **플래닝** - 할 일 목록이 포함된 구조화된 플랜을 만듭니다
3. **명확화** - 불확실성을 없애기 위해 질문합니다
4. **승인** - 사용자가 검토하고 진행 여부를 결정합니다
5. **실행** - 사용자의 권한 모드로 전환해 실행합니다

플랜에는 수정할 파일, 구현 단계, 의존성, 검증 전략이 표시됩니다.

#### 사용 시점 [#사용-시점-3]

* 복잡한 여러 파일 변경(커밋하기 전에 범위 이해)
* 익숙하지 않은 코드베이스(위험 없이 안전하게 탐색)
* 아키텍처 결정(구현 전에 접근 방식 검토)
* Manual Accept 피로 줄이기(개별 프롬프트 50개 대신 한 번 검토)
* 리스크가 큰 프로덕션 변경(실행 전에 전체 가시성 확보)

#### 활성화 [#활성화-3]

<Steps>
  <Step title="모드 메뉴 열기">
    입력 상자에서 "Switch Mode" 버튼을 선택합니다.
  </Step>

  <Step title="Plan Mode 선택">
    드롭다운에서 "Plan Mode"을 선택합니다.
  </Step>

  <Step title="활성화 확인">
    모드 표시기가 "Plan"으로 바뀌어 모드가 활성화되었는지 확인합니다.
  </Step>
</Steps>

활성화되면 Verdent은 분석하고 플랜을 만들지만, 사용자가 승인하기 전까지 파일을 수정하거나 명령을 실행하지 않습니다. 승인 후에는 기본 권한 모드(Manual Accept 또는 Auto-Run)로 전환됩니다.

#### 안전 고려 사항 [#안전-고려-사항-2]

**장점:**

* 플래닝 중 실행 위험이 전혀 없음
* 커밋 전에 전체 가시성 확보
* 대화형 명확화로 불확실성 제거
* 프로덕션 분석에 안전함

**제한 사항:**

* 승인이 정확성을 보장하지는 않음(플랜에 논리 오류가 있을 수 있음)
* 실행 안전성은 승인 후 선택된 권한 모드에 따라 달라짐
* 플랜 품질은 프롬프트의 명확성에 따라 달라짐

**모범 사례:**

* 논리 오류나 오해가 없는지 플랜을 검토합니다
* 불명확하면 후속 질문을 합니다
* 실행을 승인하기 전에 프롬프트를 다듬습니다
* 어떤 권한 모드로 실행될지 고려합니다(감독이 필요하면 Manual Accept, 속도가 필요하면 Auto-Run)

***

## Think Hard Mode [#think-hard-mode]

Think Hard Mode은 복잡한 추론 작업에 최대 연산 리소스를 할당합니다. 모델이 여러 접근 방식을 탐색하고 더 철저한 해결책을 제공합니다.

**특징:**

* 더 긴 추론 시간
* 여러 해결 접근 방식에 대한 더 깊은 분석
* 복잡한 로직, 엣지 케이스, 아키텍처 결정을 더 잘 처리
* 요청당 더 높은 크레딧 비용

#### 사용 시점 [#사용-시점-4]

| Think Hard Mode을 사용할 때    | 사용하지 않을 때      |
| ------------------------- | -------------- |
| 여러 트레이드오프가 있는 복잡한 아키텍처 결정 | 단순하고 명확한 작업    |
| 여러 잠재 원인이 있는 정교한 디버깅      | 시간이 중요한 요청     |
| 최적화 분석이 필요한 알고리즘 설계       | 크레딧 예산이 제한적일 때 |
| 정확성이 가장 중요한 핵심 비즈니스 로직    | 표준 모드로 충분할 때   |
| 복잡한 병목의 성능 최적화            |                |

#### 활성화 [#활성화-4]

<Tabs>
  <Tab title="Think Hard 버튼">
    요청별 활성화에는 UI 버튼을 사용합니다:

    <Steps>
      <Step title="Think Hard 활성화">
        입력 상자에서 "Think Hard" 버튼/토글을 선택합니다.
      </Step>

      <Step title="프롬프트 제출">
        요청을 입력하고 제출합니다.
      </Step>

      <Step title="단일 요청에만 적용">
        해당 특정 요청에만 적용되며 지속되지 않습니다.
      </Step>
    </Steps>

    모든 AI 제공자와 함께 작동합니다. 지속되지 않으므로 깊은 추론이 필요한 요청마다 매번 활성화해야 합니다.
  </Tab>

  <Tab title="자연어(Claude)">
    프롬프트에 사고 관련 키워드를 포함합니다:

    ```
    Think: Design the optimal database schema for this multi-tenant SaaS application
    ```

    또는 최대 추론을 위해:

    ```
    Ultrathink: Analyze the trade-offs between different authentication approaches
    ```

    <Note>
      "Think"와 "ultrathink"는 Claude 모델 전용 기능입니다. 이 키워드는 Claude 모델(Sonnet, Opus)에서 더 깊은 추론을 활성화하지만, 다른 AI 제공자(GPT-5, MiniMax)에서는 작동하지 않을 수 있습니다.
    </Note>

    요청별 활성화만 가능하며 Manual Accept나 Auto-Run처럼 지속되지 않습니다.
  </Tab>
</Tabs>

***

## 모드 비교 [#모드-비교]

| 모드                  | 제어    | 속도    | 가장 적합한 경우                        | 피해야 할 경우             |
| ------------------- | ----- | ----- | -------------------------------- | -------------------- |
| **Manual Accept**   | 최대    | 가장 느림 | 학습, 익숙하지 않은 코드, 중요한 변경           | 신뢰할 수 있는 프로젝트, 빠른 반복 |
| **Auto-Run**        | 중간    | 빠름    | 신뢰할 수 있는 코드베이스, 프로토타이핑, 여러 파일 작업 | 익숙하지 않은 코드, 버전 관리 없음 |
| **Skip Permission** | 없음    | 가장 빠름 | CI/CD, 폐기 가능한 컨테이너, 샌드박스         | 프로덕션, 중요한 코드         |
| **Plan Mode**       | 검토 우선 | 해당 없음 | 복잡한 변경, 아키텍처 결정                  | 단순한 작업               |
| **Think Hard**      | 요청별   | 더 느림  | 복잡한 추론, 알고리즘, 핵심 로직              | 단순한 작업, 시간이 중요한 경우   |

### 각 모드의 사용 시점 [#각-모드의-사용-시점]

| 시나리오                   | Manual Accept | Auto-Run | Skip Permission | Plan Mode |
| ---------------------- | :-----------: | :------: | :-------------: | :-------: |
| Verdent 배우기            |       ✓       |          |                 |           |
| 익숙하지 않은 코드베이스          |       ✓       |          |                 |     ✓     |
| Git이 있는 신뢰할 수 있는 코드베이스 |               |     ✓    |                 |           |
| 중요/프로덕션 코드             |       ✓       |          |                 |     ✓     |
| 빠른 프로토타이핑              |               |     ✓    |                 |           |
| 여러 파일 리팩터링             |               |     ✓    |                 |           |
| 복잡한 아키텍처 플래닝           |               |          |                 |     ✓     |
| CI/CD 파이프라인(격리됨)       |               |          |        ✓        |           |
| 폐기 가능한 컨테이너            |               |          |        ✓        |           |
| 컴플라이언스 요구 사항           |       ✓       |          |                 |           |

***

## 안전 모범 사례 [#안전-모범-사례]

<Accordion title="안전성 계층(가장 안전한 순서)">
  각 모드의 안전성 순위를 이해하면 위험 수준에 맞게 적절한 모드를 선택하는 데 도움이 됩니다.

  1. **Plan Mode** - 승인 전까지 읽기 전용입니다. 플래닝 중 실행 위험이 전혀 없습니다.
  2. **Manual Accept Mode** - 도구 유형별 첫 사용 승인과 작업별 제어를 제공합니다.
  3. **Auto-Run Mode** - 명령 승인과 함께 파일 자율성을 제공합니다. Git 안전망이 필요합니다.
  4. **Skip Permission Mode** - 완전 자율 모드입니다. 격리된 환경에서만 사용합니다.

  모드를 위험 수준에 맞추세요. 중요한 코드는 가장 안전한 모드(Plan, Manual Accept)를 사용하고, 신뢰할 수 있는 코드는 더 빠른 모드(Auto-Run)를 사용하며, 폐기 가능한 환경은 가장 빠른 모드(Skip Permission)를 사용합니다.
</Accordion>

<Accordion title="일반 모범 사례">
  어떤 실행 모드를 사용하든 적용되는 필수 실천 사항입니다.

  **모든 모드에서:**

  1. **버전 관리 사용** - 허용 범위가 넓은 모드를 사용하기 전에 Git을 초기화하고, 자주 커밋하며, 커밋 전에 diff를 검토합니다
  2. **명확한 프롬프트 작성** - 범위를 구체적으로 설명하고, 파일 경계를 명시하며, 컨텍스트에는 @-mention을 사용합니다
  3. **커밋 전 검토** - 완료 후 Source Control 패널을 확인하고, 모든 diff를 꼼꼼히 검토하며, 변경 사항을 테스트합니다
  4. **새 세션으로 시작** - 주요 작업 사이에 컨텍스트를 비우고, 민감한 작업에는 도구 승인을 초기화하며, 컨텍스트 오염을 피합니다
  5. **위험에 맞게 모드 선택** - 중요한 코드 → Manual Accept 또는 Plan Mode, 신뢰할 수 있는 코드 → Auto-Run, 실험 → Git과 함께 Auto-Run, 폐기 가능 환경 → Skip Permission만 사용

  **보안 알림:**

  * 민감한 파일(.env, 자격 증명)을 절대 커밋하지 마세요
  * Auto-Run을 사용하기 전에 .gitignore를 설정하세요
  * 명령 권한을 신중하게 검토하세요
  * 보안에 영향을 주는 변경에는 Plan Mode을 사용하세요
  * 새 세션은 Manual Accept의 도구 승인을 초기화합니다
</Accordion>

<Accordion title="Progressive Permission Model">
  Verdent의 권한 시스템이 작동하는 방식을 이해하면 더 효과적으로 사용할 수 있습니다.

  **작동 방식:**

  1. **첫 사용** - 각 도구 유형(파일 편집, 명령 실행, 도구 사용)을 처음 사용할 때 시스템이 권한을 요청합니다
  2. **이후 사용** - 최초 승인 후에는 해당 도구 유형이 세션의 나머지 동안 프롬프트 없이 진행됩니다
  3. **새 세션** - 새 세션을 시작하면 모든 승인이 초기화되어 새로 시작할 수 있습니다

  **핵심 원칙:** 이 모델은 보안과 생산성의 균형을 맞춥니다. 도구 유형을 한 번 검토하고 승인한 뒤, 해당 승인 컨텍스트 안에서 효율적으로 작업합니다. 민감한 작업에는 새 세션을 시작해 승인을 초기화하세요.

  **승인 초기화 방법:** 새 세션을 시작합니다
</Accordion>

***

## 함께 보기 [#함께-보기]

<CardGroup cols="2">
  <Card title="리소스 관리" href="/docs/verdent-for-vscode/resource-management/monitoring" icon="chart-line">
    토큰 사용량, 크레딧, 성능을 모니터링합니다
  </Card>

  <Card title="모범 사례: 컨텍스트" href="/docs/verdent-for-vscode/best-practices/context" icon="layer-group">
    모드 전반에서 컨텍스트 창을 관리합니다
  </Card>
</CardGroup>
