結論:まず変更経路を分けてからrewindする
Claude Codeのcheckpointingは、各promptの前にsessionの状態を記録し、追跡対象のファイル編集と会話を短時間で戻す機能です。/rewind、または入力欄が空のときのEsc二回でmenuを開き、Restore code and conversation、Restore conversation、Restore code、Summarizeのいずれかを選びます。ただし、現在のsession外の手編集や別sessionの変更を万能に戻す機能ではありません。
困るのは「checkpointがあるから安全」と考えて、ClaudeのEdit、Bash、subagent、別session、人の編集を同じcheckoutへ重ねるケースです。この記事では、公式の対象範囲を基に、何をrewindし、何をGitで復旧し、どこでHOLDするかを判断します。次の作業は、変更を五つの経路へ分類して復旧手段を一行ずつ書くことです。
公式仕様:100件のsnapshotと約30日のcleanup
公式checkpointing文書では、各promptがturnを開始するとcheckpointが作られ、session内の直近100 checkpointについてfile snapshotが保持されます。checkpointはconversationと一緒に保存されるため、sessionをresumeした後も/rewindを使えます。snapshotは既定でsessionの最終保存から約30日後のcleanup対象で、長期保管のbackupではありません。保持期間が必要ならcleanupPeriodDaysを検討しますが、永続履歴はGitへ残します。
menuの選択肢は、コードと会話を両方戻す、会話だけ戻す、コードだけ戻す、指定地点から先または前を要約する、です。選択した地点より後に追跡されたfile editがない場合、code restoreは表示されません。Summarizeはfileを変えず、元のmessageをtranscriptに残したままcontextを圧縮します。
戻る変更と残る変更を比較する
| 変更経路 | rewindの扱い | 推奨する確認 |
|---|---|---|
| Claudeのfile editing tool | checkpointの対象 | restore後のdiffとtest |
| Bashだけで変更したfile | 通常は追跡されない | Git、生成物、実行ログ |
| Claudeが先に編集したfileへの後続Bash | そのfileの追跡された変更として戻る場合がある | ファイル単位で実体を確認 |
| 別session・手編集 | 通常は対象外 | 共同作業者とGit |
| 多くのbackground subagent | 親sessionのrestore外に残る | subagentの実行結果とGit |
| symlink・hard link | skip warningが出て戻らない | /debugのpathと手動復旧 |
Foreground forked skillなど一部の実行形態は例外です。subagentだから必ず戻る、必ず戻らないと決めつけず、公式の実行形態と実際のdiffを確認してください。production data、migration、外部サービス、別checkoutへ影響した操作は、rewindだけで完了扱いにしません。
安全に変更を戻す8手順
git statusでtracked、untracked、他者の変更を確認し、現状のdiffを保存する。- 変更をClaudeのEdit、Bash、subagent、別session、手編集の五列へ分類する。
- 復旧目的を「コード」「会話」「両方」「context整理」の一つに決める。
- 入力欄を空にして
/rewindを実行する。文字がある状態のEsc二回はmenuではなく入力のclearになる。 - 戻り先のprompt、時刻、作業ブランチを照合し、最小のrestoreを選ぶ。
- skip warningが出たら進めず、
/debugでsymlinkやhard linkのpathを確認する。 - restore後に
git diff、テスト、生成物、設定file、外部サービスへの影響をreadbackする。 - 採用する状態を小さくcommitし、共同作業やreleaseの復旧点はGitのbranch・commit SHAへ残す。
rewindとGitを使い分ける判断表
- 直前の試行錯誤を素早く捨てるならrewind
- 数日をまたぐ復旧、review、共有ならGit
- 会話の前提だけ変えるならRestore conversation
- 会話を残してEditの差分を捨てるならRestore code
- Bashだけの生成物、手編集、別sessionはGitまたは作業記録
- migration、削除、production data、外部APIはHOLDして影響を確認
- 別人の変更が混在するcheckoutでは無断restoreしない
- restore後のtestとdiffがない状態を完了にしない
checkpointは個人sessionの短期復旧、Gitは永続履歴と共同作業という役割分担です。sessionを続きから開く場合はbackground sessionへのattachではなく、対象が同じか、権限モードや設定が再読込されるかも確認します。変更証跡はClaude Codeの監査logへ記録します。
HOLDする条件と復旧後の確認
誰の変更か不明、同じcheckoutで別sessionが実行中、Bashの削除やmigrationが混在、symlinkの実体が不明、production dataへ触れた、restore後の検証commandがない場合はHOLDします。rewindを押して状態が変わったことだけでは復旧完了としません。次の順に確認します。
- 期待するcommit、file、会話地点を明文化する。
- trackedとuntrackedの両方を確認し、残った生成物を分類する。
- テスト、lint、buildを同じ条件で実行する。
- 外部変更や秘密情報の扱いを担当者と照合する。
- 採用した状態と復旧理由をcommit、issue、監査logへ残す。
よくある質問
Escを二回押してもmenuが出ません
入力欄に文字があると、Esc二回は入力をclearします。入力履歴からUpで戻せるため、menuを開くときは空欄にしてから操作するか/rewindを使います。
Summarizeでfileも戻りますか?
戻りません。conversationのcontextを圧縮する操作で、file状態は維持されます。実装を戻したい場合はRestore code、会話も戻す場合はRestore code and conversationです。
checkpointを30日以上残せますか?
cleanupPeriodDaysでcleanup方針を調整できますが、checkpointをbackupやrelease台帳にしないでください。必要な履歴はGit、共有ストレージ、組織の保持方針で管理します。
公式情報と関連手順
対象範囲はClaude Code公式checkpointing、sessionのresumeやbranchは公式Manage sessions、導入と診断は公式Advanced setupで確認できます。
並列作業の分離はsubagent fork、変更の共有はworktree運用へつなげます。Miraigentの無料診断では、復旧点、Git、test、責任者を一枚の運用表へ整理します。

