【Gemini CLI】ログの保存場所と内部構造
こんにちは。
今回はGemini CLIログの保存場所と内部構造について確認していきます。
GoogleアカウントやGoogle AI StudioでのAPIを使用して、手軽に使用できるGemini CLIですが、「どこにどのような情報がログとして保存されているのか」を把握しておくのは、運用上非常に重要です。
Gemini CLI のログの保存場所
Gemini CLIをインストールすると、実行環境のホームディレクトリ配下に設定ファイルやログが生成されます。
WSL環境やLinux、Macの場合は ~/.gemini/ に配置されます。
Windows環境であれば C:\Users\<user>\.gemini\ 配下に格納されます。
参照:Persisting environment variables
Gemini CLIのログ構造
Gemini CLIで取得できるログの一覧、各ログファイルが何の情報を持っているかを解説します。
ログ一覧
実際に tree コマンドで内部構造を確認した結果がこちらです。
~/.gemini/
|
| #全体の設定ファイル
├── google_accounts.json
├── oauth_creds.json
├── settings.json
├── projects.json
├── state.json
├── trustedFolders.json
├── installation_id
|
| #ログファイル
├── history/
│ └── <pj-name>/
│ └── .project_root
└── tmp/
├── bin/
│ └── rg
└── <pj-hash>/
├── logs.json
└── chats/
└── *.json
各ファイル・ディレクトリの役割
さきほど各項目の役割を整理しました。
| ファイル / ディレクトリ | 役割・説明 |
|---|---|
| google_accounts.json | 認証済みアカウント一覧 |
| oauth_creds.json | 認証トークン等の機密情報 |
| settings.json | モデルやUIの基本設定 |
| projects.json | 登録済みプロジェクトの目録 |
| state.json | 最後に使用した状態の記録 |
| trustedFolders.json | 実行許可済みのパス一覧 |
| installation_id | Gemini CLIの個体識別ID |
| history/<pj-name>/.project_root | チャットごとのアクティブなフォルダ名を保存 |
| tmp/ | 会話ログ関連 |
| tmp/bin/rg | 高速検索用バイナリ |
| tmp/ |
チャット履歴(ユーザの送信メッセージのみ) |
| tmp/ |
チャット履歴(プロンプトと応答のセット) |
チャットログを見てみる
代表として、 tmp/<pj-hash>/chats/ 配下に保存されているJSONファイルの中身を確認してみました。
ここには、Geminiとの対話履歴、Geminiの思考、トークン数情報が格納されています。
CHAT JSONの中身
{
"sessionId": "example-session-12345",
"messages": [
{
"id": "msg-001",
"timestamp": "2026-03-24T19:00:00.000Z",
"type": "user",
"content": "hello.pyの中身を教えて"
},
{
"id": "msg-002",
"timestamp": "2026-03-24T19:00:05.000Z",
"type": "gemini",
"content": "hello.pyの中身を確認しました。このファイルは挨拶を表示するシンプルなプログラムです。\n\n```python\nprint('Hello, World!')\n```",
"thoughts": [
{
"subject": "ファイル確認の計画",
"description": "ユーザーが特定のファイル内容を知りたがっているため、read_fileツールを使用してhello.pyを読み込みます。",
"timestamp": "2026-03-24T19:00:01.000Z"
}
],
"toolCalls": [
{
"id": "call-abc-123",
"name": "read_file",
"args": {
"file_path": "/home/user/project/hello.py"
},
"result": [
{
"functionResponse": {
"response": {
"output": "print('Hello, World!')\n"
}
}
}
],
"status": "success"
}
],
"tokens": {
"input": 150,
"output": 85,
"total": 235
},
"model": "gemini-3.1-pro-preview"
}
]
}
CHAT JSON内の各項目
主な項目の意味は以下の通りです。
| 項目内容 | 定義 |
|---|---|
| type | 誰のメッセージか(user:ユーザ / gemini:Gemini) |
| thoughts | Geminiの思考内容 |
| content | 送信 / 返答内容 |
| toolCalls | ローカル環境のファイルへの操作・実行履歴 |
| tokens | 一連のやり取りで発生したトークン数 |
おわりに
今回は、Gemini CLIの内部構造を整理しました。
裏側で「何がどこに記録されているか」を把握しておくことは、予期せぬイレギュラーからの復旧・原因究明に非常に役に立ちます。
特にチャット履歴を深堀ったところ、トークン数情報が搭載されていたことから、残トークン数のアラートなども作成できるかもしれません。
それでは。