こんにちは、七宮さん(@shichinomiya_s)です。
今回の記事では、Claude Code on Windows にて稀に作られる「nul」ファイルの削除方法について書いてみたいと思います。
Claude Code は非常に便利なツールですが、Windows環境で使用していると、たまに厄介な問題に遭遇することがあります。その一つが、今回紹介する「nul」ファイル問題です。
謎に表れる「nul」ファイル
みなさん、Claude Code on Windows にて、こんなファイルが出現したことはないでしょうか?

この「nul」というファイル、自分で作った覚えはないのに、いつの間にかディレクトリに存在しています。
これは Claude Code がファイル操作を行う際に、誤って作成してしまうことがあるファイルです。実は「NUL」という名前は、Windows において予約デバイス名と呼ばれる特殊な名前の一つです。
Windowsには以下のような予約デバイス名が存在します:
- CON(コンソール)
- PRN(プリンター)
- AUX(補助デバイス)
- NUL(空デバイス、/dev/null のようなもの)
- COM1〜COM9(シリアルポート)
- LPT1〜LPT9(パラレルポート)
これらの名前は、MS-DOS時代からの互換性のために予約されており、通常のファイル名として使用することは想定されていません。そのため、このようなファイルが作成されてしまうと、少々厄介なことになります。
普通に消せない
普通に削除しようとしても、「無効な MS-DOS ファンクションです。」と表示されて削除することができません。

エクスプローラーから右クリックで削除しようとしても、Deleteキーを押しても、このエラーが表示されて削除できません。コマンドプロンプトで del nul を実行しても同様です。
これは、Windowsが「nul」という名前をファイルではなくデバイスとして解釈しようとするために起こる現象です。
消す方法
では、どうすればこの厄介なファイルを削除できるのでしょうか?
答えは、UNCパス形式を使用することです。以下のコマンドをコマンドプロンプトまたはPowerShellで実行してください:
del "\\?\C:\path\to\nul"
例えば、C:\Users\Username\Projects ディレクトリに「nul」ファイルがある場合は、以下のように実行します:
del "\\?\C:\Users\Username\Projects\nul"
\\?\ というプレフィックスは、Windowsに対して「このパスを特別に解釈せず、そのまま扱ってほしい」と指示するものです。これにより、予約デバイス名のチェックがバイパスされ、ファイルを正常に削除することができます。
また、PowerShellを使用している場合は、以下のコマンドでも削除可能です:
Remove-Item -LiteralPath "\\?\C:\path\to\nul"
さいごに
今回は、Claude Code on Windows で稀に発生する「nul」ファイルの削除方法について紹介しました。
この問題は Windows 特有のもので、macOS や Linux では発生しません。Claude Code 側での対応も期待したいところですが、それまではこの方法で対処していただければと思います。
同じ問題で困っている方の参考になれば幸いです。

