Claude Media
tmpclaude-*-cwdファイルが消えない原因と削除方法

tmpclaude-*-cwdファイルが消えない原因と削除方法

Windowsのプロジェクトディレクトリに溜まるtmpclaude-*-cwdファイルの原因と修正済みバージョン、残った古いファイルの消し方をまとめます。

tmpclaude-*-cwdという名前の空に近いファイルがプロジェクトのルートに大量発生する不具合は、Windows版のClaude Code 2.1.5で2026年1月に報告されました。原因はBashコマンドの実行後に作業ディレクトリを記録する内部ファイルが正しく削除されない不具合で、v2.1.47(2026年2月18日)で修正済みです。ただし修正は新規発生を止めるだけで、それ以前に溜まった古いファイルは手動で消す必要があります。

tmpclaude-*-cwdファイルの正体

Claude CodeはBashツールでコマンドを実行するたびに、直後の作業ディレクトリを追跡するための短い一時ファイルを作成します。中身は/d/repos/organization/pot/pineappleのようなUnixスタイルのパス文字列だけの、ごく小さいファイルです。cdを検知して外部スクリプトを起動するCwdChangedフックとは別物で、こちらはBashツール内部だけで完結する非公開の追跡処理です。

Windows環境ではこのファイルが%TEMP%ではなく、プロジェクトの作業ディレクトリに直接tmpclaude-<ランダムな文字列>-cwdという名前で作成されました。2.5時間のセッションで119個生成された報告があり、git statusが大量の未追跡ファイルで埋まるという声が相次ぎました。

自分の環境で起きているのはどちらか

ファイル名が似ていても、Linuxで/tmpに溜まるものとWindowsのプロジェクト直下に出るものは、別々のissueで扱われてきました。症状の見え方で切り分けます。

くらべる

症状でみる2つの不具合

Windows

プロジェクト直下に出る

tmpclaude-<文字列>-cwdがプロジェクトの作業ディレクトリに生成され、git statusが未追跡ファイルで埋まります。issue #17600で報告され、v2.1.47で修正されました。

Linux

/tmpに溜まる

/tmp/claude-<4桁の16進数>-cwdが生成され、git statusには出ません。issue #8856は2025年10月から開いたままです。

手元のClaude Codeが修正済みかどうかは、バージョンで判断できます。

claude --version

v2.1.289で実行すると、出力は2.1.289 (Claude Code)の1行です。v2.1.47以上ならWindows側のファイルは新規に作られません。

Windowsだけプロジェクトディレクトリに残った理由

この不具合は、#8856の再発とみられていました。#8856は2025年10月に報告された既存の問題で、報告の内容は、Bashツールが/tmp/claude-{4桁hex}-cwdという追跡ファイルを作るものの、読み取り後に削除する処理が抜けているというものです。Linuxでの報告では1ファイル22バイトで、1日の利用で174個溜まっていました。Linuxでは同じ問題が起きても、ファイルは/tmpという本来の一時ディレクトリに隠れたまま溜まるだけで、プロジェクトのファイルツリーは汚れません。

Windows版だけは、このクリーンアップ漏れに加えて、書き込み先そのものが%TEMP%ではなくカレントの作業ディレクトリになってしまう追加の不具合を抱えていました。掃除されないファイルが、よりによって目に入りやすい場所に生成され続けました。#17600には72件のコメントが付いています。

#17600のコメント欄には、症状の具体像が並んでいます。Git Bashでは1ファイル59バイトで、セッションが終わっても残り続けました。ある報告者はプロジェクトをまたいで47個を見つけています。VS Codeのエージェント引き継ぎや、GitHub CopilotからClaude Codeへ委譲したセッションでも出たため、ターミナル単体の利用に限った問題ではありませんでした。

v2.1.47で修正 — 5週間かかった経緯

報告から修正リリースまでの流れは次のとおりです。

あゆみ

#17600の経過

  1. 2026年1月12日v2.1.5で報告

    同じ日に#17568と#17589の2件が先に立っており、独立した報告が3件並びました。

  2. 2026年2月17日スタッフが修正を予告

    「次のリリースで修正される」とコメントがあり、リリースまでissueは開いたままにすると続きました。

  3. 2026年2月18日v2.1.47でクローズ

    issueは同日にクローズされました。

  4. 2026年8月20日v2.1.238で中断時の取りこぼしを修正

    後述する別件の修正です。

報告後もv2.1.5の次のパッチで直ったわけではありません。2026年1月13日にはv2.1.6、1月16日にはv2.1.7でも再現するというコメントが続きました。パッチを一つ上げるだけでは止まらず、止まるのはv2.1.47からです。

v2.1.47の変更履歴には次の1行があります。

Windows: Fixed CWD tracking temp files never being cleaned up,
causing them to accumulate indefinitely (anthropics/claude-code#17600)

v2.1.47以降のバージョンにアップグレードすれば新規のファイルは作られなくなりますが、修正はそれ以前に溜まったtmpclaude-*-cwdを自動削除するものではありません。古いファイルは手動で消す必要があります。Windows版では他にも、設定ファイルが同時書き込みで壊れる不具合がv2.1.61で修正されています。

CLAUDE_CODE_TMPDIRを設定しても消えない

同じv2.1.5ではCLAUDE_CODE_TMPDIR環境変数も追加されており、Claude Codeが内部で使う一時ファイルの保存先を変更できます。この不具合の報告者の一人は、この変数を設定してもtmpclaude-*-cwdファイルの生成場所は変わらなかったと2026年1月12日にコメントしています。CLAUDE_CODE_TMPDIRは一時ファイル全般の保存先を切り替える環境変数ですが、この特定の不具合に対しては無効な回避策でした。

環境変数の側にも、効かなくなる条件があります。環境変数リファレンスによると、CLAUDE_CODE_TMPDIRはシェル、ユーザー設定、管理設定で指定する変数で、プロジェクト設定とローカル設定のenvに書いても無視されます。チームで共有する.claude/settings.jsonに書いて済ませたつもりでも、反映されません。なお現行のリファレンスでは、指定先の下にUnixでは/claude-{uid}/、Windowsでは/claude/が付加されると説明されています。

作業ディレクトリ絡みの環境変数としては、起動ロゴのパス表示を隠すCLAUDE_CODE_HIDE_CWDもありますが、これも今回のファイル生成には関係しません。設定変更だけで様子を見てしまうと、v2.1.47へのアップグレードが必要な状態のまま放置することになります。/tmpがtmpfsのときのプラグインインストール失敗は別の話で、EXDEV/tmpfsでのプラグインインストール失敗で扱っています。

既に溜まったファイルを消す

修正済みのバージョンにアップグレードした後も、過去のセッションで生成されたファイルはプロジェクトディレクトリに残っています。次の順で片付けます。

手順

古いファイルの片付け

  1. 1

    Bashコマンドが動いていない時に実行する

    実行中に消すと、そのコマンドが参照する最新の追跡ファイルまで巻き込むおそれがあります。Claudeの応答が止まっている間に行います。

  2. 2

    まとめて削除する

    PowerShellなら次のコマンドで、Git Bashならfindで削除できます。コマンドは直後に示します。

  3. 3

    git statusを確認する

    未追跡ファイルが消えていれば完了です。残るのはnulのような別件のファイルで、後述します。

Get-ChildItem -Recurse -Filter "tmpclaude-*-cwd" | Remove-Item
find . -name 'tmpclaude-*-cwd' -delete

大量に溜まっていて今すぐ整理する時間がない場合は、.gitignoreにtmpclaude-*を1行追加するとgit statusのノイズだけは即座に消えます。ただしこれはファイルそのものを削除するわけではないので、ディスク上には残り続けます。

Stop hookで再発を防ぐ運用

v2.1.47以降であれば通常は不要ですが、社内配布のバイナリが古いままだったり、複数マシンでバージョンがまちまちになりやすい環境では、Stopフックで自動削除する運用が使えます。

{
  "hooks": {
    "Stop": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "bash -c \"find \\\"$CLAUDE_PROJECT_DIR\\\" -name 'tmpclaude-*-cwd' -not -path '*/node_modules/*' -delete 2>/dev/null; exit 0\""
          }
        ]
      }
    ]
  }
}

CLAUDE_PROJECT_DIRはセッションを開始したプロジェクトのルートを指し、フックのプロセスにも環境変数として渡されます。cdでサブディレクトリに移っていても、ルート以下をまとめて掃除できます。node_modulesを除いているのは、巨大なディレクトリの走査で応答のたびに待たされるのを避けるためです。

Stopフックのタイミングは「Claudeが応答を終えたとき」で、ターンごとに発火します。応答が止まった時点では、フォアグラウンドのBashコマンドは終わっています。そのためファイルが積み上がるのを防げます。exit 0を明示しているのは、削除コマンドの結果に関わらずフックを失敗扱いにしないためです。セッション終了そのものを起点にした片付けをしたい場合は、代わりにSessionEndフックを使います。

根本のクリーンアップ漏れはまだ残っている

Windows版でプロジェクトディレクトリを汚す症状はv2.1.47で解消しましたが、根本原因である#8856はクローズされていません。2025年10月の報告以降も再現コメントが続き、2026年3月にはStopフックで/tmpを掃除する回避策が複数投稿されました。直近では2026年8月18日にも新しいコメントが付いています。Linuxでは/tmpという本来の置き場所に作られるため、実害は見えにくいものです。ただし/tmpをtmpfs(メモリ上のファイルシステム)で運用している環境では、消えないファイルがそのままメモリ消費として積み上がるという指摘が出ています。

これとは別に、v2.1.238(2026年8月20日)では「Bashコマンドが強制終了・タイムアウト・中断されたときに/tmp/claude-*-cwdが残る」という、より限定的なケースへの修正が入りました。ただしこれは中断時の取りこぼしに対する修正であり、#8856が指摘する「通常終了時の掃除漏れ」そのものを閉じるものではありません。Windows表層の症状は直っても、追跡ファイルの後始末は、#8856がオープンのまま残っている以上、まだ終わっていません。

「nul」ファイルは別の不具合

同じissueのコメント欄では、tmpclaude-*-cwdと並んで空のnulという名前のファイルが生成され、しかも削除できないという報告も複数寄せられていました。v2.1.47の変更履歴には、このnulファイルへの言及がありません。tmpclaude-*-cwdを消したのにnulという名前のファイルだけ削除できずに残っている場合、それはtmpclaude-*-cwdと同じ修正では解決しない別件です。Git Bashで2>nulのようなCMD形式のリダイレクトが原因でnulファイルができる件は、v2.1.69(2026年3月5日)で修正されています。

Linuxの/tmpに溜まった分を消す

Linuxで/tmp/claude-<4桁の16進数>-cwdが溜まっている場合は、#8856のコメントで共有されている次のコマンドが使えます。-maxdepth 1で/tmp直下だけに絞り、-mmin +60で直近60分以内に更新されたファイルを残します。

find /tmp -maxdepth 1 -name 'claude-*-cwd' -type f -mmin +60 -delete

同じコマンドをStopフックに入れて、応答のたびに掃除する形でも投稿されています。前節のWindows向けフックと違い、Linuxの追跡ファイルはプロジェクト直下でなく/tmpにあるため、対象パスが$CLAUDE_PROJECT_DIRではなく/tmpになる点だけが変わります。

まとめ

自分のバージョンがv2.1.47以上なら、Windowsのプロジェクト直下に新しいファイルは増えません。溜まった分は一度だけ手動で消し、バージョンがそろわない環境でだけStopフックが要ります。Linuxでは#8856が開いたままなので、/tmpを定期的に掃除するフックが現実的な備えになります。

参照した一次ソース

この記事の記述は、次の一次ソースと照合しています。更新時に参照先が変わった場合は一覧も更新します。

  1. github.com/anthropics/claude-code/issues/17600
  2. github.com/anthropics/claude-code/issues/8856
  3. code.claude.com/docs/en/changelog
  4. code.claude.com/docs/en/env-vars
  5. code.claude.com/docs/en/hooks
この記事を共有:XはてブLinkedIn