Skip to content

Instantly share code, notes, and snippets.

@nojaja
Last active June 26, 2025 09:10
Show Gist options
  • Select an option

  • Save nojaja/a13898541b43d8d86102d46efabec191 to your computer and use it in GitHub Desktop.

Select an option

Save nojaja/a13898541b43d8d86102d46efabec191 to your computer and use it in GitHub Desktop.

Gemini CLIのサンドボックス機能で安全にAIを活用しよう!

はじめに

Googleの強力なAIモデルをコマンドラインから手軽に利用できるGemini CLI。非常に便利なツールですが、AIが提案したコマンドをそのまま実行することに不安を感じる方もいるのではないでしょうか。特に、ファイルシステムを変更したり、外部のプログラムをインストールしたりするようなコマンドには注意が必要です。

この記事では、Gemini CLIに搭載されているサンドボックス機能に焦点を当て、その概要とセットアップ方法について、解説します。

Gemini CLIのサンドボックス機能とは?

サンドボックスとは、外部から受け取ったプログラムを保護された領域で動作させる仕組みのことです。Gemini CLIのサンドボックス機能は、AIが生成したコマンドを直接ホストOSで実行するのではなく、隔離された安全な環境で実行することで、システムへの意図しない変更や悪意のある操作を防ぎます。

これにより、ユーザーはAIの提案をより安心して試すことができます。

なぜサンドボックスが重要なのか?

  • セキュリティの向上: 万が一、AIが不適切なコマンド(例: rm -rf /)を生成したとしても、サンドボックス環境内で実行されるため、ホストシステムへの被害を防ぎます。
  • 意図しない変更の防止: ライブラリのインストールや設定ファイルの変更など、システムに影響を与える可能性のあるコマンドを実行する前に、その影響範囲をサンドボックス内に限定できます。
  • 安全な実験: AIに様々なタスクを試させたい場合でも、サンドボックスがあればシステムが不安定になるリスクを低減できます。

OS別のセットアップと仕組み

Gemini CLIのサンドボックス機能は、お使いのOSによって仕組みが異なります。

macOSの場合

macOSでは、OS標準の強力なサンドボックス機能であるseatbeltが利用されます。特別な設定は不要で、デフォルトで有効になっています。

もし何らかの理由で無効にしたい場合は、以下の環境変数を設定します。

export SEATBELT_PROFILE=none

Linux / Windowsの場合

LinuxやWindowsでは、DockerやPodmanといったコンテナ技術を利用してサンドボックス環境を構築します。Gemini CLIは、これらのコンテナがインストールされている場合、自動的にコンテナ内でコマンドを実行しようとします。

セットアップ手順:

  1. DockerまたはPodmanをインストールします。
  2. DockerまたはPodmanが実行中であることを確認します。

これだけで準備は完了です。Gemini CLIがコマンドを実行する際に、自動的にコンテナを利用してくれます。

【重要】すでにDocker Desktopなどが導入済みの場合

お使いの環境にすでにDocker DesktopやPodmanがインストールされている場合、追加の設定は基本的に不要です。

Gemini CLIは、起動時にDocker環境を自動で検出し、サンドボックスとして利用します。ユーザーが意識して設定する項目はなく、Docker Desktopが起動していることを確認するだけで、Gemini CLIは安全なコンテナ内でコマンドを実行してくれます。

【トラブルシューティング】「no sandbox」と表示される場合

Dockerがインストールされているにもかかわらず、Gemini CLIの起動時に「no sandbox」と表示されることがあります。これは、Gemini CLIがDockerのプロセスを正しく認識できていない場合に発生します。

主な原因と対処法は以下の通りです。

  1. 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 をクリックしてください。
  2. Docker Desktopが起動していない

    • 原因: 単純ですが、Docker Desktopが起動していない、または完全に起動しきっていない状態です。
    • 対処法: Docker Desktopが完全に起動していることを確認してください。Windowsの場合、タスクトレイのクジラのアイコンが静止状態になっていれば起動完了です。
  3. Dockerコマンドがターミナルで実行できない

    • 原因: Dockerの実行ファイルへのパスが通っていないため、Gemini CLIもDockerを見つけられません。
    • 対処法: コマンドプロンプトやPowerShellで docker ps を実行し、エラーが出る場合はDockerのパスが通っていません。Docker Desktopの再インストールや、Windowsの環境変数設定を確認してください。
  4. Dockerデーモンとの通信に失敗している

    • 原因: Dockerのバックグラウンドプロセス(デーモン)が正常に動作していません。
    • 対処法: docker ps を実行した際に Cannot connect to the Docker daemon... のようなエラーが出る場合は、Docker Desktopの再起動や、PCの再起動を試してください。

これらの点を確認することで、多くの場合Gemini CLIは正しくDockerをサンドボックスとして認識できるようになります。

上級トラブルシューティング: docker psは成功するのに「no sandbox」と表示される場合

docker psコマンドは正常に動作するのに、Gemini CLIでは「no sandbox」と表示されてしまう場合があります。これは、Docker自体は動いているものの、Gemini CLIがその環境を見つけられていない状態です。以下の点を確認してみてください。

  1. Dockerコンテキストの確認

    • Dockerは「コンテキスト」という仕組みで、複数のDocker環境(ローカル、リモート、クラウドなど)を切り替えて使えます。Gemini CLIが想定しているコンテキストと、現在設定されているコンテキストが異なっている可能性があります。
    • 対処法: ターミナルで以下のコマンドを実行し、現在のDockerコンテキストを確認してください。
      docker context ls
    • 出力結果のNAMEの行にアスタリスク * が付いているものが現在のコンテキストです。もし、defaultdesktop-linuxといった標準的なものではない場合、Gemini CLIがそれを認識できていない可能性があります。docker context use default のようなコマンドで、デフォルトのコンテキストに切り替えてから再度Gemini CLIを起動してみてください。
  2. 管理者権限で実行する

    • Windows環境では、ユーザーの権限によってDockerソケットへのアクセスが制限される場合があります。
    • 対処法: 現在お使いのターミナル(コマンドプロンプトやPowerShell)を一度閉じ、**右クリックから「管理者として実行」**を選択して起動し直してください。その管理者権限のターミナルで再度Gemini CLIを起動すると、権限の問題が解消されてDockerを認識できることがあります。

--sandbox オプションによる明示的な有効化

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 requests Gemini 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コーディングライフをお楽しみください!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment