Managed Agentsのデプロイメントを保護する
エージェントがアクセスできる範囲と実行できる操作を制限する設定を、重要度の高い順に紹介します。
このガイドでは、Claude Managed Agents上のエージェントがアクセスできる範囲と実行できる操作を制限する設定を、重要度の高い順に紹介します。各セクションには、その設定を詳しく説明しているページへのリンクがあります。
| セクション | 設定または判断事項 | 推奨 |
|---|---|---|
| エージェントの実行場所を選択する | クラウドまたはセルフホスト型サンドボックス | ツールを自社で管理するインフラストラクチャ上で実行する必要がない限り、クラウド |
| ネットワークを制限する | 環境のnetworking.type | limitedとし、エージェントが必要とするホストのみを指定 |
| 認証情報をボールトに保管する | 各環境変数の認証情報のinjection_locationとnetworking | リクエストヘッダーのみとし、limitedネットワーキングでそのキーの対象ホストのみを指定 |
| Web検索とWebフェッチを制限する | 各Webツールのallowed_domains | 各ツールに許可リストを設定。web_fetchでは、エージェントが必要とするサイトのみを指定。web_searchでは、結果を取得したいサイトを指定 |
| リスクのある操作を承認する | 各ツールのpermission_policy | bash、write、edit、web_fetch、およびデータの読み取りのみを行うMCPツールにはauto。サンドボックス外での変更を元に戻せないツールや、中継されたエンドユーザーのテキストだけで実行されるべきでないツールには、代わりにalways_ask |
| エージェントに最小限のツールセットを与える | エージェントツールセットのdefault_config.enabled | falseとし、エージェントが必要とするツールを有効化 |
| 信頼できない入力を強力なツールから遠ざける | 信頼できない入力を読み取るときにエージェントが保持するツールと認証情報 | 信頼できない入力を読み取るエージェントには、ファイルの書き込み、コマンドの実行、レコードの変更を行うツールをalways_allowで持たせない |
| 制限と停止手段を設定する | 各セッションとデプロイメントのbudget | 1回の実行で想定されるコストに見合った上限 |
| 必要に応じて、オフラインレビュアーにすべてのトランスクリプトを読ませる | 各セッションのイベントを読み取る、自社で実行するオフラインレビュージョブ | 任意。アイドル状態になった、または終了した各セッションを定期的にレビュー |
| セッションの監視と保持期間の確認 | Webhookとセッションの削除 | セッションがアイドル状態になったとき、予算に達したとき、または終了したときのアラートと、アイドル状態になった理由の確認。保持したいイベントは自社のログに保存し、不要になったセッションは削除 |
セキュリティリスクとサンドボックスの境界では、これらの設定が重要である理由と、これらの設定では防げないことを説明しています。セッションのレビューと監視については、エージェントセッションのレビューと監視を参照してください。
エージェントの実行場所を選択する
エージェントのツールがどこで実行されるかによって、サンドボックスを保護する主体が決まります。クラウド環境の場合はAnthropic、セルフホスト型サンドボックスの場合はお客様自身です。どちらを選ぶか、またそれぞれの場合に何がAnthropicに届くかについては、エージェント環境の選択を参照してください。
セルフホスト型サンドボックスを使用する場合は、次の4点に留意してください。
- ネットワーク: ネットワークを制限するはクラウド環境に適用されます。セルフホスト型サンドボックスの場合は、自社のファイアウォールでそのトラフィックに同等の制限を設定してください。ファイアウォールはエージェントが宣言するMCPサーバーを制限しないため、それらのサーバーと、アプリケーションがセッションに設定するサーバーを確認してください。
- Webツール: WebツールはAnthropicのサーバー上で実行されるため、ファイアウォールでは制限されません。ドメインリストで制限してください。Web検索とWebフェッチを制限するを参照してください。
- 認証情報: 環境変数の認証情報は、セルフホスト型サンドボックスではまだサポートされていません。
- 分離とハードニング: どちらもお客様の責任です。セキュリティモデルを参照してください。
どちらの選択肢でも、Managed Agentsのコンプライアンス対象範囲や、セッション履歴の保持期間は変わりません。セッションの監視と保持期間の確認を参照してください。
ネットワークを制限する
networking.typeをlimitedに設定し、エージェントが必要とするホストのみをallowed_hostsに指定してください。networkingを省略した環境作成リクエストはunrestrictedになる可能性があるため、すべての作成リクエストでnetworkingを設定してください。無制限ネットワーキングのリスクを参照してください。
アタッチしたファイル、メモリストア、GitHubリポジトリは、allowed_hostsに関係なくエージェントから引き続き利用できます。
このページの例では、サポートエージェントを使用します。このエージェントは顧客のチケットを読み、注文を検索し、ヘルプセンターを読んで、返信の下書きを作成します。注文の検索はアプリケーションが実行し、ホストを必要としないため、この環境ではweb_fetch用にヘルプセンターという1つのホストのみを許可しています。
ant apply environment.yaml# yaml-language-server: $schema=https://platform.claude.com/schemas/ant/beta/environment.json
name: support-agent
config:
type: cloud
networking:
type: limited
allowed_hosts:
- help.example.comlimited環境には3つのネットワーキング設定があります。
| 設定 | サンドボックス内のコードに開放されるもの | 推奨 |
|---|---|---|
allowed_hosts | 指定したホスト(あらゆるリクエストに対して) | エージェントが必要とするホストのみ。自社で運用している、または信頼している各MCPサーバーのホストを含む |
allow_package_managers | パッケージマネージャーのホスト。これにはgithub.com、gitlab.com、bitbucket.org上のすべてのリポジトリとパスが含まれます。これらは誰でもコンテンツを公開でき、サンドボックス内のコードがファイルをアップロードできる場所です | false。ただし、環境のpackages設定にパッケージが指定されている場合はtrueが必要です。エージェントが実行中にパッケージをインストールする場合は、代わりに必要なレジストリホストのみをallowed_hostsに指定してください |
allow_mcp_servers | ホストなし。Managed AgentsはAnthropicのサーバーからMCPサーバーに接続します | falseとし、自社で運用している、または信頼している各MCPサーバーのホストをallowed_hostsに指定 |
allow_package_managersとallow_mcp_serversの設定は、Web検索とWebフェッチ用のホストを追加しません。
allow_mcp_serversはデフォルトのオフのままにし、自社で運用している、または信頼している各MCPサーバーのホストをallowed_hostsに指定してください。指定した各ホストは、サンドボックス内のコードにも開放されます。allow_mcp_serversがオフの場合、MCPサーバーのホストが指定されていなければ、セッション作成時のチェックでリクエストが拒否されます。セッション作成時に認証情報を提供するを参照してください。セッションの更新でmcp_serversが変更される場合も、同じチェックが実行されます。
allowed_hostsのホストを選ぶ際は、次の2つのルールに従ってください。
- 自社で運用している、または信頼しているホストのみを指定する。
*.ワイルドカードや、誰でもコンテンツを公開できる共有ホスティングドメインを避ける。
エージェントがbashを保持する場合は、リスクのある操作を承認するの説明に従ってbashツールの権限ポリシーを設定してください。
すべてのネットワーキング設定については、クラウド環境のセットアップを参照してください。
認証情報をボールトに保管する
すべてのシークレットをボールトに保管してください。各環境変数の認証情報について、注入場所をリクエストヘッダーのみに設定し、そのシークレットの対象ホストのみを指定してください。サンドボックス内のコードには、シークレットの代わりにプレースホルダーが見えます。Managed Agentsは、認証情報が許可するホストへの送信HTTPSリクエストでのみ、実際のシークレットに置き換えます。そのため、リクエストヘッダーをエコーするエンドポイントのようにサービスがシークレットを送り返さない限り、シークレットはモデルから直接アクセスできない状態に保たれます。認証情報のnetworkingがunrestrictedの場合、Managed Agentsは、環境がサンドボックスに到達を許可するあらゆるホストへのリクエストで実際のシークレットに置き換えます。ボールトを使用するには、セッションまたはデプロイメントの作成時に、そのIDをvault_idsに渡してください。
| 設定 | 設定値 | 理由 | できないこと |
|---|---|---|---|
injection_location | サービスがヘッダーからキーを読み取ることを確認した上で、{"header": true, "body": false} | リクエストボディはエージェントが読むコンテンツから構築されることが多いため、ボディ内のキーはより露出しやすくなります。両方のフィールドを指定してください。オブジェクトを省略した作成リクエストでは両方の場所が有効になり、更新では送信したフィールドのみが変更されます | コードは、認証情報が許可するすべてのホストで引き続きキーを使用できます。ボディにキーがあることを想定するサービスはプレースホルダーを受け取り、リクエストを拒否します |
認証情報のnetworking | limitedとし、そのキーの対象となる正確なホストを指定 | レスポンスは編集されずにサンドボックスに届くため、ワイルドカード、共有ホスティングドメイン、リクエストヘッダーをエコーするホストは避けてください | ホストを開放するものではありません。環境側でも許可する必要があります |
| キーを発行したサービスでのキーの権限 | エージェントが必要とする権限のみ | エージェントはキーが許可するあらゆる操作を実行できます | 該当なし |
| マウントされたリポジトリのGitHubトークン | 最小限の権限を持つfine-grainedトークン | サンドボックス内のコードは、セッション全体を通じてこのトークンでマウントされたリポジトリからフェッチおよびプッシュできます。エージェントがプッシュする必要がある場合にのみ書き込みアクセスを付与してください | 該当なし |
サポートエージェントは、注文APIのAPIキーをアプリケーションが保持しているため、ボールトの認証情報を必要としません。エージェントがボールトの認証情報を保持する場合は、各言語でのリクエストについて認証情報を追加するを参照してください。
キーをシステムプロンプト、エージェント定義、メッセージに含めないでください。エージェントにClaude APIキーを与えないでください。Claude APIキーがボールト内にある場合でも、サンドボックス内のコードはそれを使ってClaude APIを直接呼び出せます。セッションの開始や削除、Web検索やWebフェッチの使用など、そのキーが許可するあらゆる操作を実行できます。エージェントのツール設定、承認、予算はこれらの呼び出しには適用されません。limited環境では、allowed_hostsがサンドボックスにapi.anthropic.comへの到達を許可している場合にのみ、コードはこれらの呼び出しを行えます。
トークンは自分でフェッチしてボールトに保管してください。サンドボックス内のコードが保管されたシークレットを使ってフェッチしたトークンは、編集されずに返されるためです。
信頼レベルの異なるワークロード用のボールトは、別々のワークスペースに保管してください。ワークスペースにアクセスできるAPIキーであれば、そのワークスペースのボールトを参照できるためです。1つのワークスペースにスコープされたAPIキーを使用してください。
MCPの認証情報とローテーションについては、ボールトによる認証を参照してください。
Web検索とWebフェッチを制限する
web_fetchのallowed_domainsを、エージェントが必要とするサイトに設定してください。エージェントがフェッチするURLはどれも、その指し示すサイトにデータを運ぶ可能性があるため、このリストはセキュリティ制御となります。web_searchでは、allowed_domainsを結果を取得したいサイトに設定し、正確であると信頼できるサイトからのみ結果が得られるようにしてください。このリストは、検索クエリが検索プロバイダーに届くことを防ぐものではありません。検索結果にはページのテキストが含まれるため、このリストはどのサイトのテキストがエージェントに届くかも制限します。あらゆる種類の環境で、両方のツールにallowed_domainsを設定してください。
blocked_domainsリストは、指定したホストとそのサブドメインをブロックし、それ以外のホストはブロックしません。同じコンテンツが、Webアーカイブ、キャッシュ、ミラー、または指定していない関連ドメインからエージェントに届く可能性があります。セキュリティのためにblocked_domainsに頼らないでください。allowed_domainsを使用し、信頼するホストを指定してください。
limited環境では、ネットワークを制限するのallowed_hostsリストもWebツールを制限します。unrestricted環境やセルフホスト型サンドボックスでは、Webツールは制限されません。
limited環境での状況 | 結果 |
|---|---|
有効なWebツールのallowed_domainsエントリがallowed_hostsの範囲外にある | セッションの作成は400エラーで失敗し、そのようなエントリを追加するセッション更新も同様に失敗します。デプロイメントがスケジュールまたは手動実行によって開始するセッションは、それでも作成されます。その場合、ツールはallowed_hosts外のホストからは何も返しません |
| Webツールに独自のリストがない | ツールはallowed_hosts内のホストからのみページと結果を返します。ツールにもallowed_domainsを設定してください |
allowed_hostsにエントリがない | どちらのWebツールもページや検索結果を返しません |
Webツールのためにallowed_hostsにホストを追加する | そのホストはサンドボックス内のコードにも開放されます |
2つのリストは、ホストの照合方法が異なります。
| リスト | エントリ | 一致するもの | 一致しないもの |
|---|---|---|---|
allowed_hosts(環境) | example.com | example.com | www.example.com |
allowed_hosts(環境) | *.example.com | すべてのサブドメイン | example.com |
allowed_domains(Webツール) | example.com | example.comとすべてのサブドメイン | その他のドメイン |
エージェントがあるサイトとそのすべてのサブドメインを必要とする場合は、allowed_hostsにexample.comと*.example.comの両方を指定し、それ以外の場合は正確なホストを指定してください。ツールがexample.comを指定し、allowed_hostsが*.example.comのみを指定している場合、セッションは作成されます。セッション作成時のチェックではexample.comを*.example.comの範囲内とみなしますが、ツールはexample.com自体からは何も返しません。2つのリストの照合方法については、エージェントにドメインリストを設定するを参照してください。
また、web_fetchツールは、セッション内にすでに現れたURLのみを開きます。
| URLが現れる場所 | web_fetchで開けるか |
|---|---|
| ユーザーメッセージのテキスト(中継したエンドユーザーのテキストを含む) | はい |
user.define_outcomeイベントの説明 | はい |
| Web検索結果のアドレス | はい |
web_fetchが以前に返したページ(PDFを除く)のテキストで、完全なURLが表示されているもの | はい |
| Claudeがツールを直接呼び出した場合のカスタムツールの結果のテキスト | はい(結果がis_error: trueとマークされている場合を除く) |
| システムプロンプト | いいえ |
allowed_domainsエントリを含むエージェントの設定 | いいえ |
| Claude自身の出力 | いいえ |
bashおよびその他のサンドボックスツールの出力 | いいえ |
| MCPツールの結果 | いいえ |
| ユーザーメッセージに添付されたファイル | いいえ |
マルチエージェントセッションでは、web_fetchは、別のエージェントからのURLが「はい」とマークされたソースを通じてそのエージェントに届いた場合にのみ、そのURLを開きます。直接呼び出しによるカスタムツールの結果は、「はい」とマークされたソースとみなされます。これは、ツールが入力を繰り返す場合など、Claudeがそのテキストを書いた場合でも同様です。URLは、example.com/docsのようにhttps://なしで書かれていても対象となる場合があります。web_fetchツールは、「Contact support」のようにURLの代わりに語句を表示するリンクを常に開けるとは限りません。セッション内に現れていないURLをエージェントがフェッチする必要がある場合は、ユーザーメッセージで送信してください。
このルールにより、注入されたテキストが機密データを運ぶURLを構築する可能性が低減されます。エンドユーザーのテキスト、検索結果、フェッチしたページ、カスタムツールの結果によって引き続きURLが追加される可能性があるため、allowed_domainsは設定したままにしてください。Messages APIも、ソースのリストは異なりますが、同様のルールを適用します。URL検証を参照してください。
web_fetchのドメインリストはbashツールを制限しません。ネットワークも制限してください。ドメインリストのルールを参照してください。
リスクのある操作を承認する
bash、write、edit、web_fetch、およびデータの読み取りのみを行うMCPツールにはautoを設定してください。サンドボックス外での変更を元に戻せないツールには、代わりにalways_askを使用してください。また、中継したエンドユーザーのテキストが要求したというだけで実行されるべきでないツールにも使用してください。権限ポリシーは、ツール呼び出しを実行するか、承認を待つか、サーバーで評価するかを決定します。
| ツール | 推奨ポリシー | 理由 |
|---|---|---|
read、glob、grep | always_allow | サンドボックス内のファイルを読み取るだけで、何も変更しません |
bash、write、edit | auto。サンドボックス外での変更を元に戻せないツールにはalways_askを使用してください。エンドユーザーのテキストを中継する場合は、bashにalways_askを使用してください | エージェントツールセットのデフォルトはalways_allowで、すべての呼び出しを承認なしで実行します |
web_fetch | auto | エージェントがフェッチするURLは、その指し示すサイトにデータを運ぶ可能性があります |
web_search | 検索クエリで送信されたくないデータをエージェントが扱う場合はalways_ask。それ以外の場合はalways_allow | allowed_domainsは結果の取得元サイトを制限するものであり、クエリの内容を制限するものではありません |
| データの読み取りのみを行うMCPツール | auto。ツールセットのconfigsでツールごとに設定 | ツールセットのデフォルトはalways_askのままなので、MCPサーバーが後から追加したツールも承認を待ちます |
| データを変更するMCPツール | always_ask | これはMCPツールセットのデフォルトです。そのままにしてください |
| カスタムツール | 各呼び出しを実行するかどうかはお客様のコードが決定します | 権限ポリシーは適用されません |
エージェントに最小限のツールセットを与えるのツールセットでは、これらのポリシーを適用しています。
autoポリシーでは、サーバーが呼び出しを実行するか、拒否するか、承認のために一時停止するかを判断します。長時間の実行ではすべての呼び出しを人が承認することはできないため、代わりにサーバーが各呼び出しをチェックします。autoは、制限されたネットワーキング、権限を絞ったキー、予算、アイドルセッションのアラートと組み合わせて使用してください。autoは人によるチェックポイントではないため、ツールの呼び出しを実行前に人がレビューする必要がある場合は、そのツールにalways_askを設定してください。
autoは、user.messageイベントのテキストとuser.define_outcomeイベントの説明を、中継したエンドユーザーのテキストも含めて、お客様の指示として扱います。
一時停止したセッションは無期限に待機するため、無人のセッションには、一時停止した呼び出しに応答するか、セッションを中断するクライアントが必要です。
一時停止した各呼び出しは、許可する前にレビューしてください。人に見せずにすべての呼び出しを許可するクライアントは、always_allowと同じです。確認リクエストに応答すると各呼び出しがどのように評価されたかを確認するを参照してください。
エージェントに最小限のツールセットを与える
default_config.enabledをfalseに設定し、エージェントが必要とするツールのみを有効化してください。エージェントツールセットは、デフォルトで8つの組み込みツールすべてを有効にします。
| ツール | 機能 |
|---|---|
bash | 許可されたホストへのリクエストを含め、あらゆるコマンドを実行します |
write、edit | サンドボックス内のファイルを変更します |
read、glob、grep | サンドボックス内のファイルを読み取ります |
web_fetch、web_search | Anthropicのサーバーを経由して、Webからページと検索結果を返します |
サポートエージェントには3つの組み込みツールが必要です。下書き用のreadとwrite、およびヘルプセンター用のweb_fetchです。注文の検索は、アプリケーションが実行するカスタムツールlookup_orderを通じて行います。注文APIのAPIキーはアプリケーションが保持しているため、エージェントにはbashも認証情報も必要ありません。
次のサンプルでは、allowed_domainsでweb_fetchをhelp.example.comに制限しています。リスクのある操作を承認するの推奨どおり、writeとweb_fetchにautoを設定しています。顧客のチケットによってエージェントがこれらのツールを使用することになっても、エージェントにできるのはサンドボックス内のファイルの変更か、ヘルプセンターのページを開くことだけです。そのため、どちらのツールにもalways_askは必要ありません。また、このサンプルではdefault_configにalways_askを設定しているため、後から独自のポリシーなしで有効にしたツールはalways_askを使用します。
ant apply agent.md---
name: Support Agent
model: claude-opus-5-5
tools:
- type: agent_toolset_20260401
default_config:
enabled: false
permission_policy:
type: always_ask
configs:
- name: read
enabled: true
permission_policy:
type: always_allow
- name: write
enabled: true
permission_policy:
type: auto
- name: web_fetch
enabled: true
allowed_domains: [help.example.com]
permission_policy:
type: auto
- type: custom
name: lookup_order
description: Look up one order by its ID. Returns the status, the items, and the delivery date.
input_schema:
type: object
properties:
order_id:
type: string
description: The order ID from the ticket
required:
- order_id
---エージェントの更新はtools配列全体を置き換えるため、保持したいすべてのエントリを送信してください。
エージェントの更新は新しいセッションにのみ反映されるため、デプロイメント、このエージェントを指定しているエージェント、既存のセッションも確認してください。
- デプロイメントはエージェントのバージョンを固定するため、各デプロイメントが新しいバージョンを指すようにしてください。
- このエージェントを
subagents.predefined_agentsまたはworkflows.predefined_agentsに指定しているエージェントは、固定したバージョンを維持するため、そのエージェントも更新してください。 - すでに存在するセッションの制限を強化するには、そのセッションのツールを更新してください。セッションは
idleである必要があり、更新はtools配列全体を置き換えます。マルチエージェントセッションでは、セッションが実行するエージェントのWebツールに設定した新しいallowed_domainsおよびblocked_domainsリストは、他のすべてのエージェントにも適用されます。これらは各エージェントの次のターンから適用されます。それらのエージェントの有効なツールと権限ポリシーは変わりません。それらを変更するには、各エージェントを更新してから新しいセッションを開始してください。
MCPサーバーとカスタムツールも、エージェントが必要とするものに限定してください。
- MCPサーバー: MCPツールセットは、デフォルトでサーバーが公開するすべてのツールを有効にします。
default_config.enabledをfalseに設定して名前を指定したツールを有効にし、サーバーが後から追加したツールがオフのままになるようにしてください。エージェントが使用しないサーバーは削除してください。MCPコネクタを参照してください。 - カスタムツール: アプリケーションが実行し、権限ポリシーは適用されません。アプリケーションで各呼び出しの入力を検証し、ツールがアクセスできる範囲を制限してください。
信頼できない入力を強力なツールから遠ざける
エージェントが信頼できない入力、つまりチーム外の誰かが書けるテキストを読むときは、そのエージェントが保持するツールと認証情報を確認してください。このセクションでは2つの用語を使用します。
- 信頼できない入力: Webページ、検索結果、サポートチケット、メール、リポジトリのファイル、アップロード、MCPサーバーの結果、中継したエンドユーザーのメッセージ。
- 強力なツール:
bash、write、edit、web_fetch、web_search、データを書き込むまたは送信するMCPツールとカスタムツール、および認証情報を使用するあらゆるツール。
信頼できない入力内のテキストは、エージェントが保持する強力なツールを使うようエージェントに指示できます。サポートエージェントはチケットを読むため、注文APIにはカスタムツールlookup_orderを通じてのみアクセスします。アプリケーションは、注文がチケットの送信者のものであることを確認します。
| エージェントが読む入力 | エージェントが併せ持つ権限 | 対処法 |
|---|---|---|
| チケット、メール、アップロード | 認証情報付きのbash | bashを、1つのことだけを行うカスタムツールに置き換えてください。エージェントがbashを保持する必要がある場合は、always_askで各呼び出しを承認してください |
| Webページまたは検索結果 | ファイルの書き込みまたはレコードの変更 | Webツールをオフにするか、自社で運用している、または信頼しているサイトに制限してください |
| MCPの結果またはリポジトリのファイル | 書き込みを行うMCPツール | MCPツールセットをalways_askのままにし、エージェントが必要とするツールのみを有効にしてください |
| マウントされたGitHubリポジトリ | あらゆるツール | 信頼するリポジトリのみをマウントしてください。readを持つエージェントは、リポジトリの.claude/skillsディレクトリからスキルをエージェントの指示として、レビューの手順なしで読み込みます。GitHubリポジトリからスキルを読み込むを参照してください |
| あらゆる信頼できない入力 | メモリストアへの書き込み | エージェントが書き込む必要がない限り、ストアをread_onlyとしてアタッチしてください。デフォルトはread_writeで、後続のセッションは保存されたテキストを信頼できるメモリとして読み込みます |
クラウド環境では、readでファイルを読むと、CLAUDE.mdおよびAGENTS.mdファイルも指示として読み込まれる場合があります。これらは、ファイルのディレクトリとその親ディレクトリから、サンドボックスの作業ディレクトリまで読み込まれます。@docs/setup.mdのように@とパスで参照されるファイルも、最大5階層の参照まで読み込まれます。参照は、@/etc/hostsのようにサンドボックス内のどこでも指すことができます。readを無効にする以外にこれをオフにする設定はないため、チーム外の誰かが書き込めるリポジトリ、パッケージ、アーカイブは信頼できない入力として扱ってください。
エージェントが信頼できない入力を読み、かつ操作も行う必要がある場合、このガイドでは3つの設計のいずれかを推奨します。
- 読み取りと操作を分離する。 1つのマルチエージェントセッション内で、リードエージェントが、Webを読むフェッチャーと、ファイルやレコードを変更するライターにタスクを割り当てます。
- エージェントに1つの限定的なカスタムツールを与える。 アプリケーションがツールを実行し、入力をチェックし、認証情報を保持します。サポートエージェントは、分離ではなくこの設計を使用しています。セッションを一時停止させるツール呼び出しに応答するを参照してください。
- 人を介在させる。 強力なツールに
always_askを使用し、各呼び出しを人が承認するようにします。
分離では3つのエージェントを使用します。
| エージェント | 読むもの | 保持するもの | 渡すもの |
|---|---|---|---|
| リード(セッションが実行するエージェント) | お客様のメッセージと、他のエージェントから返されたもの | 組み込みツールなし。subagents.predefined_agentsリストでフェッチャーとライターを指定 | 各エージェントへのタスク |
| フェッチャー | Webページと検索結果 | web_fetchとweb_searchのみ(それぞれallowed_domains付き) | システムプロンプトで指定した形式の短い結果 |
| ライター | リードからのタスク | ファイルの書き込み、コマンドの実行、レコードの変更を行うツール(autoまたはalways_ask)。Webツールなし | その結果 |
フェッチャーの結果は信頼できないページから構築されており、リードはそのテキストをライターに渡す可能性があります。ライターのツールはautoまたはalways_askのままにしてください。フェッチャーは、読んだ内容の一部をweb_fetchリスト上のサイトや、クエリを通じて検索プロバイダーに送信する可能性が依然としてあります。
1つのマルチエージェントセッション内のエージェントは、サンドボックス、そのファイル、ボールトの認証情報を共有するため、この分離で分けられるのはツールと会話のみです。より強力な分離を行うには、別々の環境とボールトを持つ2つのセッションを使用してください。2つのセッション間では、注文IDなどの固定フィールドのみをアプリケーションが受け渡すようにしてください。
制限と停止手段を設定する
各セッションの作成時に予算を設定し、エージェントを停止する方法を事前に決めておいてください。
| 制御 | 機能 |
|---|---|
| セッション予算 | 公開定価に基づく支出の上限。上限に達すると、セッションと各スレッドが一時停止します。進行中のリクエストは完了でき、そのツール呼び出しも実行されるため、支出が上限を超える場合があります。セッションが予算に達したときを参照してください |
| デプロイメント予算 | 同じ上限を、デプロイメントが開始する各セッションに適用します |
user.interruptイベント | モデルの応答を即座に停止します。実行中のツール呼び出しは先に完了する場合があります。ワークフロー実行によってrunningのまま維持されない限り、セッションはidleになり、次のメッセージで再開します。中断によってワークフロー実行が終了することはありません |
| セッションのアーカイブまたは削除 | アーカイブは履歴を保持し、新しいイベントをブロックします。削除はレコード、イベント、サンドボックスを削除します |
| デプロイメントの一時停止またはアーカイブ | 一時停止は新しいスケジュール実行を停止しますが、手動実行は引き続き許可します。アーカイブはスケジュールを完全に終了します。すでに実行中のセッションは実行を続けます |
| ボールトまたは認証情報のアーカイブまたは削除 | 再起動なしで、実行中のセッションからシークレットを削除します。遅延を考慮してください。セッションは実行を続けるため、それらも中断してください。エージェントがシークレットを使ってすでにフェッチしたトークンは、サンドボックス内に残ります |
実行中のエージェントを停止するには、次の手順に従ってください。
user.interruptを単独で送信します。- スケジュールされたエージェントの場合は、新しいスケジュール実行が開始されないようにデプロイメントも一時停止します。スケジュールを完全に終了するには、デプロイメントをアーカイブします。
- キーが漏洩した可能性がある場合は、キーを発行したサービスでローテーションします。
- エージェントにワークフロー実行が開いている場合は、中断では実行が終了しないため、それらを停止するよう求める
user.messageも送信します。先にキャンセルすべきツール呼び出しについては、実行が開いているセッションを中断するを参照してください。 - セッションが
idleになるまで待ちます。実行中のセッションはアーカイブも削除もできません。 - 履歴を保持するためにセッションをアーカイブします。履歴が不要になったら削除します。
中断しても、エージェントがすでに実行または送信したことは元に戻りません。エージェントをアーカイブしても、その実行中のセッションは停止しません。
予算のmax_list_cost.amountは、米国セント単位の整数を文字列で記述したものなので、"125"は$1.25を意味します。セッション作成時に予算を設定するを参照してください。
予算なしで作成されたセッションに予算を追加することはできません。上限を変更または削除するには、予算に達したセッションを再開するを参照してください。セッションの上限を削除した後は、新しい上限を設定できません。
予算は支出に上限を設けますが、上限に達するまでにエージェントが行うことは制限しません。信頼レベルの異なるワークロードを分離するには、別々のワークスペースを使用してください。複数のワークスペースにアクセスできるキーはそのいずれでも操作できるため、各ワークロードには1つのワークスペースにスコープされたAPIキーを与えてください。
セッション予算、セッション操作、スケジュールされたデプロイメントを参照してください。
次のステップ
ネットワーキングモード、許可されたホスト、パッケージマネージャー。
承認ポリシーと確認リクエスト。
認証情報の種類、注入場所、ローテーション。
上限、予算に達したときの再開、デプロイメントの予算。
Was this page helpful?