【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//logs.json チャット履歴(ユーザの送信メッセージのみ)
tmp//chats/*.json チャット履歴(プロンプトと応答のセット)

参照:Gemini CLI Configuration

チャットログを見てみる

代表として、 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の内部構造を整理しました。

裏側で「何がどこに記録されているか」を把握しておくことは、予期せぬイレギュラーからの復旧・原因究明に非常に役に立ちます。
特にチャット履歴を深堀ったところ、トークン数情報が搭載されていたことから、残トークン数のアラートなども作成できるかもしれません。

それでは。