Claude Media
fileCheckpointingEnabledでチェックポイント機能を無効化する

fileCheckpointingEnabledでチェックポイント機能を無効化する

settings.jsonのfileCheckpointingEnabledをfalseにすると、編集前のファイルスナップショットが止まります。無効化で失う機能と、無効化してもよい場面を判断基準つきでまとめます。

Claude Codeは既定で、ファイルを編集するたびに変更前のスナップショットを~/.claude/file-history/へ保存しています。settings.jsonfileCheckpointingEnabledfalseにすると、この保存処理そのものを止められます。無効化すると/rewindのコード復元が使えなくなる代わりに、大きなリポジトリでのスナップショット負荷や、機微なファイルが平文のまま残るリスクを避けられます。設定は1つのbool値ですが、影響範囲はスナップショットの書き込み・ディスク消費・/rewindメニューの見え方にまで及ぶため、無効化する前に何が変わるかを具体的に押さえておく価値があります。

fileCheckpointingEnabledは何を制御する設定か

Claude Codeのチェックポイント機能は、ユーザーのプロンプトを送るたびに、直前までの編集対象ファイルをスナップショットとして保存する仕組みです。fileCheckpointingEnabledはこのスナップショット処理そのもののオン・オフを切り替える設定キーで、既定値はtrueです。/configの設定一覧ではRewind code (checkpoints)という項目名で表示されます。

falseにすると、Claude Codeはファイル編集前のスナップショットを一切取らなくなります。/rewindコマンド自体は引き続き実行できますが、メニューに並ぶ選択肢からコード復元系(Restore code / Restore code and conversation)が消えます。会話だけを戻すRestore conversationと、要約系の2オプションは影響を受けません。チェックポイントが記録するのは会話の状態ではなくファイルの変更なので、この違いは仕組み上そのままです。

settings.jsonと環境変数、どちらで無効化するか

無効化する方法は2つあります。恒久的に切るならsettings.json、一時的に切るなら環境変数が向いています。

{
  "fileCheckpointingEnabled": false
}

環境変数CLAUDE_CODE_DISABLE_FILE_CHECKPOINTING1に設定しても同じ効果があり、こちらはfileCheckpointingEnabledの値を上書きします。CIやheadlessな自動化ジョブなど、セッションを都度使い捨てて/rewindを使う場面自体がない環境では、実行時にだけ環境変数で切るほうが設定ファイルを触らずに済みます。

export CLAUDE_CODE_DISABLE_FILE_CHECKPOINTING=1

プロジェクト単位で切り替えたいなら、リポジトリ直下の.claude/settings.jsonfileCheckpointingEnabled: falseを書けばそのプロジェクトだけに適用されます。ユーザー設定(~/.claude/settings.json)に書けば全プロジェクトが対象です。設定ファイルの優先順位や置き場所の全体像はClaude Code設定ガイドにまとめています。

無効化を検討する場面

無効化が向いているのは、チェックポイントのコストが実際に効いてくる状況です。

  • 大きなバイナリや巨大リポジトリでの編集が多い: スナップショットはファイル単位で~/.claude/file-history/に蓄積されます。編集対象が大きいほどディスク消費と書き込み時間が増えます
  • .envや認証情報を含むファイルを扱う機会がある: 保存されるスナップショットは暗号化されておらず、OSのファイル権限だけが保護手段です。誤って機密ファイルを編集対象にした場合、内容が平文のままfile-history/に残ります
  • CI・自動化パイプラインでセッションが使い捨て: /rewindで戻る運用自体が発生しないなら、スナップショットを取る意味がありません
  • gitのコミット単位で十分に巻き戻せる運用が既に定着している: チェックポイントはセッション内の即応的な巻き戻し手段であり、バージョン管理の代替ではないという位置付けは無効化してもしなくても変わりません

逆に、実装を試行錯誤しながら書くスタイルで/rewindを頻繁に使っているなら、無効化するとコード復元という主要な使い道を失うだけになります。主な用途は複数の実装方針を試して比較すること、失敗した変更をすぐ元に戻すことです。機能を少しずつ試しながら安全な状態へいつでも戻れるようにする使い方もあります。デバッグセッションが長引いたときに、コンテキストを圧迫せず途中から要約する場面でも役立ちます。こうした使い方に心当たりがあるなら、無効化よりも保持期間だけcleanupPeriodDaysで短くする選択肢のほうが実害が少なくて済みます。

現状のディスク消費量を先に確認してから判断すると、無効化の必要性を見誤りません。~/.claude/file-history/のサイズは通常のコマンドで調べられます。

du -sh ~/.claude/file-history/

数十MB程度であれば無効化する実益は薄く、GB単位まで膨らんでいる場合は巨大ファイルを扱うプロジェクトが原因になっていることが多いです。プロジェクト単位で無効化するか、cleanupPeriodDaysを短くして自然に減らすかは、この数値を実際に見てから選んでも遅くありません。

VS Code拡張機能のチェックポイントとの関係

Claude Codeにはターミナルで動くCLIとは別に、VS Code拡張機能があります。拡張機能もチェックポイントをサポートしており、メッセージにカーソルを合わせると表示されるrewindボタンから、Fork conversation from here(会話だけ分岐)・Rewind code to here(コードだけ復元)・Fork conversation and rewind code(両方)の3つを選べます。CLIの/rewindメニューとは選択肢の構成が異なりますが、どちらも「Claudeのファイル編集ツールによる変更を追跡する」という同じ仕組みの上に成り立っています。

fileCheckpointingEnabledはCLIのsettings.jsonで読む設定キーです。VS Code拡張機能とCLIを両方使い分けている場合、拡張機能側のチェックポイント挙動まで無効化したいなら、拡張機能の設定も別途確認してください。CLIと拡張機能でどの機能が使えるかの全体比較は公式ドキュメントの機能対応表にまとまっています。

無効化しても変わらないこと・失うこと

無効化しても/rewindのRestore conversationやbashコマンドの追跡対象外という扱いは変わらず、変わるのは書き込みの発生有無だけです。

項目有効時無効化後
/rewindのRestore code有効時使える無効化後選択肢から消える
/rewindのRestore conversation・要約有効時使える無効化後変わらず使える
bashコマンドによる変更の追跡有効時もともと対象外無効化後変わらず対象外
~/.claude/file-history/への書き込み有効時発生する無効化後発生しなくなる
既存のスナップショット有効時保持される無効化後自動削除されない

無効化はこれから先の書き込みを止めるだけで、それまでに保存済みのスナップショットは自動では消えません。既存データごと消したい場合はclaude project purgeを実行すると、対象プロジェクトのfile-history/を含む状態一式を削除できます。もともとbashコマンドによる変更(rmmvcp等)はチェックポイントの追跡対象外なので、無効化してもこの点の挙動は変わりません。/rewind自体の使い方や、コード復元が対象外になる他のケース(サブエージェント編集・シンボリックリンク等)はClaude Code rewindコマンドで扱っています。

よくある質問

fileCheckpointingEnabledを無効化すると/rewindコマンドは使えなくなりますか

コマンド自体は使えます。ただしメニューからコード復元(Restore code / Restore code and conversation)の選択肢が消え、会話だけを戻すRestore conversationと要約系のオプションだけが残ります。ファイルの変更履歴を追跡しなくなるため、コードを戻す手段そのものが無くなる形です。

無効化すると既存のスナップショットも消えますか

消えません。fileCheckpointingEnabledはこれから先の書き込みを止めるだけです。既存のスナップショットも含めてプロジェクトの状態を削除したい場合はclaude project purgeを実行します。無効化だけしてスナップショットを放置していると、ディスク消費の懸念があって設定を変えたはずなのに、既存分の容量は減らないままという食い違いが起きがちです。

CLAUDE_CODE_DISABLE_FILE_CHECKPOINTINGとfileCheckpointingEnabledはどちらを優先すべきですか

環境変数CLAUDE_CODE_DISABLE_FILE_CHECKPOINTINGfileCheckpointingEnabledの設定値を上書きします。恒久的な方針をsettings.jsonに書きつつ、CIなど特定の実行環境だけ一時的に切りたい場合に環境変数を併用する使い方が実用的です。

無効化するとClaude Codeのパフォーマンスは上がりますか

スナップショットの書き込み処理自体が発生しなくなるため、編集対象ファイルが大きい・編集回数が多いプロジェクトほど体感差が出やすくなります。小規模なプロジェクトや、テキストファイル中心の編集が多いプロジェクトでは差はほとんど感じられません。

プロジェクト単位と全体、どちらで無効化するのが安全ですか

複数のプロジェクトを横断で扱っていて、一部だけ機密ファイルを含むなら、そのプロジェクトの.claude/settings.jsonにだけfileCheckpointingEnabled: falseを書くほうが安全です。全プロジェクトで/rewindのコード復元を使わない運用が定着しているなら、ユーザー設定側にまとめて書いてしまってもかまいません。判断に迷う場合は、まず影響範囲の狭いプロジェクト単位から試すのが手堅い進め方です。

まとめ

fileCheckpointingEnabledfalseにすると、Claude Codeは編集前のファイルスナップショットを取らなくなり、/rewindのコード復元が使えなくなります。恒久的に切るならsettings.json、一時的にはCIの環境変数CLAUDE_CODE_DISABLE_FILE_CHECKPOINTINGが向いています。判断基準は「巨大リポジトリや機微ファイルを扱う頻度」と「/rewindのコード復元を実際に使っているか」の2点です。既存のスナップショットを消したい場合は無効化とは別にclaude project purgeが必要です。設定ファイルの全体像はClaude Code設定ガイド、環境変数の一覧はClaude Code環境変数リファレンス、Checkpointingを含むワークフロー全体の位置付けはClaude Codeワークフローで確認できます。

この記事を共有:XはてブLinkedIn