何を解決するサービスか
一言で: 「本番AIエージェントに必要なインフラを全部Anthropicがホストしてくれるサービス」
エージェントを本番運用するには、サンドボックス実行環境・状態管理・クレデンシャル管理・スコープ付き権限・エンドツーエンドのトレーシングなど、数ヶ月分のインフラ構築が必要になる。Managed Agentsはこれを丸ごと引き受けて、ユーザーは「エージェントのロジック」だけに集中できるようにする。
2026年4月8日にパブリックベータとして発表された。
具体的な利用イメージ
例: セキュリティアラート分析エージェント
GuardDutyが不審なAPI呼び出しを検知した。このアラートを受けて自動で調査し、レポートを出すエージェントを作りたいとする。
自前で構築する場合(従来):
- Lambda or ECSでエージェントの実行環境を作る
- Claude APIを呼ぶエージェントループを自前実装(リトライ、タイムアウト、コンテキスト管理…)
- エージェントがaws cliやpythonスクリプトを実行するためのサンドボックスを構築
- AWSクレデンシャルの安全な受け渡し機構を実装
- エージェントの実行ログ・トレーシングを仕込む
- 途中で落ちた場合の復旧処理を書く
→ 数ヶ月のインフラ構築
Managed Agentsを使う場合:
# 1. エージェントを定義(1回だけ)
agent = client.beta.agents.create(
name="Security Analyst",
model="claude-sonnet-4-6",
system="""あなたはAWSセキュリティアナリストです。
アラートを受け取ったら以下の手順で調査してください:
1. CloudTrailログを分析し、不審なAPI呼び出しの詳細を特定
2. 関連するIAMユーザー/ロールのアクティビティを確認
3. 影響範囲を評価
4. 調査結果をMarkdownレポートとしてまとめる""",
tools=[
{"type": "agent_toolset_20260401"}, # bash, ファイル操作等
{"type": "custom", "name": "send_slack", # Slack通知(自前実行)
"description": "Slackチャンネルにメッセージを送信",
"input_schema": {...}},
],
)
# 2. 実行環境を定義(aws cli入り)
environment = client.beta.environments.create(
name="security-env",
config={"type": "cloud", "networking": {"type": "unrestricted"}},
)
# 3. アラートが来たらセッションを起動
session = client.beta.sessions.create(agent=agent.id, environment_id=environment.id)
# 4. アラート内容を渡す → あとはエージェントが自律的に調査
client.beta.sessions.events.send(session.id, events=[{
"type": "user.message",
"content": [{"type": "text", "text": f"以下のGuardDutyアラートを調査してください:\n{alert_json}"}],
}])
エージェントはコンテナ内でaws cliを実行し、CloudTrailを検索し、Pythonでログを集計し、Markdownレポートを生成する。すべてAnthropicのインフラ上で動く。コンテナが落ちてもセッションログから自動復旧する。
→ 数日でデプロイ可能
自前構築との比較
| 観点 | 自前構築 | Managed Agents |
|---|---|---|
| エージェントループ | 自分でリトライ・分岐・エラー処理を実装 | Anthropicが提供。ツール呼び出しの判断はClaude任せ |
| 実行環境 | EC2/ECS/Lambdaを構築・運用 | APIで定義するだけ。コンテナはオンデマンド起動 |
| クレデンシャル | Secrets Managerから取得する仕組みを実装 | Vault-proxiedで自動管理。サンドボックスに漏れない |
| 障害回復 | 自前でチェックポイント・リトライ実装 | セッションログから自動復旧 |
| 監視 | CloudWatch等を自前で仕込む | Claude Consoleで全ツール呼び出し・判断を確認可能 |
| スケーリング | Auto Scaling設定 | 自動。同時セッション数に応じてスケール |
要するに、EC2で自分でサーバーを立てるか、Fargateに任せるかの違いに近い。エージェントのロジック(システムプロンプト + ツール定義)だけ書けば、あとはAnthropicが全部やってくれる。
アーキテクチャ — 「脳と手の分離」
Anthropicのエンジニアリングブログで詳述されている設計思想で、ここが技術的に一番面白い部分。
3コンポーネント分離
| コンポーネント | 役割 | AWSで例えると |
|---|---|---|
| Brain(脳) | Claude + ハーネス(エージェントループ) | コントロールプレーン |
| Hands(手) | サンドボックスコンテナ(コード実行・ファイル操作) | データプレーン(ワーカーノード) |
| Session(セッション) | 永続的なappend-onlyイベントログ | CloudWatch Logsのようなイミュータブルログ |
核心は、ハーネスがコンテナの中で動かないこと。ハーネスは実行環境を execute(name, input) → string という統一インターフェースでツールとして呼ぶ。つまりコンテナはCattle(使い捨て)であってPet(手塩にかけるサーバー)ではない。
コンテナのオンデマンドプロビジョニング
コンテナはセッション開始時に事前起動するのではなく、provision({resources}) 呼び出しで必要になった時点で初期化される。これにより、推論(Brain側)はコンテナの起動を待たずに開始できる。
実測値:
- p50で約60%のTTFT(最初のトークンまでの時間)改善
- p95で90%以上の改善
障害回復
EC2のAuto Recoveryと似た発想で、ステートをインスタンス外(セッションログ)に持っているから、どのコンポーネントが死んでも復旧できる。
- コンテナ障害 → ハーネスがエラーをキャッチしてClaudeにリトライ判断させる
- ハーネス障害 → 新しいステートレスなハーネスが
wake(sessionId)でセッションログから復旧 - 相互依存なし → 各コンポーネントが独立して落ちても連鎖障害にならない
セキュリティ — クレデンシャルがサンドボックスに渡らない
2つのパターンで実現している:
- Resource-bundled auth — リポジトリトークンはGitリモートの初期化時にセットアップ。Claudeは
push/pullを叩くだけでトークンを直接扱わない - Vault-proxied — OAuthトークンは外部Vaultに保管。プロキシ経由でサーバーサイドがクレデンシャルを取得
IAMロールをEC2に割り当てるのと同じ考え方で、実行環境にクレデンシャルを置かず、インフラ側が仲介する。
4つの核心概念
| 概念 | 説明 |
|---|---|
| Agent | モデル + システムプロンプト + ツール + MCPサーバー + スキル。一度定義してIDで使い回す |
| Environment | コンテナテンプレート。パッケージ(Python, Node, Go等)・ネットワークアクセスルール・マウントファイル |
| Session | AgentとEnvironmentを組み合わせた実行インスタンス。タスク遂行の単位 |
| Events | アプリとエージェント間のメッセージ(ユーザーターン、ツール結果、ステータス更新)。SSEでストリーム |
ビルトインツール
agent_toolset_20260401 を指定すると全ツールが有効になる。個別にON/OFFも可能。
| ツール | 名前 | 内容 |
|---|---|---|
| Bash | bash | シェルコマンド実行 |
| Read | read | ファイル読み取り |
| Write | write | ファイル書き込み |
| Edit | edit | 文字列置換編集 |
| Glob | glob | ファイルパターンマッチング |
| Grep | grep | 正規表現テキスト検索 |
| Web fetch | web_fetch | URL内容取得 |
| Web search | web_search | Web検索 |
カスタムツールも定義可能。JSONスキーマでインターフェースを定義し、実行はアプリ側が担当して結果をイベントで返す。MCPサーバーの接続にも対応(Streamable HTTP推奨)。
APIの使い方(Python SDK)
from anthropic import Anthropic
client = Anthropic()
# 1. Agent定義
agent = client.beta.agents.create(
name="Coding Assistant",
model="claude-sonnet-4-6",
system="You are a helpful coding assistant.",
tools=[{"type": "agent_toolset_20260401"}],
)
# 2. Environment定義
environment = client.beta.environments.create(
name="quickstart-env",
config={"type": "cloud", "networking": {"type": "unrestricted"}},
)
# 3. Session開始
session = client.beta.sessions.create(
agent=agent.id,
environment_id=environment.id,
)
# 4. メッセージ送信 + SSEストリーム
with client.beta.sessions.events.stream(session.id) as stream:
client.beta.sessions.events.send(session.id, events=[{
"type": "user.message",
"content": [{"type": "text", "text": "Fibonacci計算スクリプトを作って"}],
}])
for event in stream:
match event.type:
case "agent.message":
for block in event.content:
print(block.text, end="")
case "agent.tool_use":
print(f"\n[Using tool: {event.name}]")
case "session.status_idle":
print("\n\nAgent finished.")
break
CLIツール(ant)も提供されており、YAML定義でエージェントを作成できる:
ant beta:agents create <<'YAML'
name: Coding Assistant
model: claude-sonnet-4-6
tools:
- type: agent_toolset_20260401
configs:
- name: web_fetch
enabled: false
YAML
ベータヘッダー managed-agents-2026-04-01 が必須(SDKは自動付与)。
料金体系
| 項目 | 料金 |
|---|---|
| トークン使用量 | 通常のAPI料金 |
| セッション実行時間 | $0.08/セッション時間(アクティブ時間のみ。待機中は課金なし) |
| Web検索 | $10/1,000検索 |
Anthropicの3つのエージェント提供形態の比較
| Messages API | Agent SDK | Managed Agents | |
|---|---|---|---|
| 何か | 直接モデル呼び出し | 自前でエージェントループを組むフレームワーク | フルマネージドエージェントハーネス |
| 向いている用途 | カスタムループ、細かい制御 | 自社インフラで動かしたい場合 | 長時間実行、非同期タスク |
| インフラ管理 | 全部自前 | 全部自前 | Anthropicが全部やる |
| AWSで例えると | EC2(自分で全部組む) | ECS(コンテナオーケストレーション自前) | Lambda/Fargate(インフラ抽象化) |
早期採用企業
| 企業 | 活用方法 |
|---|---|
| Notion | ワークスペース内でタスク委譲。エンジニアはコード、ナレッジワーカーはWebサイト・プレゼンを並列生成 |
| Rakuten | 製品・営業・マーケ・経理・HRのエージェントをSlack/Teams連携で展開。1エージェントあたり1週間でデプロイ |
| Asana | AI Teammates(プロジェクト内で人間と協働するエージェント)を構築 |
| Sentry | デバッグエージェント + パッチ作成エージェントを連携。バグ検知→PRまでの期間を大幅短縮 |
| Vibecode | AI-nativeアプリデプロイのインフラ。セットアップ時間10倍短縮 |
Research Preview機能(アクセス申請が必要)
- Multi-agent — エージェントが別のエージェントをスポーンする
- Outcomes — 自己評価して目標達成度を測定・反復する
- Memory — セッション間で記憶を保持する