CLAUDE LABEN
FORK — Claude Code 2.1.212で/forkの挙動が変わりました。会話を新しいバックグラウンドセッションへ複製し、作業を続けたまま並走できます。従来のセッション内サブエージェントは/subtaskに移りましたLIMITS — WebSearchの呼び出しがセッション単位で既定200回に制限されました。サブエージェントの起動も既定200回が上限で、暴走した検索・委譲のループを止められますMCPBG — 2分を超えるMCPツール呼び出しは自動的にバックグラウンドへ移り、セッションが固まらなくなりました。しきい値はCLAUDE_CODE_MCP_AUTO_BACKGROUND_MSで調整できますPLANFIX — プランモードがtouchやrmといったファイルを変更するBashコマンドを、許可プロンプトもcanUseToolコールバックも通さずに実行してしまう不具合が修正されましたSONNET5 — Claude Sonnet 5は導入価格として入力100万トークンあたり2ドル、出力10ドルで提供中です。8月31日を過ぎると3ドルと15ドルに戻りますIPO — Anthropicが早ければ10月の株式公開を視野に、引受銀行が投資家との面談を組み始めたと報じられていますFORK — Claude Code 2.1.212で/forkの挙動が変わりました。会話を新しいバックグラウンドセッションへ複製し、作業を続けたまま並走できます。従来のセッション内サブエージェントは/subtaskに移りましたLIMITS — WebSearchの呼び出しがセッション単位で既定200回に制限されました。サブエージェントの起動も既定200回が上限で、暴走した検索・委譲のループを止められますMCPBG — 2分を超えるMCPツール呼び出しは自動的にバックグラウンドへ移り、セッションが固まらなくなりました。しきい値はCLAUDE_CODE_MCP_AUTO_BACKGROUND_MSで調整できますPLANFIX — プランモードがtouchやrmといったファイルを変更するBashコマンドを、許可プロンプトもcanUseToolコールバックも通さずに実行してしまう不具合が修正されましたSONNET5 — Claude Sonnet 5は導入価格として入力100万トークンあたり2ドル、出力10ドルで提供中です。8月31日を過ぎると3ドルと15ドルに戻りますIPO — Anthropicが早ければ10月の株式公開を視野に、引受銀行が投資家との面談を組み始めたと報じられています
記事一覧/Claude Code
Claude Code/2026-05-25中級

Claude Code の「File has been modified since read」エラーが止まらないときに見直した3つの設定

Claude Code を長時間動かしていると突然頻発し始める File has been modified since read エラー。原因はほぼ3つに絞れます。私の環境で実際に効いた対処をまとめました。

claude-code129edit-tool3troubleshooting61prettierauto-save

Claude Code で一日中コードを書いていると、ある時間帯から突然 File has been modified since read it. You need to re-read the file before you can edit it. というエラーが連発し始めることがあります。さっきまで普通に編集できていたのに、Edit ツールが立て続けに失敗して、Claude が同じファイルを何度も Read し直して、トークンとレートリミットだけが消費されていく状況です。

私の場合、Dropbox 経由で共有しているプロジェクトと、Prettier を formatOnSave で有効にしているフロントエンドリポジトリの2つで、特にこのエラーが多く出ていました。原因が分からないままだと「Claude Code 側のバグかも」と疑いたくなりますが、整理してみると引き金になっているのは大抵3つの設定だけです。順番に潰していくと、ほとんどの環境でこのエラーは出なくなります。

エラーが言っていること自体はシンプル

Claude Code は Edit / Write ツールを呼ぶ前に「直前に Read したときのファイルの mtime(最終更新時刻)」を覚えています。Edit のタイミングで実ファイルの mtime が更新されていると、「ディスク上のファイルがあなたが見ていたものと違う」と判定して、書き換えを止めます。

つまりこのエラーは Claude Code が壊れているのではなく、Read と Edit の間に第三者がファイルを書き換えた事実を、安全装置として正しく検出している状態です。直すべき対象は Claude Code ではなく、その「第三者」を黙らせる側の設定になります。

第三者の正体は、私の観測範囲ではほぼ次の3つに収束します。

  • 保存時に走るフォーマッタ(Prettier / Black / gofmt / Biome 等)
  • クラウド同期のファイル書き戻し(Dropbox / iCloud Drive / Google Drive)
  • 別ターミナルで動いている他のプロセス(テストランナー、watch コマンド、別の Claude Code セッション)

ケース1: フォーマッタがファイルを上書きしている

圧倒的に多い原因がこれです。VS Code の editor.formatOnSave が true になっていると、Claude Code が Write したファイルを保存した瞬間に Prettier や Biome が再フォーマットして書き戻し、mtime が更新されます。次の Edit がエラーで止まる、というループに入ります。

私は Claude Code 専用のワークスペースだけ formatOnSave を切る運用に変えました。.vscode/settings.json をプロジェクト直下に置いておくと、エディタを開くたびにそのプロジェクトだけ無効化できます。

{
  "editor.formatOnSave": false,
  "editor.formatOnPaste": false,
  "editor.formatOnType": false,
  "files.autoSave": "off"
}

files.autoSave も "afterDelay" や "onFocusChange" になっていると、ユーザーが何もしなくても定期的にファイルが書き戻されてしまうため、Claude Code を回している間は "off" にしておくのが安全です。

フォーマッタ自体を捨てたくない場合は、Claude Code 側の Hooks で PostToolUse 時にだけフォーマッタを走らせる構成にすると競合がなくなります。書き込みが終わった直後の決まったタイミングだけ整形できるので、いつ書き換わるかが予測可能になります。

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Write|Edit",
        "hooks": [
          {
            "type": "command",
            "command": "npx prettier --write \"$CLAUDE_FILE_PATHS\" 2>/dev/null || true"
          }
        ]
      }
    ]
  }
}

この設定にしてから、私の環境ではフロントエンドプロジェクトでの File modified エラーが体感で9割以上減りました。

ケース2: クラウド同期がバックグラウンドで書き戻している

私はメイン環境を Dropbox 配下の作業フォルダで運用しているのですが、Dropbox や iCloud Drive、Google Drive のようなクラウド同期サービスは、別マシンの変更を取り込むタイミングでファイルを書き戻します。このとき mtime が更新されるので、Claude Code が同じファイルを編集中だと当然エラーになります。

特に厄介なのが、自分が複数 Mac で同じプロジェクトを開きっぱなしにしているケースです。サブ機の Finder がフォルダを開いているだけで .DS_Store が頻繁に更新され、それに連動してフォルダ自体の mtime も動きます。

対処として、私は次の3段階で運用を変えました。

第一に、Claude Code を回している間はクラウド同期を一時停止します。Dropbox なら通知領域から「同期を一時停止」、iCloud ならネットワーク接続を切るのが手っ取り早い手段です。

第二に、ヘビーに自動化する作業は同期フォルダの外で実行します。私は git リポジトリを ~/repos/ 配下に clone し直して、そこで Claude Code を回す運用にしました。Dropbox 配下に置くのは「成果物の最終バックアップ」だけにしています。

第三に、.gitignore と並べて .DS_Store*.swp などの副次ファイルが生成されないように .metadata_never_index を置いたり、Spotlight のインデックス対象から外したりして、Read 自体に巻き込まれる頻度を減らしました。

ケース3: 他のプロセスが裏で書き込んでいる

Next.js の next dev、Vite の vite、Jest の --watch、TypeScript の tsc --watch、ESLint の --fix --watch などの watch 系プロセスは、依存ファイルを書き換えることがあります。next dev.next/types/ 配下に型ファイルを定期生成しますし、tsc --watch --emit 構成だとソースを変えるたびに dist/ 配下が更新されます。

Claude Code がそれらの「生成物」を Read していると、watch プロセスの再生成が走るたびに File modified エラーになります。

私が取った対処は次の3つです。

ひとつ目は、Claude Code セッション中は watch 系を全部止めることです。dev サーバーを起動した状態でコード生成を頼むのではなく、生成 → 確認 → dev サーバー再起動の順に分けます。地味ですが、これだけでエラーがほぼ消える環境もあります。

ふたつ目は、生成物ディレクトリを Claude Code が触らないようにすることです。プロジェクト直下に CLAUDE.md を置き、.next/dist/build/coverage/ などを「触らないでほしいフォルダ」として明示しておきます。Claude Code はこのファイルを読んで挙動を寄せてくれます。

# Project Notes for Claude Code
 
## Do not read or edit these directories
- `.next/` — Next.js が生成。watch で常時書き換わる
- `dist/`, `build/` — ビルド成果物。直接編集禁止
- `coverage/` — Jest のレポート出力
- `node_modules/` — 依存パッケージ。手で触らない
 
## When you need to run the dev server
1. ユーザーに dev サーバー起動を依頼する(自分では起動しない)
2. 起動中は Edit を避ける。やむを得ない場合はユーザーに dev を一旦止めてもらう

みっつ目は、同時に複数の Claude Code セッションを同じリポジトリで動かさないことです。git worktree を切って別ディレクトリにすれば共存できるので、並行作業をしたい場合は worktree 運用に寄せるのが結局一番安全でした。

エラーが出たときの即時対処

設定を整えても、たまにはエラーが出ます。その場で確実に進めたいときは、次の順で対処すると最短で復帰できます。

最初にやるのは、Claude にもう一度同じファイルを Read してもらうことです。「ファイルが更新されているので、もう一度 Read してから編集してください」と一言伝えれば、Claude Code は最新の mtime でファイルを取得し直してから Edit を試みます。

次に、同じファイルで連続して同じエラーが出る場合は、何が書き戻しているのかをユーザー側で特定します。私は macOS なら fs_usage -w -f filesys /path/to/file を別ターミナルで走らせて、誰が write しているかを直接観察します。Linux なら inotifywait -m /path/to/file が同じ役割を果たします。原因プロセスが分かれば、あとはそのプロセスを止めるだけです。

最後の手段として、エラーが出ているファイルだけを別ディレクトリにコピーして、そこで Claude Code に作業させて、終わったら戻すという回避策もあります。整形ルールや同期からは完全に切り離せるので、長時間の集中作業を止めずに済みます。

長く付き合うほど設計の問題に変わる

このエラーは最初は「Claude Code の小さな癖」に見えますが、長く使うほど、自分の開発環境がツール同士の競合を許容する作りになっているかどうかを問うてくる存在に変わっていきます。

私は2014年から個人開発でiPhone / Androidアプリを作り続けてきて、累計5,000万ダウンロードを超える壁紙アプリの運用を支えてきました。ここ数年で AI コーディングエージェントが本格的に開発フローに入ってきてからは、自動保存・自動整形・クラウド同期といった「人間ひとりの開発なら便利だった機能」が、AI エージェントが回るとそのまま競合源になることを実感しています。

formatOnSave を切ること、watch を切ること、Dropbox 配下で AI を走らせないこと。一つひとつは小さな判断ですが、積み上げると「AI エージェントが安心して動ける環境」になります。File has been modified since read のエラーは、その境界線を可視化してくれる便利なシグナルだと、最近は前向きに受け止めています。

同じ課題に向き合っている方の参考になれば嬉しいです。

シェア

お読みいただきありがとうございます

Claude Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • コピー&ペーストで使える実装コード付き
  • 毎日新しい上級ガイドを追加
  • ¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

もしこの記事がお役に立ちましたら、チップ(¥150)で応援いただけると大変励みになります。広告なしでの運営を続けるため、皆さまのご支援が大きな力になっています。

関連記事

Claude Code2026-05-24
Claude Code で連続する Edit が連鎖的に失敗するときの直し方 — old_string が消える・重複する問題
Claude Code が同じファイルへ Edit を連続で投げると、2件目以降が突然『not found』や『not unique』で落ちることがあります。原因は順序依存とコンテキスト二重化で、Read 再実行と分割パッチで救えます。
Claude Code2026-05-02
Claude Code の Edit ツールで「old_string is not unique」エラーを止める実践的な書き換え戦略
Claude Code の Edit ツールで「old_string is not unique」が頻発するのは、編集ターゲットの一意性をプロンプト側で保証していないことが根本原因です。再発を防ぐ書き換え戦略を解説します。
Claude Code2026-06-18
壊れた settings.json で Claude Code が起動しなくなったとき — セーフモードの挙動と設定の分け方
settings.json の構文ミスで Claude Code が起動しなくなったときに、どの階層が壊れているかを切り分けて数分で復旧する手順と、自動運用で壊れにくい設定の分割・検証パターンをまとめました。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →