Claude Media
Claude CodeでscoopのGit Bashを使う設定

Claude CodeでscoopのGit Bashを使う設定

scoopで入れたGitはbash.exeがProgram Files以外にあり、Claude Codeの自動検出が失敗することがあります。CLAUDE_CODE_GIT_BASH_PATHで直接指定する手順です。

scoopでGitを入れると、Claude CodeがGit Bashを見つけられないことがあります。原因はscoopが実行ファイルを置く場所にあり、CLAUDE_CODE_GIT_BASH_PATHでbash.exeの場所を直接指定すれば解決します。

まだscoopでGitを入れていない場合は、次のコマンドでインストールできます。Gitはscoopのmainバケットに含まれているパッケージで、追加のバケット登録は要りません。

scoop install git

scoopのGit Bashが見つからない理由

CLAUDE_CODE_GIT_BASH_PATHとは、WindowsでClaude CodeがGit Bashの実行ファイル(bash.exe)を探すためのパスを明示する環境変数です。Git Bashをインストール済みでも、Claude Codeが自動で見つけられないときに使います。

公式ドキュメントによると、この変数を設定していないとき、Claude Codeは次の順でbash.exeを探します。

  1. 既定のインストール先であるC:\Program Files\GitとC:\Program Files (x86)\Git
  2. PATH上にあるgitを見つけ、そのGitインストール先のbin\bash.exeを使う

scoopでGitを入れた場合、このどちらにも当てはまりません。scoopは実行ファイルの実体を~\scoop\apps\<アプリ名>\<バージョン>\という専用フォルダーに置きます。PATHに追加されるのはそのフォルダーではなく、~\scoop\shims\内のラッパー(シム)だけです。PATH上のgitはこのシムを指すため、Claude Codeが探す「gitの隣のbin\bash.exe」はこの構成には存在せず、この手順では見つからない構成です。

scoopのGitマニフェストがPATHにシムとして登録する実行ファイルは、sh.exe・git.exe・gitk.exeなど一部だけで、bash.exe自体は含まれていません。PowerShellからbashと打っても起動しないのはこのためです。

なお2番目の手順には例外もあります。公式ドキュメントによると、Claude Codeを起動したフォルダー自身、またはその配下にあるgitは検出から除外されます。node_modulesや.venvのような仮想環境フォルダーを含むパスにあるgitも同様です。プロジェクトが持ち込んだ実行ファイルを誤って使わないための挙動ですが、scoopの場合はそもそもシム経由なので、この除外ルールとは別の理由で見つかりません。

bash.exeの実際の場所を確認する

scoopでインストールしたアプリの実体は~\scoop\apps\<アプリ名>\current\という場所にあります。currentはディレクトリジャンクションで、常にインストール済みの最新バージョンを指します。バージョンが上がってもこのパス自体は変わりません。

インストール先のルート(既定は%USERPROFILE%\scoop)は自分でカスタマイズしている場合もあります。決め打ちで書くよりも、scoop prefixコマンドで実際の場所を確認するほうが確実です。

scoop prefix git

出力されたパスの末尾に\bin\bash.exeを足した文字列が、設定に使う値です。既定のインストール先のままなら、次のようになります。

C:\Users\<ユーザー名>\scoop\apps\git\current\bin\bash.exe

scoopのgitパッケージは、git-for-windows/gitプロジェクトが公開している「PortableGit」というzip形式の配布物をダウンロードします。これは通常のインストーラー版と同じGitHub releaseに並んで置かれている移植版で、bin\・usr\bin\といったフォルダー構成を保ったまま展開されます。そのためbin\bash.exeは、公式インストーラーで入れた場合のC:\Program Files\Git\bin\bash.exeと同じ相対位置にあります。違うのは置き場所の親フォルダーだけです。

CLAUDE_CODE_GIT_BASH_PATHを設定ファイルに書く

確認したパスを、settings.jsonファイルのenvキーに書きます。バックスラッシュはJSON内で1つを\\とエスケープする必要があります。

{
  "env": {
    "CLAUDE_CODE_GIT_BASH_PATH": "C:\\Users\\<ユーザー名>\\scoop\\apps\\git\\current\\bin\\bash.exe"
  }
}

自分の端末だけで使うなら~/.claude/settings.json、チームで揃えるならプロジェクトの.claude/settings.jsonに書いてバージョン管理にコミットします。設定を反映するには、Claude Codeを再起動するのが確実です。

グローバルインストールの場合のパス

scoop install git --global(短縮形-g)でGitを入れた場合、実体は個人用のフォルダーではなく、全ユーザー共通の場所に置かれます。個人インストールとグローバルインストールでは、既定のパスが次のように変わります。

インストール方法実体のルート(既定)bash.exeのパス
scoop install git実体のルート(既定)%USERPROFILE%\scoopbash.exeのパス%USERPROFILE%\scoop\apps\git\current\bin\bash.exe
scoop install git --global実体のルート(既定)%ProgramData%\scoopbash.exeのパス%ProgramData%\scoop\apps\git\current\bin\bash.exe

どちらのルートも環境変数(%SCOOP% / %SCOOP_GLOBAL%)で変更できるため、この表はあくまで既定値です。迷ったらscoop prefix gitの出力を優先します。

設定後の確認とよくある失敗

CLAUDE_CODE_GIT_BASH_PATHが効いているかどうかは、--debug付きで起動すると分かります。パスが無視されている場合、警告がここに出ます。

claude --debug

公式ドキュメントは、この変数が受け付けるファイル名をbash.exe・sh.exe・bash・shの4つだけに限定しています。よくある失敗は、Git Bashのウィンドウを開くランチャーであるgit-bash.exeを指定してしまうことです。この名前は対象外のため、Claude Codeは変数を無視して自動検出にフォールバックし、--debugで見える警告を出します。パスそのものが存在しない場合も同じ扱いです。

この挙動はv2.1.219(2026年7月24日)で変わりました。それ以前は、ファイル名を確認せずそこにあるファイルをそのままシェルとして使い、パスが存在しないときはClaude Codeが起動時に終了していました。今のバージョンでは、名前が合わない・パスが無いどちらの場合も起動は続き、警告だけが出ます。

ファイル名もパスも正しいのにまだ認識されない場合、公式ドキュメントは別の要因を挙げています。AppLockerやグループポリシーのソフトウェア制限、EDRエージェントといった企業のエンドポイントセキュリティ製品の干渉です。社給PCで使っている場合は、claude.exeと、そこから起動されるcmd.exe・bash.exeの許可をIT部門に確認する対象になります。

もう一つ見落としやすいのが、Program Filesに別のGitがすでに入っているケースです。1番目の検出手順はC:\Program Files\Gitの存在を、PATHの状態とは無関係にチェックします。そのためそちらのGitが先に見つかり、scoop側のGit BashはCLAUDE_CODE_GIT_BASH_PATHを設定しない限り使われません。両方のGitを使い分けたい場合は、この変数で明示的にscoop側を指定する必要があります。

gitコマンドが今どちらを指しているか確認したいときは、scoop whichコマンドが使えます。

scoop which git

scoopが把握しているシムのパス(~\scoop\shims\git.exe)が返れば、gitコマンド自体はscoop経由です。ただし、これはあくまでgitコマンドの解決先であり、Claude Codeのbash.exe検出とは別の話である点に注意します。

この設定が要るのはどんな人か

Windows版のClaude Codeは、Git Bashが無くてもPowerShellツールで動きます。この設定が要るのは、bashベースのスクリプトをBashツール経由で実行したい人です。加えて、すでにscoopでGitを管理していて、Git for Windowsの単体インストーラーを別途入れたくない人にも当てはまります。逆に、PowerShellだけで完結する運用なら、この設定自体が不要です。

WSL(Windows Subsystem for Linux)でClaude Codeを使っている場合も、この設定とは無関係です。WSLはLinuxディストリビューション内のbashをそのまま使うため、Windows側のGit BashもCLAUDE_CODE_GIT_BASH_PATHも関与しません。

Git Bashを常用シェルにすると、キー入力の挙動がWindowsの他のターミナルと違うことにも気づきます。たとえばBackspaceでGit Bashだけ単語ごと消えない挙動は、mintty特有の既定によるものです。

Git Bashを入れると、アカウントの種類によってPowerShellツールの既定も変わります。claude.aiとConsoleアカウントでは、Git Bash導入後もPowerShellツールが既定で有効なままです。一方、Amazon Bedrock・Google CloudのAgent Platform・Microsoft Foundryのセッションでは既定が逆になります。CLAUDE_CODE_USE_POWERSHELL_TOOL=1を別途設定しない限りPowerShellツールは無効のままで、Bashツールだけで運用することになります。

まとめ

scoopで入れたGitは、gitがPATH上でシムを経由するため、Claude Codeの自動検出には引っかかりません。scoop prefix gitで実体の場所を確認し、そのbin\bash.exeをCLAUDE_CODE_GIT_BASH_PATHに設定します。これでscoopのGit BashをBashツールとして使えるようになります。currentはジャンクションなので、Gitを更新してもパスの再設定は不要です。

この記事を共有:XはてブLinkedIn