原文(日本語に翻訳)
Windows PowerShell 5.1でgit pushのようなコマンドがstderrに進捗を書き込む際に、PowerShellツールが誤って失敗と報告していた問題を修正しました。
原文(英語)
Fixed PowerShell tool incorrectly reporting failures when commands like git push wrote progress to stderr on Windows PowerShell 5.1
概要
Windows PowerShell 5.1環境において、git push などのコマンドが正常に完了しているにもかかわらず、進捗情報をstderrに出力する挙動があるため、Claude CodeのPowerShellツールがこれを失敗と誤判断して報告するバグがありました。git push は進捗表示(Counting objects: 100% など)をstderrに書き出す仕様のため、成功してもエラーとして扱われていました。v2.1.89でstderrへの出力が即座にエラーとして扱われないよう修正されました。
基本的な使い方
powershell
# Windows PowerShell 5.1でのgit push
git push origin main
# 修正前: stderrへの進捗出力が失敗として報告されていた
# Error: Command failed (stderr output detected)
# 修正後: 終了コードで成功/失敗を判断する
# Successfully pushed to origin/main実践例
git pushの正常な動作確認
powershell
# Claude CodeでPowerShellツールを使ったgit操作
# 修正後: 進捗表示がstderrに出力されても失敗と報告されない
git fetch origin # stderrに進捗出力
git pull origin main # stderrに進捗出力
git push origin main # stderrに進捗出力
git clone <url> # stderrに進捗出力
# すべて修正後は正しく成功として報告されるstderrを使用する他のコマンド
powershell
# stderrに出力するが成功するコマンドの例
# npm install
npm install # deprecation warningsがstderrに出力される
# 修正後: warningsがあっても成功として扱われる
# curl
curl -s https://api.example.com/data 2>$null
# 修正後: stderrへの出力に関わらず終了コードで判断
# wget
Invoke-WebRequest -Uri https://example.com -OutFile output.htmlPowerShell 5.1での終了コード確認
powershell
# コマンドの終了コードを確認する方法
git push origin main
echo "Exit code: $LASTEXITCODE"
# 0 = 成功
# 非0 = 失敗
# 修正後: Claude Code はこの $LASTEXITCODE で判断する注意点
- この問題はWindows PowerShell 5.1固有の問題でした(PowerShell 7+は影響なし)
- Windows PowerShell 5.1はWindows 10/11にデフォルトでインストールされている古いバージョンです
git push以外にもgit clone、git fetch、git pullなどstderrに進捗を出力するコマンドが影響を受けていました- 修正後も実際にエラーが発生した場合は正しくエラーとして報告されます