Googleの強力なAIモデルをコマンドラインから手軽に利用できるGemini CLI。非常に便利なツールですが、AIが提案したコマンドをそのまま実行することに不安を感じる方もいるのではないでしょうか。特に、ファイルシステムを変更したり、外部のプログラムをインストールしたりするようなコマンドには注意が必要です。
この記事では、Gemini CLIに搭載されているサンドボックス機能に焦点を当て、その概要とセットアップ方法について、解説します。
サンドボックスとは、外部から受け取ったプログラムを保護された領域で動作させる仕組みのことです。Gemini CLIのサンドボックス機能は、AIが生成したコマンドを直接ホストOSで実行するのではなく、隔離された安全な環境で実行することで、システムへの意図しない変更や悪意のある操作を防ぎます。
これにより、ユーザーはAIの提案をより安心して試すことができます。
- セキュリティの向上: 万が一、AIが不適切なコマンド(例:
rm -rf /)を生成したとしても、サンドボックス環境内で実行されるため、ホストシステムへの被害を防ぎます。 - 意図しない変更の防止: ライブラリのインストールや設定ファイルの変更など、システムに影響を与える可能性のあるコマンドを実行する前に、その影響範囲をサンドボックス内に限定できます。
- 安全な実験: AIに様々なタスクを試させたい場合でも、サンドボックスがあればシステムが不安定になるリスクを低減できます。
Gemini CLIのサンドボックス機能は、お使いのOSによって仕組みが異なります。
macOSでは、OS標準の強力なサンドボックス機能であるseatbeltが利用されます。特別な設定は不要で、デフォルトで有効になっています。
もし何らかの理由で無効にしたい場合は、以下の環境変数を設定します。
export SEATBELT_PROFILE=noneLinuxやWindowsでは、DockerやPodmanといったコンテナ技術を利用してサンドボックス環境を構築します。Gemini CLIは、これらのコンテナがインストールされている場合、自動的にコンテナ内でコマンドを実行しようとします。
セットアップ手順:
- DockerまたはPodmanをインストールします。
- DockerまたはPodmanが実行中であることを確認します。
これだけで準備は完了です。Gemini CLIがコマンドを実行する際に、自動的にコンテナを利用してくれます。
お使いの環境にすでにDocker DesktopやPodmanがインストールされている場合、追加の設定は基本的に不要です。
Gemini CLIは、起動時にDocker環境を自動で検出し、サンドボックスとして利用します。ユーザーが意識して設定する項目はなく、Docker Desktopが起動していることを確認するだけで、Gemini CLIは安全なコンテナ内でコマンドを実行してくれます。
Dockerがインストールされているにもかかわらず、Gemini CLIの起動時に「no sandbox」と表示されることがあります。これは、Gemini CLIがDockerのプロセスを正しく認識できていない場合に発生します。
主な原因と対処法は以下の通りです。
-
Docker DesktopのWSL 2連携設定が有効になっていない
- 原因: 現在のDocker Desktopは、WSL 2 (Windows Subsystem for Linux)との連携が正しく設定されていないと、外部ツールから認識されないことがあります。Gemini CLIがDockerを見つけられない最も一般的な原因の一つです。
- 対処法: Docker Desktopの
Settings>Resources>WSL Integrationを開きます。Enable integration with my default WSL distroがオンになっていることを確認し、もしオフであればオンにしてApply & Restartをクリックしてください。
-
Docker Desktopが起動していない
- 原因: 単純ですが、Docker Desktopが起動していない、または完全に起動しきっていない状態です。
- 対処法: Docker Desktopが完全に起動していることを確認してください。Windowsの場合、タスクトレイのクジラのアイコンが静止状態になっていれば起動完了です。
-
Dockerコマンドがターミナルで実行できない
- 原因: Dockerの実行ファイルへのパスが通っていないため、Gemini CLIもDockerを見つけられません。
- 対処法: コマンドプロンプトやPowerShellで
docker psを実行し、エラーが出る場合はDockerのパスが通っていません。Docker Desktopの再インストールや、Windowsの環境変数設定を確認してください。
-
Dockerデーモンとの通信に失敗している
- 原因: Dockerのバックグラウンドプロセス(デーモン)が正常に動作していません。
- 対処法:
docker psを実行した際にCannot connect to the Docker daemon...のようなエラーが出る場合は、Docker Desktopの再起動や、PCの再起動を試してください。
これらの点を確認することで、多くの場合Gemini CLIは正しくDockerをサンドボックスとして認識できるようになります。
docker psコマンドは正常に動作するのに、Gemini CLIでは「no sandbox」と表示されてしまう場合があります。これは、Docker自体は動いているものの、Gemini CLIがその環境を見つけられていない状態です。以下の点を確認してみてください。
-
Dockerコンテキストの確認
- Dockerは「コンテキスト」という仕組みで、複数のDocker環境(ローカル、リモート、クラウドなど)を切り替えて使えます。Gemini CLIが想定しているコンテキストと、現在設定されているコンテキストが異なっている可能性があります。
- 対処法: ターミナルで以下のコマンドを実行し、現在のDockerコンテキストを確認してください。
docker context ls
- 出力結果の
NAMEの行にアスタリスク*が付いているものが現在のコンテキストです。もし、defaultやdesktop-linuxといった標準的なものではない場合、Gemini CLIがそれを認識できていない可能性があります。docker context use defaultのようなコマンドで、デフォルトのコンテキストに切り替えてから再度Gemini CLIを起動してみてください。
-
管理者権限で実行する
- Windows環境では、ユーザーの権限によってDockerソケットへのアクセスが制限される場合があります。
- 対処法: 現在お使いのターミナル(コマンドプロンプトやPowerShell)を一度閉じ、**右クリックから「管理者として実行」**を選択して起動し直してください。その管理者権限のターミナルで再度Gemini CLIを起動すると、権限の問題が解消されてDockerを認識できることがあります。
Dockerがインストールされているにもかかわらず、何らかの理由でGemini CLIが自動的にサンドボックスを認識しない場合や、サンドボックスの利用を強制したい場合には、--sandboxオプションが利用できます。
gemini --sandbox "YOUR_PROMPT"このオプションを付けてGemini CLIを起動すると、サンドボックス機能が明示的に有効化された状態で動作します。これにより、Docker環境の自動検出に失敗した場合でも、安全なコンテナ内でコマンドを実行させることが可能です。
トラブルシューティングを行ってもサンドボックスが有効にならない場合に、試してみる価値のあるオプションです。
例えば、Gemini CLIに「'requests'ライブラリをpipでインストールして」とお願いしたとします。
$ gemini "install the 'requests' library using pip"
すると、Gemini CLIは以下のように実行するコマンドを提示し、ユーザーに確認を求めます。
Proposed command:
pip install requestsGemini wants to run the above command. Approve? (y/N)
ここでyを入力すると、コマンドが実行されます。このとき、macOSならseatbelt、Linux/WindowsでDocker等が利用可能ならコンテナ内というように、保護された環境で実行されるため、安全性が確保されます。
Gemini CLIのサンドボックス機能は、AIのパワーを安全に活用するための重要な仕組みです。
- macOS: デフォルトで
seatbeltにより保護されます。 - Linux/Windows: DockerやPodmanをインストールしておくだけで、自動的にコンテナベースのサンドボックスが利用されます。
この機能を活用して、ぜひ安全で快適なAIコーディングライフをお楽しみください!