Amazon Q Developer CLI のカスタムエージェントって?
目的や環境によって Amazon Q Developer CLI の役割や利用できるツール(MCP、コマンドなど)を切り替えられる機能です。
「Aの調査がしたいからXXXの設定を使おう」、「BのAWS環境のリソース調査がしたいからYYYの設定を使おう」などとAmazon Q Developer CLI の設定を切り替えるようなイメージです。
■参考
Amazon Q Developer CLI のカスタムエージェントは、特定のユースケースやワークフロー用に設定できるカスタマイズ可能な AI アシスタントです。広範なコンテキストとプロンプトエンジニアリングを必要とする汎用アシスタントを使用する代わりに、カスタムエージェントを使用すると、さまざまなシナリオに適したツール、アクセス許可、コンテキストのセットを事前設定できます。
2025年7月頃にリリースされたみたいです。
この記事では上記で紹介した機能を持つAmazon Q Developer CLI のカスタムエージェント機能を利用するための手順を紹介します。
カスタムエージェント機能をうまく使い分けることで、安全かつ効率的に業務を進められると思います。(全部trustにしてヒヤヒヤしたことがある人は自分だけじゃないはず。。)
カスタムエージェントを作ってみよう
事前準備
まずAmazon Q Developer CLI チャットセッションを開始します。
$ q chat
既存のエージェントを一覧表示してみます。q_cli_default
が表示されるかと思います。
> /agent list
* q_cli_default
カスタムエージェントを作る
では実際にカスタムエージェントを作ってみましょう。
my-agent
という名前でカスタムエージェントを作成します。
> /agent create --name my-agent
次の表示になるかと思うので、esc
-> :
-> q
-> Enter
でエディタを終了します。(vimエディタ以外の場合は別の閉じ方になるかと思います)
{
"$schema": "https://raw.githubusercontent.com/aws/amazon-q-developer-cli/refs/heads/main/schemas/agent-v1.json",
"name": "my-agent",
"description": "",
"prompt": null,
"mcpServers": {},
"tools": [
"*"
],
"toolAliases": {},
"allowedTools": [],
"resources": [
"file://AmazonQ.md",
"file://AGENTS.md",
"file://README.md",
"file://.amazonq/rules/**/*.md"
],
"hooks": {},
"toolsSettings": {},
"useLegacyMcpJson": true,
"model": null
}
次のような表示が出たらOKです。/agent list
を実行すると新たにagentが追加されていることがわかります。
これでカスタムエージェントが完成です!
カスタムエージェントを使う
カスタムエージェントを使用するには、q chat --agent [agent-name]
を実行します。
$ q chat --agent my-agent
いつもと表示が少し違いますね。
チャット部分に[my-agent] >
と表示されておりどのエージェントと会話しているのかがわかるようになっています。
「あなたは何をするエージェントですか?」と聞いてみると一般的なAmazon Q Developer CLIの回答が返ってきます。
お気づきの方も多いかと思いますが、ここまでで設定したカスタムエージェントは全くカスタムできていない状態です。一般的な回答が返ってきたのもそのためです。
自分なりにエージェントをカスタムする
ここまででカスタムエージェントの作り方の流れはわかったかと思います。
これからは自分なりにエージェントをカスタマイズする方法を紹介します。
まずカスタムエージェントの設定ファイルを確認
次のコマンドでカスタムエージェントの設定ファイルを確認します。
$ vi ~/.aws/amazonq/cli-agents/my-agent.json
※設定ファイルを作業ディレクトリの.amazonq/cli-agents/{agent-name}.json
などに作成した方はファイルパスを適宜修正ください
カスタムエージェントを作成した際にも表示されたjsonが表示されます。
この値をカスタマイズすることで自分だけのカスタムエージェントが作成できます。
{
"$schema": "https://raw.githubusercontent.com/aws/amazon-q-developer-cli/refs/heads/main/schemas/agent-v1.json",
"name": "my-agent",
"description": "",
"prompt": null,
"mcpServers": {},
"tools": [
"*"
],
"toolAliases": {},
"allowedTools": [],
"resources": [
"file://AmazonQ.md",
"file://AGENTS.md",
"file://README.md",
"file://.amazonq/rules/**/*.md"
],
"hooks": {},
"toolsSettings": {},
"useLegacyMcpJson": true,
"model": null
}
カスタムエージェント設定ファイルで設定できる項目一覧
この次に自分なりにカスタマイズした設定ファイルをお見せします。
ただ、どのような項目か理解していないと設定内容が理解できないかと思いますので、設定できる項目とその説明、値の例などを表形式で記載していますので一度目を通してください。
※下の表はhttps://github.com/aws/amazon-q-developer-cli/blob/main/docs/agent-format.mdをCLAUDEに読ませて表を作成してもらっています。自分でも一応目は通しています。
主にprompt
などでどのような振る舞いをするか決まってくると思いますが、先ほどの設定ファイルではnull
になっていたため特に特徴のない回答をしていました。
項目名 | 必須 | データ型 | 説明 | 設定例 |
---|---|---|---|---|
name |
× | string | エージェントの名前(未指定の場合はファイル名から自動取得) | "aws-expert" |
description |
× | string | エージェントの説明文(人間が読むため) | "An agent specialized for AWS infrastructure tasks" |
prompt |
× | string | エージェントへの高レベルな文脈提供(システムプロンプトに相当) | "You are an expert AWS infrastructure specialist" |
mcpServers |
× | object | エージェントがアクセス可能なModel Context Protocol(MCP)サーバーの定義 | {"aws-docs": {"command": "uvx", "args": ["awslabs.aws-documentation-mcp-server@latest"]}}<br> |
tools |
× | array | エージェントが使用可能なツールのリスト | ["fs_read", "fs_write", "@git", "*"] |
toolAliases |
× | object | ツール名の再マッピング(名前の衝突解決用) | {"@github-mcp/get_issues": "github_issues"} |
allowedTools |
× | array | ユーザーの許可なしに使用可能なツール | ["fs_read", "fs_*", "@git/git_status"] |
toolsSettings |
× | object | 特定ツールの設定オプション | {"fs_write": {"allowedPaths": ["~/**"]}} |
resources |
× | array | エージェントがアクセス可能なローカルリソース | ["file://README.md", "file://.amazonq/rules/**/*.md"] |
hooks |
× | object | 特定のトリガーポイントで実行されるコマンド | {"agentSpawn": [{"command": "find . -name '*.md'", "description": "レビュー対象ファイルの確認"}]} |
useLegacyMcpJson |
× | boolean | レガシーMCP設定ファイルを含めるかどうか | true |
model |
× | string | このエージェントで使用するモデルID | "claude-sonnet-4" |
カスタマイズした設定ファイルでカスタムエージェントを作成する
これまで説明した内容を踏まえて設定ファイルをカスタマイズしたので、自分なりのカスタムエージェントを作成します。
私のAWSアカウントにLambda・DynamoDB・S3があるので、そのリソースを管理してもらうaws-management
というカスタムエージェントを作ることにします。
次のコマンドを実行します。
/agent create --name aws-management
今回設定した設定ファイルは以下です。
※詳細な説明を記載したファイルはこちらに記載しています。(Claudeに手伝ってもらいました)
{
// エージェント名(ファイル名と同じ場合は省略可能だが明示的に指定)
"name": "aws-management",
// エージェントの説明(人間が読むための情報)
"description": "A specialized agent for AWS and Rust development tasks",
// システムプロンプト:エージェントの役割と責任を定義
// ap-northeast-1リージョンに特化したAWSアカウント管理者として動作
"prompt": "あなたはAWSアカウントの管理者です。Lambda・DynamoDB・S3がap-northeast-1にあるのでそのリソースについて管理する役割があります。",
// Model Context Protocol (MCP) サーバーの設定
"mcpServers": {
// AWS公式ドキュメントにアクセスするためのMCPサーバー
"aws-docs": {
// uvx: Python package runner(pipx の後継)を使用
"command": "uvx",
// AWS Labs公式のDocumentation MCPサーバーの最新版を実行
"args": ["awslabs.aws-documentation-mcp-server@latest"]
}
},
// エージェントが利用可能な全ツールのリスト
"tools": [
// ファイル読み込みツール
"fs_read",
// ファイル書き込みツール(toolsSettingsで制限設定あり)
"fs_write",
// Bashコマンド実行ツール
"execute_bash",
// AWS CLI実行ツール(toolsSettingsで制限設定あり)
"use_aws",
// AWS Documentation MCPサーバーの全ツールを利用可能にする
"@aws-docs"
],
// ツール名のエイリアス設定(名前の衝突解決や短縮名作成用)
// 現在は使用していないが、将来の拡張のために残している
"toolAliases": {},
// ユーザーの明示的な許可なしに自動実行可能なツール
"allowedTools": [
// ファイル読み込みは常に安全なので自動実行を許可
"fs_read",
// AWS公式ドキュメント検索は情報取得のみなので自動実行を許可
"@aws-docs"
],
// 各ツールの詳細設定とセキュリティ制限
"toolsSettings": {
// ファイル書き込みツールの制限設定
"fs_write": {
// 書き込み可能なパスを制限(セキュリティのため)
"allowedPaths": [
"docs/**", // docsディレクトリとその配下の全ファイル
"*.md", // ルートディレクトリのMarkdownファイル
"src/**" // srcディレクトリとその配下の全ファイル
]
},
// AWS CLI実行ツールの制限設定
"use_aws": {
// 操作可能なAWSサービスを制限(セキュリティのため)
"allowedServices": [
"s3api", // Amazon S3 - オブジェクトストレージサービス
"lambda", // AWS Lambda - サーバーレス関数実行サービス
"dynamodb", // Amazon DynamoDB - NoSQLデータベースサービス
"iam" // AWS IAM - 権限・アクセス管理サービス
]
}
},
// エージェントがアクセス可能なローカルリソース
"resources": [
// プロジェクトのREADMEファイル
"file://README.md",
// docsディレクトリ配下の全Markdownファイル
"file://docs/**/*.md"
],
// 特定のタイミングで自動実行されるコマンドフック
// 現在は使用していないが、将来の拡張のために残している
"hooks": {},
// レガシーMCP設定ファイルの併用設定
// true: ~/.aws/amazonq/mcp.json や .amazonq/mcp.json も読み込む
"useLegacyMcpJson": true,
// 使用するAIモデルの指定
"model": "claude-sonnet-4"
}
{
"name": "aws-management",
"description": "A specialized agent for AWS and Rust development tasks",
"prompt": "あなたはAWSアカウントの管理者です。Lambda・DynamoDB・S3がap-northeast-1にあるのでそのリソースについて管理する役割があります。",
"mcpServers": {
"aws-docs": {
"command": "uvx",
"args": ["awslabs.aws-documentation-mcp-server@latest"]
}
},
"tools": [
"fs_read",
"fs_write",
"execute_bash",
"use_aws",
"@aws-docs"
],
"toolAliases": {},
"allowedTools": [
"fs_read",
"@aws-docs"
],
"toolsSettings": {
"fs_write": {
"allowedPaths": ["docs/**", "*.md", "src/**"]
},
"use_aws": {
"allowedServices": ["s3api", "lambda", "dynamodb", "iam"]
}
},
"resources": [
"file://README.md",
"file://docs/**/*.md"
],
"hooks": {},
"useLegacyMcpJson": true,
"model": "claude-sonnet-4"
}
次ようにagentの作成に成功していればOKです。
設定ファイルカスタマイズ済のカスタムエージェントを使用する
次のコマンドでカスタムエージェントを呼び出します。(キャプチャは$ AWS_PROFILE=oyaなどついていますが皆さんは不要です)
$ q chat --agent aws-management
「あなたは何をするエージェントですか?」と聞いてみます。
今回はprompt
に記載した内容を理解してAWSアカウントの管理者として振る舞うように理解してくれています。(prompt
をnull
にした場合は一般的なAmazon Q Developer CLIの回答が返ってきました)
カスタムエージェントを使用してAWSリソース調査
AWSアカウントの調査もしてくれます。まずはLambdaとDynamoDBのことを聞いてみます。
次の場合にUsing tool: use_aws (trusted)
となっているのは、設定ファイルのallowedTools
にLambdaとDynamoDBが含まれているからです。
次にLambdaとEC2のことを聞いてみます。
次の場合は、LambdaはallowedTools
に含まれているが、EC2は含まれていないためにEC2のみ承認を求められます。
aws documentation mcpの利用もallowedTools
に入れているので調査を自動で進めてくれます。
このような形でカスタムエージェント機能を活用していくことでより調査が便利で安全に進められます。
基本的な使い方は問題ないかと思うので今回設定したファイルの後片付けをします。
後片付け
これまでの手順に沿って実施した場合は次のコマンドで設定ファイルを削除できます。
$ rm ~/.aws/amazonq/cli-agents/my-agent.json
$ rm ~/.aws/amazonq/cli-agents/aws-management.json
おわりに
Amazon Q Developer CLIのカスタムエージェント機能を使用して特定の仕事や調査に特化したエージェントが簡単に作ることができることがわかりました。
実行してほしくないコマンドや自動実行して進めてほしいコマンドなど環境によって様々あるかと思いますが、このカスタムエージェント機能を利用することで、安全かつ効率的に業務を進められると思います。
皆さんもカスタムエージェントを使ってより楽に仕事を進めましょう!ご覧いただきありがとうございました!
参考
AWSドキュメントよりGithubの方がわかりやすく充実している気がしています(2025年9月26日時点筆者主観)
https://github.com/aws/amazon-q-developer-cli/blob/main/docs/agent-format.md
https://github.com/aws/amazon-q-developer-cli/blob/main/docs/built-in-tools.md
https://docs.aws.amazon.com/ja_jp/amazonq/latest/qdeveloper-ug/command-line-custom-agents.html