GitHub Copilot CLI v1.0.35でシェルエスケープが$SHELLを使うようになりました

GitHub Copilot CLI v1.0.35でシェルエスケープが$SHELLを使うようになりました

2026.04.26

どうも!オペ部の西村祐二です!

GitHub Copilot CLI の v1.0.35 が2026-04-23にリリースされました。セッション中に使える ! シェルエスケープが、これまでの /bin/sh 固定から環境変数 $SHELL を参照する挙動に変わっています。

何がリリースされたか

  • 概要: Copilot CLI の ! から始まるシェルエスケープが、$SHELL が設定されていればそのシェルで実行されるようになりました。未設定の場合はこれまでどおり /bin/sh が使われます。
  • 公式リンク: github/copilot-cli v1.0.35 Release

リリースノート本文には次のように書かれています。

Shell escape commands (!) now use your $SHELL when set, instead of always invoking /bin/sh

注目ポイント

  1. ! エスケープでユーザーの常用シェルが使われる

    • これまでは /bin/sh 固定だったため、POSIX 非互換のコマンドや zsh / fish 固有の構文が使えませんでした。$SHELL が設定されていればその値(/bin/zsh/opt/homebrew/bin/fish など)で実行されるようになります。
  2. alias や関数がそのまま効くわけではない点に注意

    • $SHELL で起動されてもインタラクティブシェルとして起動するわけではないため、.zshrc / .bashrc が読み込まれない可能性があります。alias や関数が自動で使えるかはシェル側のノンインタラクティブ挙動次第で、「そのまま常用シェルと同じ感覚で使える」と思い込まないほうが無難そうです。実際の挙動は手元で確認するのが確実です。
  3. $SHELL 未設定時は従来動作にフォールバック

    • リリースノートに "when set" と明記されているとおり、$SHELL が空・未定義の場合はこれまでどおり /bin/sh で実行されます。CI などで $SHELL を意図的にアンセットしている環境では挙動が変わらないので、既存ワークフローの影響範囲を絞って考えられそうです。

試してみる

環境

  • GitHub Copilot CLI v1.0.36(本機能は v1.0.35 以降で利用可能)
  • macOS (Apple Silicon)
  • $SHELL=/bin/zsh

1. 現在の $SHELL を確認

Copilot CLI が参照する $SHELL を事前に確認します。

$ echo "$SHELL"
/bin/zsh

2. Copilot CLI のアップデート

v1.0.35 以降でないとこの機能は入らないため、手元のバージョンを上げます。

$ copilot --version
GitHub Copilot CLI 1.0.32.
Run 'copilot update' to check for updates.

$ copilot update

3. セッション内で ! エスケープを実行

Copilot CLI を起動し、プロンプトで ! から始まるコマンドを入力するとシェルエスケープとして実行されます。たとえば次のような流れで試せそうです。

> !echo "$0"

$SHELL に設定したシェルで実行されているかを見るには、echo "$0"! エスケープから叩いて、返ってくるパスを確認するのが手早いです。$SHELL=/bin/zsh の環境では /bin/zsh が返り、シェル側で確認しても挙動が一致します。

$ /bin/sh -c 'echo "$0"'
/bin/sh
$ /bin/zsh -c 'echo "$0"'
/bin/zsh

v1.0.34 以前は前者と同じく /bin/sh 相当の値が返っていたところが、v1.0.35 以降では $SHELL の値に切り替わるという形です。

CleanShot 2026-04-26 at 13.56.59@2x

試してみた感想

Copilot CLI を zsh ユーザーが使っていると、! エスケープで普段の環境そのままにコマンドを流せなときがあり気になってました。今回の変更で $SHELL を尊重してくれるようになり、慣れた文法(setopt[[ ... ]] の拡張マッチ、グロブ修飾子など)を気兼ねなく書ける可能性が広がりそうです。

ただし、alias や関数を前提にしたスクリプトは期待通りに動かないことがあり得るため、短いワンライナーで挙動を確かめてから本格的に使い始めるのが無難に思えます。chsh などで $SHELL を意図的に変えた環境でも想定どおり動くかは、あわせて確認しておきたいところです。

まとめ

GitHub Copilot CLI v1.0.35 で ! シェルエスケープが $SHELL を尊重するようになりました。zsh / fish / bash などを常用している場合に、Copilot CLI 上での操作感が普段のターミナルに近づく変更だと感じます。リリースノートには他にもスラッシュコマンドのタブ補完や COPILOT_GH_HOST のサポートなど注目点があるので、一度目を通しておくとよさそうです。

誰かの参考になれば幸いです。


関連リンク:

この記事をシェアする

関連記事