🎹바이브 코딩 마스터
Chapter 06

🔒CLI 기본 옵션

안전장치와 자동화

각 플랫폼의 권한 모드와 자동화 옵션을 비교하며 안전한 사용법을 배웁니다.

15

CLI 기본 옵션 — 안전장치와 자동화

AI 코딩 도구에게 코드를 작성하고 실행하도록 맡긴다는 것은, 누군가에게 여러분의 컴퓨터를 대신 조작하도록 허락하는 것과 같습니다.

이 장에서는 AI에게 얼마나 많은 권한을 줄 것인가를 결정하는 안전장치(Permission)와 자동화 옵션에 대해 배웁니다.

🎼 모니터 스피커의 볼륨 레벨로 비유하면

스튜디오에서 작업할 때, 모니터 스피커의 볼륨 레벨을 어떻게 설정하시나요?

  • 헤드폰 모니터링: 나만 듣고, 외부에는 아무 영향 없음 (가장 안전)
  • 니어필드 모니터: 내 자리에서만 들리는 적당한 볼륨 (일반 작업)
  • 메인 스피커 풀볼륨: 스튜디오 전체에 울림 (위험할 수 있음)
  • PA 시스템 직결: 건물 전체에 울림 (사고 나면 큰일)

AI 코딩 도구의 권한 설정도 이와 같습니다. 안전하게 작업할 수 있는 단계부터, 모든 제한을 풀고 자유롭게 실행하는 단계까지, 여러 레벨이 존재합니다.


기본 모드: 매번 승인 요청 (기본값)

모든 AI 코딩 CLI 도구의 기본 모드는 대화형 승인(Interactive Approval) 방식입니다. AI가 무언가를 실행하려 할 때마다 사용자에게 "이걸 실행해도 되나요?"라고 묻습니다.

🎼 리허설 모드로 비유하면

오케스트라 리허설에서 지휘자가 연주자에게:

"2번 악장 14마디부터 연주하겠습니다. 준비됐나요?"

이렇게 매번 확인하는 것과 같습니다. 안전하지만, 흐름이 자주 끊어집니다.

기본 모드에서 일어나는 일

사용자가 요청

"index.html 파일을 만들고 간단한 웹페이지를 작성해줘"

AI가 계획 수립

AI가 어떤 파일을 만들고 어떤 내용을 쓸지 계획합니다.

승인 요청

AI가 "index.html 파일을 생성하겠습니다. 허용하시겠습니까?" 라고 묻습니다. 사용자가 y(yes)를 입력해야 실행됩니다.

실행 및 다음 단계

승인하면 파일이 생성됩니다. 다음 단계(예: CSS 추가)에서 다시 승인을 요청합니다.

기본 모드 — 매번 승인 필요
$ codex '간단한 웹페이지를 만들어줘'

GPT Codex CLI의 권한 옵션들

OpenAI의 Codex CLI는 권한 수준을 세밀하게 조절할 수 있는 여러 옵션을 제공합니다. 안전한 순서대로 살펴보겠습니다.

1단계: 기본 모드 (플래그 없음)

가장 안전한 기본 설정입니다.

terminalbash
codex '내 프로젝트에 README.md를 만들어줘'
  • 파일 읽기: 자동 허용
  • 파일 쓰기: 매번 승인 필요
  • 명령어 실행: 매번 승인 필요
  • 네트워크 접근: 매번 승인 필요
🎼 음악으로 비유하면

리허설 모드: 지휘자가 매 악절마다 멈추고 "이렇게 연주할까요?" 확인합니다. 안전하지만 흐름이 끊어지고, 긴 곡을 연주하기에는 인내심이 필요합니다.


2단계: -a never (Suggest 모드)

terminalbash
codex -a never "프로젝트 구조를 분석해줘"

이 모드에서 AI는 코드를 제안만 하고, 실제로 아무것도 실행하지 않습니다. 사용자가 직접 코드를 복사해서 실행해야 합니다.

  • 파일 읽기: 자동 허용
  • 파일 쓰기: 제안만 함 (실행 안 함)
  • 명령어 실행: 제안만 함 (실행 안 함)
🎼 음악으로 비유하면

악보 검토 모드: 편곡자가 악보를 보여주기만 하고, 실제 연주는 하지 않습니다. "이렇게 편곡하면 어떨까요?" — 판단은 전적으로 여러분의 몫입니다. 처음 배우는 단계에서 AI가 어떤 코드를 생성하는지 관찰하기에 좋습니다.


3단계: --full-auto (자동 실행 모드)

terminalbash
codex --full-auto "MediaPipe 손 추적 예제를 만들고 테스트해줘"

AI가 작업 디렉토리 안에서 자유롭게 파일을 읽고, 쓰고, 명령어를 실행합니다. 단, 중요한 제한이 있습니다:

  • 파일 읽기: 자동 허용
  • 파일 쓰기: 자동 허용 (작업 디렉토리 내)
  • 명령어 실행: 자동 허용 (샌드박스 내)
  • 네트워크 접근: 차단됨
⚠️ 네트워크 차단이란?

--full-auto 모드에서는 인터넷 접근이 차단됩니다. 즉, pip install이나 npm install 같은 패키지 설치 명령이 실패합니다. 이미 설치된 도구만 사용할 수 있습니다.

이것은 의도적인 안전장치입니다 — AI가 임의로 외부 코드를 다운받아 실행하는 것을 방지합니다.

🎼 음악으로 비유하면

격리된 스튜디오: 연주자가 방음 부스 안에서 자유롭게 연주하고 녹음합니다. 부스 안에서는 무엇이든 할 수 있지만, 부스 밖(인터넷)과는 소통할 수 없습니다. 실수해도 부스 안에서만 영향이 있으니 안전합니다.


4단계: --full-auto --full-auto-error-mode (에러 무시 자동화)

terminalbash
codex --full-auto --full-auto-error-mode "전체 테스트를 실행하고 실패하는 것들을 수정해줘"

--full-auto에 추가로, 에러가 발생해도 AI가 스스로 판단하여 계속 진행합니다. 테스트 실패, 빌드 에러 등을 AI가 자율적으로 수정하고 재시도합니다.


5단계: --dangerously-bypass-approvals-and-sandbox (YOLO 모드)

terminalbash
codex --dangerously-bypass-approvals-and-sandbox "서버 설정을 최적화해줘"
⚠️ 최대 위험: 모든 안전장치 해제

이 옵션은 이름 그대로 위험하게 모든 승인과 샌드박스를 우회합니다.

  • 파일 읽기/쓰기: 무제한
  • 명령어 실행: 무제한 (시스템 전체)
  • 네트워크 접근: 무제한
  • 샌드박스: 없음

AI가 시스템 파일을 수정하거나, 인터넷에서 임의의 코드를 받아 실행하거나, 중요한 데이터를 삭제할 수 있습니다.

절대로 프로덕션 서버에서 사용하지 마세요. 개인 실험 환경에서만, 그것도 백업을 해둔 상태에서만 사용하세요.

🎼 음악으로 비유하면

라이브 PA 직결 + 제한 없음: 아무런 사운드체크 없이 PA 시스템에 직결하고, 볼륨 리미터도 해제한 상태입니다. 멋진 퍼포먼스가 될 수도 있지만, 피드백이 발생하면 관객의 귀가 다칠 수 있습니다. 프로 엔지니어가 통제된 환경에서만 시도할 수 있는 것입니다.


Claude Code의 권한 옵션

Claude Code도 유사한 권한 체계를 가지고 있지만, 구조가 약간 다릅니다.

기본 모드

Claude Code의 기본 모드에서는 안전한 읽기 작업은 자동 허용하고, 파일 수정이나 명령어 실행은 승인을 요청합니다.

Claude Code 기본 모드
$ claude

Claude Code에서는 승인 시 always 옵션이 있습니다. 한 번 always를 선택하면, 해당 도구에 대해서는 이후 승인 없이 자동 실행됩니다. 세션이 끝나면 초기화됩니다.

--dangerously-skip-permissions

terminalbash
claude --dangerously-skip-permissions "프로젝트를 설정해줘"

Claude Code에도 모든 권한 확인을 건너뛰는 옵션이 있습니다. Codex의 YOLO 모드와 유사합니다.

🔥 Claude Code의 안전 철학

Claude Code는 기본적으로 읽기는 자유, 쓰기는 승인 원칙을 따릅니다. 또한 allowedTools 설정을 통해 특정 도구만 자동 허용할 수 있어, "Bash 명령어는 매번 물어보되, 파일 쓰기는 자동 허용"처럼 세밀한 조절이 가능합니다.


Sandbox (샌드박스) 개념 이해하기

안전장치를 이야기할 때 계속 등장하는 샌드박스라는 개념을 자세히 알아봅시다.

🎼 연습실로 비유하면

음대에서 연습할 때를 생각해보세요:

연습실(샌드박스): 방음이 되어 있고, 안에서 무슨 소리를 내든 밖에 영향이 없습니다. 실수로 피드백이 나도, 현을 끊어먹어도, 연습실 안에서만 일어나는 일입니다.

콘서트홀(프로덕션 환경): 여기서 실수하면 관객이 다 듣습니다. 마이크 피드백이 나면 큰 사고입니다.

컴퓨터에서의 샌드박스는 이런 격리된 연습실입니다. 샌드박스 안에서 AI가 무엇을 하든, 실제 시스템에는 영향이 없습니다.

샌드박스가 제공하는 보호

| 보호 영역 | 샌드박스 ON | 샌드박스 OFF | |-----------|-----------|------------| | 파일 접근 | 작업 디렉토리만 | 시스템 전체 | | 네트워크 | 차단 | 열림 | | 시스템 명령 | 제한적 | 무제한 | | 다른 프로그램 | 접근 불가 | 접근 가능 |

💡 초보자를 위한 권장 설정

바이브 코딩을 처음 시작하는 여러분에게 권장하는 설정입니다:

처음 2주: 기본 모드 (매번 승인)

  • AI가 무엇을 하는지 하나하나 확인하며 배우세요
  • "아, 이런 명령어를 실행하는구나" 하고 관찰하세요

2주 후: Claude Code의 always 옵션 활용

  • 자주 쓰는 도구에 대해서만 자동 허용
  • 파일 쓰기는 자동, Bash 명령어는 여전히 승인

익숙해진 후: --full-auto (Codex) 활용

  • 간단한 프로젝트에서 자동 실행 모드 시도
  • 반드시 Git으로 백업해둔 상태에서

절대 권장하지 않음: YOLO 모드

  • 무엇을 하고 있는지 완전히 이해한 전문가만 사용

권한 레벨 전체 비교


실전 시나리오: 언제 어떤 모드를 쓸까

시나리오 1: MediaPipe 프로젝트 처음 시작할 때

terminalbash

기본 모드를 사용하세요. AI가 어떤 파일을 만들고, 어떤 패키지를 설치하는지 하나하나 확인하면서 전체 과정을 이해할 수 있습니다.

시나리오 2: 이미 만든 코드의 스타일만 수정할 때

terminalbash

이미 작동하는 코드의 스타일만 수정하는 건 위험이 낮습니다. --full-auto로 빠르게 처리할 수 있습니다. 단, 반드시 Git 커밋을 해둔 상태에서 실행하세요. (다음 장에서 배웁니다!)

시나리오 3: 잘 모르는 라이브러리를 탐색할 때

terminalbash

아직 이해하지 못하는 코드를 AI가 바로 실행하는 것은 불안합니다. suggest 모드로 코드를 먼저 보고, 이해한 후에 직접 실행하세요.

💡 핵심 원칙: 이해한 만큼만 자유를 주세요

AI에게 주는 권한의 수준은 여러분이 AI의 행동을 이해하는 수준과 같아야 합니다.

AI가 하는 일을 이해할 수 있다면 → 자동 실행 OK AI가 하는 일을 이해할 수 없다면 → 하나씩 승인하며 관찰

이것은 음악에서도 마찬가지입니다. 자신이 모니터링할 수 있는 볼륨 범위 안에서만 작업하세요. 들을 수 없는 레벨로 작업하면 결과물의 품질을 보장할 수 없습니다.


정리

이 장에서 배운 핵심을 요약합니다:

  1. 기본 모드는 가장 안전하지만, 흐름이 자주 끊어집니다
  2. 자동 실행 모드는 편리하지만, 샌드박스 안에서만 작동합니다
  3. YOLO 모드는 모든 제한을 해제하며, 초보자에게는 절대 권장하지 않습니다
  4. 샌드박스는 AI의 행동을 격리된 환경 안에 가두는 안전장치입니다
  5. 권한 수준은 여러분의 이해도에 맞춰 점진적으로 높이세요

다음 장에서는 어떤 권한 모드를 사용하든 반드시 필요한 Git — 코드의 타임머신에 대해 배웁니다. AI가 실수하더라도 언제든 이전 상태로 돌아갈 수 있는 안전망입니다.