---
title: Restreindre les domaines de recherche web et de récupération web
url: https://platform.claude.com/docs/fr/managed-agents/tools-web-restrictions
description: Contrôlez les sites que les outils de recherche web et de récupération web d'un agent peuvent atteindre, plafonnez le contenu récupéré et localisez les résultats de recherche.
featureMetadata:
  topic:
    title: Managed Agents
    url: https://platform.claude.com/docs/en/managed-agents/overview
  status: beta
  betaHeader: managed-agents-2026-04-01
---

Pour contrôler les sites que les outils web de l'agent peuvent atteindre, définissez une liste de domaines sur les entrées `web_search` et `web_fetch` de l'[ensemble d'outils de l'agent](https://platform.claude.com/docs/fr/managed-agents/tools#configuring-the-toolset). Chacune de ces entrées `configs` (csharp, go: `Configs`) accepte l'une de deux listes :

* **`allowed_domains` (java, php: `allowedDomains`; csharp, go: `AllowedDomains`) :** L'outil ne peut atteindre que ces hôtes.
* **`blocked_domains` (java, php: `blockedDomains`; csharp, go: `BlockedDomains`) :** L'outil ne peut jamais atteindre ces hôtes.

Chaque outil possède sa propre liste, de sorte que `web_search` et `web_fetch` peuvent avoir des restrictions différentes.

<Note>
  `web_search` et `web_fetch` s'exécutent sur les serveurs d'Anthropic, et non dans le sandbox. Un environnement cloud avec une [mise en réseau](https://platform.claude.com/docs/fr/managed-agents/environments#networking) `limited` leur applique également ses `allowed_hosts` (java, php: `allowedHosts`; csharp, go: `AllowedHosts`) ; consultez [Définir des listes de domaines sur un agent](https://platform.claude.com/docs/fr/managed-agents/tools-web-restrictions#set-domain-lists-on-an-agent). La mise en réseau `unrestricted` et les environnements auto-hébergés ne les limitent pas. Les listes propres à chaque outil restreignent davantage ces outils. Les paramètres de recherche web et de récupération web au niveau de l'organisation dans la Claude Console s'appliquent à l'API Messages. Ils ne s'appliquent pas aux sessions Managed Agents.
</Note>

## Définir des listes de domaines sur un agent

L'exemple suivant crée un agent qui limite `web_search` à deux sites et bloque un hôte pour `web_fetch`. Il définit également `user_location` (java, php: `userLocation`; csharp, go: `UserLocation`) et `max_content_tokens` (java, php: `maxContentTokens`; csharp, go: `MaxContentTokens`), décrits dans [Paramètres](https://platform.claude.com/docs/fr/managed-agents/tools-web-restrictions#settings). L'exemple affiche ensuite le tableau `configs` (csharp, go: `Configs`) de la réponse.

<CodeGroup defaultLanguage="CLI">
  ```bash cURL
  agent=$(curl -fsSL https://api.anthropic.com/v1/agents \
    -H "x-api-key: $ANTHROPIC_API_KEY" \
    -H "anthropic-version: 2023-06-01" \
    -H "anthropic-beta: managed-agents-2026-04-01" \
    -H "content-type: application/json" \
    -d '{
      "name": "Research Agent",
      "model": "claude-opus-5-5",
      "tools": [
        {
          "type": "agent_toolset_20260401",
          "configs": [
            {
              "type": "web_search",
              "name": "web_search",
              "allowed_domains": ["docs.example.com", "arxiv.org"],
              "user_location": {
                "type": "approximate",
                "country": "US",
                "timezone": "America/Los_Angeles"
              }
            },
            {
              "type": "web_fetch",
              "name": "web_fetch",
              "blocked_domains": ["ads.example.com"],
              "max_content_tokens": 50000
            }
          ]
        }
      ]
    }'
  )
  jq '.tools[0].configs' <<< "$agent"
  ```

  <CodeGroupItem>
    ```bash CLI
    ant apply agent.md
    ```

    <File filename="agent.md">
      ```markdown
      ---
      name: Research Agent
      model: claude-opus-5-5
      tools:
        - type: agent_toolset_20260401
          configs:
            - type: web_search
              name: web_search
              allowed_domains: [docs.example.com, arxiv.org]
              user_location:
                type: approximate
                country: US
                timezone: America/Los_Angeles
            - type: web_fetch
              name: web_fetch
              blocked_domains: [ads.example.com]
              max_content_tokens: 50000
      ---
      ```
    </File>

    [`ant apply`](https://platform.claude.com/docs/fr/cli-sdks-libraries/cli/apply) crée l'agent et affiche son ID, et non le tableau `configs`.
  </CodeGroupItem>

  ```python Python
  client = Anthropic()

  agent = client.beta.agents.create(
      name="Research Agent",
      model="claude-opus-5-5",
      tools=[
          {
              "type": "agent_toolset_20260401",
              "configs": [
                  {
                      "name": "web_search",
                      "allowed_domains": ["docs.example.com", "arxiv.org"],
                      "user_location": {
                          "type": "approximate",
                          "country": "US",
                          "timezone": "America/Los_Angeles",
                      },
                  },
                  {
                      "name": "web_fetch",
                      "blocked_domains": ["ads.example.com"],
                      "max_content_tokens": 50_000,
                  },
              ],
          }
      ],
  )

  for tool in agent.tools:
      if tool.type == "agent_toolset_20260401":
          print(json.dumps([config.to_dict() for config in tool.configs], indent=2))
  ```

  ```typescript TypeScript
  const client = new Anthropic();

  const agent = await client.beta.agents.create({
    name: "Research Agent",
    model: "claude-opus-5-5",
    tools: [
      {
        type: "agent_toolset_20260401",
        configs: [
          {
            name: "web_search",
            allowed_domains: ["docs.example.com", "arxiv.org"],
            user_location: {
              type: "approximate",
              country: "US",
              timezone: "America/Los_Angeles"
            }
          },
          {
            name: "web_fetch",
            blocked_domains: ["ads.example.com"],
            max_content_tokens: 50_000
          }
        ]
      }
    ]
  });

  for (const tool of agent.tools) {
    if (tool.type === "agent_toolset_20260401") {
      console.log(JSON.stringify(tool.configs, null, 2));
    }
  }
  ```

  ```csharp C#
  using Anthropic.Models.Beta.Agents;

  AnthropicClient client = new();

  var agent = await client.Beta.Agents.Create(new()
  {
      Name = "Research Agent",
      Model = BetaManagedAgentsModel.ClaudeOpus5_5,
      Tools =
      [
          new BetaManagedAgentsAgentToolset20260401Params
          {
              Type = BetaManagedAgentsAgentToolset20260401ParamsType.AgentToolset20260401,
              Configs =
              [
                  new BetaManagedAgentsWebSearchToolConfigParams
                  {
                      AllowedDomains = ["docs.example.com", "arxiv.org"],
                      UserLocation = new()
                      {
                          Country = "US",
                          Timezone = "America/Los_Angeles",
                      },
                  },
                  new BetaManagedAgentsWebFetchToolConfigParams
                  {
                      BlockedDomains = ["ads.example.com"],
                      MaxContentTokens = 50_000,
                  },
              ],
          },
      ],
  });

  JsonSerializerOptions jsonOptions = new() { WriteIndented = true };
  foreach (var tool in agent.Tools)
  {
      if (tool.TryPickBetaManagedAgentsAgentToolset20260401(out var toolset))
      {
          Console.WriteLine(JsonSerializer.Serialize(toolset.Configs, jsonOptions));
      }
  }
  ```

  ```go Go
  client := anthropic.NewClient()
  ctx := context.Background()

  agent, err := client.Beta.Agents.New(ctx, anthropic.BetaAgentNewParams{
  	Name: "Research Agent",
  	Model: anthropic.BetaManagedAgentsModelConfigParams{
  		ID: anthropic.BetaManagedAgentsModelClaudeOpus5_5,
  	},
  	Tools: []anthropic.BetaAgentNewParamsToolUnion{{
  		OfAgentToolset20260401: &anthropic.BetaManagedAgentsAgentToolset20260401Params{
  			Type: anthropic.BetaManagedAgentsAgentToolset20260401ParamsTypeAgentToolset20260401,
  			Configs: []anthropic.BetaManagedAgentsAgentToolConfigParamsUnion{
  				{OfWebSearch: &anthropic.BetaManagedAgentsWebSearchToolConfigParams{
  					AllowedDomains: []string{"docs.example.com", "arxiv.org"},
  					UserLocation: anthropic.BetaManagedAgentsUserLocationParam{
  						Country:  anthropic.String("US"),
  						Timezone: anthropic.String("America/Los_Angeles"),
  					},
  				}},
  				{OfWebFetch: &anthropic.BetaManagedAgentsWebFetchToolConfigParams{
  					BlockedDomains:   []string{"ads.example.com"},
  					MaxContentTokens: anthropic.Int(50000),
  				}},
  			},
  		},
  	}},
  })
  if err != nil {
  	panic(err)
  }

  for _, tool := range agent.Tools {
  	switch toolset := tool.AsAny().(type) {
  	case anthropic.BetaManagedAgentsAgentToolset20260401:
  		configs := make([]json.RawMessage, len(toolset.Configs))
  		for i, config := range toolset.Configs {
  			configs[i] = json.RawMessage(config.RawJSON())
  		}
  		output, err := json.MarshalIndent(configs, "", "  ")
  		if err != nil {
  			panic(err)
  		}
  		fmt.Println(string(output))
  	}
  }
  ```

  ```java Java
  import com.anthropic.models.beta.agents.AgentCreateParams;
  import com.anthropic.models.beta.agents.BetaManagedAgentsAgentToolset20260401Params;
  import com.anthropic.models.beta.agents.BetaManagedAgentsModel;
  import com.anthropic.models.beta.agents.BetaManagedAgentsUserLocation;
  import com.anthropic.models.beta.agents.BetaManagedAgentsWebFetchToolConfigParams;
  import com.anthropic.models.beta.agents.BetaManagedAgentsWebSearchToolConfigParams;

  void main() {
      var client = AnthropicOkHttpClient.fromEnv();

      var agent = client.beta().agents().create(AgentCreateParams.builder()
          .name("Research Agent")
          .model(BetaManagedAgentsModel.CLAUDE_OPUS_5_5)
          .addTool(BetaManagedAgentsAgentToolset20260401Params.builder()
              .type(BetaManagedAgentsAgentToolset20260401Params.Type.AGENT_TOOLSET_20260401)
              .addConfig(BetaManagedAgentsWebSearchToolConfigParams.builder()
                  .allowedDomains(List.of("docs.example.com", "arxiv.org"))
                  .userLocation(BetaManagedAgentsUserLocation.builder()
                      .country("US")
                      .timezone("America/Los_Angeles")
                      .build())
                  .build())
              .addConfig(BetaManagedAgentsWebFetchToolConfigParams.builder()
                  .blockedDomains(List.of("ads.example.com"))
                  .maxContentTokens(50_000)
                  .build())
              .build())
          .build());

      for (var tool : agent.tools()) {
          if (tool.isAgentToolset20260401()) {
              var configs = tool.asAgentToolset20260401().configs();
              IO.println(ObjectMappers.jsonMapper().valueToTree(configs));
          }
      }
  }
  ```

  ```php PHP
  use Anthropic\Beta\Agents\BetaManagedAgentsAgentToolset20260401;
  use Anthropic\Beta\Agents\BetaManagedAgentsAgentToolset20260401Params;
  use Anthropic\Beta\Agents\BetaManagedAgentsUserLocation;
  use Anthropic\Beta\Agents\BetaManagedAgentsWebFetchToolConfigParams;
  use Anthropic\Beta\Agents\BetaManagedAgentsWebSearchToolConfigParams;
  // ...

  $client = new Client();

  $agent = $client->beta->agents->create(
      name: 'Research Agent',
      model: 'claude-opus-5-5',
      tools: [
          BetaManagedAgentsAgentToolset20260401Params::with(
              type: 'agent_toolset_20260401',
              configs: [
                  BetaManagedAgentsWebSearchToolConfigParams::with(
                      allowedDomains: ['docs.example.com', 'arxiv.org'],
                      userLocation: BetaManagedAgentsUserLocation::with(
                          country: 'US',
                          timezone: 'America/Los_Angeles',
                      ),
                  ),
                  BetaManagedAgentsWebFetchToolConfigParams::with(
                      blockedDomains: ['ads.example.com'],
                      maxContentTokens: 50_000,
                  ),
              ],
          ),
      ],
  );

  foreach ($agent->tools as $tool) {
      if ($tool instanceof BetaManagedAgentsAgentToolset20260401) {
          echo json_encode($tool->configs, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES), PHP_EOL;
      }
  }
  ```

  ```ruby Ruby
  client = Anthropic::Client.new

  agent = client.beta.agents.create(
    name: "Research Agent",
    model: "claude-opus-5-5",
    tools: [
      {
        type: :agent_toolset_20260401,
        configs: [
          {
            name: :web_search,
            allowed_domains: ["docs.example.com", "arxiv.org"],
            user_location: {type: :approximate, country: "US", timezone: "America/Los_Angeles"}
          },
          {
            name: :web_fetch,
            blocked_domains: ["ads.example.com"],
            max_content_tokens: 50_000
          }
        ]
      }
    ]
  )

  case agent.tools.first
  in Anthropic::Models::Beta::BetaManagedAgentsAgentToolset20260401 => toolset
    puts JSON.pretty_generate(toolset.configs.map(&:to_h))
  end
  ```
</CodeGroup>

Dans un environnement cloud avec une [mise en réseau](https://platform.claude.com/docs/fr/managed-agents/environments#networking) `limited`, les `allowed_hosts` (java, php: `allowedHosts`; csharp, go: `AllowedHosts`) de l'environnement s'appliquent également à `web_search` et `web_fetch`. La création d'une session échoue avec une erreur 400 lorsque les `allowed_domains` (java, php: `allowedDomains`; csharp, go: `AllowedDomains`) d'un outil web activé contiennent une entrée qui n'est pas couverte par `allowed_hosts` (java, php: `allowedHosts`; csharp, go: `AllowedHosts`). Il en va de même pour une mise à jour de session qui ajoute une telle entrée. Pour corriger cela, ajoutez l'hôte à `allowed_hosts` (java, php: `allowedHosts`; csharp, go: `AllowedHosts`) ou supprimez l'entrée de `allowed_domains` (java, php: `allowedDomains`; csharp, go: `AllowedDomains`). À l'exécution, un appel `web_fetch` pour une URL sur un hôte auquel `allowed_hosts` (java, php: `allowedHosts`; csharp, go: `AllowedHosts`) ne correspond pas renvoie un résultat d'erreur `url_not_allowed`. `web_search` omet les résultats provenant de tels hôtes. Les deux listes ne fonctionnent pas de la même manière : l'entrée d'un outil couvre ses sous-domaines, mais une entrée de `allowed_hosts` (java, php: `allowedHosts`; csharp, go: `AllowedHosts`) correspond à un seul hôte exact, sauf si elle commence par `*.`. Par exemple, l'entrée d'outil `docs.example.com` n'est pas couverte par des `allowed_hosts` (java, php: `allowedHosts`; csharp, go: `AllowedHosts`) valant `["example.com"]`, mais elle l'est par `["docs.example.com"]` ou `["*.example.com"]`.

Dans la Claude Console, définissez les domaines autorisés ou bloqués à partir des lignes `web_search` et `web_fetch` de la carte **Built-in tools** du formulaire de l'agent. Définissez `max_content_tokens` et `user_location` dans la vue **Raw** de la configuration de l'agent.

## Paramètres

En plus de `enabled` (csharp, go: `Enabled`) et `permission_policy` (java, php: `permissionPolicy`; csharp, go: `PermissionPolicy`), les entrées des outils web acceptent les paramètres suivants :

| Paramètre                                                                            | S'applique à              | Description                                                                                                                                                                                                                              |
| ------------------------------------------------------------------------------------ | ------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `allowed_domains` (java, php: `allowedDomains`; csharp, go: `AllowedDomains`)        | `web_search`, `web_fetch` | Les seuls hôtes que l'outil peut atteindre. Consultez [Règles des listes de domaines](https://platform.claude.com/docs/fr/managed-agents/tools-web-restrictions#domain-list-rules).                                                      |
| `blocked_domains` (java, php: `blockedDomains`; csharp, go: `BlockedDomains`)        | `web_search`, `web_fetch` | Les hôtes que l'outil ne peut pas atteindre. Consultez [Règles des listes de domaines](https://platform.claude.com/docs/fr/managed-agents/tools-web-restrictions#domain-list-rules).                                                     |
| `max_content_tokens` (java, php: `maxContentTokens`; csharp, go: `MaxContentTokens`) | `web_fetch`               | Plafonne la quantité de contenu de page récupéré incluse dans le contexte. Doit être un entier positif. Consultez les [limites de contenu](https://platform.claude.com/docs/fr/agents-and-tools/tool-use/web-fetch-tool#content-limits). |
| `user_location` (java, php: `userLocation`; csharp, go: `UserLocation`)              | `web_search`              | Localise les résultats de recherche. Un objet avec les mêmes champs que le paramètre [`user_location`](https://platform.claude.com/docs/fr/agents-and-tools/tool-use/web-search-tool#localization) de l'API Messages.                    |

Pour savoir comment les SDK typent ces entrées, consultez [Types d'entrées de configuration dans les SDK](https://platform.claude.com/docs/fr/managed-agents/tools#config-entry-types-in-the-sdks).

## Lorsqu'un domaine n'est pas autorisé

`web_search` omet les résultats que sa liste de domaines n'autorise pas. Un appel `web_fetch` pour une URL que sa liste de domaines n'autorise pas renvoie un résultat d'erreur à l'agent. L'événement `agent.tool_result` a `is_error: true`, et son contenu indique le code d'erreur `url_not_allowed`.

## Règles des listes de domaines

Ces règles s'appliquent aussi bien à `allowed_domains` (java, php: `allowedDomains`; csharp, go: `AllowedDomains`) qu'à `blocked_domains` (java, php: `blockedDomains`; csharp, go: `BlockedDomains`). Une requête qui enfreint l'une d'elles est rejetée, comme décrit dans [Erreurs de validation](https://platform.claude.com/docs/fr/managed-agents/tools-web-restrictions#validation-errors).

* **Une liste par entrée :** Définissez soit `allowed_domains` (java, php: `allowedDomains`; csharp, go: `AllowedDomains`), soit `blocked_domains` (java, php: `blockedDomains`; csharp, go: `BlockedDomains`) sur une entrée, mais pas les deux.
* **Taille de la liste :** Chaque liste contient de 1 à 64 domaines, chacun de 1 à 255 caractères.
* **Pas de listes vides :** Pour n'appliquer aucune restriction, omettez le champ ou envoyez `null`.
* **Pas de doublons :** Un domaine ne peut apparaître qu'une seule fois dans une liste. `www.example.com` et `example.com` comptent comme des domaines différents.

### Ce à quoi correspond un domaine listé

Un domaine listé correspond à cet hôte et à tous ses sous-domaines. `example.com` couvre `docs.example.com`, mais `docs.example.com` ne couvre ni `example.com` ni `api.example.com`.

Un préfixe `www.` est un sous-domaine comme un autre, donc `www.example.com` ne couvre pas `example.com`. Listez le domaine nu pour couvrir les deux.

Les noms d'hôte sont comparés sans tenir compte de la casse.

### Format des domaines

Chaque domaine est un nom de domaine enregistrable, ou un sous-domaine de celui-ci, écrit sous forme de nom d'hôte simple. Il peut contenir des lettres ASCII, des chiffres, des traits d'union, des traits de soulignement et des points. Un seul `/` final est ignoré.

| Non accepté                                                                                                                   | Exemple                  | À utiliser à la place                      |
| ----------------------------------------------------------------------------------------------------------------------------- | ------------------------ | ------------------------------------------ |
| Un schéma                                                                                                                     | `https://example.com`    | `example.com`                              |
| Un port                                                                                                                       | `example.com:443`        | `example.com`                              |
| Un caractère générique                                                                                                        | `*.example.com`          | `example.com`                              |
| Un chemin sur un domaine `web_fetch`                                                                                          | `example.com/*`          | `example.com`                              |
| Une adresse IP sous quelque forme que ce soit, qu'il s'agisse d'IPv4, d'IPv6, entre crochets ou en notation numérique abrégée | `127.1`                  | Le nom de domaine du site                  |
| Un domaine de premier niveau nu ou un suffixe de registre                                                                     | `com`, `co.uk`, `gov.uk` | Un domaine complet tel que `example.co.uk` |
| Un nom à étiquette unique                                                                                                     | `intranet`               | Un domaine complet tel que `example.co.uk` |
| Des caractères non ASCII, comme dans un nom de domaine internationalisé                                                       |                          | La forme `xn--` (Punycode)                 |

Un domaine est également rejeté s'il contient des identifiants ou des espaces, ou si l'une de ses étiquettes commence ou se termine par un trait d'union. `localhost` et les hôtes se terminant par `.localhost`, `.local`, `.internal`, `.localdomain` ou `.invalid` sont également rejetés.

### Suffixes de chemin sur les domaines de recherche web

Un domaine `web_search` peut comporter un suffixe de chemin, tel que `example.com/blog`. Le chemin ne peut pas contenir d'espaces, de `?`, de `#`, ni aucun des caractères `$ , | ^ !`.

Privilégiez également les noms d'hôte simples pour `web_search`. Le fournisseur de recherche fait correspondre les suffixes de chemin en tant que motifs d'URL plutôt qu'en tant que règles d'hôte strictes.

## Erreurs de validation

L'API valide ces paramètres lorsque vous [créez un agent](https://platform.claude.com/docs/fr/managed-agents/agent-setup#create-an-agent) ou [mettez à jour un agent](https://platform.claude.com/docs/fr/managed-agents/agent-setup#update-an-agent). Elle les valide également lorsque vous créez ou mettez à jour une session qui fournit `tools` (csharp, go: `Tools`).

Les violations de format et de limites sont rejetées avec une erreur 400 `invalid_request_error` :

| Violation                                | Message d'erreur                                                                                                                                                             |
| ---------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Une entrée définit les deux listes.      | Inclut `Only one of allowed_domains or blocked_domains may be set.`                                                                                                          |
| Une liste est vide.                      | Inclut `allowed_domains: Empty list of domains is ambiguous. Provide at least one domain or null.`                                                                           |
| Un domaine enfreint une règle de format. | Indique la liste du domaine et sa position (à partir de zéro). Par exemple, `allowed_domains.0: IP addresses are not supported; provide a plain hostname like "example.com"` |

Sur ces mêmes requêtes, l'API rejette également trois paramètres qui dépendent des fournisseurs de recherche et de récupération :

* Un domaine dans `allowed_domains` (java, php: `allowedDomains`; csharp, go: `AllowedDomains`) auquel le robot d'exploration d'Anthropic n'est pas autorisé à accéder.
* Un `user_location.country` que le fournisseur de recherche ne prend pas en charge. Le message se termine par `user_location.country: not a country the search provider supports`.
* Un `user_location.timezone` qui n'est pas un nom IANA valide.

Dans un environnement cloud avec une [mise en réseau](https://platform.claude.com/docs/fr/managed-agents/environments#networking) `limited`, la création et la mise à jour de session vérifient également `allowed_domains` (java, php: `allowedDomains`; csharp, go: `AllowedDomains`) par rapport aux `allowed_hosts` (java, php: `allowedHosts`; csharp, go: `AllowedHosts`) de l'environnement. Consultez la règle dans [Définir des listes de domaines sur un agent](https://platform.claude.com/docs/fr/managed-agents/tools-web-restrictions#set-domain-lists-on-an-agent).

### Lorsqu'un paramètre accepté n'est plus valide

La session vérifie à nouveau la configuration lorsqu'elle initialise l'outil pour la première fois. Si un paramètre accepté précédemment n'est plus valide à ce moment-là, la session émet un événement [`session.error`](https://platform.claude.com/docs/fr/managed-agents/events-and-streaming). Elle revient ensuite à l'état `idle` sans réessayer.

Pour poursuivre la session :

1. Corrigez le paramètre en [mettant à jour les outils de la session](https://platform.claude.com/docs/fr/managed-agents/session-operations#updating-the-agent-configuration).
2. Mettez également à jour l'agent, afin que les nouvelles sessions démarrent avec la configuration corrigée.
3. Envoyez un nouveau `user.message`.

## Sessions multi-agents et sessions orientées résultats

Dans une [session multi-agents](https://platform.claude.com/docs/fr/managed-agents/multiagent-orchestration), toutes les listes de domaines qui s'appliquent à un fil sont appliquées simultanément. Un agent figurant dans la liste `predefined_agents` (java, php: `predefinedAgents`; csharp, go: `PredefinedAgents`) de `subagents` (csharp, go: `Subagents`) est soumis à trois ensembles de listes :

* Ses propres `allowed_domains` et `blocked_domains`
* Ceux de tout agent qui l'a appelé
* Les listes actuelles de l'agent exécuté par la session

Les paramètres se combinent comme suit :

| Paramètre                             | Mode de combinaison                                                                                                                                                                                                   |
| ------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `allowed_domains`                     | L'outil ne peut atteindre un hôte que si chaque liste le couvre.                                                                                                                                                      |
| `blocked_domains`                     | Les listes s'additionnent.                                                                                                                                                                                            |
| `max_content_tokens`, `user_location` | Non combinés. Un fil utilise la valeur de sa propre configuration d'outil si elle est définie. Sinon, il utilise la valeur de l'agent qui l'a appelé, et à défaut la configuration actuelle de l'agent de la session. |

Un agent listé peut donc restreindre ce qu'un outil atteint, mais jamais l'élargir :

* Un agent listé qui définit `blocked_domains` conserve les `allowed_domains` de l'agent de la session et bloque ces hôtes à l'intérieur de cette liste.
* Un agent listé qui définit ses propres `allowed_domains` ne peut atteindre que les hôtes que couvrent à la fois sa liste et la liste de l'agent de la session.

Une entrée `{"type": "self"}` dans la liste `predefined_agents` (java, php: `predefinedAgents`; csharp, go: `PredefinedAgents`) de `subagents` (csharp, go: `Subagents`) n'a pas de paramètres web propres et suit les paramètres actuels de l'agent de la session.

Si les listes `allowed_domains` combinées n'ont aucun domaine en commun, l'outil reste disponible pour cet agent, mais chaque appel échoue. Chaque appel renvoie une erreur `url_not_allowed` indiquant qu'aucun domaine n'est autorisé. La description de l'outil indique la même chose au modèle. Pour éviter cela, maintenez les `allowed_domains` de chaque agent listé à l'intérieur des `allowed_domains` de l'agent de la session.

L'évaluateur des [sessions orientées résultats](https://platform.claude.com/docs/fr/managed-agents/define-outcomes) s'exécute sans `web_search` ni `web_fetch`, quels que soient ces paramètres.

## Modifier les listes en cours de session

Vous pouvez modifier les listes d'une session inactive en [mettant à jour ses outils](https://platform.claude.com/docs/fr/managed-agents/session-operations#updating-the-agent-configuration). Les nouvelles listes s'appliquent au reste de la session.

Dans une session multi-agents, chaque fil applique les nouvelles listes à partir de son prochain tour. Pour un agent figurant dans la liste `predefined_agents` (java, php: `predefinedAgents`; csharp, go: `PredefinedAgents`) de `subagents` (csharp, go: `Subagents`), la mise à jour ne modifie pas les listes propres de l'agent. Celles-ci restent telles que la définition de l'agent les a fixées lors de la création de la session.

## Différences avec les outils de l'API Messages

Ces paramètres utilisent les mêmes champs `allowed_domains` (java, php: `allowedDomains`; csharp, go: `AllowedDomains`) et `blocked_domains` (java, php: `blockedDomains`; csharp, go: `BlockedDomains`) que le [filtrage de domaines](https://platform.claude.com/docs/fr/agents-and-tools/tool-use/server-tools#domain-filtering) des outils serveur de l'API Messages. Managed Agents diffère sur quatre points :

* Chaque liste est [plafonnée à 64 domaines](https://platform.claude.com/docs/fr/managed-agents/tools-web-restrictions#domain-list-rules).
* Les domaines listés pour `web_fetch` [ne peuvent pas inclure de chemin](https://platform.claude.com/docs/fr/managed-agents/tools-web-restrictions#domain-format).
* Les domaines [doivent être en ASCII](https://platform.claude.com/docs/fr/managed-agents/tools-web-restrictions#domain-format). L'API Messages accepte les entrées Unicode, bien qu'elle les déconseille.
* `max_uses` (java, php: `maxUses`; csharp, go: `MaxUses`), `citations` (csharp, go: `Citations`) et `cache_control` (java, php: `cacheControl`; csharp, go: `CacheControl`) ne sont pas disponibles dans l'ensemble d'outils.

## Étapes suivantes

<CardGroup cols={2}>
  <Card title="Outils" icon="tool" href="https://platform.claude.com/docs/fr/managed-agents/tools">
    Découvrez les outils intégrés, activez-les ou désactivez-les, et définissez des outils personnalisés.
  </Card>

  <Card title="Politiques d'autorisation" icon="lock" href="https://platform.claude.com/docs/fr/managed-agents/permission-policies">
    Contrôlez quand les outils d'agent et MCP s'exécutent.
  </Card>

  <Card title="Configuration de l'environnement cloud" icon="settings" href="https://platform.claude.com/docs/fr/managed-agents/environments">
    Contrôlez l'accès réseau sortant propre au sandbox.
  </Card>

  <Card title="Orchestration multi-agents" icon="sitemap" href="https://platform.claude.com/docs/fr/managed-agents/multiagent-orchestration">
    Coordonnez plusieurs agents au sein d'une même session.
  </Card>
</CardGroup>
