← 事故一覧へ

minordata-lossunverifiedcollected

日本語フォルダ名の濁点でClaude Codeの履歴が2つに割れ、152MBが/resumeに出なくなった(未検証の報告)

macOSで、濁点や半濁点を含む日本語フォルダの下でClaude Codeを使っていたところ、`~/.claude/projects/` に同じプロジェクトを指すディレクトリが2つずつでき、セッションの履歴が分かれていた。`/resume` に出るのは片方だけだった。

発生日
深刻度
3/10
影響範囲
data
タグ
#claude-code#unicode#nfc-nfd#macos#session-history#resume

原因

筆者によれば、~/.claude/projects/ のディレクトリ名は作業フォルダの絶対パスの英数字以外を1文字につき1本のハイフンに置き換えて作られる。「ダ」はNFCでは1文字、NFDでは2文字になるため、同じパスでもハイフンの本数が変わり、別のディレクトリになった。どのツールがNFDのパスを書いているのかは分かっていない。

結果

38のディレクトリのうち10組が対になっており、小さい側を合わせた152MBぶんの履歴が /resume から見えなくなっていた。ファイルは消えていなかった。~/.claude.json には同じパスがNFCとNFDの両方で9件登録されていた。

対策

筆者は、中身が完全な側のファイルを /resume に出る側へコピーするスクリプトを30分ごとに走らせ、そのうえで10組を1つずつNFC側へまとめて対を0組にした。割れる原因そのものは止めておらず、新しく割れ続けている可能性があるとしている。

何が起きたか

筆者は2026年9月7日、Claude Codeの環境を監査している途中で ~/.claude/projects/ を一覧にし、ほとんど同じ名前のディレクトリが2つ 並んでいることに気づいた。違うのはハイフンの本数だけで、どちらも デスクトップの「作業フォルダ」の下にある同じプロジェクトを指していた。 履歴は28セッションと5セッションに分かれ、/resume に出てくるのは片方 だけだった。

現場の混乱

対はこの1組だけではなかった。38のディレクトリのうち10組が同じように 対になっていて、小さい側を合わせると152MBあった。そのぶんの履歴が /resume から見えず、消えたように思えたが、ファイルは残っていた。 ~/.claude.json の projects には、画面の上では同じパスがNFCとNFDの 両方の形で9件登録されていた。ディレクトリの10組と1件合わない理由は 確かめていない。NFD側のファイル16件のうち13件(144MB)は中身がNFC側に そっくり含まれ、NFD側にしか無かったのは3件だった。

まとめる作業でもつまずいた。退避のためにNFD側のディレクトリを tar で 固めようとすると、名前がハイフンで始まるため tar がオプションとして 読んで失敗した。-C で親に移るだけでは防げず、-T で対象をリストから 読ませ、各行の先頭に ./ を付けて解決した。

原因

~/.claude/projects/ のディレクトリ名は、作業フォルダの絶対パスの 英数字以外を、1文字につき1本のハイフンに置き換えて作られる。濁点や 半濁点を含む文字は、Unicodeの正規化の形で文字数が変わる。「ダ」は NFCでは1文字、NFDでは「タ」と結合用の濁点の2文字になる。そのため 「作業フォルダ」はNFCで6文字、NFDで7文字になり、ハイフンが1本違う別の ディレクトリができる。割れていたのは「作業フォルダ」と「キャリアプラン」 の下だけで、濁点を含まない「個人開発」の下は割れていなかった。

/resume が片方しか出さないのは、今いるパスの正規化の形に合う ディレクトリだけを見ているからだと筆者は考えているが、実装は確かめて いない。どのツールがNFDのパスを書いているのか、CLIとデスクトップアプリの どちらなのかも分かっていない。

対策

筆者はまず、中身が完全な側のファイルを /resume に出る側へコピーする スクリプトを書き、LaunchAgentで30分ごとに走らせた。上書きするのは、 上書き先の中身が上書き元の先頭と完全に一致するときだけで、上書き前の ファイルは .bak で残す。そのうえで10組を1つずつ、NFC側に含まれることを 確かめてからNFD側を消す手順でまとめ、対を0組にした。~/.claude.json に 残ったNFD側の9件は、動いているセッションの書き込みとぶつかるため 消していない。割れる原因は止めておらず、NFD側には監査の数日前に 更新されたものもあったため、今も割れ続けている可能性があるとしている。

フォルダ名に濁点や半濁点を含む環境では、ハイフンの連続を1本に潰した 名前の重複を一度数えておくと、/resume に出ない履歴に早く気づける。

出典