はじめに
Claude CodeやGitHub Copilot CLI、Clineなど、ターミナルで完結する強力なAIエージェントが続々と登場しています。
彼らに「ファイルの書き換え」や「コマンドの実行」といった自律的な権限を与える際、一番怖いのがホスト環境(自分のPC)を汚されたり、予期せぬコマンドで破壊されたりすることです。
VS Codeでおなじみの Dev Container(.devcontainer) は、実はVS Code専用の機能ではありません。オープン規格化されており、devcontainer CLI を使うことで、エディタを立ち上げることなく、ターミナルだけで「安全な開発用の砂箱(サンドボックス)」を構築できます。
この記事では、VS Codeに依存せず、CLIだけでDev Containerを立ち上げてAIエージェントを安全・快適にぶん回す方法をまとめます。
1. devcontainer CLI とは?
VS Codeの「Dev Containers」拡張機能のコアロジックを、独立したコマンドラインツールとして切り出したものです。オープン規格(Development Containers Spec)に基づいて設計されています。
これを使うと、VS Codeを起動していなくても、プロジェクト内にある .devcontainer/devcontainer.json を読み込んで以下を実行できます。
- コンテナのビルド・起動・停止
- コンテナ内でのコマンド実行やシェル(bash/zshなど)の起動
- 拡張機能(Features)の自動インストール
2. インストールと準備
前提として、ホスト側に Docker(Docker DesktopやOrbStackなど)と Node.js がインストールされている必要があります。
以下のコマンドで、グローバルに devcontainer CLI をインストールします。
npm install -g @devcontainers/cli
インストールが完了したら、バージョンを確認してみましょう。
devcontainer --version
# 例: 0.72.0 などのバージョンが表示されればOK
3. 実践:VS Codeなしでコンテナを立ち上げる
すでにVS Code等で使っていたプロジェクト(.devcontainer フォルダが存在するディレクトリ)に移動します。
① コンテナのビルドと起動
プロジェクトのルートディレクトリで以下のコマンドを実行します。
devcontainer up --workspace-folder .
※ 初回はイメージのダウンロードやビルドが走るため少し時間がかかります。
コマンドが完了すると、コンテナがバックグラウンドで起動し、待機状態になります。
② コンテナの中に入る(または直接エージェントを叩く)
コンテナの中でシェルを起動して中に入りたい場合は、以下のコマンドを叩きます。
devcontainer exec --workspace-folder . bash
これでコンテナ内のターミナルに切り替わります。ここで claude などのCLIエージェントを起動すれば、コンテナ内の隔離された環境で安全に開発を任せられます。
【ワンライナーで直接エージェントを起動する場合】
中に入らず、ホスト側のターミナルから直接コンテナ内のエージェントを呼び出すことも可能です。
devcontainer exec --workspace-folder . claude
4. CLIエージェント開発で使う3つのメリット
① 圧倒的な安全性(最強のサンドボックス)
AIエージェントにコード生成だけでなく、テストの実行やパッケージのインストール(npm install や pip install)、最悪の場合 rm コマンドなどの実行権限を渡しても、すべてコンテナ内に閉じ込められます。ホスト環境の環境変数が漏洩したり、OSが壊れたりするリスクをゼロにできます。
② 「全自動モード」との相性が抜群
例えば Claude Code には、すべてのコマンド実行の許可をスキップする --dangerously-skip-permissions というフラグがあります。ホスト環境でこれを使うのは恐ろしいですが、「壊れてもいいDev Containerの中」であれば、このフラグを有効にして全自動で爆速開発させるという攻めた運用が可能になります。
③ 環境の自動修復
もしAIエージェントがコンテナ内の環境をめちゃくちゃにして動かなくなってしまっても、以下のコマンドで一発でクリーンな初期状態にリセットできます。
# コンテナを一度破棄して再ビルド
devcontainer up --workspace-folder . --skip-existing false
5. チップス:エージェント用に調整したい devcontainer.json の設定
CLIエージェントを快適に動かすために、.devcontainer/devcontainer.json に入れておくと便利な設定例です。
{
"name": "AI Agent Sandbox",
"image": "[mcr.microsoft.com/devcontainers/base:ubuntu](https://mcr.microsoft.com/devcontainers/base:ubuntu)",
// エージェントが必要とするランタイムやツールをFeaturesで事前定義
"features": {
"ghcr.io/devcontainers/features/node:1": {},
"ghcr.io/devcontainers/features/git:1": {}
},
// コンテナ起動後にエージェント(例: Claude Code)を自動インストールしておく
"postCreateCommand": "npm install -g @anthropic-ai/claude-code",
// ログイン情報(トークンなど)をコンテナ再起動時も維持したい場合の設定
"mounts": [
"source=${localEnv:HOME}/.config,target=/home/vscode/.config,type=bind"
],
// 権限トラブルを防ぐため、デフォルトユーザーを明示
"remoteUser": "vscode"
}
まとめ
「Dev Container = VS Codeの機能」という固定概念を捨てて devcontainer CLI を導入することで、ターミナルネイティブな最新のAIエージェント開発環境を最高にセキュアな状態で手に入れることができます。
「CLIエージェントを試してみたいけれど、自分のPCの環境を汚されたくない…」と躊躇していた方は、ぜひこの方法で安全な「砂箱」を作って、AIにガシガシコードを書かせてみてください!