공식 레퍼런스: Headless mode · Authentication · Token caching · Sandboxing
학습 경로
- Gemini CLI 시작하기 — 설치, 인증, 메모리 기초
- 100만 토큰의 장점 — 전체 코드베이스로 작업하기 — 저장소 단위 분석을 낭비 없이
- Gemini Extensions & MCP — 커스텀 워크플로 만들기 — 명령, MCP, 스킬 패키징
- Gemini CLI MCP 연동 — 외부 도구와 데이터 연결하기
- Trusted Folders, Sandboxing, 그리고 Restore — 신뢰, 격리, 복구
- Gemini Task Decomposition — 복잡한 작업을 성공적으로 완수하기
- Gemini CLI Headless Automation — 스크립트, CI, 구조화 출력 ← 현재 문서
- Gemini Git Worktrees — 병렬 작업 최적화
- 서브 에이전트와 스킬 오케스트레이션 — 위임과 전문가 워크플로
- GEMINI.md Mastery — 계층적 컨텍스트 설계
- Gemini 첫날 안전 루프
- Multi-Agent Orchestration — 서브 에이전트와 스킬 조합
- Gemini 주간 단위 딜리버리 플레이북
- Gemini GitHub Actions — CI 자동화와 리뷰
- Gemini 고위험 변경 통제 모델
- Gemini Effective Prompting — 100만 토큰을 지배하는 프롬프팅
- Gemini 운영 매뉴얼 — 팀 단위 CLI 딜리버리 리듬
- Gemini Hooks Automation — 로컬 자동화의 방패
- Gemini 사고 복구 플레이북
- Mid-size Refactor Playbook — 중규모 리팩터링
- Gemini 사고 후 하드닝 루프
- Gemini 카오스 복원력 드릴
- Human-Agent Handoffs — 인간과 AI의 릴레이
- Ralph Persistence Loops — 끝까지 물고 늘어지는 자가 치유
- Gemini 복원력 지표와 SLO
- Release Readiness Automation — 배포 자동화
- ADR Automation — 아키텍처 결정 기록 자동화
이 문서에서 참고한 공식 문서
- headless mode 진입 조건과 출력 포맷 — Headless mode
- 비대화형 자동화에 권장되는 인증 방식 — Authentication
- API key / Vertex 인증이 비용 구조를 바꾸는 이유 — Token caching
headless mode는 Gemini CLI를 "대화"에서 "인프라"로 바꾼다
대화형 세션은 탐색과 설계에 좋습니다. 하지만 Gemini CLI를 진짜 팀 도구로 만드는 순간은 headless mode에 들어갈 때입니다.
이 모드가 빛나는 곳은 명확합니다.
- CI에서 콘텐츠 QA 돌리기
- PR / commit 리뷰 자동화
- release note 초안 생성
- nightly drift / broken link 점검
- 에디터 확장이나 셸 스크립트에서 구조화된 출력 받기
공식 문서는 headless mode를 “터미널 UI 없이 text / JSON / JSONL을 반환하는 비대화형 실행”으로 설명합니다. 즉 사람이 보조로 쓰는 모드가 아니라 파이프라인의 일부로 쓰는 모드입니다.
자동화에서는 프롬프트보다 출력 계약이 더 중요하다
자동화에서 흔한 실수는 프롬프트를 아름답게 쓰는 데만 집중하고, 다른 프로그램이 그 결과를 어떻게 소비할지는 설계하지 않는 것입니다.
자동화 프롬프트는 아래 네 가지가 먼저 보장되어야 합니다.
- 입력 범위 — 어떤 파일 / 디렉터리를 읽을 것인가?
- 출력 스키마 — 어떤 key / section이 반드시 있어야 하는가?
- 실패 규칙 — 증거가 부족하면 어떻게 반환할 것인가?
- 사람 검토 지점 — 최종 결과인가, 초안인가?
좋은 자동화 프롬프트는 조금 지루해 보일 수 있습니다. 그게 오히려 장점입니다.
"전체를 보고 중요한 걸 말해줘"는 자동화 프롬프트가 아니다
나쁜 예:
저장소 전체를 리뷰하고 중요한 걸 말해줘.더 좋은 예:
@content @messages
ko, en, es Gemini CLI 글을 비교해.
아래 key를 가진 JSON으로 반환해:
- missingSlugs
- frontmatterDrift
- brokenRelativeLinks
- suggestedFixes
근거가 없으면 해당 key는 빈 배열로 반환해.후자는 파싱, diff, 재현, 회귀 검증이 훨씬 쉽습니다.
json과 jsonl은 쓰임새가 다르다
둘 다 구조화 출력이지만 목적이 다릅니다.
--output-format json
최종 결과를 기계가 읽게 할 때 좋습니다.
- CI artifact 저장
- 후속 스크립트가
.response를 읽는 경우 - 검토 리포트 생성
- 콘텐츠 감사 결과 저장
--output-format jsonl
이벤트 스트림 자체가 필요할 때 좋습니다.
- tool trace 수집
- 중간 진행 상황 표시
- custom UI wrapper 연동
- 자동화가 왜 이상하게 동작했는지 디버깅
확신이 없으면 먼저 json으로 시작하세요. 스트림 단위 분석이 필요해질 때 jsonl로 넘어가면 됩니다.
비대화형 인증은 편의가 아니라 아키텍처 선택이다
headless mode에서는 브라우저 로그인보다는 아래 방식이 권장됩니다.
GEMINI_API_KEY- Vertex AI 인증
이건 단순히 로그인 수단이 아니라 비용 구조와도 연결됩니다. 공식 문서가 설명하듯 API key / Vertex 기반 인증은 token caching을 활용할 수 있어서, 같은 저장소를 반복 분석하는 CI 파이프라인의 비용과 지연 시간을 크게 줄일 수 있습니다.
즉 좋은 headless 파이프라인은 보통 다음 조합입니다.
- 결정적인 프롬프트
- 좁고 안정된 입력 범위
- API key 또는 Vertex 인증
- 구조화된 출력
이 저장소에서 바로 쓸 만한 자동화 패턴
1) locale parity 점검
gemini -p "@content ko, en, es의 Gemini CLI 글에서 missing slug와 frontmatter drift를 찾아 JSON으로 반환해" --output-format json2) MDX 품질 리뷰
gemini -p "@content/en MDX 파일의 약한 description, 반복 예시, broken relative link를 찾아 JSON으로 정리해" --output-format json3) release note 초안 생성
gemini -p "@git diff --staged 현재 staged 변경을 기준으로 headings, bullets, risks를 포함한 릴리즈 노트를 markdown으로 작성해" \
--output-format text이 세 가지의 공통점은 사람이 마지막으로 검토하기 쉽다는 점입니다.
셸 실행이 섞이면 sandbox와 같이 보자
headless mode가 구조를 준다면, sandbox는 격리를 줍니다. 자동화가 셸 실행이나 설치를 포함한다면 둘을 같이 보는 편이 안전합니다.
특히 아래 상황에서 유용합니다.
- 의존성 설치가 포함될 때
- 제3자 저장소나 사용자 생성 코드가 대상일 때
- 스크립트가 임의 명령을 실행할 수 있을 때
- 처음 만드는 자동화 체인을 검증할 때
즉 headless가 "파이프라인화"라면 sandbox는 "피해 범위 제한"입니다.
GitHub Actions도 처음엔 review-first가 좋다
실무에서 무난한 CI 흐름은 보통 이렇습니다.
- 저장소 checkout
- 입력 범위를 최대한 좁힘
- Gemini를 JSON 모드로 실행
- 결과를 annotation / artifact / 요약으로 변환
- 영향이 큰 작업은 반드시 사람 승인 유지
초기 자동화의 핵심은 auto-merge가 아니라 사람 검토 전 단계의 기계적인 정리입니다.
headless mode를 오래 건강하게 쓰는 규칙
- 프롬프트를 결정적으로 유지하기
- 입력 범위를 최소화하기
- 출력 스키마를 명시하기
- Gemini 결과를 최종 권위가 아니라 draft / evidence로 다루기
- 실패 결과도 artifact로 남기기
- 대화형에서 검증된 워크플로만 CI로 승격하기
이 원칙을 지키면 headless mode는 믿을 수 있는 팀 도구가 됩니다. 그렇지 않으면 “가끔 신기한 JSON을 뱉는 블랙박스”가 되기 쉽습니다.
다음에 읽으면 좋은 글
- 안전한 실행 모델은 Trusted Folders, Sandboxing, 그리고 Restore
- 큰 조사 작업을 메인 세션 밖으로 밀어내는 법은 서브 에이전트와 스킬 오케스트레이션