factsGemini CLIcheckpointing

Checkpointing と Rewind

概要

AI のツールがファイルを変更する前にプロジェクトの状態のスナップショットを自動保存する Checkpointing と、会話履歴とファイル変更を遡って戻す /rewind を扱う。

仕様

Checkpointing

write_filereplace のようにファイルシステムを変更するツールを承認すると、自動的に checkpoint が作られる。checkpoint に含まれるもの:

  1. Git スナップショット: ホームディレクトリの専用の shadow Git リポジトリ~/.gemini/history/<project_hash>)にコミットする。自分のプロジェクトの Git リポジトリには干渉しない
  2. 会話履歴: その時点までのエージェントとのやり取り全体
  3. ツール呼び出し: 実行されようとしていたツール呼び出し
  • すべての checkpoint データはローカルに保存される。Git スナップショットは shadow リポジトリ、会話履歴とツール呼び出しは通常 ~/.gemini/tmp/<project_hash>/checkpoints の JSON

有効化:

  • 既定で無効settings.jsongeneral.checkpointing.enabledtrue にする
  • --checkpointing コマンドラインフラグは version 0.11.0 で削除された。現在は settings.json からのみ有効にできる

/restore

  • /restore: 現在のプロジェクトの保存済み checkpoint を一覧する。ファイル名は通常「タイムスタンプ + 変更対象ファイル名 + 実行されようとしたツール名」(例: 2025-06-22T10-00-00_000Z-my-file.txt-write_file
  • /restore <checkpoint_file>: そこへ戻す

復元すると:

  • プロジェクトのすべてのファイルがスナップショット時点に戻る
  • CLI の会話履歴が復元される
  • 元のツール呼び出しが再提示される(再実行・変更・無視のいずれも選べる)

/rewind

会話の過去の状態に戻り、任意でその間に AI が行ったファイル変更を取り消す。

  • 起動: /rewind と入力するか、Esc を 2 回押す
  • 操作
    1. 上下矢印で過去のやり取りを選ぶ(最新が一番下
    2. 選択中のユーザープロンプトと、該当する場合は変更ファイル数のプレビューが出る
    3. Enter で確定
    4. 確認ダイアログで最大 3 つの選択肢
      • Rewind conversation and revert code changes(両方戻す)
      • Rewind conversation(チャット履歴のみ。ファイル変更は残す)
      • Revert code changes(ファイル変更のみ。チャット履歴は残す)
      • Do nothing(Esc)でキャンセル
  • 選択した時点以降にコード変更が無い場合、コード変更に関する選択肢は隠される

設定

{
  "general": {
    "checkpointing": {
      "enabled": true
    }
  }
}

制約・注意点

/rewind について:

  • 破壊的な操作。現在のセッション履歴、場合によってはファイルに対して破壊的に働く
  • 会話を rewind すると、モデルは取り除かれたやり取りの記憶をすべて失う。 コード変更のみを戻した場合は、ファイルが変わったことをモデルに伝える必要がありうる
  • rewind が影響するのは AI の編集ツールによるファイル変更のみ。手動編集と shell ツール(!)による変更は取り消さない
  • チャットの圧縮ポイントをまたいでも、保存済みセッションデータから履歴を再構成して動く

関連

  • facts/gemini-cli/configuration.md
  • facts/gemini-cli/commands.md
  • facts/gemini-cli/tools.md