Docs
설정
16px

오늘코드 GEMINI CLI 가이드 v1.0

Google의 Gemini 모델을 터미널에서 직접 활용하세요. 코드 이해, 작업 자동화, 워크플로우 구축을 위한 완벽 가이드입니다.

🚀

빠른 설치

npm 한 줄로 설치하고 바로 사용할 수 있습니다. Node.js 20 이상이면 충분합니다.

💻

터미널 네이티브

터미널을 떠나지 않고 AI와 대화하며 코드를 분석, 생성, 리팩토링할 수 있습니다.

🧠

프로젝트 컨텍스트

GEMINI.md로 프로젝트별 지시사항을 설정하면 더 정확한 응답을 받을 수 있습니다.

🔌

확장 가능

MCP 서버, 확장 프로그램, 에이전트 스킬로 기능을 무한히 확장할 수 있습니다.

🔒

안전한 실행

샌드박싱, 승인 모드, 훅으로 AI의 행동을 안전하게 제어합니다.

💰

무료 사용

Google 계정만 있으면 하루 1,000건의 요청을 무료로 사용할 수 있습니다.

Gemini CLI란?

Gemini CLI는 Google의 Gemini AI 모델을 터미널에서 직접 사용할 수 있게 해주는 오픈소스 명령줄 도구입니다. 코드베이스를 이해하고, 파일을 편집하고, 셸 명령을 실행하며, 복잡한 개발 작업을 자동화할 수 있습니다.

💡 핵심 특징
  • 대규모 코드베이스 탐색 및 편집
  • 이미지나 PDF로부터 애플리케이션 생성
  • 복잡한 워크플로우 자동화
  • MCP 프로토콜을 통한 외부 도구 연동
  • Gemini 3 모델 지원 (프리뷰)

빠른 설치

Terminal
npm install -g @google/gemini-cli

설치 후 gemini 명령으로 바로 시작할 수 있습니다.

Terminal
gemini

설치

Gemini CLI를 다양한 방법으로 설치할 수 있습니다. 시스템 요구사항을 확인한 후 원하는 방법을 선택하세요.

시스템 요구사항

항목요구사항
운영체제macOS 15+, Windows 11 24H2+, Ubuntu 20.04+
Node.js20.0.0 이상
RAM (일반)4GB 이상
RAM (고성능)16GB 이상 권장
Bash, Zsh, 또는 PowerShell
네트워크인터넷 연결 필수

Node.js 사전 준비

💡 왜 Node.js가 필요한가요?

Gemini CLI는 JavaScript(Node.js) 기반으로 개발된 도구입니다. npm(Node Package Manager)을 통해 배포되며, 실행 시 Node.js 런타임이 필요합니다. 따라서 Gemini CLI를 설치하기 전에 Node.js 20.0.0 이상이 시스템에 설치되어 있어야 합니다.

Node.js 설치 여부 확인

터미널에서 아래 명령어로 Node.js가 설치되어 있는지, 버전은 충분한지 확인하세요.

Terminal
node --version
# 예: v22.11.0 (20.0.0 이상이면 OK)

npm --version
# 예: 10.9.0

명령어가 인식되지 않거나(command not found) 버전이 20.0.0 미만이면 아래 방법으로 설치하세요.

Node.js 설치 방법

방법 1: 공식 사이트에서 설치 (가장 간단)

https://nodejs.org에서 LTS(장기 지원) 버전을 다운로드하여 설치합니다. 설치 프로그램이 Node.js와 npm을 함께 설치해 줍니다.

방법 2: nvm으로 설치 (권장 — 버전 관리 가능)

nvm(Node Version Manager)을 사용하면 여러 Node.js 버전을 설치하고 전환할 수 있어 편리합니다.

Terminal (macOS / Linux)
# nvm 설치
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash

# 터미널 재시작 후
nvm install --lts
nvm use --lts
Terminal (Windows — nvm-windows)
# nvm-windows 설치 후 (https://github.com/coreybutler/nvm-windows)
nvm install lts
nvm use lts

방법 3: 패키지 매니저로 설치

Terminal (macOS — Homebrew)
brew install node
Terminal (Ubuntu / Debian)
# NodeSource 저장소 추가 (Node.js 22.x LTS)
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt-get install -y nodejs
Terminal (Windows — Chocolatey)
choco install nodejs-lts

설치 확인

설치가 완료되면 아래 명령어로 정상 설치 여부를 확인하세요.

Terminal
node --version   # v20.0.0 이상 출력되면 성공
npm --version    # npm도 함께 설치됨
⚠️ 주의

Node.js 버전이 20.0.0 미만이면 Gemini CLI 설치 시 오류가 발생할 수 있습니다. nvm install --lts 또는 공식 사이트에서 최신 LTS 버전을 설치하세요.

Gemini CLI 설치 방법

npm (권장)

Terminal
npm install -g @google/gemini-cli

Homebrew (macOS / Linux)

Terminal
brew install gemini-cli

MacPorts (macOS)

Terminal
sudo port install gemini-cli

Anaconda (제한된 환경)

Node.js를 직접 설치할 수 없는 환경에서 유용합니다.

Terminal
conda create -y -n gemini_env -c conda-forge nodejs
conda activate gemini_env
npm install -g @google/gemini-cli

설치 없이 실행 (npx)

Terminal
npx @google/gemini-cli

Docker

Terminal
docker run --rm -it us-docker.pkg.dev/gemini-code-dev/gemini-cli/sandbox:0.1.1
gemini --sandbox -y -p "your prompt here"
✅ 사전 설치 환경

Google Cloud Shell과 Cloud Workstations에는 Gemini CLI가 기본으로 설치되어 있습니다.

릴리스 채널

채널설명설치 명령
Stable주간 안정 릴리스 (권장)npm install -g @google/gemini-cli@latest
Preview주간 프리뷰 빌드npm install -g @google/gemini-cli@preview
Nightly일일 빌드 (검증 안 됨)npm install -g @google/gemini-cli@nightly

업데이트

Terminal
gemini update

빠른 시작

설치부터 첫 번째 대화까지 5분 안에 시작해보세요.

단계별 가이드

Gemini CLI 설치

Terminal
npm install -g @google/gemini-cli

대화형 세션 시작

프로젝트 디렉토리로 이동한 후 gemini를 실행합니다.

Terminal
cd my-project
gemini

Google 계정으로 로그인

처음 실행 시 "Sign in with Google"을 선택하면 브라우저가 열립니다. 로그인하면 인증 정보가 로컬에 캐시됩니다.

첫 번째 질문하기

프롬프트가 나타나면 자연어로 질문을 입력합니다.

Gemini CLI
> 이 프로젝트의 구조를 설명해줘
> README.md를 요약해줘
> src/ 폴더에서 TODO 주석을 찾아줘

기본 사용 패턴

대화형 모드 (기본)

Terminal
# 대화형 REPL 시작
gemini

# 초기 프롬프트와 함께 시작
gemini "이 프로젝트에 대해 설명해줘"

비대화형 모드 (일회성 질문)

Terminal
# 질문 후 바로 종료
gemini -p "README.md를 요약해줘"

# 파이프와 함께 사용
cat error.log | gemini -p "이 에러 로그를 분석해줘"

대화형 + 프롬프트

Terminal
# 프롬프트 실행 후 REPL 유지
gemini -i "프로젝트 구조를 분석해줘"
✅ 팁: 승인 모드

파일 수정이나 셸 명령 실행 시 Gemini CLI는 사용자의 승인을 요청합니다. --yolo 또는 -y 플래그로 자동 승인할 수 있지만, 신뢰할 수 있는 환경에서만 사용하세요.

인증 설정

Gemini CLI에서 사용할 수 있는 인증 방법과 설정 방법을 알아봅니다.

인증 방법

1. Google 계정으로 로그인 (권장)

가장 간단한 방법입니다. gemini를 실행하고 "Sign in with Google"을 선택하면 브라우저를 통해 로그인이 진행됩니다. 인증 정보는 로컬에 캐시되어 이후 세션에서 자동으로 사용됩니다.

2. Gemini API 키

Google AI Studio에서 API 키를 발급받아 환경 변수로 설정합니다.

Terminal
export GEMINI_API_KEY="your-api-key-here"
⚠️ 보안 주의

API 키는 민감한 자격 증명입니다. 코드 저장소에 직접 커밋하지 마세요.

3. Vertex AI

Google Cloud 프로젝트를 통한 인증으로, 세 가지 방법을 지원합니다:

Google Cloud 프로젝트 설정

다음에 해당하는 경우 Google Cloud 프로젝트 설정이 필요합니다:

Terminal
# 환경 변수로 프로젝트 설정
export GOOGLE_CLOUD_PROJECT="my-project-id"
# 또는
export GOOGLE_CLOUD_PROJECT_ID="my-project-id"

환경 변수 영구 저장

두 가지 방법으로 환경 변수를 영구적으로 저장할 수 있습니다.

방법 1: 셸 설정 파일

~/.zshrc 또는 ~/.bashrc
export GEMINI_API_KEY="your-api-key-here"
export GOOGLE_CLOUD_PROJECT="my-project-id"

방법 2: .gemini/.env 파일

프로젝트 루트 또는 홈 디렉토리의 .gemini/.env 파일에 저장합니다.

.gemini/.env
GEMINI_API_KEY=your-api-key-here
GOOGLE_CLOUD_PROJECT=my-project-id
💡 자동 인증 환경
  • Google Cloud Shell: Cloud Shell 자격 증명 자동 사용
  • Compute Engine: 메타데이터 서버의 ADC 자동 적용
  • Headless 모드: 사전 캐시된 자격 증명 또는 환경 변수 필요

CLI 치트시트

자주 사용하는 명령어와 옵션을 한눈에 확인하세요.

기본 명령어

명령어설명예시관련 문서
gemini대화형 REPL 시작gemini빠른 시작
gemini -p "질문"비대화형 질문gemini -p "README 요약해줘"헤드리스 모드
gemini "질문"질문 후 REPL 유지gemini "프로젝트 설명해줘"
gemini -i "질문"프롬프트 실행 후 REPLgemini -i "구조 분석해줘"
cat 파일 | gemini파이프 입력 처리cat logs.txt | gemini헤드리스 모드
gemini -r "latest"최근 세션 이어서gemini -r "latest"체크포인팅
gemini update최신 버전으로 업데이트gemini update설치

주요 옵션

옵션단축설명관련 문서
--model-m사용할 모델 지정모델 선택
--prompt-p비대화형 프롬프트헤드리스 모드
--prompt-interactive-i프롬프트 + REPL 유지
--sandbox-s샌드박스 모드 실행샌드박싱
--yolo-y모든 액션 자동 승인ACP 모드
--worktree-wGit worktree에서 실행Git Worktrees
--debug-d디버그 모드 (상세 로깅)텔레메트리
--resume-r이전 세션 재개체크포인팅
--approval-mode승인 모드: default, auto_edit, yolo, plan플랜 모드
--output-format-o출력 형식: text, json, stream-json헤드리스 모드
--extensions-e사용할 확장 프로그램 지정확장 프로그램
--screen-reader접근성 모드 활성화

REPL 내부 명령어

명령어설명관련 문서
/help도움말 표시
/quit세션 종료
/model모델 선택 다이얼로그 열기모델 선택
/memory reloadGEMINI.md 등 컨텍스트 파일 새로고침GEMINI.md
/memory show현재 컨텍스트 내용 표시GEMINI.md
/memory add <텍스트>글로벌 GEMINI.md에 텍스트 추가GEMINI.md
/skills reload에이전트 스킬 새로고침에이전트 스킬
/mcp reloadMCP 서버 재시작MCP 서버
/extensions reload확장 프로그램 새로고침확장 프로그램
/stats model토큰 사용량 확인토큰 캐싱
/hooks panel훅 패널 표시훅 (Hooks)

GEMINI.md (프로젝트 컨텍스트)

프로젝트별 지시사항과 규칙을 정의하여 AI의 응답을 맞춤화하세요.

GEMINI.md란?

GEMINI.md는 Gemini 모델에게 프로젝트에 대한 컨텍스트와 지시사항을 전달하는 파일입니다. 매번 프롬프트에 반복적인 설명을 입력하는 대신, 한 번 정의하면 모든 세션에서 자동으로 적용됩니다.

계층 구조

Gemini CLI는 다음 순서로 컨텍스트 파일을 로드합니다:

우선순위위치설명
1~/.gemini/GEMINI.md모든 프로젝트에 적용되는 글로벌 컨텍스트
2워크스페이스 GEMINI.md프로젝트 디렉토리와 상위 디렉토리
3JIT (Just-in-Time) 컨텍스트도구가 특정 디렉토리에 접근할 때 자동 스캔

GEMINI.md 작성 예시

GEMINI.md
# 프로젝트: My TypeScript Library

## 일반 지침
- 기존 코딩 스타일을 따를 것
- 함수와 클래스에 JSDoc 주석 추가
- 한국어로 주석 작성

## 코딩 스타일
- 들여쓰기: 2칸 스페이스
- 인터페이스 이름: 'I' 접두사 사용
- 엄격한 동등 비교 (=== 및 !==)
- 세미콜론 필수

## 테스트
- Jest 프레임워크 사용
- 테스트 파일은 __tests__ 디렉토리에 배치
- 커버리지 80% 이상 유지

모듈화

@ 구문으로 다른 마크다운 파일을 임포트할 수 있습니다.

GEMINI.md
@./components/instructions.md
@../shared/style-guide.md

파일명 커스터마이징

settings.json에서 컨텍스트 파일명을 변경할 수 있습니다.

settings.json
{
  "context": {
    "fileName": ["AGENTS.md", "CONTEXT.md", "GEMINI.md"]
  }
}

관련 명령어

명령어설명
/memory show현재 로드된 컨텍스트 전체 표시
/memory reload모든 GEMINI.md 파일 다시 스캔
/memory add <텍스트>~/.gemini/GEMINI.md에 텍스트 추가

모델 선택

작업 특성에 맞는 최적의 모델을 선택하는 방법을 알아봅니다.

사용 가능한 모델

별칭모델설명
autogemini-2.5-pro / gemini-3-pro-preview기본값. 작업 복잡도에 따라 자동 선택
progemini-2.5-pro / gemini-3-pro-preview복잡한 추론이 필요한 작업에 적합
flashgemini-2.5-flash빠르고 균형 잡힌 모델
flash-litegemini-2.5-flash-lite단순 작업에 최적화된 가장 빠른 모델

모델 선택 방법

CLI 시작 시 지정

Terminal
# Pro 모델로 시작
gemini -m pro

# Flash 모델로 시작
gemini -m flash

세션 중 변경

Gemini CLI
/model

대화형 다이얼로그가 열리며 모델을 선택할 수 있습니다. 변경은 즉시 적용됩니다.

모델 선택 가이드

✅ 권장 사항
  • Auto (기본): 대부분의 경우 권장. 속도와 성능의 균형을 자동으로 조절합니다.
  • Pro: 복잡한 멀티스텝 작업, 깊은 추론, 창의적 코드 생성 시 사용하세요.
  • Flash: JSON-YAML 변환 같은 단순 작업에서 빠른 응답이 필요할 때 적합합니다.
⚠️ 참고

/model 명령어와 --model 플래그는 서브 에이전트가 사용하는 모델에는 영향을 주지 않습니다.

에이전트 스킬

전문 지식과 워크플로우를 패키징하여 AI의 능력을 확장하세요.

에이전트 스킬이란?

에이전트 스킬은 특화된 전문 지식과 절차적 워크플로우를 패키징한 확장 기능입니다. GEMINI.md와 달리 스킬은 온디맨드로 작동하며, 모델이 작업의 관련성과 스킬의 설명을 기반으로 자율적으로 활성화를 결정합니다.

주요 장점

📦

공유 가능한 전문 지식

복잡한 워크플로우를 재사용 가능한 폴더로 패키징합니다.

🔄

반복 가능한 워크플로우

일관된 멀티스텝 작업 실행을 보장합니다.

📁

리소스 번들링

스크립트, 템플릿, 데이터를 함께 포함할 수 있습니다.

점진적 로딩

메타데이터만 먼저 로드하여 컨텍스트 토큰을 절약합니다.

스킬 검색 경로

스킬은 우선순위에 따라 세 단계에서 검색됩니다:

  1. 워크스페이스 스킬: .gemini/skills/ 또는 .agents/skills/
  2. 사용자 스킬: ~/.gemini/skills/ 또는 ~/.agents/skills/
  3. 확장 프로그램 스킬: 설치된 확장 프로그램에 번들된 스킬
💡 참고

같은 단계에서 .agents/skills/.gemini/skills/보다 높은 우선순위를 갖습니다.

스킬 관리 명령어

명령어설명
gemini skills list발견된 모든 스킬 목록
gemini skills install <소스>Git URL, 경로, 파일에서 설치
gemini skills link <경로>로컬 스킬을 심볼릭 링크로 연결
gemini skills uninstall <이름>스킬 제거
gemini skills enable <이름>스킬 활성화
gemini skills disable <이름>스킬 비활성화
gemini skills enable --all모든 스킬 활성화

활성화 과정

검색

세 단계의 경로를 스캔하고 스킬 메타데이터를 시스템 프롬프트에 주입합니다.

매칭

모델이 현재 작업과 일치하는 스킬을 식별하고 activate_skill 도구를 호출합니다.

동의

사용자에게 스킬 활성화 동의 프롬프트를 표시합니다.

실행

전체 SKILL.md 내용과 폴더 접근 권한이 부여되어 스킬 지침에 따라 실행됩니다.

MCP 서버

Model Context Protocol을 통해 외부 도구와 API를 Gemini CLI에 연동하세요.

MCP 서버란?

MCP(Model Context Protocol) 서버는 Gemini CLI에 외부 도구와 리소스를 제공하는 애플리케이션입니다. 외부 시스템, API, 데이터베이스, 커스텀 워크플로우에 대한 접근을 가능하게 합니다.

전송 방식

방식설명
Stdio서브프로세스를 생성하여 stdin/stdout으로 통신
SSEServer-Sent Events 엔드포인트 사용
Streamable HTTPHTTP 스트리밍 통신

MCP 서버 추가

CLI로 추가

Terminal
# Stdio 기반 서버 추가
gemini mcp add github npx -y @modelcontextprotocol/server-github

# HTTP 기반 서버 추가
gemini mcp add api-server http://localhost:3000 --transport http

# 환경 변수와 함께 추가
gemini mcp add slack node server.js --env SLACK_TOKEN=xoxb-xxx

# 특정 도구만 포함
gemini mcp add github npx -y @modelcontextprotocol/server-github \
  --include-tools list_repos,get_pr

settings.json으로 설정

Python 서버 (Stdio)

settings.json
{
  "mcpServers": {
    "pythonTools": {
      "command": "python",
      "args": ["-m", "my_mcp_server"],
      "env": { "API_KEY": "$DB_TOKEN" },
      "timeout": 15000
    }
  }
}

HTTP 서버

settings.json
{
  "mcpServers": {
    "httpServer": {
      "httpUrl": "http://localhost:3000/mcp",
      "headers": { "Authorization": "Bearer token" }
    }
  }
}

Docker 기반 서버

settings.json
{
  "mcpServers": {
    "dockerized": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "my-mcp-server:latest"]
    }
  }
}

서버 관리

명령어설명
gemini mcp list설정된 모든 MCP 서버 목록
gemini mcp remove <이름>MCP 서버 제거
gemini mcp enable <이름>서버 활성화
gemini mcp disable <이름>서버 비활성화
/mcp세션 내에서 서버 상태 확인
/mcp reloadMCP 서버 재시작
⚠️ 이름 규칙

서버 이름에 밑줄(_)을 사용하지 마세요. 정책 파서가 mcp_ 뒤의 첫 번째 밑줄에서 분할합니다. my_server 대신 my-server를 사용하세요.

보안

샌드박싱

AI 작업을 격리된 환경에서 안전하게 실행하세요.

샌드박싱이란?

샌드박싱은 잠재적으로 위험한 작업을 호스트 시스템으로부터 격리하는 보안 기능입니다. AI 작업과 실행 환경 사이에 보안 장벽을 제공하여 우발적인 시스템 손상을 방지합니다.

플랫폼별 격리 방식

방식플랫폼설명
macOS SeatbeltmacOSsandbox-exec를 사용한 경량 격리. 프로젝트 외부 쓰기 제한
Docker/Podman크로스플랫폼완전한 프로세스 격리를 제공하는 컨테이너 방식
Windows NativeWindowsicacls를 사용한 Low Integrity Level 파일 보호
gVisor/runscLinux사용자 공간 커널을 통한 가장 강력한 격리
LXC/LXDLinux (실험)완전한 Linux 시스템 컨테이너 격리

활성화 방법

우선순위 순서로 세 가지 방법이 있습니다:

1. 명령줄 플래그

Terminal
gemini -s
# 또는
gemini --sandbox

2. 환경 변수

Terminal
export GEMINI_SANDBOX=true
# 특정 방식 지정
export GEMINI_SANDBOX=docker

3. settings.json

settings.json
{
  "tools": {
    "sandbox": true
  }
}

도구 수준 vs 프로세스 수준

도구 수준 샌드박싱은 개별 작업(셸 명령, 파일 쓰기)만 격리하며, 비도구 작업은 로컬 환경과 통합을 유지합니다. security.toolSandboxing: false로 비활성화할 수 있습니다.

✅ 모범 사례
  • 워크플로우와 호환되는 가장 제한적인 프로파일을 사용하세요.
  • 샌드박싱은 모든 위험을 제거하지는 않지만 크게 줄여줍니다.
  • 컨테이너 오버헤드는 초기 이미지 빌드 후 미미합니다.

훅 (Hooks)

에이전트 루프의 특정 시점에서 커스텀 스크립트를 실행하여 동작을 제어하세요.

훅이란?

훅은 Gemini CLI의 에이전트 루프에서 특정 시점에 실행되는 스크립트입니다. 소스 코드를 수정하지 않고도 동작을 커스터마이징할 수 있습니다. 훅은 동기적으로 실행되며, 모든 훅이 완료될 때까지 Gemini CLI가 대기합니다.

훅 이벤트

이벤트트리거 시점주요 용도
SessionStart세션 초기화컨텍스트 로드, 리소스 초기화
SessionEnd세션 종료정리, 상태 저장
BeforeAgent프롬프트 제출 후컨텍스트 추가, 입력 검증
AfterAgent에이전트 루프 완료출력 검토, 재시도 강제
BeforeModelLLM 요청 전프롬프트 수정, 모델 교체
AfterModelLLM 응답 후응답 필터링/편집
BeforeTool도구 실행 전인수 검증, 작업 차단
AfterTool도구 실행 후결과 처리, 테스트 실행
BeforeToolSelection도구 선택 전사용 가능 도구 필터링
PreCompress컨텍스트 압축 시상태 저장 알림
Notification시스템 알림외부 알림 전달/로깅

설정 예시

settings.json
{
  "hooks": {
    "BeforeTool": [
      {
        "matcher": "write_file|replace",
        "hooks": [
          {
            "name": "security-check",
            "type": "command",
            "command": "$GEMINI_PROJECT_DIR/.gemini/hooks/security.sh",
            "timeout": 5000
          }
        ]
      }
    ]
  }
}

종료 코드

코드라벨동작
0성공stdout을 JSON으로 파싱; 의도적 차단을 포함한 모든 로직에 사용
2시스템 차단치명적 작업 중단; stderr에 거부 이유 포함
기타경고비치명적 실패; 원래 매개변수로 계속 진행

환경 변수

훅 실행 시 다음 환경 변수에 접근할 수 있습니다:

⚠️ 보안 경고

훅은 사용자 권한으로 임의 코드를 실행합니다. 신뢰할 수 있는 스크립트만 등록하세요. 프로젝트 수준 훅이 변경되면 실행 전 경고가 표시됩니다.

관리 명령어

Gemini CLI
/hooks panel            # 설정된 훅 목록 표시
/hooks enable-all       # 모든 훅 활성화
/hooks disable-all      # 모든 훅 비활성화
/hooks enable <이름>     # 특정 훅 활성화
/hooks disable <이름>    # 특정 훅 비활성화

파일 관리

Gemini CLI를 사용하여 파일을 읽고, 생성하고, 수정하는 방법을 알아봅니다.

파일 작업 예시

Gemini CLI
# 파일 읽기 및 분석
> src/index.ts 파일을 분석해줘

# 파일 생성
> utils/helpers.ts에 문자열 유틸리티 함수를 만들어줘

# 파일 수정
> config.json에서 포트를 3000에서 8080으로 변경해줘

# 여러 파일 작업
> src/ 폴더의 모든 .ts 파일에서 console.log를 제거해줘

# 파일 검색
> TODO 주석이 포함된 파일을 모두 찾아줘

승인 모드

Gemini CLI는 파일을 수정하기 전에 사용자의 승인을 요청합니다.

모드설명
default모든 파일 수정과 셸 명령에 승인 필요
auto_edit파일 수정은 자동, 셸 명령은 승인 필요
yolo모든 작업 자동 승인 (주의 필요)
plan읽기 전용 모드 (분석만 수행)
Terminal
# 승인 모드 지정
gemini --approval-mode auto_edit

# 자동 승인 모드 (약칭)
gemini -y

셸 명령어

Gemini CLI 내에서 직접 셸 명령을 실행하고 결과를 활용하세요.

셸 명령 실행

Gemini CLI는 AI가 필요할 때 자동으로 셸 명령을 실행합니다. 또한 사용자가 직접 실행을 요청할 수도 있습니다.

Gemini CLI
# AI에게 명령 실행 요청
> git log --oneline -10 실행해서 최근 커밋 보여줘
> npm test 실행하고 실패한 테스트 수정해줘
> docker ps로 실행 중인 컨테이너 확인해줘

# 파이프로 결과 전달
cat build.log | gemini -p "빌드 에러를 분석하고 해결 방법을 알려줘"

비대화형 자동화

Terminal
# CI/CD 파이프라인에서 사용
gemini -p "src/ 폴더의 코드를 린트하고 문제를 수정해줘" -y

# 스크립트에서 사용
result=$(gemini -p "package.json의 버전을 파싱해줘" -o json)
echo $result
💡 출력 형식

--output-format (-o) 옵션으로 출력 형식을 지정할 수 있습니다: text (기본), json, stream-json. 자동화 스크립트에서는 json 형식이 유용합니다.

세션 관리

대화 세션을 저장하고 이어서 작업하는 방법을 알아봅니다.

세션 이어하기

Terminal
# 가장 최근 세션 재개
gemini -r "latest"

# 특정 세션 ID로 재개
gemini -r "abc123"

# 세션 재개 + 추가 프롬프트
gemini -r "abc123" "이 PR을 마무리해줘"

세션 목록 및 관리

Terminal
# 현재 프로젝트의 세션 목록
gemini --list-sessions

# 특정 세션 삭제
gemini --delete-session 0
✅ 체크포인팅

Gemini CLI는 자동으로 세션 스냅샷(체크포인트)을 생성합니다. 작업 중 문제가 생기면 이전 상태로 되돌릴 수 있습니다. /rewind 명령으로 이전 체크포인트로 돌아갈 수 있습니다.

📚 관련 공식 문서

확장 프로그램

Gemini CLI의 기능을 확장하는 확장 프로그램을 설치하고 관리하세요.

확장 프로그램 관리

명령어설명
gemini extensions install <소스>Git URL 또는 로컬 경로에서 설치
gemini extensions install <소스> --ref <ref>특정 브랜치/태그/커밋에서 설치
gemini extensions install <소스> --auto-update자동 업데이트 활성화 설치
gemini extensions uninstall <이름>확장 프로그램 제거
gemini extensions list설치된 확장 프로그램 목록
gemini extensions update <이름>특정 확장 프로그램 업데이트
gemini extensions update --all모든 확장 프로그램 업데이트
gemini extensions enable <이름>확장 프로그램 활성화
gemini extensions disable <이름>확장 프로그램 비활성화

개발용 명령어

Terminal
# 새 확장 프로그램 템플릿 생성
gemini extensions new ./my-extension

# 로컬 확장 프로그램 링크 (개발용)
gemini extensions link /path/to/extension

# 확장 프로그램 구조 검증
gemini extensions validate ./my-extension

작업 자동화

Gemini CLI를 스크립트와 CI/CD 파이프라인에 통합하여 작업을 자동화하세요.

Headless 모드

Gemini CLI를 프로그래밍 방식으로 사용할 수 있습니다. 대화형 인터페이스 없이 프롬프트를 처리합니다.

Terminal
# 비대화형 실행
gemini -p "모든 테스트 파일에 JSDoc 주석을 추가해줘" -y

# JSON 출력
gemini -p "package.json의 의존성 목록" -o json

# 파이프라인에서 사용
git diff HEAD~1 | gemini -p "이 변경사항을 리뷰해줘" -o text

CI/CD 활용 예시

GitHub Actions
name: AI Code Review
on: [pull_request]
jobs:
  review:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: '20'
      - run: npm install -g @google/gemini-cli
      - run: |
          git diff origin/main...HEAD | \
          gemini -p "PR 변경사항을 리뷰하고 문제를 보고해줘" -y
        env:
          GEMINI_API_KEY: ${{ secrets.GEMINI_API_KEY }}

스크립트 통합

bash
#!/bin/bash
# 자동 코드 리뷰 스크립트

# 변경된 파일 목록 가져오기
changed_files=$(git diff --name-only HEAD~1)

# 각 파일에 대해 리뷰 수행
for file in $changed_files; do
  echo "리뷰 중: $file"
  gemini -p "다음 파일의 코드를 리뷰해줘: $file" -y -o text
done

설정 파일

settings.json으로 Gemini CLI의 동작을 세밀하게 제어하세요.

설정 파일 위치

설정은 다음 순서의 우선순위로 병합됩니다:

  1. 프로젝트: .gemini/settings.json
  2. 사용자: ~/.gemini/settings.json
  3. 시스템: /etc/gemini-cli/settings.json

설정 예시

~/.gemini/settings.json
{
  "theme": "dark",
  "model": "auto",
  "context": {
    "fileName": ["GEMINI.md"]
  },
  "tools": {
    "sandbox": false
  },
  "security": {
    "toolSandboxing": true
  },
  "mcpServers": {
    "github": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "env": {
        "GITHUB_TOKEN": "$GITHUB_TOKEN"
      }
    }
  },
  "hooks": {}
}

테마

Gemini CLI의 터미널 UI를 취향에 맞게 커스터마이징하세요.

테마 설정

settings.json에서 테마를 설정할 수 있습니다.

settings.json
{
  "theme": "dark"
}

사용 가능한 테마 옵션: dark, light, auto (시스템 설정 따름)

커스텀 명령어

자주 사용하는 프롬프트를 슬래시 명령어로 등록하세요.

커스텀 명령어란?

자주 사용하는 프롬프트 패턴을 슬래시 명령어로 만들어 빠르게 재사용할 수 있습니다.

관리 명령어

Gemini CLI
/commands reload    # 커스텀 명령어 새로고침
💡 팁

커스텀 명령어는 .gemini/commands/ 디렉토리에 마크다운 파일로 정의할 수 있습니다. 각 파일이 하나의 슬래시 명령어가 됩니다.

무시 파일 (.geminiignore)

AI가 접근하지 않아야 할 파일과 디렉토리를 지정하세요.

.geminiignore란?

.gitignore와 유사한 형식으로, Gemini CLI가 무시할 파일과 디렉토리 패턴을 지정합니다. 민감한 파일, 대용량 바이너리, 불필요한 종속성 폴더 등을 제외할 수 있습니다.

예시

.geminiignore
# 종속성
node_modules/
vendor/

# 빌드 산출물
dist/
build/
*.min.js

# 민감한 파일
.env
.env.local
credentials.json
*.pem

# 대용량 파일
*.zip
*.tar.gz
data/

요금 및 할당량

Gemini CLI의 무료 사용 한도와 유료 플랜을 확인하세요.

무료 사용

인증 방법일일 한도비고
Google 계정 무료1,000건/일Gemini Code Assist 기반
Gemini API 키 (무료) 무료250건/일Flash 모델만 사용 가능
Vertex AI Express가변90일 체험 후 과금 필요

개인 유료 플랜

플랜일일 한도
Google AI Pro 1,500건/일
Google AI Ultra 2,000건/일

조직/기업 플랜

플랜일일 한도
Code Assist Standard1,500건/일
Code Assist Enterprise2,000건/일
Workspace AI Ultra2,000건/일

종량제

사용량 확인

Gemini CLI
/stats model

실시간 토큰 사용량과 적용된 한도를 확인할 수 있습니다.

키보드 단축키

Gemini CLI를 더 빠르게 사용하기 위한 단축키 모음입니다.

기본 단축키

단축키설명
Ctrl+C현재 작업 중단
Ctrl+D세션 종료
Ctrl+L화면 초기화
Tab자동 완성
Up/Down이전/다음 입력 탐색

문제 해결

자주 발생하는 문제와 해결 방법을 안내합니다.

설치 관련

Node.js 버전 오류

Node.js 20.0.0 이상이 필요합니다.

Terminal
# 현재 버전 확인
node --version

# nvm으로 업그레이드
nvm install 20
nvm use 20

권한 오류 (npm)

Terminal
# npm 글로벌 디렉토리 변경
mkdir ~/.npm-global
npm config set prefix '~/.npm-global'
echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.zshrc
source ~/.zshrc

# 재설치
npm install -g @google/gemini-cli

인증 관련

로그인이 안 될 때

API 키 오류

MCP 서버 관련

서버가 연결되지 않을 때

도구가 발견되지 않을 때

디버그 모드

Terminal
# 디버그 모드로 실행
gemini -d

# 또는 환경 변수로 설정
DEBUG=1 gemini -s -p "test command"
💡 참고

프로젝트 루트의 .env 파일은 gemini-cli에 영향을 주지 않습니다. CLI 전용 디버그 설정은 .gemini/.env에 작성하세요.

FAQ

자주 묻는 질문과 답변을 모았습니다.

일반

Q. Gemini CLI는 무료인가요?

네, Google 계정으로 로그인하면 하루 1,000건의 요청을 무료로 사용할 수 있습니다. Gemini API 키(무료)의 경우 하루 250건, Flash 모델만 사용 가능합니다.

Q. 어떤 운영체제를 지원하나요?

macOS 15+, Windows 11 24H2+, Ubuntu 20.04+를 공식 지원합니다.

Q. 오프라인에서 사용할 수 있나요?

아니요, Gemini CLI는 Google의 AI 모델에 접근하기 위해 인터넷 연결이 필요합니다.

모델

Q. Gemini 3은 무엇인가요?

Gemini 3은 Google의 최신 AI 모델 시리즈입니다. Gemini CLI에서 프리뷰로 사용할 수 있으며, auto 모드에서 자동으로 선택될 수 있습니다.

Q. 서브 에이전트의 모델을 변경할 수 있나요?

현재 /model 명령어와 --model 플래그는 서브 에이전트에 영향을 주지 않습니다.

보안

Q. 내 코드가 학습에 사용되나요?

인증 방법과 서비스 약관에 따라 다릅니다. 자세한 내용은 공식 문서의 약관 및 개인정보 보호 페이지를 확인하세요.

Q. 샌드박스 모드는 어떻게 작동하나요?

플랫폼별 격리 기술을 사용합니다. macOS는 Seatbelt, Linux는 Docker/gVisor, Windows는 icacls를 활용합니다. gemini -s로 활성화할 수 있습니다.

💡 더 많은 정보

공식 문서에서 더 자세한 정보를 확인하세요: geminicli.com/docs

Gemini 3 모델 NEW

Google의 최신 AI 모델 라인업인 Gemini 3을 Gemini CLI에서 사용하는 방법을 알아봅니다.

Gemini 3란?

Gemini 3은 Google의 차세대 AI 모델 시리즈입니다. 현재 다음 모델이 제공됩니다:

활성화 방법

CLI 업그레이드

버전 0.21.1 이상이 필요합니다.

Terminal
npm install -g @google/gemini-cli@latest

모델 선택

/model 명령어를 실행하고 "Auto (Gemini 3)"를 선택합니다.

Gemini Code Assist 사용자

조직 관리자의 추가 설정이 필요합니다:

  1. Google Cloud 설정에서 릴리스 채널을 "Preview"로 변경
  2. 사용자가 /settings에서 "Preview Features" 활성화

모델 라우팅

라우팅 모드동작
Auto프롬프트 복잡도 평가 후 Flash/Pro 자동 선택
Pro모든 요청을 Gemini 3 Pro로 직접 전달

일일 사용량 관리

Gemini 3 Pro의 일일 사용량 한도에 도달하면 자동으로 Gemini 2.5 Pro로 전환됩니다. 높은 수요 기간에는 즉시 실패 대신 지수 백오프 재시도 로직이 적용됩니다.

모델 라우팅

모델 실패 시 자동 폴백과 로컬 라우팅을 통한 안정적인 운영 방법을 알아봅니다.

자동 폴백

Gemini CLI는 기본적으로 모델 라우팅이 활성화되어 있습니다. ModelAvailabilityService가 3단계로 관리합니다:

오류 감지

현재 모델이 쿼터 초과나 서버 오류로 실패하면 폴백 프로세스가 시작됩니다.

사용자 동의

일반적으로 모델 전환 전 사용자에게 확인을 요청합니다. 프롬프트 완성 같은 내부 호출은 자동으로 폴백합니다.

모델 전환

승인되면 가용한 폴백 모델이 현재 턴 또는 남은 세션을 처리합니다.

모델 선택 우선순위

  1. --model 명령줄 플래그
  2. GEMINI_MODEL 환경 변수
  3. model.name (settings.json)
  4. 로컬 Gemma 모델 (활성화된 경우)
  5. 기본값 (auto)

로컬 모델 라우팅 (실험적)

로컬에서 실행되는 Gemma 모델로 라우팅 결정을 내릴 수 있습니다. 호스팅된 모델에 결정을 보내는 대신 로컬 모델이 판단하여 비용을 절감합니다. Gemini API 호환 HTTP 엔드포인트로 서빙되어야 합니다.

모델 스티어링 실험적

작업 실행 중 실시간으로 AI에게 힌트를 전달하여 방향을 조정하세요.

모델 스티어링이란?

모델 스티어링은 작업 실행 중 에이전트를 재시작하지 않고 실시간으로 피드백과 방향 수정을 제공하는 실험적 기능입니다. 특히 복잡한 플랜 모드 워크플로우에서 유용합니다.

활성화

settings.json
{
  "experimental": {
    "modelSteering": true
  }
}

작동 방식

  1. 확인: 빠른 모델이 힌트 수신을 1문장으로 확인
  2. 컨텍스트 주입: 내부 지시와 함께 힌트가 전달
  3. 실시간 반영: 다음 턴에서 즉시 반영

활용 예시

스티어링 힌트 예시
# 파일 경로 수정
"유틸리티는 src/common/utils에 있어"

# 단계 건너뛰기
"단위 테스트는 건너뛰고 구현에 집중해"

# 도구 방향 지정
"Logger 클래스 대신 winston 라이브러리 사용해"

# 모호성 해소
"UserService는 auth 모듈에 있는 걸 말하는 거야"
✅ 모범 사례
  • 모호한 지시 대신 구체적인 제안을 하세요.
  • 최종 계획 완료를 기다리지 말고 연구 단계에서 일찍 개입하세요.
  • 코드 분석만으로는 알 수 없는 도메인 지식을 전달하세요.

서브 에이전트

전문화된 AI 어시스턴트에게 특정 작업을 위임하세요.

서브 에이전트란?

서브 에이전트는 메인 Gemini CLI 세션 내의 전문 AI 어시스턴트입니다. 각각 독자적인 시스템 프롬프트, 페르소나, 특화된 도구 세트를 가지며 별도의 컨텍스트 윈도우에서 작동합니다.

내장 서브 에이전트

에이전트ID설명
코드베이스 조사자codebase_investigator코드 구조와 의존성 분석, 리버스 엔지니어링
CLI 도움말cli_helpGemini CLI 명령어, 설정, 문서 전문가
제너럴리스트generalist_agent작업을 적합한 전문 에이전트로 라우팅
브라우저 에이전트browser_agent웹 브라우저 자동화 (Chrome 144+ 필요, 실험적)

사용 방법

자동 위임

메인 에이전트가 작업을 분석하여 적합한 서브 에이전트에 자동으로 위임합니다.

명시적 호출

Gemini CLI
# @ 구문으로 특정 에이전트 호출
@codebase_investigator 서비스 간의 의존성 관계를 분석해줘
@cli_help 커스텀 명령어 만드는 방법 알려줘

커스텀 서브 에이전트 생성

YAML 프론트매터가 포함된 마크다운 파일로 정의합니다.

파일 위치

설정 필드

필드설명기본값
name고유 식별자 (슬러그)필수
description에이전트 목적과 활성화 조건필수
tools접근 가능 도구 (*, mcp_* 와일드카드 지원)필수
model기본 모델 오버라이드auto
max_turns최대 대화 반복 횟수30
temperature모델 창의성 매개변수-
timeout_mins실행 시간 제한 (분)10

관리

Gemini CLI / Terminal
# REPL 내부
/agents                    # 에이전트 관리
/agents reload             # 레지스트리 새로고침

# 비활성화 (settings.json)
{ "experimental": { "enableAgents": false } }
💡 격리 및 보안
  • 서브 에이전트는 다른 서브 에이전트를 호출할 수 없습니다 (재귀 방지).
  • * 와일드카드를 부여해도 다른 에이전트 호출은 불가합니다.
  • 격리된 실행으로 의도치 않은 부작용과 컨텍스트 오염을 방지합니다.

원격 에이전트

Agent-to-Agent(A2A) 프로토콜로 외부 에이전트에 작업을 위임하세요.

원격 에이전트란?

원격 서브 에이전트는 A2A(Agent-to-Agent) 프로토콜을 사용하여 외부 에이전트 서비스와 통신합니다. 로컬 작업 범위를 넘어 원격 서비스에 작업을 위임할 수 있습니다.

설정

프로젝트 또는 사용자 수준의 마크다운 파일로 정의합니다:

각 정의에는 고유 이름 슬러그와 agent_card_url 또는 인라인 agent_card_json이 필요합니다.

인증 방법

방법설명
API Key정적 헤더 + 동적 값 ($ENV_VAR)
HTTPBearer 토큰, Basic 인증, 커스텀 IANA 스킴
Google CredentialsGoogle Cloud ADC 사용
OAuth 2.0PKCE 인증 코드 플로우

관리 명령어

Gemini CLI
/agents list              # 사용 가능 에이전트 목록
/agents reload            # 파일 변경 후 레지스트리 새로고침
/agents enable <이름>      # 특정 에이전트 활성화
/agents disable <이름>     # 특정 에이전트 비활성화

플랜 모드

읽기 전용 환경에서 아키텍처를 설계하고 실행 계획을 수립하세요.

플랜 모드란?

플랜 모드는 구현 전 아키텍처 계획을 위한 읽기 전용 환경입니다. 프로젝트를 탐색하고, 문제를 이해하고, 트레이드오프를 평가한 후 코드를 수정하기 전에 실행 전략을 정렬할 수 있습니다.

진입 방법

방법설명
gemini --approval-mode=plan시작 시 플랜 모드로 실행
Shift+Tab세션 중 모드 전환
/plan [목표]플랜 모드 시작 + 목표 설정
/settings기본 승인 모드를 Plan으로 설정

워크플로우

목표 제공

달성해야 할 것을 설명합니다.

전략 토론

질문과 옵션을 통해 ask_user 도구로 협업합니다.

계획 검토

생성된 마크다운 파일을 검토합니다. Ctrl+X로 외부 편집기에서 편집할 수 있습니다.

승인 또는 반복

계획을 승인하면 구현이 시작됩니다. 피드백을 주거나 Esc로 취소할 수 있습니다.

도구 제한

플랜 모드에서는 안전을 위해 도구가 엄격히 제한됩니다:

계획 디렉토리 커스터마이징

settings.json
{
  "general": {
    "plan": {
      "directory": ".gemini/plans"
    }
  }
}

모델 라우팅 연동

auto 모델 사용 시, 계획 단계에서는 Pro 모델로 강력한 추론을 수행하고, 구현 단계에서는 Flash 모델로 전환하여 속도를 높입니다.

종료 방법

체크포인팅

AI가 파일을 수정하기 전 자동으로 프로젝트 상태를 스냅샷으로 저장합니다.

체크포인팅이란?

체크포인팅은 AI 도구가 파일을 수정하기 전에 프로젝트 상태의 스냅샷을 자동 저장하는 안전 기능입니다. 파일 수정 도구를 승인할 때 세 가지 구성 요소가 생성됩니다:

활성화

settings.json
{
  "general": {
    "checkpointing": {
      "enabled": true
    }
  }
}

/restore 명령어

명령어설명
/restore저장된 체크포인트 목록 표시
/restore <파일명>특정 체크포인트로 파일과 대화 이력 복원
💡 참고

모든 데이터는 로컬 머신에만 저장됩니다. Git 스냅샷은 쉐도우 저장소에, 대화 이력은 ~/.gemini/tmp/<project_hash>/checkpoints에 위치합니다.

되감기 (Rewind)

이전 대화 상태로 돌아가고, AI가 수정한 파일을 선택적으로 복원하세요.

사용 방법

복원 옵션

되돌릴 대화 지점을 선택한 후 다음 옵션이 표시됩니다:

옵션동작
대화 + 코드 되감기채팅 이력과 파일 수정 모두 복원
대화만 되감기채팅 이력만 제거; 파일 변경은 유지
코드만 복원대화는 유지하고 파일 수정만 되돌림
취소Esc 키로 취소
⚠️ 주의사항
  • AI 네이티브 도구를 통한 편집만 되감기 가능 (수동 편집이나 셸 명령은 대상 아님)
  • AI는 제거된 대화의 컨텍스트를 잃음
  • 이 작업은 세션 이력과 파일을 영구적으로 변경합니다

토큰 캐싱

API 비용을 자동으로 최적화하는 토큰 캐싱 기능을 알아봅니다.

작동 방식

Gemini CLI는 API 키 인증 사용 시 자동으로 토큰 캐싱을 수행합니다. 이전에 제출한 시스템 지침과 컨텍스트를 후속 요청에서 재사용하여 처리할 토큰 수를 줄입니다.

지원 대상

인증 방법지원 여부
Gemini API 키✅ 지원
Vertex AI✅ 지원 (프로젝트/위치 설정 필요)
OAuth (Google 개인/기업)❌ 미지원

사용량 모니터링

Gemini CLI
/stats

일반 토큰 사용량과 캐시 절약량을 확인할 수 있습니다.

알림 실험적

백그라운드 작업 완료나 사용자 입력 필요 시 데스크톱 알림을 받으세요.

활성화

settings.json
{
  "general": {
    "enableNotifications": true
  }
}

또는 /settings → General → Enable Notifications → On

알림 유형

유형트리거 시점
Action Required모델이 사용자 입력 또는 도구 승인을 기다릴 때
Session Complete세션이 성공적으로 완료되었을 때

지원 터미널

OSC 9 이스케이프 시퀀스를 사용합니다. iTerm2, WezTerm, Ghostty, Kitty를 지원합니다. 미지원 터미널에서는 터미널 벨(BEL)로 대체되어 작업 표시줄 깜박임이나 시스템 알림음이 울립니다.

메모리 관리

GEMINI.md와 메모리 시스템을 활용한 지속적 컨텍스트 관리 방법을 알아봅니다.

두 가지 메커니즘

📄

GEMINI.md (프로젝트 컨텍스트)

자동으로 로드되는 지시사항 파일. 프로젝트 전반의 표준을 강제합니다.

🧠

Memory (학습된 사실)

대화 중 자연어로 가르친 사실을 저장하고 이후 세션에서 자동으로 기억합니다.

GEMINI.md 계층 구조

  1. 글로벌: ~/.gemini/GEMINI.md (모든 프로젝트)
  2. 프로젝트 루트: ./GEMINI.md (현재 저장소)
  3. 하위 디렉토리: ./src/GEMINI.md (폴더별 규칙)

Memory 저장

자연어로 기억할 내용을 말하면 에이전트가 save_memory 도구로 자동 저장합니다.

Gemini CLI
> 나는 'const'를 'let'보다 항상 선호해. 기억해줘.
> 이 프로젝트는 탭 대신 2칸 스페이스를 사용해. 기억해.

관리 명령어

명령어설명
/memory show현재 로드된 전체 컨텍스트 표시
/memory reloadGEMINI.md 파일 강제 새로고침
/memory add <텍스트>글로벌 GEMINI.md에 텍스트 추가
✅ 모범 사례
  • GEMINI.md는 간결하고 실행 가능하게 유지하세요.
  • 부정 제약 조건 (하지 않을 것)을 사용하면 명확합니다.
  • 주기적으로 오래된 규칙을 검토하고 제거하세요.

작업 계획 (Todo)

구조화된 할 일 목록으로 복잡한 프로젝트를 체계적으로 관리하세요.

왜 필요한가?

표준 LLM은 10턴 이상의 코드 생성 후 원래 목표를 "잊을" 수 있습니다. 작업 계획은 세 가지 장점을 제공합니다:

👁

가시성

작업 시작 전 에이전트의 전략을 검토합니다.

🎯

집중

에이전트가 현재 어떤 단계를 실행 중인지 추적합니다.

🛡

복원력

에이전트가 막히면 계획이 방향을 다시 잡아줍니다.

사용 방법

Gemini CLI
# 계획 수립 요청
> 이 프로젝트를 JavaScript에서 TypeScript로 마이그레이션하려고 해. 먼저 계획을 세워줘.

# 진행 상황 확인
Ctrl+T    # 전체 할 일 목록 표시 (대기, 진행 중, 완료)

# 계획 수정 요청
> @types/node 설치 단계가 빠져있어. 추가해줘.
> 3번 단계를 취소하고 4번부터 진행해줘.
💡 팁

에이전트는 write_todos 도구를 사용하여 구조화된 단계 목록을 생성합니다. 계획은 유연하여 작업 취소, 순서 변경, 새 작업 추가를 요청할 수 있습니다.

웹 도구

실시간 웹 검색과 URL 내용 가져오기로 최신 정보에 접근하세요.

주요 도구

Google 웹 검색 (google_web_search)

인터넷에서 관련 페이지를 검색합니다. 모델의 학습 데이터 이후에 출시된 문서를 찾거나, 정보를 검증하여 할루시네이션을 방지하는 데 유용합니다.

웹 가져오기 (web_fetch)

특정 URL에서 원본 콘텐츠를 가져옵니다. 광고와 탐색 요소를 제거하여 핵심 내용만 추출합니다.

활용 예시

Gemini CLI
# 기술 조사
> Bun 1.0 릴리스 노트를 검색해서 주요 변경사항 요약해줘

# 상세 정보 가져오기
> https://docs.example.com/api 를 읽고 내 코드에 적용하는 방법 설명해줘

# 소스 비교
> React와 Vue의 최신 상태 관리 방법을 비교해줘

# 에러 트러블슈팅
> "TypeError: Cannot read property of undefined" 에러가 나와. 해결 방법 검색해줘
✅ 강력한 조합

가장 효과적인 방법은 웹 도구와 로컬 파일 편집을 결합하는 것입니다: 정보 검색 → 상세 가이드 가져오기 → 프로젝트 파일에 패턴 적용.

헤드리스 모드

대화형 인터페이스 없이 프로그래밍 방식으로 Gemini CLI를 사용하세요.

활성화

두 가지 경우에 자동 활성화됩니다:

출력 형식

JSON (-o json)

단일 JSON 객체를 반환합니다:

스트리밍 JSON (-o stream-json)

줄 구분 JSON(JSONL) 이벤트를 생성합니다:

이벤트 타입설명
init세션 메타데이터 (세션 ID, 모델)
message사용자/어시스턴트 메시지 청크
tool_use도구 호출 요청 + 인수
tool_result도구 실행 결과
error비치명적 경고/시스템 오류
result최종 결과 + 통계

종료 코드

코드의미
0성공
1일반 오류 또는 API 실패
42입력 오류 (잘못된 프롬프트/인수)
53턴 제한 초과

Git Worktrees 실험적

별도의 작업 디렉토리에서 여러 작업을 동시에 수행하세요.

Git Worktrees란?

Git worktree는 같은 저장소 이력을 공유하면서 각각 고유한 파일과 브랜치를 가진 별도의 작업 디렉토리를 생성합니다. 동시 작업 세션 간 코드 변경 충돌을 방지합니다.

활성화

settings.json
{
  "experimental": {
    "worktrees": true
  }
}

사용법

Terminal
# 이름 지정하여 생성
gemini --worktree feature-search

# 자동 이름으로 생성
gemini --worktree

이름은 디렉토리명 (.gemini/worktrees/에 저장)과 연관된 브랜치명이 됩니다.

작업 재개

Terminal
cd .gemini/worktrees/feature-search
gemini --resume <session_id>
⚠️ 주의사항
  • 세션 종료 시 worktree는 모든 변경사항과 함께 유지됩니다.
  • 사용 완료 후 수동으로 삭제해야 합니다.
  • 각 worktree에서 의존성과 빌드 프로세스를 별도로 초기화해야 합니다.

확장 프로그램 개발

커스텀 도구, 명령어, 컨텍스트를 제공하는 확장 프로그램을 직접 만드세요.

확장 기능 유형

기능용도호출 주체
MCP 서버도구와 데이터 소스 노출모델
커스텀 명령어프롬프트/셸 명령 단축키사용자
컨텍스트 파일지속적 모델 지시사항CLI → 모델
에이전트 스킬온디맨드 전문 워크플로우모델
CLI 생명주기 이벤트 가로채기CLI
커스텀 테마UI 색상 개인화사용자

프로젝트 구조

파일 구조
my-extension/
  gemini-extension.json    # 매니페스트 (필수)
  example.js               # MCP 서버 구현
  package.json             # Node.js 의존성
  GEMINI.md                # 컨텍스트 파일 (선택)
  commands/                # 커스텀 명령어 (선택)
  skills/                  # 에이전트 스킬 (선택)

매니페스트 예시

gemini-extension.json
{
  "name": "mcp-server-example",
  "version": "1.0.0",
  "settings": [{
    "name": "API Key",
    "envVar": "MY_SERVICE_API_KEY",
    "sensitive": true
  }],
  "mcpServers": {
    "nodeServer": {
      "command": "node",
      "args": ["${extensionPath}${/}example.js"],
      "cwd": "${extensionPath}"
    }
  }
}

MCP 서버 구현

example.js
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
import { z } from 'zod';

const server = new McpServer({
  name: 'my-server',
  version: '1.0.0',
});

server.registerTool(
  'fetch_posts',
  {
    description: 'Fetches posts from API.',
    inputSchema: z.object({}).shape,
  },
  async () => {
    const data = await fetch('https://api.example.com/posts');
    const json = await data.json();
    return { content: [{ type: 'text', text: JSON.stringify(json) }] };
  },
);

const transport = new StdioServerTransport();
await server.connect(transport);

개발 워크플로우

Terminal
# 1. 템플릿 생성
gemini extensions new my-extension mcp-server

# 2. 의존성 설치
cd my-extension && npm install

# 3. 개발용 링크
gemini extensions link .

# 4. 테스트 (CLI 재시작 후 도구/명령어 확인)
gemini

# 5. 구조 검증
gemini extensions validate .
✅ 모범 사례
  • TypeScript 사용으로 타입 안전성을 확보하세요.
  • 최소 권한 원칙: 필요한 도구만 노출하세요.
  • 민감 설정sensitive: true를 사용하면 시스템 키체인에 저장됩니다.
  • Semantic Versioning을 따르세요.
  • 배포 시 dist/, gemini-extension.json, package.json만 포함하세요.

IDE 연동

VS Code, JetBrains 등의 IDE와 Gemini CLI를 연동하여 개발 경험을 향상시키세요.

지원 IDE

VS Code 호환 에디터

ACP 호환 IDE

VS Code Companion 확장

"Gemini CLI Companion" 확장은 직접 IDE 접근과 실시간 워크스페이스 인식을 제공합니다.

설치

연결 관리

Gemini CLI
/ide enable       # IDE 연동 활성화
/ide disable      # IDE 연동 비활성화
/ide status       # 연결 상태 및 워크스페이스 파일 표시

Diff 작업

변경사항 수락: 체크 아이콘, 파일 저장, Command Palette, CLI 확인 중 하나로 수락합니다. 거부: 'x' 아이콘 클릭 또는 탭 닫기.

📚 관련 공식 문서

시스템 프롬프트

Gemini CLI의 핵심 동작 지침을 완전히 커스터마이징하세요.

시스템 프롬프트란?

시스템 프롬프트는 Gemini CLI의 동작을 안내하는 핵심 지시사항입니다. 커스텀 마크다운 파일로 완전히 대체할 수 있습니다.

GEMINI_SYSTEM_MD 환경 변수

동작
true / 1프로젝트 디렉토리의 .gemini/system.md 읽기
파일 경로지정된 마크다운 파일 사용 (절대/상대 경로, ~확장 지원)
false / 0기본 내장 프롬프트 사용
⚠️ 중요

이것은 병합이 아닌 완전 대체입니다. 커스텀 파일을 사용하면 원본 핵심 지시사항이 적용되지 않습니다. 필요한 부분은 직접 포함해야 합니다.

변수 치환

커스텀 프롬프트에서 내장 콘텐츠를 동적으로 주입할 수 있습니다:

기본 프롬프트 내보내기

Terminal
GEMINI_WRITE_SYSTEM_MD=1 gemini
✅ 권장 구조
  • SYSTEM.md: 안전, 도구 사용 프로토콜 등 양보할 수 없는 운영 규칙
  • GEMINI.md: 페르소나, 목표, 방법론, 프로젝트/도메인 컨텍스트

UI 표시

커스텀 시스템 프롬프트가 활성화되면 CLI에 |⌐■_■| 표시가 나타납니다.

생성 설정

Temperature, Top-P 등 모델 생성 매개변수를 세밀하게 조정하세요.

주요 매개변수

매개변수설명
Temperature출력 무작위성 제어. 낮을수록(0.0) 결정적, 높을수록(>0.7) 창의적
Top P핵 샘플링 확률. 출력 다양성에 영향
Max Output Tokens생성 응답 길이 제한
Thinking Config추론 모델용: thinkingBudget, includeThoughts

설정 방법

GenerateContentConfig 객체를 통해 @google/genai SDK에 전달됩니다. 두 가지 설정 원시값을 지원합니다:

⚠️ 주의

설정값은 최소한의 검증만 거쳐 모델 제공자에게 직접 전달됩니다. 잘못된 설정은 API 런타임 오류를 발생시킬 수 있습니다.

신뢰 폴더

프로젝트별 보안 수준을 제어하여 악성 코드 실행을 방지하세요.

신뢰 폴더란?

Gemini CLI의 전체 기능에 접근할 수 있는 프로젝트를 제어하는 보안 기능입니다. 프로젝트별 설정을 로드하기 전에 사용자의 승인을 요구합니다. 기본적으로 비활성화되어 있습니다.

활성화

settings.json
{
  "security": {
    "folderTrust": {
      "enabled": true
    }
  }
}

신뢰 대화 옵션

폴더에서 처음 CLI를 실행하면 세 가지 옵션이 제공됩니다:

  1. 현재 폴더만 신뢰
  2. 상위 디렉토리 신뢰 (모든 하위 디렉토리 자동 신뢰)
  3. 비신뢰로 표시 (제한된 "안전 모드"로 작동)

비신뢰 폴더 제한사항

관리

엔터프라이즈 설정

조직 전체에 Gemini CLI 정책과 보안 제어를 적용하세요.

시스템 설정 파일

OS경로
Linux/etc/gemini-cli/settings.json
macOS/Library/Application Support/GeminiCli/settings.json
WindowsC:\ProgramData\gemini-cli\settings.json

설정 병합 우선순위

시스템 기본값 → 사용자 설정 → 워크스페이스 설정 → 시스템 오버라이드 (최종 권한)

주요 보안 제어

도구 접근 제한

허용 목록 방식(tools.core)이 가장 안전합니다. 위험한 명령을 차단하는 대신 허용할 도구를 명시적으로 지정합니다.

YOLO 모드 비활성화

settings.json
{
  "security": {
    "disableYoloMode": true
  }
}

MCP 서버 허용 목록

settings.json
{
  "mcp": { "allowed": ["corp-data-api"] },
  "mcpServers": {
    "corp-data-api": {
      "command": "/usr/local/bin/start-corp-api.sh"
    }
  }
}

인증 강제

settings.json
{
  "enforcedAuthType": "oauth-personal"
}

사용자 격리

공유 환경에서 GEMINI_CLI_HOME 환경 변수로 각 사용자/작업을 고유한 상태 디렉토리로 분리합니다.

감사 (Telemetry)

"logPrompts": false로 민감한 프롬프트 내용 없이 도구 사용만 감사할 수 있습니다. otlpEndpoint로 내부 OTLP 수집기에 전송합니다.

텔레메트리

Gemini CLI의 관찰 가능성 데이터 수집과 설정 방법을 알아봅니다.

수집 데이터

OpenTelemetry를 통해 세 가지 유형의 데이터를 수집합니다:

로그

세션 설정, 프롬프트 제출, 도구 실행 (함수명, 인수, 소요시간), API 요청/응답 (토큰 수), 파일 작업, 모델 라우팅 결정, 확장 프로그램 생명주기 이벤트.

메트릭

도구 호출 횟수/지연, API 요청 횟수/지연, 유형별 토큰 사용량 (입력, 출력, 사고, 캐시, 도구), 파일 작업 및 변경 라인 수.

추적 (Traces)

작업명, 모델, 도구 상세, 토큰 수 등 속성이 포함된 스팬 기반 상세 가시성.

설정

설정환경 변수기본값
enabledGEMINI_TELEMETRY_ENABLEDfalse
targetGEMINI_TELEMETRY_TARGET"local"
outfileGEMINI_TELEMETRY_OUTFILE-
logPromptsGEMINI_TELEMETRY_LOG_PROMPTStrue
💡 옵트아웃

텔레메트리는 기본적으로 비활성화되어 있습니다. 활성화하지 않으면 어떤 데이터도 수집되지 않습니다.

도구 레퍼런스

Gemini CLI에서 사용 가능한 모든 내장 도구의 카테고리별 목록입니다.

실행

도구유형설명
run_shell_commandExecute임의의 셸 명령 실행. 대화형 세션과 백그라운드 프로세스 지원. 수동 확인 필요.

파일 시스템

도구유형설명
globSearchglob 패턴으로 워크스페이스에서 파일 검색
grep_searchSearch파일 내용에서 정규식 패턴 검색
list_directoryRead지정 위치의 파일과 하위 디렉토리 표시
read_fileRead파일 내용 읽기 (텍스트, 이미지, 오디오, PDF)
read_many_filesRead여러 파일 동시 읽기 (@ 심볼로 활성화)
replaceEdit파일 내 정밀 텍스트 교체. 승인 필요.
write_fileEdit새 파일 생성 또는 덮어쓰기. 승인 필요.

상호작용

도구유형설명
ask_userCommunicate대화형 다이얼로그로 설명이나 누락 정보 요청
write_todosOther하위 작업 목록 관리 (진행 추적)

메모리 & 계획

도구유형설명
activate_skillOther.gemini/skills에서 전문 지식 로드
get_internal_docsThinkGemini CLI 내부 문서 접근
save_memoryThink사실과 프로젝트 상세를 GEMINI.md에 저장
enter_plan_modePlan안전한 읽기 전용 연구 모드로 전환
exit_plan_modePlan계획 완료 후 승인을 위해 표시

도구유형설명
google_web_searchSearchGoogle 검색으로 최신 정보 조회
web_fetchFetchURL에서 콘텐츠 가져오기 및 처리

정책 엔진

도구 실행을 세밀하게 제어하는 TOML 기반 규칙 시스템입니다.

정책 엔진이란?

도구 호출을 허용(allow), 거부(deny), 또는 사용자 확인 요청(ask_user)으로 결정하는 규칙을 정의합니다.

규칙 조건

우선순위 계층

계층기본값용도
Default1내장 정책
Extension2확장 프로그램 정책
Workspace3프로젝트 수준 정책
User4사용자 커스텀 정책
Admin5시스템 관리자 정책

공식: 최종 우선순위 = 계층 기본값 + (toml_priority / 1000)

TOML 규칙 예시

policy.toml
# 위험한 명령 차단
[[rule]]
toolName = "run_shell_command"
commandPrefix = "rm -rf"
decision = "deny"
priority = 100

# MCP 도구 허용
[[rule]]
mcpName = "my-jira-server"
toolName = "search"
decision = "allow"
priority = 200

# 파일 수정 확인 요청
[[rule]]
toolName = ["write_file", "replace"]
decision = "ask_user"
priority = 10

정책 파일 위치

메모리 임포트 프로세서

GEMINI.md 파일을 모듈화하여 재사용 가능한 컴포넌트로 관리하세요.

임포트 구문

@ 뒤에 파일 경로를 지정하여 다른 파일의 내용을 가져옵니다:

GEMINI.md
@./file.md                      # 상대 경로
@../shared/style-guide.md       # 상위 디렉토리
@./components/instructions.md   # 하위 디렉토리
@/absolute/path/to/file.md      # 절대 경로

안전 메커니즘

특수 처리

ACP 모드 실험적

Agent Client Protocol을 통해 IDE와 개발 도구에서 Gemini CLI를 프로그래밍 방식으로 제어하세요.

ACP 모드란?

ACP(Agent Client Protocol)는 AI 코딩 에이전트와 코드 에디터/IDE 간 통신을 표준화하는 개방형 프로토콜입니다. JSON-RPC 프로토콜을 stdio로 통신합니다.

시작

Terminal
gemini --acp

지원 메서드

카테고리메서드
코어initialize, authenticate, newSession, loadSession, prompt, cancel
세션 관리setSessionMode, unstable_setSessionModel
파일 시스템프록시된 파일 시스템 서비스 (사용자 허가 파일만 접근)

MCP 연동

IDE 클라이언트가 MCP 서버를 구현하면 Gemini 모델이 해당 도구를 사용할 수 있습니다:

  1. 클라이언트가 도구를 노출하는 MCP 서버 구현
  2. ACP 초기화 시 MCP 서버 연결 정보 제공
  3. Gemini CLI가 연결하여 사용 가능 도구 검색
  4. 모델이 작업 실행을 위해 도구 호출

디버깅

Terminal
gemini --acp --debug

제거 (Uninstall)

Gemini CLI를 시스템에서 완전히 제거하는 방법입니다.

설치 방법별 제거

npm 글로벌 설치

Terminal
npm uninstall -g @google/gemini-cli

npx (임시 캐시)

npx는 임시 캐시에서 실행되므로 영구 설치가 아닙니다. 캐시를 정리하려면:

macOS / Linux
rm -rf "$(npm config get cache)/_npx"
Windows (PowerShell)
Remove-Item -Path (Join-Path $env:LocalAppData "npm-cache\_npx") -Recurse -Force

Homebrew

Terminal
brew uninstall gemini-cli

MacPorts

Terminal
sudo port uninstall gemini-cli
💡 설정 데이터 정리

CLI를 제거한 후 설정과 캐시 데이터도 삭제하려면 ~/.gemini/ 디렉토리를 수동으로 제거하세요.

검색어를 입력하세요