CLAUDE LABEN
FORK — Claude Code 2.1.212で/forkの挙動が変わりました。会話を新しいバックグラウンドセッションへ複製し、作業を続けたまま並走できます。従来のセッション内サブエージェントは/subtaskに移りましたLIMITS — WebSearchの呼び出しがセッション単位で既定200回に制限されました。サブエージェントの起動も既定200回が上限で、暴走した検索・委譲のループを止められますMCPBG — 2分を超えるMCPツール呼び出しは自動的にバックグラウンドへ移り、セッションが固まらなくなりました。しきい値はCLAUDE_CODE_MCP_AUTO_BACKGROUND_MSで調整できますPLANFIX — プランモードがtouchやrmといったファイルを変更するBashコマンドを、許可プロンプトもcanUseToolコールバックも通さずに実行してしまう不具合が修正されましたSONNET5 — Claude Sonnet 5は導入価格として入力100万トークンあたり2ドル、出力10ドルで提供中です。8月31日を過ぎると3ドルと15ドルに戻りますIPO — Anthropicが早ければ10月の株式公開を視野に、引受銀行が投資家との面談を組み始めたと報じられていますFORK — Claude Code 2.1.212で/forkの挙動が変わりました。会話を新しいバックグラウンドセッションへ複製し、作業を続けたまま並走できます。従来のセッション内サブエージェントは/subtaskに移りましたLIMITS — WebSearchの呼び出しがセッション単位で既定200回に制限されました。サブエージェントの起動も既定200回が上限で、暴走した検索・委譲のループを止められますMCPBG — 2分を超えるMCPツール呼び出しは自動的にバックグラウンドへ移り、セッションが固まらなくなりました。しきい値はCLAUDE_CODE_MCP_AUTO_BACKGROUND_MSで調整できますPLANFIX — プランモードがtouchやrmといったファイルを変更するBashコマンドを、許可プロンプトもcanUseToolコールバックも通さずに実行してしまう不具合が修正されましたSONNET5 — Claude Sonnet 5は導入価格として入力100万トークンあたり2ドル、出力10ドルで提供中です。8月31日を過ぎると3ドルと15ドルに戻りますIPO — Anthropicが早ければ10月の株式公開を視野に、引受銀行が投資家との面談を組み始めたと報じられています
記事一覧/Claude Code
Claude Code/2026-04-26中級

CLAUDE_CODE_USE_POWERSHELL_TOOL=1 を有効にすべきか — Windows 開発で実際に試した判断基準

Windows 環境で Claude Code を動かすとき、CLAUDE_CODE_USE_POWERSHELL_TOOL=1 環境変数を有効にすべきか迷う場面があります。私が複数のプロジェクトで両方試して見えた判断基準を整理しました。

claude-code129windows2powershell2wslenvironment

Claude Code を Windows で動かしている方なら、一度はこの環境変数の存在に気づいたことがあるかと思います。CLAUDE_CODE_USE_POWERSHELL_TOOL=1 を立てると、Claude Code は内部のシェル実行で PowerShell を優先的に呼ぶようになります。ただ、有効にすべきかどうかは「何を作っているか」「どのターミナルで動かしているか」に強く依存します。

私自身、Windows 11 上の WSL2 と素の PowerShell の両方で開発する機会があり、最近この環境変数の挙動を改めて検証しました。結論から言うと「全員が立てるべき」ものではなく、立てるべき場面と立てるべきでない場面が割とはっきり分かれます。今回はその判断軸を共有します。

そもそも何が変わるのか

この環境変数は、Claude Code がシェルコマンドを実行するときの「デフォルトのシェル選択」に関わります。何も設定していない Windows ホスト環境では、Claude Code は cmd.exe 経由でコマンドを実行することがあり、これが原因で UTF-8 周りのトラブルや、PowerShell スクリプト(.ps1)の実行で意図しない挙動が出ることがあります。

CLAUDE_CODE_USE_POWERSHELL_TOOL=1 を立てると、Claude Code は PowerShell(powershell.exe または pwsh.exe)を優先的に使うようになります。Windows 固有のコマンドや、Get-ChildItem のような PowerShell コマンドレットが自然に動くようになるのが大きな違いです。

ここまではドキュメントに書いてあることですが、実際に開発していると「期待した動作と違う」局面が出てきます。

立てるべき場面

私の経験上、次のような場面では迷わず有効化しています。

第一に、Windows 専用ツールを使うプロジェクトです。たとえば WPF や WinForms、UWP の開発で、dotnet コマンドや MSBuild を呼ぶような場合、PowerShell から実行した方が環境変数や PATH の引継ぎが安定します。

第二に、Windows 上で動く CI スクリプト(.ps1)を Claude Code に書かせたいときです。cmd.exe モードだと PowerShell スクリプトの構文を Claude Code が直接実行できず、Claude が「どう実行すべきか迷う」場面が増えます。

第三に、PowerShell 7(pwsh)を主要シェルとして使っているチームです。Set-PSReadlineOption などのプロファイル設定を読ませたい場合は、PowerShell 経由で実行された方が一貫した環境で動きます。

立てるべきでない場面

逆に、有効化しない方が混乱が少ないケースもあります。

第一に、開発を主に WSL2 上で行っている場合です。WSL の中で動く Claude Code に対して CLAUDE_CODE_USE_POWERSHELL_TOOL=1 を渡しても意味はありません。WSL の中はそもそも Linux なので bash や zsh が使われます。混乱の元になるので、WSL 内の .bashrc には書かない方が良いです。

第二に、Node.js や Python のような「クロスプラットフォームのツールチェーン」だけを使っているときです。npm, pip, pytest などはどのシェルから呼んでも変わりません。この場合、PowerShell に切り替えるとむしろ起動オーバーヘッド(PowerShell の起動は cmd より遅い)でレスポンスが体感で重くなることがあります。

第三に、WSL と Windows ホストを混在させて使う複雑な構成です。Claude Code が起動された時点でのプロセス親(cmd か pwsh か bash か)によって挙動が変わるため、USE_POWERSHELL_TOOL だけ立てると逆に何が起きているのか追えなくなります。

私が試した検証ケース

3つのプロジェクトで両モードを比較してみました。

ケース1: Next.js のフロントエンドプロジェクト(クロスプラットフォーム)。USE_POWERSHELL_TOOL=1 を立てるとコマンド実行のたびに PowerShell が起動するため、ファイル探索や npm run dev の起動でわずかに体感が遅くなりました。立てない方が快適でした。

ケース2: .NET 9 の WPF プロジェクト(Windows 固有)。USE_POWERSHELL_TOOL=1 を立てた状態の方が、dotnet build の出力が UTF-8 で正しく表示され、ビルドエラーの解析がスムーズになりました。これは立てるべきパターン。

ケース3: WSL2 内の Python プロジェクト。USE_POWERSHELL_TOOL の設定は無関係でした。WSL 内は bash で動くので、Windows 側の環境変数は効きません。一応 PowerShell から WSL を呼ぶ場合の挙動を確認しましたが、特に変化はありませんでした。

設定方法と確認手順

有効化するには、ユーザー環境変数として設定するのが一般的です。

# 永続的に設定(PowerShell)
[Environment]::SetEnvironmentVariable("CLAUDE_CODE_USE_POWERSHELL_TOOL", "1", "User")
 
# 確認
[Environment]::GetEnvironmentVariable("CLAUDE_CODE_USE_POWERSHELL_TOOL", "User")

設定後、PowerShell を一度閉じて開き直す必要があります。Claude Code を起動して、簡単なコマンド(Get-ChildItem など)が PowerShell コマンドレットとして実行されるか確認してください。

無効化したい場合は、

[Environment]::SetEnvironmentVariable("CLAUDE_CODE_USE_POWERSHELL_TOOL", $null, "User")

または値を 0 に設定するだけでも一時的に無効化できます。

切り替え時の落とし穴

有効化後、一部のプロジェクトで npm run 系のスクリプトが動かなくなったことがありました。原因は、package.jsonscripts 内で && を使った連結コマンドを書いていたためです。

{
  "scripts": {
    "build": "tsc && next build"
  }
}

PowerShell では古いバージョン(PowerShell 5.1 以前)で && がサポートされておらず、エラーになります。PowerShell 7 以降では問題ありません。チーム内に Windows PowerShell ユーザーが混ざっている場合は、npm-run-all などのツールに置き換えると安全です。

もう一つは、パスのクオート問題です。PowerShell でスペースを含むパスを扱うとき、cmd.exe とは異なるエスケープルールがあります。Claude Code が自動でクオートしてくれることが多いのですが、たまに失敗します。困ったら & "path with space\app.exe" のように明示的にクオートする方が安全です。

判断のチェックリスト

最後に、有効化すべきかの判断を簡単なリストにまとめます。

PowerShell 中心で開発している、.ps1 スクリプトを Claude に書かせる、Windows 固有の SDK や dotnet を使う、Windows ターミナルから直接 Claude Code を立ち上げる、こうした条件のうち2つ以上当てはまるなら、有効化を試す価値があります。

逆に、WSL2 が主戦場、Node.js や Python の単発スクリプトしか書かない、起動オーバーヘッドが気になる、こうしたケースでは無効のままで問題ありません。

私の場合、メインの開発は WSL2 ですが、Windows 専用の小さなツールを書くときだけ、ターミナルセッションごとに $env:CLAUDE_CODE_USE_POWERSHELL_TOOL=1 を立てて作業しています。永続的に立てるよりも、必要なときだけ切り替える運用の方が混乱が少なかったです。

迷ったら、まず1日だけ有効化して使い心地を試してみてください。違和感があればすぐ戻せる、軽い設定です。

シェア

お読みいただきありがとうございます

Claude Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • コピー&ペーストで使える実装コード付き
  • 毎日新しい上級ガイドを追加
  • ¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

もしこの記事がお役に立ちましたら、チップ(¥150)で応援いただけると大変励みになります。広告なしでの運営を続けるため、皆さまのご支援が大きな力になっています。

関連記事

Claude Code2026-04-21
Claude Code の Bash が Windows で詰まるときに — CLAUDE_CODE_USE_POWERSHELL_TOOL=1 の実用メモ
Windows で Claude Code を使っていると、Bash 経由のコマンドがときどき不自然に失敗します。環境変数 CLAUDE_CODE_USE_POWERSHELL_TOOL=1 を立てて PowerShell を直接叩くようにするだけで、症状の多くが消えます。この記事は、その切り替えを実際に使ってみた上で見えてきた注意点をまとめたものです。
Claude Code2026-07-17
テーブルが「… 2,847 more rows」で切れていた朝 — 描画上限とトークン計上を切り離して、ツール出力を設計し直す
Claude Code 2.1.209 で 200 行超の markdown テーブルは先頭 200 行+残り件数の表示になりました。省略されるのは描画だけで、モデルは全行を受け取ります。この差を測り、ツール出力を集約型へ組み替える設計をまとめます。
Claude Code2026-07-15
無人実行で auto モードの確認要求を止めずに捌く — permission-prompt-tool で deny-by-default に応える
auto モードの事前確認は、手元で作業しているときは頼もしい味方ですが、深夜の無人実行では「確認待ち」で朝まで止まる原因になります。permission-prompt-tool で確認要求を受け止め、deny-by-default で自動判定して台帳に残す構成を、動くコードつきでまとめました。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →