- AI ⚙️
- AWS
Kiroとは|AWSのAI IDEの使い方・料金・Spec・CLI
結論
Kiroは、AWSが出している、仕様書から作り始めるAIエージェントの開発環境です。IDE・CLI・Web などの形があり、どれも同じ .kiro/ の設定を読みます。
この記事でわかること
- Free〜Power の5プランの料金と1クレジット単価
- steering・hooks・mcp.json の書き方と検査の実行結果
- kiro-cli のサブコマンド17個と主な slash コマンド
Kiro の Spec は、やりたいことを「要件 → 設計 → タスク」の3つのファイルに分けてから、エージェントに実装させる流れです。
flowchart TD
A[やりたいことを書く] --> R[requirements.md<br>要件]
R --> D[design.md<br>設計]
D --> T[tasks.md<br>タスク一覧]
T --> X[エージェントが実装]
S[.kiro/ の steering<br>hooks・MCP] -.-> X
よく使う操作と置き場所を先にまとめます。
| やりたいこと | 場所・コマンド | 補足 |
|---|---|---|
| IDE を入れる | kiro.dev/downloads | IDE の最新は 1.3.11 |
| CLI を入れる | curl -fsSL https://cli.kiro.dev/install | bash |
コマンド名は kiro-cli |
| 仕様(Spec)を作る | Kiro パネルの Specs の + |
CLI は /spec new 名前 |
| 決まりごとを読ませる | .kiro/steering/*.md |
既定は毎回読み込む |
| 保存時などに自動で動かす | .kiro/hooks/*.json |
トリガーは PascalCase |
| MCP サーバーをつなぐ | .kiro/settings/mcp.json |
ユーザー用は ~/.kiro/ 側 |
| 使ったクレジットを見る | CLI の /usage |
Free は月50クレジット |
| 調子が悪いとき | kiro-cli doctor |
よくある問題を診断する |
確認環境:Kiro の機能・設定ファイルの形・コマンド・料金は、kiro.dev の公式ドキュメント(Specs・Steering・Hooks・MCP・Permissions・Configuration scopes・CLI commands・Slash commands)、料金ページ、ダウンロードページ(IDE 1.3.11)、FAQ で確かめました。.kiro/ の設定ファイルはドキュメントの形で手元に作り、Ubuntu 24.04・Python 3.11.15 の検査スクリプトで確かめています。hooks から呼ぶスクリプトの終了コードと、mcp.json と同じ uvx mcp-server-fetch(uv 0.8.17・mcp-server-fetch 2026.10.10)の tools/list は実際に実行した出力です(確認日 2026年10月18日)。
本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。
(記載例)出典:株式会社RJC「Kiroとは|AWSのAI IDEの使い方・料金・Spec・CLI」
Kiroとは:AWSのAI開発環境
Kiro(キロ)は、AWS が提供する AI エージェントの開発環境です。 公式は「プロトタイプから本番まで、あなたのやり方で動く AI 開発環境」と説明しています。チャットで頼んでコードを書かせるだけでなく、先に仕様書(Spec)を作り、それに沿ってタスクを1つずつ実装させるのが大きな特徴です。
IDE は Code OSS(VS Code のオープンソース版)をもとにしているため、VS Code の設定・テーマ・Open VSX 互換の拡張機能を取り込めます。FAQ には「AWS アカウントがなくても使える」とあり、GitHub・Google・AWS Builder ID・組織のアカウント(IAM Identity Center など)でサインインします。
Kiroの5つの形(IDE・CLI・Web・Mobile・Crew)
公式ドキュメントは「どの形も、同じ1つのエージェントの仕組み(unified agent harness)の入り口」と書いています。会話・ツールの実行・権限・モデルとのやり取りはこの共通の仕組みが受け持ち、プロジェクトの .kiro/ に置いた設定はどの形からも同じように使われます。
| 形 | 向いている使い方 | 動く場所 |
|---|---|---|
| IDE | エディターで書きながら、Spec・チャット・hooks を使う | macOS・Windows・Linux |
CLI(kiro-cli) |
ターミナルでの作業、CI/CD での自動実行 | macOS・Windows 11・Linux |
| Web | ブラウザーから頼み、クラウドのサンドボックスで動かす | 最近のブラウザー |
| Mobile | スマホから進み具合を見る・指示する | iOS(TestFlight の先行版) |
| Crew | 自分のマシンで動き続ける、記憶を持つ作業場 | macOS・Linux・Windows |
Amazon Q Developerとの関係
AWS には、以前から IDE の拡張機能として動く Amazon Q Developer があります。Kiro の公式ドキュメントには「Migrating from Q Developer」と「Upgrading from Q CLI」の移行ガイドがあり、Q Developer の拡張機能から Kiro へ移る人向けの手順が書かれています。移行ガイドによると、Kiro には Visual Studio・Eclipse 用のプラグインはなく、JetBrains の IDE からは Kiro CLI を入れて ACP(Agent Client Protocol)経由で使います。
AI に仕様を渡して開発を進める考え方の全体像は、関連記事「AI駆動開発とは?バイブコーディングとの違いと導入手順」で扱っています。
Kiroの料金(2026年10月18日時点)
Kiro はクレジット制です。 月額のプランごとに使えるクレジット数が決まっていて、AI に頼んだ作業の重さとモデルに応じてクレジットが減ります。料金ページの内容は次のとおりです(2026年10月18日時点)。
| プラン | 月額(税抜) | クレジット/月 | 1クレジットあたり |
|---|---|---|---|
| Kiro Free | 0ドル | 50 | — |
| Kiro Pro | 20ドル | 1,000 | 0.02ドル |
| Kiro Pro+ | 40ドル | 2,000 | 0.02ドル |
| Kiro Pro Max | 100ドル | 5,000 | 0.02ドル |
| Kiro Power | 200ドル | 10,000 | 0.02ドル |
| Kiro for enterprise | 営業に問い合わせ | 記載なし | — |
「1クレジットあたり」は月額をクレジット数で割った値です。有料プランはどれも 0.02ドルで、違いは月に使える量です。
料金ページと Billing のドキュメントに書かれている決まりです。
- 月のクレジットは繰り越されない。使い切らなかった分は翌月に持ち越せない。
- 追加クレジットは 0.04ドル/クレジット。パックは 5ドル(125クレジット)から 100ドルまでで、買ってから12か月で失効する。Free では買えない。
- 初めて有料プランにすると 20ドル分が付く(ソーシャルログインか AWS Builder ID の場合)。日割りで、例として6月15日に Pro にすると6月は10ドル分、7月の請求が10ドルになると書かれている。
- 有料プランの請求は毎月1日。日本の住所で払うと日本の消費税がかかる。
- 1つの契約は1人分。チームで使うときは1人ずつ契約する。
- クレジットは小数点以下2桁まで数える。簡単な依頼は1クレジット未満、Spec のタスク実行のような重い作業はそれ以上になることが多い。
- 使えるのは Kiro の IDE・CLI・Web・Crew・ACP 対応の IDE・CI/CD での自動実行。Kiro の外を経由する他のツールからの利用は認められていない。
モデルごとのクレジット消費(倍率)
同じ依頼でも、選んだモデルでクレジットの減り方が変わります。Available models のページ(2026年10月17日更新)に倍率が載っているものを抜き出します。
| モデル | 状態 | 倍率 |
|---|---|---|
| Auto(Kiro が選ぶ) | Active | 記載なし |
| Claude Sonnet 5.5 | Active | 1.3倍 |
| Claude Opus 5 | Active | 2.2倍 |
| Claude Opus 5.5 | Experimental | 2.0倍 |
| GPT-5.6 Luna | Experimental | 0.6倍(272K トークンまで) |
| GLM-5 | Active | 0.5倍 |
| MiniMax M2.5 | Active | 0.25倍 |
| Qwen3 Coder Next | Experimental | 0.05倍 |
Auto は Kiro のモデルの振り分け役で、Free では Sonnet 級以上、有料プランでは Opus 級以上の品質になるよう送り先を選ぶと書かれています。Experimental のモデルには振り分けません。
Kiroのインストール(Windows・Mac・Linux)
IDEの動作環境とダウンロード
IDE は kiro.dev のダウンロードページから OS に合ったファイルを取って入れます。2026年10月18日時点の最新は 1.3.11 です。
| OS | 対応 | ファイルの形 |
|---|---|---|
| macOS | Intel と Apple シリコン | .dmg・.pkg |
| Windows | 10・11(x64・ARM64) | .exe |
| Linux | Ubuntu 24 以降・Debian 13 以降・Fedora 40 以降・Arch・Mint 22 以降(x86_64・ARM64) | .deb・.tar.gz |
ダウンロードページには、2026年11月9日以降は IDE 0.11.133 より前・CLI 1.28.2 より前の版が Kiro のサービスにつながらなくなる、という案内も出ています。
ダウンロードして入れる
kiro.dev から OS に合ったファイルを取り、各 OS の手順で入れます。Linux の .deb は Debian・Ubuntu 24 以降向けです。
サインインする
初回の起動で Google・GitHub・AWS Builder ID・組織のアカウントから選びます。ブラウザーが開き、Kiro を許可すると戻ってきます。
VS Code の設定を取り込む
VS Code を使っていれば、設定と拡張機能を取り込めます。使っていなければ飛ばします。
テーマとシェル連携を決める
Kiro Dark か Kiro Light を選び、シェル連携(shell integration)を許可します。エージェントがターミナルでコマンドを実行するのに使います。
フォルダを開く
File → Open Folder か、フォルダをドラッグするか、ターミナルでプロジェクトのフォルダに入って kiro . を実行します。
会社のネットワークでプロキシを通すときは、IDE・CLI とも HTTP_PROXY・HTTPS_PROXY・NO_PROXY を読みます。IDE は Settings → Proxy でも設定できます。ブラウザーでのサインインは、この設定を通らない点に注意が要ります。
Kiro CLIのインストール
Kiro CLI のページとダウンロードページには、macOS・Linux・Windows 共通として次の1行が載っています。CLI は macOS・Windows 11(PowerShell)・glibc 2.34 以降か musl の Linux で動きます。
curl -fsSL https://cli.kiro.dev/install | bash
入れたら、プロジェクトのフォルダで起動します。初回はサインインを求められます。
kiro-cli login
cd my-project
kiro-cli
起動したら /guide で CLI について質問できる Guide エージェントに切り替わり、Shift+Tab で元のエージェントに戻ります。/help でコマンドの一覧が出ます。リモートのマシンでブラウザーが開けないときは、URL と1回限りのコードを別の端末のブラウザーで入力する方式(device flow)が使えます。
アンインストール
| OS | IDE の消し方 |
|---|---|
| macOS | アプリケーションから Kiro をゴミ箱へ |
| Windows | 設定 → アプリ → インストールされているアプリ |
| Linux | sudo apt remove kiro か sudo dnf remove kiro |
Kiroの使い方:最初の4ステップ
IDE で最初のプロジェクトを動かすまでの流れです(Build your first project のページの順)。
- フォルダを開き、Kiro パネルを開く。左のバーの Kiro のアイコンを押すと、Specs・Agent Hooks・Steering・MCP の欄が並んだパネルとチャット欄が出る。
- steering を作る。パネルの「Generate Steering Docs」を押すと、Kiro がリポジトリを読んで
.kiro/steering/に決まりごとのファイルを作る。 - Spec で機能を作る。チャットの Spec ボタンか Specs の
+を押し、作りたい機能を文章で書く。Kiro が要件・設計・タスクの順に作り、tasks.mdのタスクを押すと実装が始まる。 - hooks・MCP を足す。Agent Hooks の
+で自動化を文章で頼むと、設定ファイルが作られる。MCP は設定ファイルに書く。
チャット欄の # で、会話に入れる情報を選べます。#codebase・#file・#folder・#git diff・#terminal・#problems・#url・#steering・#spec・#mcp などがあります。チャットは Mac で Cmd+L、Windows・Linux で Ctrl+L で開きます。
エージェントにすべての変更を任せるか、1つずつ承認するかは、Settings → Agent → Agent Autonomy の Autopilot と Supervised で切り替えます。うまくいかなかったときは、チェックポイントでコードと会話を前の時点まで戻せます。
.kiroフォルダの全体像(設定ファイルの置き場所)
Kiro の設定は、プロジェクトの .kiro/ とホームの ~/.kiro/ の2か所に置きます。プロジェクト側をリポジトリに入れると、チームの全員と、IDE・CLI・Web のどれから開いても同じ設定が使われます。Configuration scopes のページ(2026年10月13日更新)の内容です。
| 設定 | プロジェクト(.kiro/) |
ホーム(~/.kiro/) |
|---|---|---|
| Spec | specs/ |
置けない |
| steering | steering/ |
steering/ |
| hooks | hooks/ |
hooks/ |
| MCP サーバー | settings/mcp.json |
settings/mcp.json |
| カスタムエージェント | agents/ |
agents/ |
| Skills | skills/ |
skills/ |
| 権限 | リポジトリの外(~/.kiro/workspace-roots/ の下) |
settings/permissions.yaml |
| CLI の設定 | 置けない | settings/cli.json |
両方にあるときの扱いは設定ごとに違います。steering・Skills・hooks は両方を合わせて使い、MCP は「エージェントの設定 → プロジェクト → ホーム」の順で優先、権限はどこかに deny があればその操作は止まります。
この記事で作ったサンプルのプロジェクトは、次の形です(ToDo 管理 API を作る想定)。
find . -type f | sort
./.kiro/hooks/guard-shell.json
./.kiro/hooks/lint-on-save.json
./.kiro/settings/mcp.json
./.kiro/specs/todo-api/design.md
./.kiro/specs/todo-api/requirements.md
./.kiro/specs/todo-api/tasks.md
./.kiro/steering/api-design.md
./.kiro/steering/product.md
./.kiro/steering/release.md
./.kiro/steering/tech.md
./.kiro/steering/testing.md
./AGENTS.md
./scripts/guard_shell.py
./scripts/kiro_lint.py
./scripts/mcp_list_tools.py
仕様駆動開発(Spec):requirements・design・tasks
Spec は、機能の追加やバグの修正を、3つのファイルに分けて形にする仕組みです。 頭の中の「こういうものが欲しい」を、確かめられる要件・設計・タスクに変えてから実装に入ります。
| ファイル | 中身 |
|---|---|
requirements.md(バグなら bugfix.md) |
ユーザーストーリーと受け入れ条件。バグなら原因の分析 |
design.md |
技術的な構成、シーケンス図、実装で気をつけること |
tasks.md |
実装の計画。1つずつ進み具合を追えるタスクの一覧 |
Specの種類(Feature・Bugfix・Quick Spec)
| 種類 | 使う場面 | 流れ |
|---|---|---|
| Feature(Requirements-First) | 何をしたいかははっきりしている | 要件 → 設計 → タスク |
| Feature(Design-First) | 構成や設計から決めたい | 設計 → 要件 → タスク |
| Bugfix | バグを直し、再発も防ぎたい | 原因の分析 → 設計 → タスク |
| Quick Spec | よく分かっている小さな機能 | 3つを1回で作る(承認の区切りなし) |
各段階で、浮いている Review ボタンから Markdown Review を開くと、文章の特定の箇所にコメントを付けて、まとめて Kiro に返せます。CLI V3 では /spec new 名前 で Spec を始めます。
要件はEARS記法で書く
requirements.md の受け入れ条件は、EARS 記法(「WHEN 条件 THE SYSTEM SHALL 振る舞い」の形)で書かれます。ドキュメントの例は次のとおりです。
WHEN a user submits a form with invalid data
THE SYSTEM SHALL display validation errors next to the relevant fields
「いつ」と「システムが何をするか」を1文ずつに分けるので、テストに落としやすくなります。サンプルのプロジェクトでは、次のように手で書いてみました(Kiro が作るファイルの書式そのものではなく、要件の形の例です)。
### Requirement 1
**User Story:** As a チームメンバー, I want ToDo を登録したい, so that やることを忘れない。
#### Acceptance Criteria
1. WHEN 利用者が title を付けて POST /todos を送る THE SYSTEM SHALL 201 と作成した ToDo を返す
2. WHEN title が空文字のまま送られる THE SYSTEM SHALL 400 と error.code "TITLE_REQUIRED" を返す
タスクの実行とウェーブ
Kiro は tasks.md の各タスクの状態(実行中・完了)をその場で表示します。タスクは1つずつでも、まとめてでも実行できます。まとめて実行すると、Kiro はタスクの依存関係を調べ、互いに関係のないタスクを「ウェーブ」にまとめます。 ウェーブは順番に、ウェーブの中のタスクは同時に実行されます。タスクの実行は IDE・CLI・Web のどれでもできます。
Spec の考え方そのもの(仕様書に何を書くか)は、関連記事「仕様駆動開発(SDD)とは?AIに渡す仕様書テンプレートと進め方」で扱っています。
steeringの書き方(.kiro/steering)
steering は、プロジェクトの決まりごとを Markdown で書いておき、エージェントに読ませる仕組みです。 「回答は日本語で」「テストは Vitest」「URL は複数形の名詞」といった、毎回伝えたいことを書きます。
- プロジェクト用:
.kiro/steering/。そのプロジェクトだけに効く - 全体用:
~/.kiro/steering/。すべてのプロジェクトに効く。食い違うときはプロジェクト用が優先
「Generate Steering Docs」で作られる基本の3ファイルは、product.md(目的・利用者・機能)、tech.md(フレームワーク・ライブラリ・制約)、structure.md(フォルダ構成・名前の付け方・設計)です。
いつ読み込むか(inclusion)
ファイルの先頭の front matter(--- で囲んだ YAML)で、いつ読み込むかを決めます。
| inclusion | 読み込まれるとき | 必要な項目 |
|---|---|---|
always(既定) |
毎回の会話 | なし |
fileMatch |
指定した形のファイルを扱うとき | fileMatchPattern |
manual |
チャットで #ファイル名 と書いたとき |
なし |
auto |
依頼が説明文に合うとき | name と description |
サンプルの fileMatch の例です。fileMatchPattern は1つなら文字列、複数なら配列で書けます。#[[file:パス]] で別のファイルを参照でき、パスはワークスペースのルートから数えます。
---
inclusion: fileMatch
fileMatchPattern: ["src/routes/**/*.ts", "src/schemas/**/*.ts"]
---
# API の決まり
- URL は複数形の名詞(/todos)。動詞を入れない。
- エラーは {"error": {"code": "...", "message": "..."}} の形で返す。
- 仕様の正本:#[[file:docs/openapi.yaml]]
auto は name と description の両方が必要です。
---
inclusion: auto
name: testing
description: Vitest のテストを書く・直すときの決まり。テストの追加や失敗の調査で使う。
---
# テストの決まり
- 1つのテストで確かめることは1つ。
AGENTS.mdも読まれる
Kiro は AGENTS.md にも対応しています。ワークスペースのルートか ~/.kiro/steering/ に置き、サブフォルダの AGENTS.md も見つけて読み込みます。AGENTS.md には inclusion の指定が効かず、常に読み込まれます。 他の AI ツールと決まりを共有したいときは AGENTS.md に書く、という分け方ができます。書き方は関連記事「AGENTS.mdの書き方テンプレ|copilot-instructions比較」で扱っています。
front matterの書き間違いを検査する
ドキュメントには「front matter はファイルの最初の内容でなければならず、前に空行を入れない」とあります。空行が1行あるだけで、inclusion の指定は効きません。見た目では気づきにくいので、ドキュメントの決まり(先頭の位置・inclusion の値・必要な項目)を確かめる Python のスクリプトを書きました。hooks と mcp.json もあわせて見ます。
""".kiro/ の設定ファイルを、Kiro のドキュメントに書かれた決まりで確かめる"""
import json, pathlib, re, sys
root = pathlib.Path(sys.argv[1] if len(sys.argv) > 1 else ".") / ".kiro"
problems = 0
def ng(path, msg):
global problems
problems += 1
print(f"NG {path}: {msg}")
# 1. steering:front matter はファイルの先頭(前に空行なし)
for f in sorted((root / "steering").glob("*.md")):
text = f.read_text(encoding="utf-8")
rel = f.relative_to(root.parent)
if not text.startswith("---\n"):
if re.match(r"\s+---\n", text):
ng(rel, "front matter の前に空行がある(inclusion が効かない)")
else:
print(f"OK {rel}: front matter なし(always 扱い)")
continue
fm = dict(re.findall(r"^(\w+):\s*(.+)$", text.split("---\n")[1], re.M))
mode = fm.get("inclusion", "always")
if mode not in ("always", "fileMatch", "manual", "auto"):
ng(rel, f"inclusion の値が不正: {mode}"); continue
if mode == "fileMatch" and "fileMatchPattern" not in fm:
ng(rel, "fileMatch なのに fileMatchPattern がない"); continue
if mode == "auto" and not ("name" in fm and "description" in fm):
ng(rel, "auto には name と description の両方が要る"); continue
print(f"OK {rel}: inclusion={mode}")
# 2. hooks:version v1・hooks 配列・name/trigger/action
for f in sorted((root / "hooks").glob("*.json")):
rel = f.relative_to(root.parent)
try:
d = json.loads(f.read_text(encoding="utf-8"))
except json.JSONDecodeError as e:
ng(rel, f"JSON の書き方の誤り: {e}"); continue
if d.get("version") != "v1":
ng(rel, 'version が "v1" でない'); continue
for h in d.get("hooks", []):
a = h.get("action", {})
if not all(k in h for k in ("name", "trigger", "action")):
ng(rel, "name・trigger・action のどれかがない")
elif a.get("type") == "command" and "command" not in a:
ng(rel, "type=command なのに command がない")
elif a.get("type") == "agent" and "prompt" not in a:
ng(rel, "type=agent なのに prompt がない")
else:
print(f"OK {rel}: {h['name']} ({h['trigger']} → {a.get('type')})")
# 3. MCP:command か url のどちらか。${VAR} は承認が要る
mcp = root / "settings" / "mcp.json"
if mcp.exists():
d = json.loads(mcp.read_text(encoding="utf-8"))
for name, s in d.get("mcpServers", {}).items():
kind = "local" if "command" in s else "remote" if "url" in s else None
if kind is None:
ng(mcp.relative_to(root.parent), f"{name}: command も url もない"); continue
envs = sorted(set(re.findall(r"\$\{(\w+)\}", json.dumps(s))))
state = "disabled" if s.get("disabled") else "enabled"
extra = f" 承認が要る環境変数={envs}" if envs else ""
print(f"OK {mcp.relative_to(root.parent)}: {name} ({kind}, {state}){extra}")
print(f"\n問題 {problems} 件")
sys.exit(1 if problems else 0)
先頭に空行を入れた bad-example.md を混ぜて実行した結果です。
python3 scripts/kiro_lint.py .
OK .kiro/steering/api-design.md: inclusion=fileMatch
NG .kiro/steering/bad-example.md: front matter の前に空行がある(inclusion が効かない)
OK .kiro/steering/product.md: inclusion=always
OK .kiro/steering/release.md: inclusion=manual
OK .kiro/steering/tech.md: inclusion=always
OK .kiro/hooks/guard-shell.json: Block risky shell (PreToolUse → command)
OK .kiro/hooks/lint-on-save.json: Lint on save (PostFileSave → command)
OK .kiro/settings/mcp.json: fetch (local, enabled)
OK .kiro/settings/mcp.json: api-server (remote, disabled) 承認が要る環境変数=['API_TOKEN']
問題 1 件
空行を消すと、今度は inclusion: auto に name が無いことが分かりました。
NG .kiro/steering/bad-example.md: auto には name と description の両方が要る
name を足して testing.md にすると、問題は0件になり、終了コードも0になりました。CI に入れれば、壊れた設定を push する前に止められます。
OK .kiro/steering/testing.md: inclusion=auto
(中略)
問題 0 件
exit=0
hooksの書き方(.kiro/hooks)
hooks は、エージェントの動きやファイルの保存をきっかけに、コマンドやプロンプトを自動で実行する仕組みです。 プロジェクト用は .kiro/hooks/ に JSON で置きます(CLI V3 は ~/.kiro/hooks/ も読みます)。ファイル名は自由で、lint-on-save.json のようなケバブケースが勧められています。セッションの開始時に自動で有効になります。
ドキュメントの最初の例です。TypeScript のファイルを保存したら ESLint で直します。
{
"version": "v1",
"hooks": [{
"name": "Lint on save",
"trigger": "PostFileSave",
"matcher": "\\.(ts|tsx)$",
"action": { "type": "command", "command": "npx eslint --fix" }
}]
}
| 項目 | 必須 | 意味 |
|---|---|---|
version |
必須 | "v1" |
hooks[].name |
必須 | 表示される名前 |
hooks[].trigger |
必須 | きっかけ(PascalCase。PostFileSave など) |
hooks[].matcher |
任意 | 対象のファイルやツールの形 |
hooks[].action |
必須 | command(シェル)か agent(プロンプト) |
hooks[].timeout |
任意 | コマンドの制限秒数。既定60、0で無制限 |
ほかに enabled・confirm(実行前に確認の選択肢を出す)・description も書けます。IDE では Agent Hooks の + から「Ask Kiro to create a hook」を選び、やりたいことを文章で書くと、Kiro がこの JSON を作って保存します。IDE 0.x の .hook 形式は v1 の JSON に移り、移行前のファイルは移行するまで動きません。
hooksのきっかけ(トリガー)一覧
| きっかけ | いつ動くか | 使える場所 |
|---|---|---|
| Prompt Submit | 利用者がプロンプトを送ったとき | IDE・CLI |
| Agent Stop | エージェントが1回の応答を終えたとき | IDE・CLI |
| Session Start | 新しいセッションが始まったとき | IDE・CLI V3 |
| Session End | CLI V3 のセッションが終わるとき | CLI V3 |
| Pre Tool Use | ツールを使う前(止められる) | IDE・CLI |
| Post Tool Use | ツールを使った後(結果を見られる) | IDE・CLI |
| File Create・File Save・File Delete | 対象のファイルを作る・保存する・消すとき | IDE・CLI V3 |
| Pre Task Execution・Post Task Execution | Spec のタスクの前・後 | IDE・CLI V3 |
表の名前は画面の表記です。JSON の trigger には PostFileSave・PreToolUse・PostToolUse・Stop のような PascalCase の名前を書きます。Web のセッションではどの hooks も動きません。
commandとagentの違い(クレジットと終了コード)
command(シェル)
プロジェクトのルートで実行。STDIN にセッションの情報が JSON で届く
クレジットを使わない。LLM を通さないので速い
終了コード0なら標準出力が会話に入り、0以外なら標準エラーがエージェントに伝わる
agent(プロンプト)
決めておいたプロンプトを、チャットに打ったのと同じように送る
新しいエージェントのループが動くので、クレジットを使う
Prompt Submit では利用者のプロンプトの後ろに足される
Pre Tool Use の command が0以外で終わると、そのツールの呼び出しは止まります。 Prompt Submit で0以外なら、プロンプトの送信が止まります。この仕組みで「危ないコマンドを止める見張り役」を作れます。
危ないシェルを止めるhooksを作って試す
PreToolUse で、matcher にツールの種類 shell を指定します(ツールの種類は read・write・shell・web・spec)。
{
"version": "v1",
"hooks": [{
"name": "Block risky shell",
"trigger": "PreToolUse",
"matcher": "shell",
"timeout": 10,
"action": { "type": "command", "command": "python3 scripts/guard_shell.py" }
}]
}
呼ばれるスクリプトです。STDIN の JSON(ドキュメントの例では hook_event_name・cwd・session_id・tool_name・tool_input を含む)を読み、tool_input に決めた形があれば終了コード1で止めます。
"""PreToolUse フックから呼ぶ。STDIN の JSON を読み、危ないコマンドなら止める"""
import json, re, sys
event = json.load(sys.stdin)
text = json.dumps(event.get("tool_input", {}), ensure_ascii=False)
BLOCK = [
(r"\brm\s+-[a-zA-Z]*r[a-zA-Z]*f|\brm\s+-[a-zA-Z]*f[a-zA-Z]*r", "rm -rf は使わない"),
(r"\bgit\s+push\b.*(--force|-f\b)", "force push は人が行う"),
(r"\.env\b", ".env には触れない"),
]
for pattern, reason in BLOCK:
if re.search(pattern, text):
print(f"blocked by guard_shell.py: {reason}", file=sys.stderr)
sys.exit(1) # 0 以外で、Kiro はこのツール呼び出しを止める
print("guard_shell.py: ok")
sys.exit(0)
フックに届く JSON と同じ形の入力を4通り作り、スクリプトだけを実行した結果です。
for cmd in 'npm test' 'rm -rf dist' 'git push origin main --force' 'cat .env'; do
echo "(tool_input.command = $cmd)"
printf '{"hook_event_name":"PreToolUse","cwd":"/home/user/todo-app","session_id":"demo","tool_name":"shell","tool_input":{"command":"%s"}}\n' "$cmd" \
| python3 scripts/guard_shell.py
echo "exit=$?"
done
(tool_input.command = npm test)
guard_shell.py: ok
exit=0
(tool_input.command = rm -rf dist)
blocked by guard_shell.py: rm -rf は使わない
exit=1
(tool_input.command = git push origin main --force)
blocked by guard_shell.py: force push は人が行う
exit=1
(tool_input.command = cat .env)
blocked by guard_shell.py: .env には触れない
exit=1
tool_input の中身の形はツールによって違うため、スクリプトは JSON 全体を文字列にして調べています。決まった操作を確実に止めたいときは、hooks に加えて次の節の permissions.yaml の deny も使うと、二重に守れます。
"\.(ts|tsx)$" と書く"\\.(ts|tsx)$" とバックスラッシュを2つにする1つだと JSON として読めない。検査スクリプトでは Invalid \escape: line 6 column 17 と出た
--- の前に空行がある--- にするinclusion の指定が効かなくなる(Steering のドキュメント)
*.ts と入れるIDE の欄は正規表現として扱い、* や ? は不正として拒否する
権限(permissions.yaml)で許可・拒否を決める
エージェントが何をしてよいかは、permissions.yaml の rules: に並べます。capability(shell・fs_read・fs_write・web_fetch・web_search など)と effect(allow・ask・deny)が必須で、match・exclude にグロブの形を書けます。ホーム全体用は ~/.kiro/settings/permissions.yaml です。ドキュメントに出てくる規則を組み合わせると次の形になります。
rules:
- capability: shell
match: ["git *", "npm *", "npx *"]
effect: allow
- capability: shell
match: ["rm -rf *", "sudo *"]
effect: deny
- capability: fs_read
match: ["**/.env", "**/*.pem"]
effect: deny
チャットで承認を求められたときは、その1回だけの Allow・Deny か、規則として残す Always allow・Always deny を選べます。つないだコマンドは1つずつ承認を求められます。
MCPの設定(.kiro/settings/mcp.json)
MCP(Model Context Protocol)は、AI のツールに外部のデータや機能をつなぐための共通の決まりです。 Kiro では JSON の設定ファイルに MCP サーバーを書きます。
| 置き場所 | 効く範囲 |
|---|---|
.kiro/settings/mcp.json |
そのワークスペースだけ |
~/.kiro/settings/mcp.json |
すべてのワークスペース |
両方あるときは合わせて使い、同じ名前のサーバーはワークスペース側が優先されます。IDE ではコマンドパレットの「Kiro: Open workspace MCP config (JSON)」「Kiro: Open user MCP config (JSON)」で開けます。保存すると自動でつなぎ直します。
| 項目 | ローカル | リモート | 意味 |
|---|---|---|---|
command |
必須 | — | サーバーを起動するコマンド |
args |
任意 | — | コマンドの引数 |
url |
— | 必須 | HTTPS の URL(localhost は HTTP も可) |
headers |
— | 任意 | 接続時に送るヘッダー |
env |
任意 | 任意 | サーバーに渡す環境変数 |
disabled |
任意 | 任意 | true で止める(既定 false) |
autoApprove |
任意 | 任意 | 確認なしで使うツール。"*" で全部 |
disabledTools |
任意 | 任意 | エージェントに見せないツール |
リモートのサーバーには oauth・oauthScopes もあります。値に ${API_TOKEN} のように環境変数を書けますが、Kiro が展開するのは、利用者が承認した変数だけです。IDE の設定で「Mcp Approved Env Vars」を探し、変数名を足します。承認していない変数には警告が出ます。
サンプルの mcp.json です。fetch はドキュメントの例と同じ形で、api-server はリモートの書き方の例として止めてあります。
{
"mcpServers": {
"fetch": {
"command": "uvx",
"args": ["mcp-server-fetch"],
"disabled": false
},
"api-server": {
"url": "https://api.example.com/mcp",
"headers": { "Authorization": "Bearer ${API_TOKEN}" },
"disabled": true
}
}
}
mcp.jsonのサーバーが出すツールを確かめる
MCP の設定で多いつまずきは「サーバーが起動しない」「思ったツールが出てこない」です。Kiro につなぐ前に、mcp.json に書いたのと同じコマンドでサーバーを起動し、MCP の initialize と tools/list を送って確かめられます。そのための小さな Python のクライアントです。
"""mcp.json の "fetch" と同じコマンドで MCP サーバーを起動し、tools/list を聞く"""
import json, subprocess, sys
conf = json.load(open(".kiro/settings/mcp.json"))["mcpServers"]["fetch"]
p = subprocess.Popen([conf["command"], *conf["args"]], stdin=subprocess.PIPE,
stdout=subprocess.PIPE, text=True)
def send(msg):
p.stdin.write(json.dumps(msg) + "\n"); p.stdin.flush()
def recv():
return json.loads(p.stdout.readline())
send({"jsonrpc": "2.0", "id": 1, "method": "initialize", "params": {
"protocolVersion": "2025-06-18", "capabilities": {},
"clientInfo": {"name": "demo-client", "version": "0.1"}}})
init = recv()["result"]
print("server:", init["serverInfo"]["name"], init["serverInfo"]["version"])
print("protocolVersion:", init["protocolVersion"])
send({"jsonrpc": "2.0", "method": "notifications/initialized"})
send({"jsonrpc": "2.0", "id": 2, "method": "tools/list"})
for t in recv()["result"]["tools"]:
print("tool:", t["name"])
print(" description:", t["description"].splitlines()[0][:90])
print(" params:", ", ".join(f'{k}{"*" if k in t["inputSchema"].get("required", []) else ""}'
for k in t["inputSchema"]["properties"]))
p.terminate()
実行結果です。uvx が初回に44個のパッケージを入れてから、サーバーが応答しました。* は必須の引数です。
server: mcp-fetch 2026.10.10
protocolVersion: 2025-06-18
tool: fetch
description: Fetches a URL from the internet and optionally extracts its contents as markdown.
params: url*, max_length, start_index, raw
ここに出た fetch が、Kiro パネルの MCP servers の欄に並ぶツールです。MCP のツールの内部の ID は mcp_サーバー名_ツール名 の形になり、hooks の matcher では @fetch や @fetch/fetch と指定できます。
MCP の仕組み(サーバーとクライアントの役割)は、関連記事「MCPとは?サーバーとクライアントの仕組みと設定例を図解」で扱っています。
Kiro CLIの使い方(kiro-cli)
Kiro CLI は、ターミナルで Kiro のエージェントを使うためのコマンドです。2026年4月の CLI 2.0 で、画面を持たずに動かすヘッドレスモードと Windows への対応が入りました。今は V3 の早期版も出ていて、kiro-cli --v3 で V3、--v2 で V2 のセッションを始めます。V3 で入った主なものは、Spec エージェント(/spec new 名前)、権限の分類ごとの許可、.kiro/hooks/*.json の hooks、/tangent による脇道の会話などです。
kiro-cliのサブコマンド一覧
CLI commands のページ(2026年10月13日更新)に載っている17個です。サブコマンドを付けずに kiro-cli と打つと chat になります。
| サブコマンド | すること | 例 |
|---|---|---|
chat |
対話のセッションを始める(既定) | kiro-cli chat |
login・logout |
サインイン・サインアウト | kiro-cli login --social google |
whoami |
今のユーザーと認証の状態 | kiro-cli whoami --format json |
doctor |
インストールと設定の問題を診断 | kiro-cli doctor --strict |
update |
最新版に更新 | kiro-cli update --non-interactive |
mcp |
MCP サーバーの追加・削除・一覧 | kiro-cli mcp list workspace |
agent |
カスタムエージェントの作成・検証 | kiro-cli agent create my-agent |
settings |
設定の表示・変更 | kiro-cli settings telemetry.enabled true |
translate |
文章をシェルのコマンドに直す | kiro-cli translate -n 3 "search for text in files" |
version |
版と変更履歴 | kiro-cli version --changelog=1.5.0 |
diagnostic |
調査用のシステム情報を出す | kiro-cli diagnostic --force |
issue |
GitHub に不具合を報告 | kiro-cli issue "..." |
integrations |
シェルなどとの連携の管理 | kiro-cli integrations status |
inline |
入力中の候補表示の切り替え | kiro-cli inline enable |
theme |
補完の候補欄の色 | kiro-cli theme dark |
crew |
Kiro Crew を起動する | kiro-cli crew --yes gateway |
どのコマンドにも付けられるのは --version(-V)・--help(-h)・--help-all(全サブコマンドのヘルプ)・--verbose(-v、重ねると詳しくなる)・--agent・--v3・--v2 です。
よく使うslashコマンド
対話の中では / で始まるコマンドを使います。50個以上あるうち、よく使うものです。
| コマンド | すること |
|---|---|
/help |
ヘルプ用のエージェントを開く |
/model |
モデルと推論の設定を選ぶ |
/spec |
Spec の一覧・作成・実行・分析 |
/plan |
計画だけを立てる Plan エージェントに切り替える |
/context |
読み込んでいるファイルと、コンテキストの使用量を見る |
/compact |
会話を要約して、コンテキストを空ける |
/tools |
ツールと権限を見る・信頼する |
/hooks |
有効な hooks を見る |
/mcp |
有効な MCP サーバーとツールを見る |
/usage |
請求とクレジットの情報を見る |
/config |
エージェント・MCP・steering・Skills・hooks の設定をまとめて見る |
/rewind |
前の時点から会話を分ける |
/quit |
終了(/exit・/q も同じ) |
CI/CDで動かす(ヘッドレスモード)
画面を使わずに動かすときは、KIRO_API_KEY 環境変数に API キーを入れ、--no-interactive を付けます。API キーを作れるのは Pro・Pro+・Pro Max・Power の契約者です。
# 指示を引数で渡す
kiro-cli chat --no-interactive "your prompt here"
# V3 で、指定したツールだけ自動で許可する
kiro-cli chat --v3 --no-interactive --trust-tools=read_file,grep_search "Find all TODO comments in src/"
--trust-all-tools を付けると、そのセッションのすべてのツール呼び出しと hooks の確認が自動で許可されます。CI で使うときは、使い捨ての環境か、許可するツールを --trust-tools で絞る形が安全です。
Claude Code・Cursor・Clineとの違い(事実の比較)
各製品の公式ドキュメントの記載を並べます(2026年10月18日時点)。どれも MCP に対応し、プロジェクトの決まりをファイルで渡せます。違いは、決まりや自動化を置く場所と、計画を立てる仕組みです。
| 項目 | Kiro | Claude Code | Cursor | Cline |
|---|---|---|---|---|
| 使う形 | IDE(Code OSS ベース)・CLI・Web・Mobile | ターミナル・IDE 拡張・デスクトップ・Web | エディター・CLI | VS Code などの拡張・CLI |
| 決まりのファイル | .kiro/steering/・AGENTS.md |
CLAUDE.md(AGENTS.md も読める) | .cursor/rules(.mdc)・AGENTS.md |
.clinerules/・AGENTS.md |
| MCP の設定 | .kiro/settings/mcp.json |
.mcp.json など |
.cursor/mcp.json |
cline_mcp_settings.json |
| hooks の設定 | .kiro/hooks/*.json |
settings ファイルの hooks | .cursor/hooks.json |
Hooks のページは SDK Plugins を参照 |
| 計画・仕様の仕組み | Spec(3ファイル)・Plan | プランモード | Plan Mode | Plan と Act |
Kiro は「要件・設計・タスク」をファイルとしてリポジトリに残し、タスクの実行状態までその上で追う点が特徴です。Claude Code の使い方は、関連記事「Claude Code 使い方完全ガイド|導入・コマンド一覧・エラー対処」で扱っています。Cline の使い方は、関連記事「Clineとは|VS Codeでの使い方・Plan/Act・MCP・料金」で扱っています。
Kiroでよくあるエラーと直し方
IDE の Troubleshooting のページに載っているものと、設定ファイルの書き間違いをまとめます。
| 出る文言・症状 | 原因 | 直し方 |
|---|---|---|
Kiro is damaged and can't be opened. You should move it to the Trash. |
macOS のセキュリティ機能の誤判定 | プライバシーとセキュリティで許可し、sudo xattr -d com.apple.quarantine /Applications/Kiro.app |
サインイン後に No profiles available |
会社の TLS 検査がつなぎ先を妨げている | curl -v https://runtime.us-east-1.kiro.dev で確かめ、許可リストをネットワーク担当と見直す |
There was an error signing you in |
IAM Identity Center で契約が有効でない | 契約を確かめる。プロファイルはバージニア北部とフランクフルトだけ |
shell integration unavailable |
シェル連携が入っていない | コマンドパレットで Kiro: Enable Shell Integration を実行し、再起動 |
| 「Working...」のまま止まる | Powerlevel10k などのシェルの装飾 | .p10k.zsh に typeset -g POWERLEVEL9K_TERM_SHELL_INTEGRATION=true |
Updates are disabled because you are running the user-scope installation of Kiro as Administrator. |
Windows で管理者として起動している | ショートカットの互換性タブで「管理者としてこのプログラムを実行する」を外す |
| MCP サーバーがつながらない | 設定の誤り・必要なものが入っていない | MCP servers の欄と、出力パネルの「Kiro - MCP Logs」を見る |
Invalid \escape(JSON の読み込み) |
hooks の matcher のバックスラッシュが1つ | \\. のように2つにする |
| steering が効かない | front matter の前に空行がある | 1行目を --- にする |
CLI で困ったときは、まず kiro-cli doctor を実行します。認証のエラーなら kiro-cli login でサインインし直します。
よくある質問
Q. Kiroとは何ですか? A. AWS が提供する AI エージェントの開発環境です。要件・設計・タスクの仕様書(Spec)を先に作り、それに沿ってエージェントに実装させるのが特徴です。5つの形の違いは「Kiroとは:AWSのAI開発環境」の節にあります。
Q. Kiro IDEは無料で使えますか? A. Kiro Free は月0ドルで、毎月50クレジット使えます(2026年10月18日時点)。使えるモデルはオープンウェイトのモデルと Claude Sonnet 4.5 で、回数の制限があります。
Q. Kiroを使うのにAWSアカウントは要りますか? A. FAQ に「AWS アカウントがなくても使える」とあります。GitHub・Google・AWS Builder ID・組織のアカウントでサインインします。
Q. Kiro IDEとVS Codeの関係は? A. Kiro の IDE は Code OSS をもとにしているため、VS Code の設定・テーマ・Open VSX 互換の拡張機能を取り込めます。
Q. Kiro CLIのインストール方法は?
A. 公式の案内は curl -fsSL https://cli.kiro.dev/install | bash です。入れたら kiro-cli login でサインインし、プロジェクトのフォルダで kiro-cli と打ちます。
Q. Kiroの返事を日本語にするには?
A. .kiro/steering/ のファイル(inclusion: always)に「回答は日本語で書く」と書いておくと、毎回の会話に読み込まれます。
まとめ
- Kiro は AWS の AI エージェントの開発環境。IDE・CLI・Web・Mobile・Crew が同じ仕組みと
.kiro/の設定を使う。 - 料金は Free(50クレジット)から Power(200ドル・10,000クレジット)まで。有料プランの1クレジット単価はどれも0.02ドル、追加は0.04ドル(2026年10月18日時点)。
- Spec は requirements・design・tasks の3ファイル。要件は EARS 記法で、タスクはまとめて実行するとウェーブに分けて進む。
- steering は front matter の inclusion で読み込む時を決める。前に空行があると効かない。
- hooks は
.kiro/hooks/*.json。command はクレジットを使わず、Pre Tool Use で0以外を返すとツールを止められる。 - MCP は
.kiro/settings/mcp.json。つなぐ前に同じコマンドでtools/listを確かめると、原因を切り分けやすい。
参考・出典
確認日はいずれも 2026年10月18日です。
- Kiro Documentation:https://kiro.dev/docs/
- Kiro「Pricing」:https://kiro.dev/pricing/
- Kiro「Downloads」:https://kiro.dev/downloads/
- Kiro「FAQ」:https://kiro.dev/faq/
- Kiro Docs「How Kiro works」:https://kiro.dev/docs/how-kiro-works/
- Kiro Docs「Installation」:https://kiro.dev/docs/getting-started/installation/
- Kiro Docs「Authentication」:https://kiro.dev/docs/getting-started/authentication/
- Kiro Docs「Build your first project」:https://kiro.dev/docs/getting-started/first-project/
- Kiro Docs「Specs」:https://kiro.dev/docs/specs/
- Kiro Docs「Feature Specs」:https://kiro.dev/docs/specs/feature-specs/
- Kiro Docs「Steering」:https://kiro.dev/docs/steering/
- Kiro Docs「Hooks」:https://kiro.dev/docs/hooks/
- Kiro Docs「Hook triggers」:https://kiro.dev/docs/hooks/types/
- Kiro Docs「Hook actions」:https://kiro.dev/docs/hooks/actions/
- Kiro Docs「MCP configuration」:https://kiro.dev/docs/mcp/configuration/
- Kiro Docs「Permissions」:https://kiro.dev/docs/permissions/
- Kiro Docs「Configuration scopes」:https://kiro.dev/docs/configuration/
- Kiro Docs「Available models」:https://kiro.dev/docs/models/available-models/
- Kiro Docs「Billing」:https://kiro.dev/docs/billing/
- Kiro Docs「CLI commands」:https://kiro.dev/docs/reference/cli-commands/
- Kiro Docs「Slash commands」:https://kiro.dev/docs/reference/slash-commands/
- Kiro Docs「What's new in V3」:https://kiro.dev/docs/cli/v3/
- Kiro Docs「Headless mode」:https://kiro.dev/docs/cli/headless/
- Kiro Docs「IDE Troubleshooting」:https://kiro.dev/docs/ide/troubleshooting/
- Kiro Docs「Migrating from Q Developer」:https://kiro.dev/docs/upgrade-guides/migrating-from-q-developer/
- Kiro Blog「Kiro CLI 2.0」:https://kiro.dev/blog/cli-2-0/
- Kiro(GitHub・README):https://github.com/kirodotdev/Kiro
- Claude Code Docs「Overview」:https://code.claude.com/docs/en/overview
- Cursor Docs「Rules」:https://cursor.com/docs/context/rules
- Cursor Docs「MCP」:https://cursor.com/docs/mcp
- Cursor Docs「Hooks」:https://cursor.com/docs/hooks
- Cursor Docs「Modes」:https://cursor.com/docs/agent/modes
- mcp-server-fetch(PyPI):https://pypi.org/project/mcp-server-fetch/
本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。
(記載例)出典:株式会社RJC「Kiroとは|AWSのAI IDEの使い方・料金・Spec・CLI」
株式会社RJC ― SI事業・SES事業・AI駆動開発。RJCは一緒に成長を楽しめる会社です。
WE ARE HIRING
RJCで一緒に開発しながら、
成長を楽しみませんか?
RJCは、Web・モバイル・AIを活用した開発プロジェクトで、テックリードやPM・PMOも活躍するシステム開発会社です。会社を知る、待遇を確かめる、話を聞いてみる。気になるところ見てみてください!
- 127日年間休日
- 12時間平均残業時間
- 毎日ガチャ遊びココロも大切にする福利厚生。アマギフなどの賞品ラインナップ!
ほかにも、チケットレストラン、書籍読み放題、2年ごとの慰労報奨(休暇 or 金一封)、11期連続の黒字決算。