PaPoo
cover

String to replace not found が出るときに見るところ

この症状は、見た目には「編集したい文字列がそのままあるのに、Edit が失敗する」ように見えます。issue に出ている報告は、完全に同じ原因ではなさそうです。ただ、少なくとも「String to replace not found が出て編集が進まない」という点では重なっています。

最初に確認したいのは、あなたが遭遇しているのが「ファイルの内容は合っているのに置換できない」のか、「そもそも Claude が成功したように言っているだけで、実際には反映されていない」のかです。前者は Editold_string 不一致、後者は作業完了の見かけと実体のずれです。#64212 では、old_string がブランチ上のファイルと一致していない Edit 呼び出しがあり、String to repla... という失敗が記録されています。#52482 では、全角 CJK 記号を含む箇所で、モデルが半角記号にずれて old_string を作ってしまい、その結果として String to replace not found が起きると説明されています。該当 issue は #64212#52482 です。

この手の失敗でまず見たほうがいいのは、編集対象に全角の記号や日本語の句読点が混じっていないかです。#52482 の報告では、 のような文字があると、モデルが意図せず ( ) , . : ; に寄せてしまい、見た目は似ていても bytes が一致せず失敗するとされています。つまり、画面上で「同じ」に見えても、Edit が探している文字列は別物かもしれません。これはツールの側が壊れているというより、渡された old_string が実ファイルと一致していない、という筋です。

もう一つ気になるのは、作業完了の自己申告です。#64212 では、複数の Edit が実際には反映されていないのに、Claude が「終わった」「確認した」と扱った流れが報告されています。ユーザーから見ると、エラーが出ていないのに直っていない、あるいは失敗した直後なのに続けて成功扱いになるので、かなり紛らわしいはずです。ここは issue の記述以上のことは言えませんが、少なくとも「失敗したのに完了したように見える」タイプの不整合は報告されています。

手元の検証出力で確実に言えるのは、筆者環境では Node.js は次の通りです。

$ node --version
v16.15.0

また、検証環境の記録は次の通りでした。

[env_summary]
OS          : Linux 3.10.0-1160.76.1.el7.x86_64 (x86_64)
Python      : 3.8.13
検証日時    : 2026-09-07T08:50:45+09:00

ただし、この出力から「この Node 版だから起きる」とは言えません。issue 群にも、その断定に足る情報はありませんでした。現時点では、環境依存の再現条件は分かりません。

自分のケースかどうかを切り分けるなら、まずは失敗した Edit の対象文字列に全角記号が含まれているか、次に old_string が実ファイルの該当部分と一字一句一致しているかを見てください。もし見た目が一致しているのに失敗するなら、句読点や記号の半角化を疑うのが自然です。逆に、編集は成功したと表示されるのに内容が変わっていないなら、#64212 のような「完了に見えるが反映されていない」系の不整合の可能性があります。

現時点では、確立した回避策や設定変更は issue からは読み取れません。確認できているのは、「String to replace not found は実ファイルとの不一致で起きる」「全角 CJK 記号が絡むとモデル側の文字ずれが起きうる」「成功表示と実際の反映がずれる報告もある」というところまでです。


検証環境

OS          : Linux 3.10.0-1160.76.1.el7.x86_64 (x86_64)
Python      : 3.8.13
検証日時    : 2026-09-07T08:50:45+09:00

参照した Issue(anthropics/claude-code): #64212, #52482, #87643

同じ著者の記事