Claude Platform Docs
Managed AgentsSécurité

Sécuriser votre déploiement Managed Agents

Les paramètres qui limitent ce que vos agents peuvent atteindre et faire, du plus important au moins important.

Ce guide répertorie les paramètres qui limitent ce qu'un agent sur Claude Managed Agents peut atteindre et faire, du plus important au moins important. Chaque section renvoie à la page qui couvre le paramètre en détail.

SectionParamètre ou décisionRecommandé
Choisir où l'agent s'exécuteSandbox cloud ou auto-hébergéCloud, sauf si les outils doivent s'exécuter sur une infrastructure que vous contrôlez
Limiter le réseaunetworking.type de l'environnementlimited, avec uniquement les hôtes dont l'agent a besoin
Conserver les identifiants dans des coffresinjection_location et networking sur chaque identifiant de variable d'environnementEn-têtes de requête uniquement, et réseau limited avec uniquement les hôtes auxquels la clé est destinée
Restreindre la recherche web et la récupération weballowed_domains sur chaque outil webUne liste d'autorisation sur chaque outil. Sur web_fetch, listez uniquement les sites dont l'agent a besoin. Sur web_search, listez les sites dont vous souhaitez obtenir des résultats
Approuver les actions risquéespermission_policy sur chaque outilauto sur bash, write, edit, web_fetch et les outils MCP qui ne font que lire des données. always_ask à la place sur un outil si vous ne pouvez pas annuler ses modifications en dehors du sandbox, ou si le texte relayé d'un utilisateur final ne devrait pas à lui seul le faire s'exécuter
Donner à l'agent le plus petit ensemble d'outilsdefault_config.enabled sur l'ensemble d'outils de l'agentfalse, puis activez les outils dont l'agent a besoin
Tenir les entrées non fiables à l'écart des outils puissantsLes outils et identifiants dont dispose un agent lorsqu'il lit des entrées non fiablesAucun agent qui lit des entrées non fiables ne dispose d'un outil en always_allow qui écrit des fichiers, exécute des commandes ou modifie des enregistrements
Définir des limites et un moyen d'arrêterbudget sur chaque session et déploiementUn plafond dimensionné selon le coût attendu d'une exécution
Faire éventuellement lire chaque transcription par un examinateur hors ligneUne tâche d'examen hors ligne que vous exécutez et qui lit les événements de chaque sessionFacultatif. Un examen planifié de chaque session passée à l'état inactif ou terminée
Surveiller les sessions et examiner la conservationWebhooks et suppression de sessionsUne alerte lorsqu'une session devient inactive, atteint son budget ou se termine, et une vérification de la raison pour laquelle elle est devenue inactive. Stockez les événements que vous souhaitez conserver dans vos propres journaux, et supprimez les sessions dont vous n'avez plus besoin

Risques de sécurité et limites du sandbox explique pourquoi ces paramètres sont importants et contre quoi ils ne protègent pas. Pour examiner et surveiller les sessions, consultez Examiner et surveiller les sessions d'agent.

Choisir où l'agent s'exécute

L'endroit où s'exécutent les outils de l'agent détermine qui sécurise le sandbox : Anthropic, avec un environnement cloud, ou vous, avec un sandbox auto-hébergé. Pour choisir entre les deux et savoir ce qui parvient à Anthropic dans chaque cas, consultez Choisir un environnement d'agent.

Si vous utilisez un sandbox auto-hébergé, gardez ces quatre points à l'esprit :

  • Réseau : Limiter le réseau s'applique aux environnements cloud. Pour un sandbox auto-hébergé, définissez les limites équivalentes sur son trafic dans votre propre pare-feu. Votre pare-feu ne limite pas les serveurs MCP qu'un agent déclare, alors examinez-les, ainsi que ceux que votre application définit pour une session.
  • Outils web : Les outils web s'exécutent sur les serveurs d'Anthropic, votre pare-feu ne les limite donc pas. Limitez-les avec leurs listes de domaines. Consultez Restreindre la recherche web et la récupération web.
  • Identifiants : Les identifiants de variables d'environnement ne sont pas encore pris en charge avec les sandboxes auto-hébergés.
  • Isolation et durcissement : Vous êtes responsable des deux. Consultez le Modèle de sécurité.

Aucune des deux options ne modifie la couverture de conformité de Managed Agents ni la durée pendant laquelle il conserve l'historique des sessions. Consultez Surveiller les sessions et examiner la conservation.

Limiter le réseau

Définissez networking.type sur limited et listez uniquement les hôtes dont l'agent a besoin dans allowed_hosts. Une requête de création d'environnement qui omet networking peut obtenir unrestricted, alors définissez networking dans chaque requête de création. Consultez Risques de la mise en réseau non restreinte.

Les fichiers, les magasins de mémoire et les dépôts GitHub que vous attachez restent accessibles à l'agent, quel que soit allowed_hosts.

Les exemples de cette page utilisent un agent de support. Il lit le ticket d'un client, recherche la commande, lit votre centre d'aide et rédige une réponse. Votre application exécute la recherche de commande, qui ne nécessite aucun hôte, donc cet environnement autorise un seul hôte, le centre d'aide, pour web_fetch :

ant apply environment.yaml
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.com

Un environnement limited possède trois paramètres réseau :

ParamètreCe qu'il ouvre au code dans le sandboxRecommandé
allowed_hostsLes hôtes que vous listez, pour toute requêteUniquement les hôtes dont l'agent a besoin, y compris l'hôte de chaque serveur MCP que vous exploitez ou auquel vous faites confiance
allow_package_managersLes hôtes des gestionnaires de paquets. Ils incluent chaque dépôt et chemin sur github.com, gitlab.com et bitbucket.org, où n'importe qui peut publier du contenu et où le code dans le sandbox peut téléverser des fichiersfalse, sauf si le paramètre packages de l'environnement liste des paquets, ce qui nécessite true. Si l'agent installe des paquets pendant son exécution, listez plutôt uniquement les hôtes de registre dont il a besoin dans allowed_hosts
allow_mcp_serversAucun hôte. Managed Agents se connecte aux serveurs MCP depuis les serveurs d'Anthropicfalse, avec l'hôte de chaque serveur MCP que vous exploitez ou auquel vous faites confiance listé dans allowed_hosts

Les paramètres allow_package_managers et allow_mcp_servers n'ajoutent aucun hôte pour la recherche web et la récupération web.

Laissez allow_mcp_servers désactivé, ce qui est la valeur par défaut, et listez l'hôte de chaque serveur MCP que vous exploitez ou auquel vous faites confiance dans allowed_hosts. Chaque hôte que vous listez est également ouvert au code dans le sandbox. Avec allow_mcp_servers désactivé, une vérification lors de la création de la session rejette la requête si l'hôte d'un serveur MCP n'est pas listé. Consultez Fournir l'authentification à la création de la session. La même vérification s'exécute lorsqu'une mise à jour de session modifie mcp_servers.

Lorsque vous choisissez les hôtes pour allowed_hosts, suivez ces deux règles :

  • Listez uniquement les hôtes que vous exploitez ou auxquels vous faites confiance.
  • Évitez les caractères génériques *. et les domaines d'hébergement partagé où n'importe qui peut publier du contenu.

Si l'agent conserve bash, définissez la politique d'autorisation de l'outil bash comme le décrit Approuver les actions risquées.

Consultez Configuration de l'environnement cloud pour tous les paramètres réseau.

Conserver les identifiants dans des coffres

Stockez chaque secret dans un coffre (vault). Pour chaque identifiant de variable d'environnement, définissez l'emplacement d'injection sur les en-têtes de requête uniquement et listez uniquement les hôtes auxquels le secret est destiné. Le code dans le sandbox voit un espace réservé au lieu du secret. Managed Agents substitue le vrai secret uniquement dans les requêtes HTTPS sortantes vers les hôtes que l'identifiant autorise. Le secret reste ainsi hors de portée directe du modèle, sauf si un service le renvoie, comme un point de terminaison qui renvoie en écho les en-têtes de requête. Si le networking de l'identifiant est unrestricted, Managed Agents substitue le vrai secret dans les requêtes vers tout hôte que l'environnement permet au sandbox d'atteindre. Pour utiliser un coffre, transmettez son ID dans vault_ids lorsque vous créez la session ou le déploiement.

ParamètreValeur à définirPourquoiCe qu'il ne fait pas
injection_location{"header": true, "body": false}, après avoir vérifié que le service lit la clé depuis un en-têteLes corps de requête sont souvent construits à partir du contenu que l'agent lit, donc une clé dans un corps est plus exposée. Nommez les deux champs : une requête de création qui omet l'objet active les deux emplacements, et une mise à jour ne modifie que les champs que vous envoyezLe code peut toujours utiliser la clé sur chaque hôte que l'identifiant autorise. Un service qui attend la clé dans le corps reçoit l'espace réservé et rejette la requête
networking sur l'identifiantlimited, avec les hôtes exacts auxquels la clé est destinéeLes réponses parviennent au sandbox sans masquage, alors évitez les caractères génériques, les domaines d'hébergement partagé et les hôtes qui renvoient en écho les en-têtes de requêteIl n'ouvre pas l'hôte. L'environnement doit également l'autoriser
Les autorisations de la clé, auprès du service qui l'a émiseUniquement les autorisations dont l'agent a besoinL'agent peut faire tout ce que la clé permetSans objet
Le jeton GitHub d'un dépôt montéUn jeton à granularité fine avec les autorisations minimalesLe code dans le sandbox peut l'utiliser pour récupérer depuis le dépôt monté et y pousser pendant toute la session. N'accordez l'accès en écriture que si l'agent doit pousserSans objet

L'agent de support n'a besoin d'aucun identifiant de coffre, car votre application détient la clé API de votre API de commandes. Si votre agent détient un identifiant de coffre, consultez Ajouter un identifiant pour la requête dans chaque langage.

Gardez les clés hors des invites système, des définitions d'agent et des messages. Ne donnez pas de clé API Claude à l'agent. Même lorsqu'une clé API Claude se trouve dans un coffre, le code dans le sandbox peut l'utiliser pour appeler directement l'API Claude. Il peut faire tout ce que cette clé permet, comme démarrer ou supprimer des sessions, ou utiliser la recherche web et la récupération web. Les paramètres d'outils, les approbations et le budget de l'agent ne s'appliquent pas à ces appels. Dans un environnement limited, le code ne peut effectuer ces appels que si allowed_hosts permet au sandbox d'atteindre api.anthropic.com.

Récupérez vous-même les jetons et stockez-les dans le coffre, car un jeton que le code dans le sandbox récupère avec un secret stocké revient sans masquage.

Conservez les coffres des charges de travail ayant des niveaux de confiance différents dans des espaces de travail distincts, car toute clé API ayant accès à un espace de travail peut référencer ses coffres. Utilisez des clés API limitées à un seul espace de travail.

Consultez S'authentifier avec des coffres-forts pour les identifiants MCP et la rotation.

Restreindre la recherche web et la récupération web

Définissez allowed_domains sur web_fetch avec les sites dont l'agent a besoin. Toute URL que l'agent récupère peut transporter des données vers le site vers lequel elle pointe, cette liste est donc un contrôle de sécurité. Sur web_search, définissez allowed_domains avec les sites dont vous souhaitez obtenir des résultats, afin que les résultats proviennent uniquement de sites auxquels vous faites confiance pour leur exactitude. La liste n'empêche pas la requête de recherche d'atteindre le fournisseur de recherche. Les résultats de recherche incluent du texte provenant de pages, la liste limite donc aussi les sites dont le texte parvient à l'agent. Définissez allowed_domains sur les deux outils pour chaque type d'environnement.

Une liste blocked_domains bloque les hôtes que vous listez et leurs sous-domaines, et aucun autre hôte. Le même contenu peut toujours parvenir à l'agent depuis des archives web, des caches, des miroirs ou des domaines apparentés que vous n'avez pas listés. Ne comptez pas sur blocked_domains pour la sécurité. Utilisez allowed_domains et nommez les hôtes auxquels vous faites confiance.

Dans un environnement limited, la liste allowed_hosts de Limiter le réseau limite également les outils web. Un environnement unrestricted ou un sandbox auto-hébergé ne limite pas les outils web.

Dans un environnement limitedRésultat
Une entrée allowed_domains sur un outil web activé est en dehors de allowed_hostsLa création d'une session échoue avec une erreur 400, tout comme une mise à jour de session qui ajoute une telle entrée. Une session qu'un déploiement démarre, selon sa planification ou par une exécution manuelle, est tout de même créée. L'outil ne renvoie alors rien depuis les hôtes en dehors de allowed_hosts
Un outil web n'a pas de liste propreL'outil renvoie des pages et des résultats uniquement depuis les hôtes de allowed_hosts. Définissez également allowed_domains sur l'outil
allowed_hosts ne contient aucune entréeAucun des deux outils web ne renvoie de page ni de résultat de recherche
Vous ajoutez un hôte à allowed_hosts pour un outil webL'hôte est également ouvert au code dans le sandbox

Les deux listes font correspondre les hôtes différemment :

ListeEntréeCorrespond àNe correspond pas à
allowed_hosts (environnement)example.comexample.comwww.example.com
allowed_hosts (environnement)*.example.comChaque sous-domaineexample.com
allowed_domains (outil web)example.comexample.com et chaque sous-domaineLes autres domaines

Si l'agent a besoin d'un site et de tous ses sous-domaines, listez à la fois example.com et *.example.com dans allowed_hosts, et sinon listez des hôtes exacts. Si un outil liste example.com et que allowed_hosts liste uniquement *.example.com, la session est créée. La vérification lors de la création de la session considère example.com comme inclus dans *.example.com, mais l'outil ne renvoie rien depuis example.com lui-même. Consultez Définir des listes de domaines sur un agent pour savoir comment les deux listes font correspondre les hôtes.

L'outil web_fetch n'ouvre également que les URL qui sont déjà apparues dans la session :

Où l'URL apparaîtweb_fetch peut l'ouvrir
Le texte d'un message utilisateur, y compris le texte d'un utilisateur final que vous relayezOui
La description d'un événement user.define_outcomeOui
L'adresse d'un résultat de recherche webOui
Le texte d'une page que web_fetch a renvoyée précédemment (pas un PDF), où l'URL complète est affichéeOui
Le texte du résultat d'un outil personnalisé, lorsque Claude a appelé l'outil directementOui, sauf si le résultat est marqué is_error: true
L'invite systèmeNon
La configuration de l'agent, y compris les entrées allowed_domainsNon
La sortie de Claude lui-mêmeNon
La sortie de bash et des autres outils du sandboxNon
Le résultat d'un outil MCPNon
Un fichier joint à un message utilisateurNon

Dans une session multi-agents, web_fetch n'ouvre une URL provenant d'un autre agent que si elle a atteint cet agent par une source marquée Oui. Le résultat d'un outil personnalisé issu d'un appel direct compte comme une source marquée Oui. Cela reste vrai même si Claude a écrit son texte, par exemple lorsque l'outil répète son entrée. Une URL peut compter même lorsqu'elle est écrite sans https://, comme example.com/docs. L'outil web_fetch ne peut pas toujours ouvrir un lien qui affiche des mots au lieu de son URL, comme « Contacter le support ». Si l'agent doit récupérer une URL qui n'est pas apparue dans la session, envoyez-la dans un message utilisateur.

Cette règle réduit le risque qu'un texte injecté construise une URL transportant des données privées. Le texte des utilisateurs finaux, les résultats de recherche, les pages récupérées et les résultats d'outils personnalisés peuvent toujours ajouter des URL, alors gardez allowed_domains défini. L'API Messages applique une règle similaire avec une liste de sources différente. Consultez Validation des URL.

Une liste de domaines sur web_fetch ne limite pas l'outil bash. Limitez également le réseau. Consultez Règles des listes de domaines.

Approuver les actions risquées

Définissez auto sur bash, write, edit et web_fetch, ainsi que sur les outils MCP qui ne font que lire des données. Utilisez plutôt always_ask sur un outil si vous ne pouvez pas annuler ses modifications en dehors du sandbox. Utilisez-le également sur un outil qui ne devrait pas s'exécuter simplement parce que le texte d'un utilisateur final que vous relayez le demande. Une politique d'autorisation détermine si un appel d'outil s'exécute, attend votre approbation ou est évalué par le serveur.

OutilPolitique recommandéePourquoi
read, glob, grepalways_allowIls lisent des fichiers dans le sandbox et ne modifient rien
bash, write, editauto. Utilisez always_ask sur un outil si vous ne pouvez pas annuler ses modifications en dehors du sandbox. Utilisez always_ask sur bash si vous relayez le texte d'utilisateurs finauxLa valeur par défaut de l'ensemble d'outils de l'agent est always_allow, qui exécute chaque appel sans approbation
web_fetchautoUne URL que l'agent récupère peut transporter des données vers le site vers lequel elle pointe
web_searchalways_ask si l'agent traite des données que vous ne voudriez pas voir envoyées dans une requête de recherche. Sinon always_allowallowed_domains limite les sites dont proviennent les résultats, et non le contenu de la requête
Outils MCP qui ne font que lire des donnéesauto, défini pour chaque outil dans les configs de l'ensemble d'outilsLa valeur par défaut de l'ensemble d'outils reste always_ask, donc un outil que le serveur MCP ajoute ultérieurement attend toujours une approbation
Outils MCP qui modifient des donnéesalways_askC'est la valeur par défaut de l'ensemble d'outils MCP. Conservez-la
Outils personnalisésVotre code décide si chaque appel s'exécuteLes politiques d'autorisation ne s'appliquent pas

L'ensemble d'outils de Donner à l'agent le plus petit ensemble d'outils applique ces politiques.

La politique auto permet au serveur d'exécuter un appel, de le refuser ou de se mettre en pause pour approbation. Une personne ne peut pas approuver chaque appel d'une longue exécution, le serveur vérifie donc chacun d'eux à sa place. Associez auto à un réseau limité, une clé aux autorisations restreintes, un budget et une alerte sur les sessions inactives. auto n'est pas un point de contrôle humain, donc si une personne doit examiner les appels d'un outil avant leur exécution, configurez always_ask sur cet outil.

auto traite le texte des événements user.message et la description d'un événement user.define_outcome comme votre instruction, y compris le texte d'utilisateurs finaux que vous relayez.

Une session en pause attend indéfiniment, donc une session sans surveillance a besoin d'un client qui répond aux appels en pause ou interrompt la session.

Examinez chaque appel en pause avant de l'autoriser. Un client qui autorise chaque appel sans le montrer à une personne équivaut à always_allow. Consultez Répondre aux demandes de confirmation et Voir comment chaque appel a été évalué.

Donner à l'agent le plus petit ensemble d'outils

Définissez default_config.enabled sur false et activez uniquement les outils dont l'agent a besoin. L'ensemble d'outils de l'agent active par défaut les huit outils intégrés.

OutilCe qu'il fait
bashExécute n'importe quelle commande, y compris des requêtes vers les hôtes autorisés
write, editModifient des fichiers dans le sandbox
read, glob, grepLisent des fichiers dans le sandbox
web_fetch, web_searchRenvoient des pages et des résultats de recherche du web, via les serveurs d'Anthropic

L'agent de support a besoin de trois outils intégrés : read et write pour son brouillon, et web_fetch pour le centre d'aide. Il recherche les commandes via un outil personnalisé, lookup_order, que votre application exécute. Votre application détient la clé API de votre API de commandes, l'agent n'a donc besoin ni de bash ni d'un identifiant.

L'exemple suivant limite web_fetch à help.example.com avec allowed_domains. Il définit auto sur write et web_fetch, comme le recommande Approuver les actions risquées. Si le ticket d'un client amène l'agent à utiliser ces outils, l'agent peut uniquement modifier des fichiers dans le sandbox ou ouvrir des pages du centre d'aide. C'est pourquoi aucun des deux outils n'a besoin de always_ask. L'exemple définit également always_ask dans default_config, de sorte qu'un outil que vous activez ultérieurement sans politique propre utilise always_ask :

ant apply agent.md
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
---

Une mise à jour d'agent remplace l'intégralité du tableau tools, alors envoyez chaque entrée que vous souhaitez conserver.

Une mise à jour d'agent n'atteint que les nouvelles sessions, vérifiez donc également les déploiements, les agents qui listent cet agent et les sessions existantes :

  • Un déploiement épingle une version d'agent, alors faites pointer chaque déploiement vers la nouvelle.
  • Un agent qui liste celui-ci dans subagents.predefined_agents ou workflows.predefined_agents conserve la version qu'il a épinglée, alors mettez également cet agent à jour.
  • Pour restreindre davantage une session qui existe déjà, mettez à jour les outils de cette session. La session doit être idle, et la mise à jour remplace l'intégralité du tableau tools. Dans une session multi-agents, les nouvelles listes allowed_domains et blocked_domains sur les outils web de l'agent que la session exécute s'appliquent également à tous les autres agents. Elles s'appliquent à partir du tour suivant de chaque agent. Les outils activés et les politiques d'autorisation de ces agents ne changent pas. Pour les modifier, mettez à jour chaque agent, puis démarrez une nouvelle session.

Limitez également les serveurs MCP et les outils personnalisés à ce dont l'agent a besoin :

  • Serveurs MCP : Un ensemble d'outils MCP active par défaut chaque outil que le serveur expose. Définissez default_config.enabled sur false et activez des outils nommés, afin que les outils qu'un serveur ajoute ultérieurement restent désactivés. Supprimez les serveurs que l'agent n'utilise pas. Consultez Connecteur MCP.
  • Outils personnalisés : Votre application les exécute, et les politiques d'autorisation ne s'appliquent pas. Validez l'entrée de chaque appel dans votre application et limitez ce que l'outil peut toucher.

Tenir les entrées non fiables à l'écart des outils puissants

Vérifiez les outils et identifiants dont dispose un agent chaque fois qu'il lit des entrées non fiables, c'est-à-dire du texte que quelqu'un en dehors de votre équipe peut écrire. Cette section utilise deux termes :

  • Entrées non fiables : Pages web, résultats de recherche, tickets de support, e-mails, fichiers de dépôt, téléversements, résultats de serveurs MCP et messages d'utilisateurs finaux que vous relayez.
  • Outils puissants : bash, write, edit, web_fetch, web_search, les outils MCP et outils personnalisés qui écrivent ou envoient des données, et tout outil qui utilise un identifiant.

Le texte d'une entrée non fiable peut demander à l'agent d'utiliser un outil puissant dont il dispose. L'agent de support lit des tickets, il n'accède donc à votre API de commandes que via l'outil personnalisé lookup_order. Votre application vérifie que la commande appartient à l'expéditeur du ticket.

Entrée que l'agent litPouvoir dont il dispose égalementAction à mener
Tickets, e-mails ou téléversementsbash avec un identifiantRemplacez bash par un outil personnalisé qui fait une seule chose. Si l'agent doit conserver bash, approuvez chaque appel avec always_ask
Pages web ou résultats de rechercheÉcriture de fichiers ou modification d'enregistrementsDésactivez les outils web, ou limitez-les aux sites que vous exploitez ou auxquels vous faites confiance
Résultats MCP ou fichiers de dépôtOutils MCP qui écriventConservez l'ensemble d'outils MCP sur always_ask, et activez uniquement les outils dont l'agent a besoin
Un dépôt GitHub montéN'importe quel outilMontez uniquement des dépôts auxquels vous faites confiance. Un agent disposant de read charge les skills du répertoire .claude/skills du dépôt comme instructions d'agent, sans étape de révision. Consultez Charger des skills depuis un dépôt GitHub
Toute entrée non fiableÉcriture dans un magasin de mémoireAttachez le magasin en read_only sauf si l'agent doit écrire. La valeur par défaut est read_write, et les sessions ultérieures lisent le texte enregistré comme une mémoire de confiance

Dans un environnement cloud, la lecture d'un fichier avec read peut également charger des fichiers CLAUDE.md et AGENTS.md comme instructions. Ils sont chargés depuis le répertoire du fichier et ses répertoires parents, jusqu'au répertoire de travail du sandbox. Les fichiers qu'ils référencent avec @ et un chemin, comme @docs/setup.md, sont également chargés, jusqu'à cinq niveaux de références. Une référence peut pointer n'importe où dans le sandbox, par exemple @/etc/hosts. Aucun paramètre ne désactive ce comportement, hormis la désactivation de read, alors traitez un dépôt, un paquet ou une archive que quelqu'un en dehors de votre équipe peut écrire comme une entrée non fiable.

Lorsqu'un agent doit lire des entrées non fiables et également agir, ce guide recommande l'une de trois conceptions :

  • Séparer la lecture de l'action. Dans une même session multi-agents, un agent principal confie des tâches à un récupérateur, qui lit le web, et à un rédacteur, qui modifie des fichiers ou des enregistrements.
  • Donner à l'agent un seul outil personnalisé restreint. Votre application exécute l'outil, vérifie son entrée et détient l'identifiant. L'agent de support utilise cette conception, et non la séparation. Consultez Répondre aux appels d'outils qui mettent la session en pause.
  • Garder une personne dans la boucle. Utilisez always_ask sur l'outil puissant afin qu'une personne approuve chaque appel.

La séparation utilise trois agents :

AgentLitDétientTransmet
Principal (l'agent que la session exécute)Votre message, et ce que les autres agents renvoientAucun outil intégré. Sa liste subagents.predefined_agents nomme le récupérateur et le rédacteurUne tâche à chaque agent
RécupérateurPages web et résultats de rechercheweb_fetch et web_search uniquement, chacun avec allowed_domainsDes résultats courts, dans un format que vous demandez dans son invite système
RédacteurLa tâche de l'agent principalLes outils qui écrivent des fichiers, exécutent des commandes ou modifient des enregistrements, en auto ou always_ask. Aucun outil webSon résultat

Les résultats du récupérateur sont construits à partir de pages non fiables, et l'agent principal peut transmettre leur texte au rédacteur. Conservez auto ou always_ask sur les outils du rédacteur. Le récupérateur peut toujours envoyer une partie de ce qu'il lit aux sites de sa liste web_fetch, et au fournisseur de recherche dans ses requêtes.

Les agents d'une même session multi-agents partagent le sandbox, ses fichiers et les identifiants du coffre, donc cette séparation ne sépare que leurs outils et leurs conversations. Pour une séparation plus forte, utilisez deux sessions avec des environnements et des coffres distincts. Faites en sorte que votre application ne transmette que des champs fixes, comme un ID de commande, entre les deux sessions.

Définir des limites et un moyen d'arrêter

Définissez un budget lorsque vous créez chaque session, et décidez à l'avance comment vous arrêtez un agent.

ContrôleCe qu'il fait
Budget de sessionUn plafond de dépenses aux prix catalogue publics. Au plafond, la session et chaque fil se mettent en pause. Les requêtes en cours peuvent se terminer et leurs appels d'outils s'exécutent toujours, donc les dépenses peuvent dépasser le plafond. Consultez Lorsqu'une session atteint son budget
Budget de déploiementLe même plafond, appliqué à chaque session qu'un déploiement démarre
Événement user.interruptArrête immédiatement la réponse du modèle. Un appel d'outil en cours peut se terminer d'abord. La session passe à idle, sauf si une exécution de workflow la maintient en running, et reprend à votre prochain message. Une interruption ne met fin à aucune exécution de workflow
Archiver ou supprimer une sessionL'archivage conserve l'historique et bloque les nouveaux événements. La suppression retire l'enregistrement, les événements et le sandbox
Mettre en pause ou archiver un déploiementLa mise en pause arrête les nouvelles exécutions planifiées mais autorise toujours les exécutions manuelles. L'archivage met fin définitivement à la planification. Les sessions déjà en cours continuent de s'exécuter
Archiver ou supprimer un coffre ou un identifiantRetire le secret des sessions en cours sans redémarrage. Prévoyez un délai. Les sessions continuent de s'exécuter, alors interrompez-les également. Un jeton que l'agent a déjà récupéré avec le secret reste dans le sandbox

Pour arrêter un agent en cours d'exécution, suivez ces étapes :

  1. Envoyez user.interrupt seul.
  2. Pour un agent planifié, mettez également le déploiement en pause afin qu'aucune nouvelle exécution planifiée ne démarre. Pour mettre fin définitivement à la planification, archivez le déploiement.
  3. Si une clé a pu être exposée, effectuez sa rotation auprès du service qui l'a émise.
  4. Si l'agent a des exécutions de workflow ouvertes, envoyez également un user.message lui demandant de les arrêter, car une interruption ne met fin à aucune exécution. Consultez Interrompre une session avec des exécutions ouvertes pour les appels d'outils à annuler en premier.
  5. Attendez que la session passe à idle. Une session en cours d'exécution ne peut être ni archivée ni supprimée.
  6. Archivez la session pour conserver son historique. Supprimez-la lorsque vous n'avez plus besoin de l'historique.

Une interruption n'annule pas ce que l'agent a déjà fait ou envoyé. L'archivage d'un agent n'arrête pas ses sessions en cours.

Le max_list_cost.amount d'un budget est un nombre entier de cents américains écrit sous forme de chaîne, donc "125" signifie 1,25 $. Consultez Définir un budget à la création de la session.

Vous ne pouvez pas ajouter de budget à une session créée sans budget. Pour modifier ou supprimer un plafond, consultez Reprendre une session ayant atteint son budget. Après avoir supprimé le plafond d'une session, vous ne pouvez pas en définir un nouveau.

Un budget plafonne les dépenses, mais il ne limite pas ce que fait l'agent avant d'atteindre le plafond. Pour séparer les charges de travail ayant des niveaux de confiance différents, utilisez des espaces de travail distincts. Donnez à chaque charge de travail une clé API limitée à un seul espace de travail, car une clé qui peut atteindre plusieurs espaces de travail peut agir dans n'importe lequel d'entre eux.

Consultez Budgets de session, Opérations sur les sessions et Déploiements planifiés.

Étapes suivantes

Modes réseau, hôtes autorisés et gestionnaires de paquets.

Politiques d'approbation et demandes de confirmation.

Types d'identifiants, emplacements d'injection et rotation.

Plafonds, reprise d'une session ayant atteint son budget et budgets sur les déploiements.

Was this page helpful?