
- Claude CodeをAgentCore runtimeの分離セッションで実行し、結果をGitHubのプルリクエストとして返す
- モデル呼び出しはAmazon Bedrockのプライベートエンドポイント経由で、ローカル実行と同じ統制を維持する
- Guardrailsによるプロンプト検査は投入時のみで、リポジトリ由来のプロンプトインジェクションは対象外
発表の内容
AWSはブログで、Claude Codeをリモートエージェントとして動かすサンプル実装「sample-remote-coding-agent」を紹介しました。開発者はコーディングのタスクを投入してノートPCを閉じ、後から結果を受け取れます。結果はGitHubのプルリクエストとして返り、内容を確認してマージするのは人間です。エージェント自身がマージすることはありません。
実行場所は顧客自身のAWSアカウント内です。各タスクはAmazon Bedrock AgentCoreの「AgentCore runtime」上で、独立したセッションとして動きます。モデル呼び出しはすべてAmazon Bedrockに向かうため、ローカルでClaude Codeを使う場合と同じデータ管理の枠組みが適用されると記事は説明しています。
AWSがAmazon BedrockをClaude Codeのモデルプロバイダとして選ぶ理由としては、既存のAWSアカウントでの請求、AWS CloudTrailによる監査ログ、データレジデンシー向けの地理的推論プロファイルが挙げられています。加えて、モデルの学習にコンテンツを使わないことや、IAMの一時認証情報、AWS PrivateLinkによるプライベート接続といった特性も示されています。
タスク処理の流れ
投入の経路は2つあります。Claude Codeから使う場合、プラグイン「sample-rca」がローカルのMCPサーバを起動し、AWS認証情報で署名したうえでIAM認可のAmazon API Gateway HTTP APIを呼びます。Webコンソールを使う場合は、Amazon CloudFrontが配信し、Amazon CognitoでサインインしたうえでCognito認可のAPIを呼ぶ構成です。
受け付けたタスクは、AWS LambdaがAmazon Bedrock Guardrailsでプロンプトを検査した後、Amazon DynamoDBに記録され、Amazon SQSのキューに積まれます。ディスパッチャが、リポジトリごとに用意されたAgentCore runtimeのセッションを1つ起動します。コンテナイメージはAmazon ECRに格納され、Claude Code CLI、Claude Agent SDK、git、makeが含まれます。
セッション内では、AgentCore Identityから取得したGitHubトークンでリポジトリをcloneし、AgentCore memoryから過去のタスクで得た知見を検索します。計画はClaude Opus、実装はClaude Sonnetが担当し、リポジトリ自身のセットアップコマンドとテストコマンドを実行します。レビューもClaude Opusが行い、差し戻しを含めて最大3回まで試行します。
最後に agent/<taskId> ブランチをpushし、検証コマンドと終了コード、試行回数を記録したプルリクエストを作成します。検証が通らなかった場合はドラフトとして開かれます。各ステップの状況はDynamoDBに記録され、投入後もClaude Codeやコンソールから進捗を追えます。
セキュリティ制御
モデル呼び出しは各セッションでAmazon Bedrockのみをプロバイダとし、プライベートなエンドポイント経由でruntimeのIAM実行ロールにより署名されます。コンテナ内に他のAWS認証情報は置かれません。タスクごとに新しいmicroVMが割り当てられ、セッション終了時にメモリはサニタイズされると説明されています。
GitHubの認証情報は長期間保持しません。ContentsとPull requestsの読み書き権限を持つGitHub Appを1つ作り、AgentCore Identityに登録します。クライアントシークレットはトークンボールトに保管され、各コンテナは8時間で失効し自動更新されるuser-to-serverトークンを受け取ります。コミットの作成者はAppのbotアカウントになります。
ネットワークはVPCのプライベートサブネット内に閉じ、AWSサービスへはVPCエンドポイントで接続します。インターネットへの経路はGitHubとパッケージレジストリ向けのNATゲートウェイのみで、セキュリティグループはアウトバウンドHTTPSだけを許可します。さらにRoute 53 Resolver DNS Firewallで api.anthropic.com などモデルベンダーのドメインを拒否します。IAMロールはAnthropicモデルの呼び出し、自リポジトリのレコードとメモリの読み書き、自イメージのpullに限定され、AgentCore Identityのコントロールプレーンは明示的に拒否されます。
制約と注意点
プロンプトの検査はタスク投入時に行われ、実行中にエージェントが読む内容までは対象になりません。そのため、リポジトリ内のファイルやコマンドの出力を通じて持ち込まれるプロンプトインジェクションは検出できません。記事は、すべてのモデル呼び出しを検査するとコンテキスト全体を毎回評価することになり、テキスト量に応じて課金され、Claude Code自身のシステムプロンプトをインジェクションと誤判定する可能性があると説明しています。
DNS Firewallは拒否リスト方式のため、列挙していないHTTPS通信までは止められません。記事は本番用途ではAWS Network Firewallのドメイン許可リストの利用を検討するよう勧めています。また、エージェントはリポジトリのコマンドをそのまま実行するため信頼できないコードには向かず、オープンエンドな作業も3回の試行で打ち切られるため適さないと明記されています。
対応リージョンはAgentCore runtime V2を提供する範囲で、米国東部(バージニア北部、オハイオ)、米国西部(オレゴン)、アジアパシフィック(東京)、欧州(アイルランド)です。デプロイには15〜25分、リポジトリ登録にはさらに8〜12分かかるとされています。Docker上で約1.3GBのARM64イメージをビルドする必要があり、Python 3.11以降、uv、Node.js 22.12以降も前提です。
| 観点 | ローカル実行 | リモートエージェント実行 |
|---|---|---|
| 実行環境 | 自分のノートPC | AWSアカウント内のAgentCore runtimeセッション |
| 並行実行 | 1台のマシンをタスクで取り合う | 複数タスクを同時に走らせられる |
| 実行中の関与 | その場で指示や修正ができる | タスク実行中にできる指示は減る |
The guardrail screens what you type, not what the agent reads during a run, so it doesn't see prompt injection that arrives through repository files or command output.
ガードレールが検査するのは入力されたプロンプトであり、実行中にエージェントが読む内容ではありません。そのため、リポジトリ内のファイルやコマンドの出力を通じて持ち込まれるプロンプトインジェクションは検出できません。
今後の見通し
今回のサンプルはあくまでリファレンス実装で、そのまま本番運用に投入するものではないとみられます。記事自身も、本番ではAWS Network Firewallのドメイン許可リストやブランチ保護の有効化を検討するよう促しています。今後は、実行中に読み込まれるリポジトリ内容やコマンド出力に対する検査をどう設計するかが実用上の焦点になりそうです。導入判断には、AgentCore runtimeやAmazon Bedrock、NATゲートウェイなどを含めた実際のコストと、東京リージョンでのモデル提供状況が明らかになる必要があります。
日本の開発者・IT企業にとっての意味
コーディングエージェントの運用を「各開発者のPC上のツール」から「AWSアカウント内の統制された基盤」へ移せる点が、日本のIT企業にとっての意味です。モデル呼び出しがAmazon Bedrock経由になるため、CloudTrailの監査ログ、IAMによる権限制御、AWS PrivateLinkによる閉域接続といった既存の統制にそのまま乗せられます。金融や公共など統制要件の厳しい案件でも、コーディングエージェントの導入検討がしやすくなる可能性があります。東京リージョンが対応リストに入っていることも、データの国内処理やレイテンシの観点で選択肢になります。一方、プロンプト検査は投入時点に限られ、リポジトリ由来のプロンプトインジェクションは別途対策が必要です。信頼できないコードを扱う用途には現状向きません。サンプルはリファレンス実装であり、本番投入にはネットワーク許可リストやブランチ保護を含む運用設計が前提になります。
気になる点
- 東京リージョンでも使えますか
- 記事はAgentCore runtime V2を提供するリージョンとして米国東部(バージニア北部、オハイオ)、米国西部(オレゴン)、アジアパシフィック(東京)、欧州(アイルランド)を挙げており、東京は含まれます。ただし利用するモデルのリージョン別提供状況は別途確認が必要で、記事はAmazon Bedrockの「Supported models by AWS Region」を参照するよう案内しています。
- 料金はどれくらいかかりますか
- 記事に具体的な金額の記載はありません。構成要素はAgentCore runtimeのセッション、Amazon Bedrockのモデル呼び出し、Lambda、DynamoDB、SQS、API Gateway、CloudFront、Cognito、ECR、NATゲートウェイなど多岐にわたります。記事はリモート実行のトレードオフとして「コストを予測しにくい」点に言及するにとどめています。
- 既存のClaude Code環境から移行できますか
- Claude Code側はプラグイン「sample-rca」がローカルMCPサーバを起動してAPIに投入する形のため、手元のClaude Codeから利用できます。ただしAWSアカウント、Docker、Python 3.11以降、uv、Node.js 22.12以降が必要で、スタックのデプロイに15〜25分、リポジトリ登録に8〜12分かかるとされています。
用語解説
- AgentCore runtime
- Amazon Bedrock AgentCoreの機能。エージェントの各セッションを分離されたmicroVM上で実行する基盤。
- microVM
- CPU・メモリ・ファイルシステムが分離された軽量仮想マシン。セッション終了時にメモリがサニタイズされる。
- MCP
- Model Context Protocol。モデルに外部ツールを渡すためのプロトコルで、ここではローカルサーバとして動作する。
- Amazon Bedrock Guardrails
- プロンプトや応答を検査し、不適切な内容やシークレットをブロックする機能。ApplyGuardrail APIで単体利用できる。
- 3LO
- three-legged OAuth。ユーザー・アプリ・認可サーバーの三者間で行うOAuthの認可フロー。
- Route 53 Resolver DNS Firewall
- VPC内のDNS問い合わせをフィルタリングするサービス。ドメインの拒否リストや許可リストを設定できる。
出典
Extend Claude Code to remote sessions on Amazon Bedrock AgentCore with security controls
AI導入も顧問も、お任せください
何から手をつけるか、どこまでAIに任せるか。自社の業務に合わせて整理し、導入から運用まで伴走します。相談だけでも構いません。
AI導入について相談する