앞선 코스에서 승인 모드(Read Only / Auto / Full Access)를 살짝 맛봤습니다. 이번엔 그 뒤에 숨은 진짜 구조를 파헤칩니다. 코덱스의 안전은 사실 '하나의 스위치'가 아니라 '독립된 두 개의 다이얼'로 돌아갑니다. 이 둘을 나눠 이해하면, 왜 어떤 모드는 안전하고 어떤 모드는 위험한지 한눈에 보입니다.
안전을 결정하는 두 개의 독립 다이얼
계층 1 · 샌드박스
- '무엇을 만질 수 있나' (공간의 문제)
- Read Only: 읽기만, 변경 X
- Workspace Write: 내 폴더만 쓰기 (기본, 네트워크 X)
- Full Access: 어디든 + 네트워크 (위험)
계층 2 · 승인 정책
- '언제 멈춰 물어보나' (시점의 문제)
- Untrusted: 매번 물음 (가장 안전)
- On Request: 벗어날 때만 물음 (기본)
- Never: 안 물음 (가장 자율)
- Granular: 항목별로 따로 (가장 세밀)
샌드박스는 '어디까지 손댈 수 있나(공간)', 승인 정책은 '언제 멈추나(시점)'. 완전히 다른 축입니다.
계층 1 — 샌드박스: 만질 수 있는 범위
- Read Only(읽기 전용): 파일을 읽기만 하고 아무것도 바꾸지 않습니다. 상담·플랜 모드에서 쓰입니다.
- Workspace Write(작업 폴더 쓰기, 기본값): 지금 프로젝트 폴더 '안'에서만 파일을 씁니다. 네트워크 접속도, 다른 폴더 접근도 막혀 있습니다. 가장 균형 잡힌 기본값입니다.
- Full Access(전체 접근): 어디든 쓰고, 네트워크도 열리고, 위험한 명령도 실행합니다. 이름에 'danger'가 붙는 이유가 있습니다.
계층 2 — 승인 정책: 멈춰 묻는 시점
- Untrusted(불신): 모든 행동마다 멈춰 허락을 구합니다. 가장 안전하지만 가장 손이 많이 갑니다.
- On Request(요청 시, 기본값): 샌드박스 안에서는 자유롭게 움직이고, 범위를 벗어나거나 위험한 일을 할 때만 물어봅니다.
- Never(안 물음): 절대 멈추지 않습니다. 자율성은 최고, 통제력은 최소.
- Granular(세밀): 파일 쓰기·명령 실행·네트워크 등 항목별로 따로 정합니다.
두 계층을 분리해서 보는 게 왜 중요할까요? '많이 물어보게(Untrusted)' 해도 샌드박스가 Full Access면 위험 행동 자체는 가능하고, 반대로 '안 물어보게(Never)' 해도 샌드박스가 Read Only면 애초에 망가뜨릴 수가 없습니다. 진짜 위험은 두 다이얼이 '동시에' 풀렸을 때 생깁니다.
대표 조합과 플래그
| 조합 / 플래그 | 샌드박스 | 승인 | 성격 |
|---|---|---|---|
| 기본값 | Workspace Write | On Request | 안전과 자율의 균형 ★ |
| --full-auto | Workspace Write | Never에 가깝게 | 더 관대 (덜 물음) |
| --yolo | Full Access | 승인 없음 | 가장 공격적·가장 자율 ☠ |
| 플랜 모드(/plan) | Read Only | — | 계획만, 변경 불가 |
운전 모드 비유 — Comfort에서 Sport+까지
Comfort [기본값]
- Workspace Write
- On Request
- 안전·차분
Sport [--full-auto]
- Workspace Write
- 거의 안 물음
- 더 관대·빠름
Sport+ [--yolo]
- Full Access
- 승인 없음
- 가장 공격·가장 빠름
- 실제로 빠르게 출시하는 사람들이 씀 — 단, 반드시 Git으로 언제든 되돌릴 수 있게 해둘 것
- 참고: Claude Code의 같은 개념 = --dangerously-skip-permissions
YOLO는 빠르지만 브레이크가 없습니다. Git이라는 안전벨트를 맨 사람만 밟아도 되는 페달입니다.
--yolo(또는 --dangerously-skip-permissions)를 켤 거라면, 그 전에 반드시 Git으로 커밋해 두세요. 에이전트가 무언가 망가뜨려도 마지막 세이브포인트로 되돌리면 그만입니다. Git 없이 YOLO는, 안전벨트 없이 레이싱하는 것과 같습니다.
플랜 모드(/plan) — 코드를 쓰기 전에 설계부터
위험을 줄이는 또 하나의 강력한 습관은 '먼저 계획을 받는 것'입니다. /plan 을 입력하면 플랜 모드가 켜집니다. 코덱스는 곧장 코드를 쓰지 않고, 먼저 여러분을 인터뷰합니다. 예를 들어 '모든 파일을 리팩터링할까요, 자주 도는 핵심 경로만 할까요?' 같은 걸 되묻죠. 그다음 코드베이스 전체를 훑어 단계별 계획을 세우고, 여러분이 승인하면 그때 비로소 코드를 씁니다.
플랜 모드에서는 샌드박스가 자동으로 Read Only가 됩니다. 계획을 짜는 동안에는 아무것도 바꿀 수 없으니, 새 프로젝트를 시작하거나 크고 위험한 변경을 앞두었을 때 마음 놓고 쓸 수 있습니다.
플랜 모드의 3박자 — 질문 → 계획 → (승인) 실행
- 질문 (Interview) 코덱스가 되묻습니다: '전체 파일 다? 핵심 경로만?'
- 분석 + 계획 (Plan) 코드베이스 전체를 훑고 단계별 계획 작성 (이때 샌드박스는 Read Only, 수정 불가)
- 검토 후 승인하면 그때 비로소 코드 작성 계획이 별로면 다시 질문 단계로 돌아가 조정
먼저 지도를 그리고(②) 길을 확인한 뒤(③) 출발합니다. 큰 변경일수록 이 순서가 사고를 막습니다.
정리하면, 안전은 '샌드박스(공간) × 승인(시점)' 두 계층으로 이해하고, 빠르게 달릴 땐 Git을 안전벨트로 삼으며, 크고 위험한 일은 /plan으로 설계부터 받습니다. 다음 레슨에서는 이런 에이전트를 여러 명 동시에 부리는 코덱스 데스크톱 앱으로 넘어갑니다.