# Claude Agent SDKの便利だけど知られていない機能
🌍 AIがファイルを変更しても、いつでも元に戻せる安心感。
ファイルチェックポイントを使えば、Write/Edit/NotebookEditによる変更を自動追跡し、任意の時点にロールバックできます。
📌 タイトル:ファイルチェックポイントとロールバック
🔗 URL:
🧩 概要
ファイルチェックポイントは、エージェントセッション中のファイル変更を追跡する機能です。enable_file_checkpointing=Trueを設定すると、Write・Edit・NotebookEditツールによるファイル変更前にバックアップが自動作成されます。各UserMessageのUUIDがチェックポイントとして機能し、rewind_files()でそのUUID時点の状態に復元できます。新規作成されたファイルは削除され、変更されたファイルは元の内容に戻ります。
🛠 使い方
```python
import asyncio
from claude_agent_sdk import (
ClaudeSDKClient,
ClaudeAgentOptions,
UserMessage,
ResultMessage,
)
async def main():
# Step 1: チェックポイントを有効化
options = ClaudeAgentOptions(
enable_file_checkpointing=True,
permission_mode="acceptEdits",
extra_args={"replay-user-messages": None}, # UUID取得に必須
)
checkpoint_id = None
session_id = None
async with ClaudeSDKClient(options) as client:
await client.query("認証モジュールをリファクタリングして")
# Step 2: UserMessageからチェックポイントUUIDを取得
async for message in client.receive_response():
if isinstance(message, UserMessage) and message.uuid and not checkpoint_id:
checkpoint_id = message.uuid
if isinstance(message, ResultMessage) and not session_id:
session_id = message.session_id
# Step 3: セッションを再開してロールバック
if checkpoint_id and session_id:
async with ClaudeSDKClient(
ClaudeAgentOptions(
enable_file_checkpointing=True, resume=session_id
)
) as client:
await client.query("") # 空プロンプトで接続を開く
async for message in client.receive_response():
await client.rewind_files(checkpoint_id)
break
print(f"チェックポイントに巻き戻しました: {checkpoint_id}")
```
🏗 本番システムへの組み込み方
・extra_args={"replay-user-messages": None}は必須です。これがないとUUIDがストリームに含まれません
・ロールバック時はセッションをresumeで再開し、空プロンプトで接続後にrewind_files()を呼びます
・チェックポイントUUIDとセッションIDを永続化しておけば、プロセス再起動後もロールバック可能です
・permission_mode="acceptEdits"と組み合わせることで、ファイル変更を自動承認しつつ安全にロールバックできます
💡 ユースケース
🔧 安全なリファクタリング:変更を試して、問題があれば即座にロールバック
🧪 実験的コード生成:AIの出力を検証し、品質が低ければ元に戻す
📝 ドキュメント自動生成:生成結果をレビューして、不要な変更だけ取り消し
⚠️ 注意点
・Bashコマンド(echo > file.txt、sed -i 等)による変更は追跡されません
・チェックポイントはファイルの内容のみを追跡します。ディレクトリの作成・移動・削除は元に戻りません
・会話履歴はロールバックされません。ファイルのみが復元されます
・チェックポイントは作成したセッションに紐づいています
✨ 「取り消し」できるAI開発で、安心してコードを任せましょう!
#
ClaudeAgentSDK# #
AIAgent#