Claude Codeで意図しない変更が発生した場合、/rewindコマンドを使えば会話の任意の時点まで安全にロールバックできます。ファイル変更もgitの状態も含めて巻き戻せるため、「AIが想定外の編集をした」というリスクを最小化できます。失敗を恐れずに大胆な指示を出せる安全装置として、日常的に活用すべきコマンドです。
この記事でわかること
AIが想定外の編集をしてしまった場合に、安全にロールバックする方法を解説します。失敗を恐れずに大胆な指示を出せる安全装置として活用できます。
/rewindコマンドの仕組みと、会話・ファイル変更を同時に巻き戻す具体的な手順 — は、ClaudeCodeの会話履歴を過去の任意の時点まで巻き戻すコマンドです。
Esc×2(直前の操作取り消し)や/fork(分岐)との明確な使い分け基準 — ClaudeCodeには「やり直し」に使える操作が複数あります。
- 実務で遭遇する3つの失敗パターンと、それぞれのリカバリフロー — ClaudeCodeでの作業中に「何かおかしい」と感じたときの判断フローを整理します。
対象読者: Claude Codeで安全にコード変更を進めたいエンジニア、失敗時のリカバリ手順を知りたい方
/rewindコマンドとは
/rewindは、Claude Codeの会話履歴を過去の任意の時点まで巻き戻すコマンドです。
単に会話のテキストを消すだけではなく、その間にClaude Codeが行ったファイル編集やコマンド実行の結果もまとめてロールバックします。git操作に不慣れなユーザーでも、/rewind一つで安全に「なかったこと」にできるのが最大の強みです。
基本的な使い方
コマンド構文
/rewind
/rewindを実行すると、会話のターン一覧が表示されます。各ターンには番号が付いており、戻りたい時点の番号を選択するだけで、その時点の状態に復元されます。
操作の流れ
- Claude Codeのプロンプトで
/rewind と入力
- 会話のターン一覧(各ステップで何をしたか)が表示される
- 巻き戻したい時点の番号を選択
- 選択した時点以降の会話履歴が削除され、ファイル変更も復元される
/rewindで巻き戻される対象
| 対象 |
巻き戻される |
備考 |
| 会話履歴 |
はい |
選択時点以降のやり取りが削除される |
| ファイル編集 |
はい |
Claude Codeが行った変更が元に戻る |
| 新規作成ファイル |
はい |
作成されたファイルが削除される |
| git commit |
部分的 |
コミット前の変更は戻るが、コミット済みはgit resetが必要 |
| 外部API呼び出し |
いいえ |
HubSpot APIへのPOST等は取り消せない |
| ターミナルの状態 |
いいえ |
npm installで追加されたパッケージ等はそのまま |
外部への副作用(APIコール、メール送信、デプロイ等)は/rewindでは取り消せません。この点を理解した上で使うことが重要です。
/rewindと類似操作の使い分け
Claude Codeには「やり直し」に使える操作が複数あります。状況に応じた最適な選択肢を整理します。
| 操作 |
効果 |
使うタイミング |
Esc×2(Escキー2回押し) |
直前の1ターンだけ取り消し |
AIの直前の回答がズレたとき。素早く再入力したい場合 |
/rewind |
任意の時点まで巻き戻し |
数ターン前の判断ミスに気づいたとき。複数の変更をまとめて取り消したい場合 |
/fork |
現在の会話を分岐させて新セッション作成 |
別のアプローチを試したいが、現在の作業も残しておきたい場合 |
git stash / git reset |
gitレベルでの変更取り消し |
コミット済みの変更を取り消したい場合。Claude Code外の変更も対象 |
Esc×2と/rewindの判断基準
直前の1手だけ戻したい → Esc×2
Escキーを2回連続で押すと、Claude Codeの直前の応答が取り消されます。「質問の仕方を変えたい」「AIの回答が的外れだった」という場合に、最速でやり直せます。
数ステップ前の判断ミスに遡りたい → /rewind
「3ターン前に指示した設計方針がそもそも間違っていた」「途中から方向性がズレた」という場合は、/rewindで根本の分岐点まで戻ります。
/forkとの使い分け
/forkは現在の会話コンテキストを維持したまま、新しいセッションとして分岐させるコマンドです。
- 「この変更は捨てたい」→
/rewind: 不要な変更を完全に取り消す
- 「別案も試したいが、今の作業も残したい」→
/fork: 両方のアプローチを並行して検証する
/forkについては、Claude Codeのセッション管理ガイドで詳しく解説しています。
実務での活用パターン
パターン1: リファクタリングが裏目に出た場合
状況: 「このファイルをリファクタリングして」と指示したが、Claude Codeが想定以上に大規模な変更を行い、テストが壊れた。
Before(/rewindを知らない場合):
git diffで変更箇所を一つずつ確認
- 手動で必要な変更と不要な変更を仕分け
git checkout -- ファイル名で個別にリバート
- 会話コンテキストには「リファクタリングした状態」が残り、次の指示がズレる
After(/rewindを使う場合):
/rewindを実行
- リファクタリング指示の直前を選択
- ファイルも会話も元に戻る
- スコープを限定した指示に書き換えて再実行
所要時間は手動リバートの5分の1以下です。会話コンテキストも正しい状態に戻るため、後続の作業にも悪影響がありません。
パターン2: 設計方針の変更
状況: 「REST APIで実装して」と指示して3ターン進んだ後、「やはりGraphQLの方が適切だ」と判断を変えたい。
手順:
/rewindを実行し、API設計の指示を出す前まで戻す
- 「GraphQLで実装して。理由は〜」と改めて指示
- Claude Codeは「REST APIで実装した」というコンテキストを持たないため、混乱なくGraphQL実装に集中する
もし/rewindせずに「やっぱりGraphQLに変更して」と追加指示すると、REST APIのコードが残ったまま部分的に書き換わるリスクがあります。/rewindで白紙に戻してから再指示するのが最も安全です。
パターン3: 複数ファイルへの一括変更で問題が発生
状況: 「全テストファイルのアサーション方法を統一して」と指示したところ、一部のテストで意図しない挙動変更が発生した。
手順:
/rewindで一括変更の前に戻す
- 対象ファイルを限定して指示し直す(「まずsrc/utils/のテストファイルだけ変更して」)
- 動作確認後、次のディレクトリを指示
- 段階的に適用することで、問題の切り分けが容易になる
大規模な一括変更は、問題が起きたときの原因特定が困難です。/rewindでやり直す際は、対象を分割して段階的に適用する習慣をつけると、リスクを大幅に低減できます。
失敗リカバリの実践フロー
Claude Codeでの作業中に「何かおかしい」と感じたときの判断フローを整理します。Claude Codeを使った経営データの可視化やコンテンツマーケティングにも、こうした考え方が活かされています。
ステップ1: 影響範囲を確認する
git status
git diff --stat
変更されたファイル数と差分の規模を確認します。
ステップ2: 巻き戻し方法を選択する
| 状況 |
推奨操作 |
| 直前の1回答だけおかしい |
Esc×2で直前を取り消し |
| 数ターン前からズレている |
/rewindで該当ターンまで巻き戻し |
| ファイル変更は残したいが別案を試したい |
/forkで分岐 |
| コミット済みの変更を取り消したい |
git reset --soft HEAD~1でコミットを戻す |
| 外部APIに不正なデータを送信してしまった |
API側で手動修正(/rewindでは戻せない) |
ステップ3: 再指示のポイント
巻き戻した後の再指示では、以下を意識します。
- スコープを明確にする: 「全ファイル」ではなく「このディレクトリ内のファイル」と限定する
- 制約を先に伝える: 「既存のテストを壊さないこと」「このファイルは変更しないこと」
- 確認ポイントを指定する: 「変更前にdiffを見せて」「変更後にテストを実行して」
関連コマンドとの組み合わせ
/compact + /rewind
長いセッションで/rewindのターン一覧が膨大になった場合、先に/compactで会話を要約してからチェックポイント的に使う方法があります。ただし、/compact後は過去のターン詳細が失われるため、/rewindで戻れる粒度が粗くなる点に注意が必要です。
/resume + /rewind
前回のセッションを/resumeで再開した後、続きの作業で問題が発生した場合に/rewindで巻き戻すパターンです。セッション再開の詳細はセッション管理ガイドを参照してください。
git stash + /rewind
Claude Codeの変更を一旦git stashで退避し、/rewindで会話だけ巻き戻してから、git stash popで変更を復元するテクニックです。「ファイル変更は維持したいが、会話コンテキストを修正したい」という場面で有効です。
あわせて読みたい
まとめ
/rewindコマンドは、Claude Codeでの作業における最も重要な安全装置です。会話履歴とファイル変更を同時に任意の時点まで巻き戻せるため、「失敗してもすぐ戻せる」という安心感のもとで、大胆な指示やリファクタリングに挑戦できます
押さえておきたいポイントは以下の通りです。
- 直前の1手を取り消す
Esc×2、別案を並行検証する/forkと使い分けることで、あらゆる失敗パターンに対応できるリカバリ体制が整います
- 外部APIへの副作用だけは
/rewindで取り消せないため、破壊的な操作の前には必ず確認ステップを挟む運用を徹底してください
- *Claude Codeの全コマンド一覧はClaude Codeチートシートをご覧ください
- AI活用の全体像はAI活用完全ガイドで解説しています
よくある質問(FAQ)
Q1. /rewindで巻き戻した後、再度同じ操作をやり直すことはできますか?
はい、可能です。/rewindで巻き戻した後は、改めて指示を入力するだけで再実行できます。同じ指示をそのまま繰り返しても、スコープや制約を変えた指示に修正しても構いません。巻き戻し後の会話は白紙の状態なので、自由にやり直せます。
Q2. /rewindはgit commitした変更も取り消せますか?
/rewindが直接取り消せるのは、コミットされていないファイル変更です。Claude Codeがセッション中にgit commitを実行していた場合、コミット自体はgitの履歴に残ります。コミット済みの変更を戻すには、git reset --soft HEAD~1等のgitコマンドを別途使用する必要があります。
Q3. 外部APIへのリクエスト(HubSpotへのPOST等)も/rewindで取り消せますか?
取り消せません。/rewindはClaude Code内のローカルな状態(会話履歴とファイル変更)を巻き戻すコマンドです。外部サービスに送信されたAPIリクエスト、デプロイされたコード、送信されたメール等の副作用は元に戻りません。破壊的な外部操作を行う前には、Claude Codeに「実行前に確認して」と指示しておくことを推奨します。
Q4. /rewindとgit stashはどちらを使うべきですか?
目的が異なります。/rewindは会話コンテキストとファイル変更を同時に巻き戻したいときに使います。git stashはファイル変更だけを一時退避したいときに使います。「会話の流れは正しいが、ファイル変更を一旦保留したい」場合はgit stash、「会話の方向性自体を修正したい」場合は/rewindが適切です。