T13
書き込み中のログが 0 バイトに見える
症状
常駐プロセスが書いているログを Get-ChildItem で見ると 0 バイト。「何も出ていない」と判断したら、実際は数 MB 書かれていた。
30秒で確かめる
PowerShell(Windows PowerShell 5.1)に貼って実行します。一時フォルダ(%TEMP% の下)にだけファイルを作ります。最後に REPRODUCED と出たら、あなたの PC で起きています。 25秒ほどかかります。
$d = Join-Path $env:TEMP ('cc-trap-' + (Get-Date -Format 'yyyyMMddHHmmss')); New-Item -ItemType Directory $d -Force | Out-Null
$pyv = & python -c "import sys; print('%d.%d.%d' % sys.version_info[:3])" 2>$null
if (-not $pyv) { 'CANNOT CHECK (python not found, or only the Microsoft Store stub: install Python from python.org)' } else {
"python $pyv"
$ad = Join-Path $env:LOCALAPPDATA ('cc-trap-' + (Get-Date -Format 'yyyyMMddHHmmss')); New-Item -ItemType Directory $ad -Force | Out-Null
$log = Join-Path $ad 'w.log'; [IO.File]::WriteAllText($log, '')
[IO.File]::WriteAllText("$d\writer.py", "import sys,time`nf=open(sys.argv[1],'a')`nf.write('x'*5000000)`nf.flush()`ntime.sleep(20)`nf.close()`n")
$p = Start-Process python -ArgumentList "`"$d\writer.py`"", "`"$log`"" -PassThru -WindowStyle Hidden
Start-Sleep -Seconds 5
$listed = (Get-ChildItem -LiteralPath $ad -Filter 'w.log').Length
$fs = [IO.File]::Open($log, 'Open', 'Read', 'ReadWrite'); $real = $fs.Length; $fs.Close()
$p.WaitForExit(); Remove-Item -LiteralPath $ad -Recurse -Force
"listed=$listed real=$real"
if ($listed -ne $real) { 'REPRODUCED' } else { 'NOT REPRODUCED' }
}
なぜ起きるか
Windows は、開いたまま書き続けているファイルの一覧上のサイズを、すぐには更新しないことがある(作者の PC では AppData の下で再現)。
直し方
空かどうかを判断する前に、ファイルを開いて長さを読む。
$fs = [IO.File]::Open($log, 'Open', 'Read', 'ReadWrite')
$fs.Length; $fs.Close()
作者の PC での結果
一覧では 0、実際は 5,000,000 バイト
作者の PC: Windows 11 / Windows PowerShell 5.1.26100 / Python 3.13.7 / Claude Code 2.1.304、日本語の Windows(コードページ 932)。2026-10-20〜22 に確認。
こんな言葉で探した人へ
関連
この穴を最初から踏まないようにした部品(書き込み先を絞る安全装置〈onFailure: block 付き〉、夜の無人実行、ファイルとフックの設定を調べる健康診断、CLAUDE.md の型、試験一式)は cc-win-kit にまとめています。
ほかの症状
- PowerShell の終了コードが、2 を返したのに 1 になる
- -File で渡した2つ目の引数が、エラーなしで消える
- -File で a,b と渡すと、配列にならず1つの文字列になる
- パイプで渡した日本語が ? になる(claude -p・python・git)
- python や claude の出力を変数に入れると文字化けする
- 手で動かすと通る Python が、タスクスケジューラやリダイレクトのときだけ落ちる
- PYTHONIOENCODING を設定したのに、python -I だと効かない
- 日本語入りの .ps1 が、構文エラーになるか文字化けして動く
- .cmd / .bat のコメントが、コマンドとして実行される
- powershell -Command の1行に書いた $変数 が、呼ぶ前に消える
- Get-ChildItem の -Include が効かず、全部のファイルが返る
- "..." に書いた Markdown のバッククォートで、文字が消えて改行が入る
- claude -p --allowedTools の後ろに書いたプロンプトが飲み込まれる
- Claude Code の PreToolUse フックが、時間切れになると書き込みを止めずに通す
- PowerShell のフックを -Command で呼ぶと、Claude Code の拒否が素通りする
- Claude Code のフックが1つも動かない(disableAllHooks が残っている)