Claude Codeにauthモジュールを完全に消し去られて、3時間分の作業を失いました
私は集中モードに入っていました。Claude Codeはすごい勢いで仕上げてくれていました——OAuthを追加して、データベースをつなぎ、ルートを配線しました。そこで私はこう言いました。「inlineのチェックじゃなくて、middlewareを使うようにauth.tsをリファクタして。」
ファイルが15個変わりました。あちこちでTypeScriptのエラーです。アプリはビルドできません。そして気づいたのは、1時間以上コミットしていなかったということ。
git diffを見ると、15個のファイルにまたがる変更が400行。どのバージョンのauth.tsが実際に動いていたのか分かりませんでした。最後に動いていた状態を再構築するのに3時間かけました。
その瞬間にsnaprevertを作りました。
誰も話さない問題
AIコーディングツール——Claude Code、Cursor、Copilot、Aider——はみんな同じ根本的な問題を共有しています:プロンプト間に「元に戻す(undo)」がない。
それぞれのプロンプトは5〜20個のファイルに触れます。確認して、またプロンプトを出して、確認して、またプロンプト。あなたはフロー状態です。プロンプトを出すたびに誰も止まってgit commit -m "checkpoint before risky refactor"なんてしません。何かが壊れた時には、チェックポイントなしで5〜10個目のプロンプトまで進んでしまっている。
Gitには意図が必要です。でも、AIと100mphでペアプログラミングしていると、意図が最初に消えます。
snaprevert:AIコーディングのための「戻す」ボタン
npx snaprevert watch
これでセットアップは終わりです。コマンドひとつ。設定ゼロ。ファイルが変わるたびにプロジェクトをこっそりスナップショットします。AIが何かを壊したら:
snaprevert list # タイムスタンプ付きで全スナップショットを見る
snaprevert diff 5 # スナップショット #5 で何が変わったかを正確に見る
snaprevert back 3 # スナップショット #3 の前に戻す
プロジェクトは1秒未満で復元されます。
仕組み(思っているよりずっと単純)
Gitは使いません。ブランチもありません。ステージングエリアもありません。ファイルシステムレベルです:
- Watch — chokidar がプロジェクトのファイル変更を監視します
- Debounce — 変更が落ち着くまで3秒待ちます(1つのAIプロンプトによる変更をひとまとめにする)
- Diff — 変更されたファイルのユニファイド差分を計算し、新規ファイルは内容全体を保存します
-
Store —
.snaprevert/snapshots/{timestamp}-{id}/に保存します
以上です。スナップショットは完全なコピーではなく差分です。重いAIコーディングを丸1日やっても<10MBです。
ロールバックは非破壊です——戻したスナップショットは保持されます。snaprevert restoreでそれらのどれでも再適用できます。
まさか必要になるとは思わなかった機能
ファイル単位の選択的ロールバック — Claudeがauth.tsを壊したけどuser.tsは大丈夫?壊れているところだけ元に戻せます:
snaprevert back 3 --only auth.ts,routes.ts
インタラクティブなレビュー — コミットする前に、各ファイルの変更を順に確認:
snaprevert review 5
# 各ファイルごとに: [a]ccept [r]eject [s]kip [v]iew diff
AIツールの検出 — スナップショットは自動的に、どのAIツールが変更を行ったかを検出します。ラベルにclaude: modified auth.tsやcursor: added 3 filesのように表示されます。
スナップショットのブランチ(分岐) — 同じチェックポイントから、2つの異なるAIアプローチを試す:
snaprevert fork 3 --name "approach-a"
# ... 1つ目のアプローチを試す ...
snaprevert fork --switch main
# ... 別のアプローチを試す ...
MCPサーバー — AIエージェントが名前付きのチェックポイントをプログラム的に作成できます:
snaprevert mcp # JSON-RPCサーバーを起動します
Claude Codeに対応しており、どんなMCPクライアントでも動きます。AI自体も、危険な操作の前にチェックポイントを作れます。
じゃあGitを使えばいいのでは?
毎回この質問を受けます。正直な答えはこうです:
| Git | snaprevert | |
|---|---|---|
| 保存されるタイミング | あなたが思い出したとき | 自動 |
| 粒度 | あなたがステージした内容 | すべてのAIプロンプト |
| 認知コスト | 何を+どんなメッセージで書くかを決める | ゼロ |
| ロールバック | git reflog、reset、stash… | snaprevert back 3 |
これは競合ではなく補完関係です。Gitは、チームにプッシュする意味のある、厳選された履歴のため。snaprevertは、コミットの間にある継続的なオートセーブです——Googleドキュメントがすべてのキー入力を保存するようなものですが、それでも「バージョンを公開」できます。
スタック
- 3つの依存関係:commander、chalk、chokidar
- 221のテスト:ユニット、統合、UATにまたがる
- 設定ゼロ — どんなプロジェクトでも、どんなAIツールでも動く
- <100ms でスナップショット作成、<1s でロールバック
AIツールではなく、あなたのファイルシステムを監視します。Claude Code、Cursor、Copilot、Aider、Windsurf、あるいは何であれファイルを書き込むものと動作します。
使ってみる
npm install -g snaprevert
snaprevert watch
その後、通常通りAIツールを使ってください。壊れたら:snaprevert list と snaprevert back 3。
リポジトリは github.com/HadiFrt20/snaprevert です。MITライセンス、221のテスト、継続的にメンテナンスされています。
AIコーディングツールで作業を失ったことがあるなら、これが存在する理由が分かるはずです。
これが役に立ったなら、リポジトリへのスターはとても嬉しいです。機能アイデアがあれば、issueは公開されています。




