Gemini CLI configuration
概要
環境変数、コマンドライン引数、settings ファイルによる設定。このページは公式リファレンスのうち日常的に使う設定を抜き出したもので、全設定を網羅していない。 網羅的な一覧は出典を参照する。
仕様
設定レイヤーの優先順位
優先度の低い順(後のものが前を上書きする)。
- Default values: アプリケーション内のハードコードされた既定値
- System defaults file: 他の settings ファイルに上書きされうるシステム全体の既定
- User settings file: 現在のユーザーのグローバル設定
- Project settings file: プロジェクト固有の設定
- System settings file: 他のすべての settings ファイルを上書きするシステム全体の設定
- Environment variables:
.envから読み込まれうる変数 - Command-line arguments: 起動時に渡した値
settings ファイルの場所
| 種類 | 場所 | スコープ |
|---|---|---|
| System defaults | Linux /etc/gemini-cli/system-defaults.json、Windows C:\ProgramData\gemini-cli\system-defaults.json、macOS /Library/Application Support/GeminiCli/system-defaults.json。GEMINI_CLI_SYSTEM_DEFAULTS_PATH で上書き可 | 最も優先度が低い基底レイヤー |
| User settings | ~/.gemini/settings.json | 現在のユーザーの全セッション |
| Project settings | プロジェクトルートの .gemini/settings.json | そのプロジェクトから実行したときのみ |
| System settings | Linux /etc/gemini-cli/settings.json、Windows C:\ProgramData\gemini-cli\settings.json、macOS /Library/Application Support/GeminiCli/settings.json。GEMINI_CLI_SYSTEM_SETTINGS_PATH で上書き可 | システム全体・全ユーザー。すべての settings ファイルに優先する |
- JSON 対応エディタは生成済みスキーマ(リポジトリの
schemas/settings.schema.json、またはホストされたもの)を参照して補完と検証ができる - プロジェクトの
.geminiディレクトリには settings 以外にカスタムの sandbox プロファイル(.gemini/sandbox-macos-custom.sb、.gemini/sandbox.Dockerfile)も置ける
設定内の環境変数展開
settings.jsonとgemini-extension.jsonの文字列値は$VAR_NAME、${VAR_NAME}、${VAR_NAME:-DEFAULT_VALUE}の構文で環境変数を参照できる。設定の読み込み時に解決される- 各 extension は自身のディレクトリに
.envを持て、自動的に読み込まれる
主な設定(settings.json)
設定はカテゴリに整理され、対応するトップレベルのカテゴリオブジェクトの中に置く。
general
| キー | 既定 | 内容 |
|---|---|---|
general.preferredEditor | undefined | 開くエディタ。組み込みの識別子のいずれか(vscode、vscodium、windsurf、cursor、zed、antigravity、sublimetext、lapce、nova、bbedit、vim、neovim、emacs、hx、emacsclient、micro)。未設定なら $VISUAL / $EDITOR を使う |
general.openEditorInNewWindow | false | VS Code 系エディタを新しいウィンドウで開く |
general.vimMode | false | Vim キーバインド |
general.defaultApprovalMode | "default" | ツール実行の既定 approval mode。default / auto_edit / plan。YOLO モードはコマンドライン(--yolo または --approval-mode=yolo)でしか有効にできない |
general.devtools | false | 起動時に DevTools inspector を有効にする |
general.enableAutoUpdate | true | 自動更新 |
general.enableAutoUpdateNotification | true | 更新通知 |
general.enableNotifications | false | 対応が必要なプロンプトとセッション完了のターミナル通知 |
general.notificationMethod | "auto" | auto / osc9 / osc777 / bell |
general.checkpointing.enabled | false | セッションの checkpointing(要再起動) |
general.plan.enabled | true | Plan Mode(要再起動) |
general.plan.directory | undefined | 計画成果物の保存先。未指定ならシステムの一時ディレクトリ。カスタムディレクトリには、Plan Mode での書き込みを許すポリシーが必要(要再起動) |
general.plan.modelRouting | true | Plan Mode の状態に応じて Pro と Flash を自動切り替えする(計画フェーズは Pro、実装フェーズは Flash) |
general.retryFetchErrors | true | fetch failed 系のエラーで再試行する |
general.maxAttempts | 10 | メインのチャットモデルへのリクエストの最大試行回数。10 を超えられない |
general.sessionRetention.enabled | true | セッションの自動クリーンアップ |
general.sessionRetention.maxAge | "30d" | この期間より古いチャットを自動削除する |
general.sessionRetention.maxCount | undefined | 代替: 保持するセッションの最大数(新しい順) |
general.sessionRetention.minRetention | "1d" | 最小保持期間(安全上の下限) |
general.topicUpdateNarration | true | Topic & Update のコミュニケーションモデル |
general.logRagSnippets | false | Code Customization(RAG)で取得したスニペットをローカルファイルに記録する |
output / ui
output.format:"text"(既定)または"json"ui.theme、ui.customThemes、ui.autoThemeSwitching(既定true)、ui.terminalBackgroundPollingInterval(既定 60 秒)ui.inlineThinkingMode:"off"(既定)/"full"ui.dynamicWindowTitle(既定true): ターミナルタイトルに状態アイコンを出すui.showHomeDirectoryWarning(既定true、要再起動): ホームディレクトリで実行したとき警告するui.escapePastedAtSymbols(既定false): 貼り付けテキスト内の@をエスケープして意図しない@path展開を防ぐui.compactToolOutput(既定true)、ui.hideTips(既定false)、ui.showShortcutsHint(既定true)
tools
| キー | 既定 | 内容 |
|---|---|---|
tools.sandbox | undefined | legacy のフルプロセス sandbox 実行環境。真偽値、プロファイルのパス、または明示的な sandbox コマンド(docker / podman / lxc / windows-native)(要再起動) |
tools.sandboxAllowedPaths | [] | sandbox からアクセスを許す追加パス(要再起動) |
tools.sandboxNetworkAccess | false | sandbox のネットワークアクセス(要再起動) |
tools.shell.enableInteractiveShell | true | node-pty による対話シェル。child_process へのフォールバックは引き続き適用される(要再起動) |
tools.shell.backgroundCompletionBehavior | "silent" | バックグラウンドのシェルコマンド完了時の挙動。silent(既定)/ inject(出力をエージェントに返す)/ notify(チャットに短いメッセージ) |
tools.shell.pager | "cat" | シェル出力の pager |
tools.shell.showColor | true | シェル出力の色 |
tools.shell.inactivityTimeout | 300 | 出力が無い状態で許される最大秒数 |
tools.core | undefined | 組み込みツールを allowlist で制限する(要再起動) |
tools.allowed | undefined | 確認ダイアログを飛ばすツール名(例: ["run_shell_command(git)", "run_shell_command(npm test)"])(要再起動) |
tools.confirmationRequired | undefined | 常に確認を要するツール名。allowed と core の allowlist より優先する(要再起動) |
tools.exclude | undefined | 発見から除外するツール名(要再起動)。Policy Engine のドキュメントではこの設定は deprecated とされ、deny のポリシールールが推奨されている |
tools.discoveryCommand / tools.callCommand | undefined | カスタムのツール発見・呼び出しコマンド。callCommand はツール名を第 1 引数に取り、JSON 引数を stdin から読み、JSON 結果を stdout に出す必要がある(要再起動) |
tools.useRipgrep | true | 内容検索に ripgrep を使う |
tools.truncateToolOutputThreshold | 40000 | 大きなツール出力を切り詰めるときの最大文字数。0 以下で切り詰めを無効化(要再起動) |
tools.disableLLMCorrection | true | 編集ツールの LLM ベースのエラー訂正を無効にする。有効時は完全一致が見つからないと自己訂正を試みず即座に失敗する(要再起動) |
useWriteTodos | true | write_todos ツールを有効にする |
mcp
mcp.serverCommand(要再起動)、mcp.allowed(許可する MCP サーバー一覧、要再起動)、mcp.excluded(除外、要再起動)
security
| キー | 既定 | 内容 |
|---|---|---|
security.toolSandboxing | false | ツール単位の sandbox。CLI プロセス全体ではなく個々のツールを隔離する(要再起動) |
security.disableYoloMode | false | フラグで有効化されても YOLO モードを無効にする(要再起動) |
security.disableAlwaysAllow | false | ツール確認ダイアログの「Always allow」を無効にする(要再起動) |
security.enablePermanentToolApproval | false | 「Allow for all future sessions」を有効にする |
security.autoAddToPolicyByDefault | false | trusted なワークスペースの低リスクツールで「Allow for all future sessions」を既定の選択肢にする |
security.blockGitExtensions | false | Git からの extension のインストールと読み込みをブロックする(要再起動) |
security.allowedExtensions | [] | 許可する extension の正規表現。空でない場合、一致するものだけが許可され、blockGitExtensions を上書きする(要再起動) |
security.folderTrust.enabled | true | Folder trust の有効・無効(要再起動) |
security.environmentVariableRedaction.enabled | false | 秘密を含みうる環境変数の redaction(要再起動) |
security.environmentVariableRedaction.allowed / .blocked | [] | 常に許可/常に redact する環境変数(要再起動) |
security.auth.selectedType / .enforcedType / .useExternal | undefined | 認証タイプ。enforcedType が選択中の型と一致しないと再認証を求められる(要再起動) |
security.enableConseca | false | context-aware security checker。LLM を使ってプロンプトに基づくツール利用のセキュリティポリシーを動的に生成・強制する(要再起動) |
advanced
advanced.autoConfigureMemory(既定true、要再起動): Node.js のメモリ上限を自動設定する。メモリはプロセス起動時に確保されるため、この設定はグローバルの user settings からのみ読まれ、workspace レベルの上書きを無視するadvanced.dnsResolutionOrder(要再起動)advanced.excludedEnvVars(既定["DEBUG", "DEBUG_MODE"]): プロジェクトのコンテキストから除外する環境変数advanced.ignoreLocalEnv(既定false、要再起動): プロジェクトディレクトリの汎用.envを無視するadvanced.bugCommand: bug report コマンドの設定
admin
| キー | 既定 | 内容 |
|---|---|---|
admin.secureModeEnabled | false | true で YOLO モードと「Always allow」を使えなくする |
admin.extensions.enabled | true | false で extension のインストールと利用を禁じる |
admin.mcp.enabled | true | false で MCP サーバーの利用を禁じる |
admin.mcp.config | {} | 管理者が設定する MCP サーバー(allowlist) |
admin.mcp.requiredConfig | {} | 常に注入される管理者必須の MCP サーバー |
admin.skills.enabled | true | false で agent skills の利用を禁じる |
policyPaths / adminPolicyPaths
- どちらも配列、既定
[]、要再起動。追加で読み込むポリシーファイル/ディレクトリ
mcpServers
- 発見された各ツールには
mcp_接頭辞とサーバーのエイリアスが付いて FQN(mcp_serverAlias_actualToolName)になる - 互換性のため、システムが MCP ツール定義から一部のスキーマプロパティを削ることがある
command、url、httpUrlのうち少なくとも 1 つが必要。複数指定した場合の優先順位はhttpUrl→url→command- サーバーのエイリアスにアンダースコア(
_)を使わない。 ポリシーエンジンは FQN をmcp_接頭辞の直後の最初のアンダースコアで分割するため、セキュリティポリシーが黙って機能しなくなりうる - サーバーごとのキー:
command、args、env、cwd、url(SSE)、httpUrl(streamable HTTP)、headers、timeoutなど
シェル履歴
- 場所:
~/.gemini/tmp/<project_hash>/shell_history <project_hash>はプロジェクトルートのパスから生成される一意な識別子。プロジェクト間の衝突を避けるためプロジェクト固有ディレクトリに保存される
環境変数と .env
.env の読み込み順:
- 現在の作業ディレクトリの
.env - 見つからなければ、
.gitフォルダで識別されるプロジェクトルートまたはホームディレクトリに達するまで親ディレクトリを遡る - それでも見つからなければ
~/.env
- 一部の環境変数(
DEBUG、DEBUG_MODE)は、gemini-cli の挙動への干渉を防ぐためプロジェクトの.envから自動的に除外される。.gemini/.envの変数は決して除外されない。 この挙動はadvanced.excludedEnvVarsで変えられる
主な環境変数:
| 変数 | 内容 |
|---|---|
GEMINI_API_KEY | Gemini API のキー |
GEMINI_MODEL | 既定モデル。ハードコードされた既定を上書きする |
GEMINI_CLI_TRUST_WORKSPACE | "true" でそのセッションの間、現在のワークスペースを信頼し folder trust チェックを飛ばす。ヘッドレス環境(CI/CD)向け |
GEMINI_CLI_TRUSTED_FOLDERS_PATH | trustedFolders.json の既定の場所を上書きする |
GEMINI_CLI_IDE_PID | 連携に使う IDE プロセスの PID を手動指定する。自動 IDE 検出を上書きする |
GEMINI_CLI_HOME | user レベルの設定と保存のルートディレクトリ。既定はシステムのホームディレクトリで、その中に .gemini を作る |
GEMINI_CLI_SURFACE | API トラフィックのレポート用に User-Agent ヘッダーに含めるカスタムラベル |
GOOGLE_API_KEY | Google Cloud の API キー。Vertex AI の express mode に必要 |
GOOGLE_CLOUD_PROJECT | Google Cloud のプロジェクト ID。Code Assist または Vertex AI に必要。Cloud Shell では Cloud Shell 用に割り当てられた特別なプロジェクトが既定になり、グローバル環境の設定は上書きされる。別のプロジェクトを使うには .env で定義する |
GOOGLE_APPLICATION_CREDENTIALS | Google Application Credentials の JSON ファイルへのパス |
コマンドライン引数
| フラグ | 内容 |
|---|---|
--acp | Agent Communication Protocol(ACP)モードで起動する |
--allowed-mcp-server-names | そのセッションで許可する MCP サーバー名のカンマ区切り一覧 |
--allowed-tools <tool1,tool2,...> | 確認ダイアログを飛ばすツール名のカンマ区切り一覧 |
--approval-mode <mode> | default / auto_edit / yolo / plan。plan は experimental planning の有効化が必要で、「現在開発中で完全には機能していない」と注記されている。--yolo とは併用できず、新しい統一的な方法としては --approval-mode=yolo を使う |
--debug(-d) | デバッグモード。F12 でデバッグコンソールを開く |
--delete-session <identifier> | インデックス番号または完全な UUID でチャットセッションを削除する |
--extensions <name ...>(-e) | 使う extension を指定する。指定しないと利用可能なすべてが使われる。gemini -e none ですべて無効化 |
--fake-responses | テスト用の偽モデル応答ファイルのパス |
--include-directories <dir1,dir2,...> | ワークスペースに追加ディレクトリを含める。最大 5 ディレクトリ |
--list-extensions(-l) | 利用可能な extension を一覧して終了する |
--list-sessions | 現在のプロジェクトのチャットセッションを一覧して終了する |
--model <name>(-m) | そのセッションで使うモデル |
--output-format <format> | 非対話モードの出力形式。text(既定)/ json / stream-json(リアルタイムイベントを出すストリーミング JSON) |
--prompt <text>(-p) | プロンプトを直接渡す。非対話モードで起動する |
--prompt-interactive <text>(-i) | そのプロンプトを最初の入力として対話セッションを始める。stdin からパイプ入力しているときは使えない |
--record-responses | テスト用にモデル応答を記録するファイルのパス |
--resume [session_id](-r) | 過去のセッションを再開する。latest、インデックス番号、完全な UUID。省略時は latest |
--sandbox(-s) | そのセッションで sandbox モードを有効にする |
--screen-reader | スクリーンリーダー向けに TUI を調整する |
--version | バージョンを表示する |
--yolo | すべてのツール呼び出しを自動承認する |
設定
{
"general": {
"defaultApprovalMode": "auto_edit",
"checkpointing": { "enabled": true }
},
"tools": {
"allowed": ["run_shell_command(git status)"],
"useRipgrep": true
},
"security": {
"folderTrust": { "enabled": true },
"disableYoloMode": true
}
}
{
"apiKey": "${MY_API_TOKEN:-default-token}"
}
制約・注意点
- このページは全設定の網羅ではない。網羅的な一覧は出典の configuration リファレンスを参照する
- 「要再起動」と記した設定は、変更後に CLI の再起動が必要
関連
facts/gemini-cli/commands.mdfacts/gemini-cli/policy-engine.mdfacts/gemini-cli/sandbox.mdfacts/gemini-cli/tools.mdfacts/gemini-cli/mcp-server.mdfacts/gemini-cli/gemini-md.mdfacts/gemini-cli/trusted-folders.mdfacts/gemini-cli/model.mdfacts/gemini-cli/headless.mdfacts/gemini-cli/extensions.mdfacts/gemini-cli/hooks.mdfacts/gemini-cli/skills.mdfacts/gemini-cli/subagents.mdfacts/gemini-cli/checkpointing.md