Kiro CLIをDevContainer(Docker)内で使えるようにする

Kiro CLIをDevContainer(Docker)内で使えるようにする

Kiro CLIをDevContainer内で使うためのセットアップ方法を解説。Dockerfileへのインストールとdevcontainer.jsonのmountsによる認証情報の名前付きvolume永続化で、コンテナ再作成後も再認証なしで使えるようにします。
2026.04.03

Kiro CLI をDevContainer(Docker)で使いたいな〜って時、ありませんか?

AIエージェントは、ファイルの読み書きやコマンド実行ができるため、ホストPCに直接インストールすると、プロジェクト外のファイルや環境変数など ローカルPCの情報に広くアクセスできる状態 になります。
DevContainer内に閉じれば、アクセス範囲をコンテナ内のプロジェクトファイルに限定でき、意図しないファイル操作のリスクを減らせます。

私はKiro CLIをDevContainerで使っているので、その方法を共有します。

Kiro CLI自体の使い方については、弊社ブログに活用記事があるのでこちらもご覧ください。

https://dev.classmethod.jp/articles/kiro-cli-nyuumon/

最初に結論

Dockerfileにインストールを書き、devcontainer.jsonの mounts で認証情報を名前付きvolumeに永続化します。

Dockerfile(追加部分)
ARG USERNAME=node

# Kiro CLI用ディレクトリの作成と権限設定
RUN mkdir -p /home/${USERNAME}/.kiro /home/${USERNAME}/.local/share/kiro-cli && \
  chown -R ${USERNAME}:${USERNAME} /home/${USERNAME}/.kiro /home/${USERNAME}/.local

# non-root user
USER ${USERNAME}

# Kiro CLIのインストール先をPATHに追加
ENV PATH=$PATH:/home/${USERNAME}/.local/bin

# Kiro CLIのインストール
RUN curl -fsSL https://cli.kiro.dev/install | bash
devcontainer.json(追加部分)
{
    "mounts": [
        {
            "source": "kiro-config",
            "target": "/home/node/.kiro",
            "type": "volume"
        },
        {
            "source": "kiro-cli-data",
            "target": "/home/node/.local/share/kiro-cli",
            "type": "volume"
        }
    ]
}

Dockerfiledevcontainer.json の全文サンプルはブログの最後に載せています。

Kiro CLIとは

Kiro CLIはAWSが提供するAIコーディングアシスタント「Kiro」のCLI版です。ターミナルから直接AIにコーディングを依頼でき、コード生成・バグ修正・テスト実行などを自動化できます。

https://kiro.dev/cli/

(MacとLinuxの場合)インストールはワンライナーで完了し、バイナリは ~/.local/bin/kiro-cli に配置されます。

$ curl -fsSL https://cli.kiro.dev/install | bash

devcontainerで使うときの課題

Kiro CLIの認証にはいくつかの方式がありますが、コンテナなどブラウザが直接開けない環境ではデバイスコード認証が使われます。
初回起動時にURLと確認コードが表示され、ホストPCのブラウザで認証を完了する仕組みです。

$ kiro-cli login --use-device-flow
 Select login method · Use with Pro license
 Enter Start URL · https://d-XXXXXXXXXX.awsapps.com/start/
 Enter Region · us-east-1

Confirm the following code in the browser
Code: XXXX-XXXX

Open this URL: https://d-XXXXXXXXXX.awsapps.com/start/#/device?user_code=XXXX-XXXX

Docker内でも、ホストPCのブラウザでURLを開けば認証は完了できます。
問題は、認証情報がコンテナ内のファイルに保存されるため、コンテナを作り直すと消えてしまうことです。
毎回認証をやり直すのは手間がかかります。

セットアップ

以下の方針で対応します。

  • インストール → Dockerfileに書いてイメージに含める
  • 認証情報の永続化 → devcontainer.jsonの mounts で名前付きvolumeにマウント

Dockerfileの変更

Kiro CLIのインストールに必要な設定を追加します。

Dockerfile
ARG USERNAME=node

# Kiro CLI用ディレクトリの作成と権限設定
RUN mkdir -p /home/${USERNAME}/.kiro /home/${USERNAME}/.local/share/kiro-cli && \
  chown -R ${USERNAME}:${USERNAME} /home/${USERNAME}/.kiro /home/${USERNAME}/.local

# non-root user
USER ${USERNAME}

# Kiro CLIのインストール先をPATHに追加
ENV PATH=$PATH:/home/${USERNAME}/.local/bin

# Kiro CLIのインストール
RUN curl -fsSL https://cli.kiro.dev/install | bash

ポイントは mkdirchown です。volumeのマウント先ディレクトリを非rootユーザーの権限で事前に作成しておきます。
これをしないと、マウント時にrootが所有するディレクトリが作られ、Kiro CLIが認証情報等を書き込めなくなります。

既存のDockerfileがある場合は、適切な位置に追記してください。

devcontainer.jsonの変更

devcontainer.jsonの mounts プロパティで名前付きvolumeを定義します。

devcontainer.json
{
    "mounts": [
        {
            "source": "kiro-config",
            "target": "/home/node/.kiro",
            "type": "volume"
        },
        {
            "source": "kiro-cli-data",
            "target": "/home/node/.local/share/kiro-cli",
            "type": "volume"
        }
    ]
}

~/.kiro~/.local/share/kiro-cli の2つをマウントしています。

~/.local/share/kiro-cli フォルダにログイン後の認証情報が保存されることは、こちらのサイトで確認しました。

devcontainer.jsonの mounts はDocker CLIの --mount フラグと同じ形式で、名前付きvolumeを定義できます。

マウント先のパスはコンテナ内のユーザーに合わせてください。上記はデフォルトユーザー node(ホームが /home/node)の場合の例です。

動作確認

初回認証

devcontainerをビルドして起動します。コンテナ内のターミナルでKiro CLIを実行します。

$ kiro-cli login --use-device-flow

URLと確認コードが表示されるので、URLをブラウザにコピー&ペーストして、認証を完了します。

kiro-cli1
kiro-cli2
kiro-cli3
kiro-cli4

認証完了後、Kiro CLIを実行するとログイン完了していて、使えます。

$ kiro-cli
Welcome to Kiro!

再ビルド後に認証情報が残っているか確認

認証完了後、devcontainerを再ビルドして、dockerプロセスを再起動してみます。
VS Codeのコマンドパレットから Dev Containers: Rebuild Container を実行します。

vscode1

再ビルド後、devcontainerの中に入って、Kiro CLIを起動します。

$ kiro-cli

認証画面が表示されずにチャット画面が起動すれば、認証情報の永続化は成功です。

kiro-cli5

おわりに

Kiro CLIをDevContainer(Docker)内で使えるようにする方法を紹介しました。

DevContainerに閉じることでホストPCへの影響を気にせずAIエージェントを使えるのは精神的にも楽です。
ただし、ワークスペースフォルダはホストからバインドマウントされるため、完全なサンドボックスではない点には留意してください。

弊社ブログではClaude CodeのDevContainerセットアップ記事もあるので、併せて参考にしてみてください。

https://dev.classmethod.jp/articles/setup-claude-code-in-devcontainer/

このブログがどなたかのお役に立てれば幸いです。

設定ファイルの全文サンプル

最後に、今回の設定ファイルの全文を掲載します。
npx を使うスキルやツールも利用したいので、ベースイメージはNode.js入りの mcr.microsoft.com/devcontainers/javascript-node を使用しています。

.devcontainer/Dockerfile
FROM mcr.microsoft.com/devcontainers/javascript-node:24

ARG USERNAME=node

# Kiro CLI用ディレクトリの作成と権限設定
RUN mkdir -p /home/${USERNAME}/.kiro /home/${USERNAME}/.local/share/kiro-cli && \
  chown -R ${USERNAME}:${USERNAME} /home/${USERNAME}/.kiro /home/${USERNAME}/.local

# non-root user
USER ${USERNAME}

# Kiro CLIのインストール先をPATHに追加
ENV PATH=$PATH:/home/${USERNAME}/.local/bin

# Kiro CLIのインストール
RUN curl -fsSL https://cli.kiro.dev/install | bash
.devcontainer/devcontainer.json
{
    "name": "Kiro CLI Dev Container",
    "build": {
        "dockerfile": "Dockerfile"
    },
    "remoteUser": "node",
    "mounts": [
        {
            "source": "kiro-config",
            "target": "/home/node/.kiro",
            "type": "volume"
        },
        {
            "source": "kiro-cli-data",
            "target": "/home/node/.local/share/kiro-cli",
            "type": "volume"
        }
    ],
    "customizations": {
        "vscode": {
            "extensions": []
        }
    }
}

この記事をシェアする

関連記事