---
title: Ограничение доменов для веб-поиска и веб-загрузки
url: https://platform.claude.com/docs/ru/managed-agents/tools-web-restrictions
description: Управляйте тем, к каким сайтам могут обращаться инструменты веб-поиска и веб-загрузки агента, ограничивайте объём загружаемого содержимого и локализуйте результаты поиска.
featureMetadata:
  topic:
    title: Managed Agents
    url: https://platform.claude.com/docs/en/managed-agents/overview
  status: beta
  betaHeader: managed-agents-2026-04-01
---

Чтобы управлять тем, к каким сайтам могут обращаться веб-инструменты агента, задайте список доменов в записях `web_search` и `web_fetch` [набора инструментов агента](https://platform.claude.com/docs/ru/managed-agents/tools#configuring-the-toolset). Каждая из этих записей `configs` (csharp, go: `Configs`) принимает один из двух списков:

* **`allowed_domains` (java, php: `allowedDomains`; csharp, go: `AllowedDomains`):** инструмент может обращаться только к этим хостам.
* **`blocked_domains` (java, php: `blockedDomains`; csharp, go: `BlockedDomains`):** инструмент никогда не может обращаться к этим хостам.

У каждого инструмента свой список, поэтому для `web_search` и `web_fetch` можно задать разные ограничения.

<Note>
  `web_search` и `web_fetch` выполняются на серверах Anthropic, а не в песочнице. Облачная среда с [сетевым режимом](https://platform.claude.com/docs/ru/managed-agents/environments#networking) `limited` также применяет к ним свой список `allowed_hosts` (java, php: `allowedHosts`; csharp, go: `AllowedHosts`); см. [Задание списков доменов для агента](https://platform.claude.com/docs/ru/managed-agents/tools-web-restrictions#set-domain-lists-on-an-agent). Сетевой режим `unrestricted` и самостоятельно размещаемые среды их не ограничивают. Списки для отдельных инструментов ограничивают эти инструменты дополнительно. Настройки веб-поиска и веб-загрузки на уровне организации в Claude Console применяются к Messages API. К сессиям Managed Agents они не применяются.
</Note>

## Задание списков доменов для агента

В следующем примере создаётся агент, который ограничивает `web_search` двумя сайтами и блокирует один хост для `web_fetch`. Также в нём задаются `user_location` (java, php: `userLocation`; csharp, go: `UserLocation`) и `max_content_tokens` (java, php: `maxContentTokens`; csharp, go: `MaxContentTokens`), описанные в разделе [Настройки](https://platform.claude.com/docs/ru/managed-agents/tools-web-restrictions#settings). Затем пример выводит массив `configs` (csharp, go: `Configs`) из ответа.

<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/ru/cli-sdks-libraries/cli/apply) создаёт агента и выводит его ID, а не массив `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>

В облачной среде с [сетевым режимом](https://platform.claude.com/docs/ru/managed-agents/environments#networking) `limited` список `allowed_hosts` (java, php: `allowedHosts`; csharp, go: `AllowedHosts`) среды также применяется к `web_search` и `web_fetch`. Создание сессии завершается ошибкой 400, если `allowed_domains` (java, php: `allowedDomains`; csharp, go: `AllowedDomains`) включённого веб-инструмента содержит запись, не входящую в `allowed_hosts` (java, php: `allowedHosts`; csharp, go: `AllowedHosts`). То же происходит при обновлении сессии, которое добавляет такую запись. Чтобы исправить это, добавьте хост в `allowed_hosts` (java, php: `allowedHosts`; csharp, go: `AllowedHosts`) или удалите запись из `allowed_domains` (java, php: `allowedDomains`; csharp, go: `AllowedDomains`). Во время выполнения вызов `web_fetch` для URL на хосте, которому не соответствует `allowed_hosts` (java, php: `allowedHosts`; csharp, go: `AllowedHosts`), возвращает результат с ошибкой `url_not_allowed`. `web_search` исключает результаты с таких хостов. Два списка сопоставляются по-разному: запись инструмента охватывает свои поддомены, а запись `allowed_hosts` (java, php: `allowedHosts`; csharp, go: `AllowedHosts`) соответствует ровно одному хосту, если только она не начинается с `*.`. Например, запись инструмента `docs.example.com` не входит в `allowed_hosts` (java, php: `allowedHosts`; csharp, go: `AllowedHosts`) со значением `["example.com"]`, но входит в `["docs.example.com"]` или `["*.example.com"]`.

В Claude Console задайте разрешённые или заблокированные домены в строках `web_search` и `web_fetch` карточки **Built-in tools** в форме агента. Задайте `max_content_tokens` и `user_location` в представлении **Raw** конфигурации агента.

## Настройки

Помимо `enabled` (csharp, go: `Enabled`) и `permission_policy` (java, php: `permissionPolicy`; csharp, go: `PermissionPolicy`), записи веб-инструментов принимают следующие настройки:

| Настройка                                                                            | Применяется к             | Описание                                                                                                                                                                                                                                          |
| ------------------------------------------------------------------------------------ | ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `allowed_domains` (java, php: `allowedDomains`; csharp, go: `AllowedDomains`)        | `web_search`, `web_fetch` | Единственные хосты, к которым может обращаться инструмент. См. [Правила списков доменов](https://platform.claude.com/docs/ru/managed-agents/tools-web-restrictions#domain-list-rules).                                                            |
| `blocked_domains` (java, php: `blockedDomains`; csharp, go: `BlockedDomains`)        | `web_search`, `web_fetch` | Хосты, к которым инструмент не может обращаться. См. [Правила списков доменов](https://platform.claude.com/docs/ru/managed-agents/tools-web-restrictions#domain-list-rules).                                                                      |
| `max_content_tokens` (java, php: `maxContentTokens`; csharp, go: `MaxContentTokens`) | `web_fetch`               | Ограничивает объём загруженного содержимого страницы, включаемого в контекст. Должно быть положительным целым числом. См. [ограничения содержимого](https://platform.claude.com/docs/ru/agents-and-tools/tool-use/web-fetch-tool#content-limits). |
| `user_location` (java, php: `userLocation`; csharp, go: `UserLocation`)              | `web_search`              | Локализует результаты поиска. Объект с теми же полями, что и параметр [`user_location`](https://platform.claude.com/docs/ru/agents-and-tools/tool-use/web-search-tool#localization) в Messages API.                                               |

О том, как SDK типизируют эти записи, см. [Типы записей конфигурации в SDK](https://platform.claude.com/docs/ru/managed-agents/tools#config-entry-types-in-the-sdks).

## Когда домен не разрешён

`web_search` исключает результаты, которые не разрешены его списком доменов. Вызов `web_fetch` для URL, не разрешённого его списком доменов, возвращает агенту результат с ошибкой. Событие `agent.tool_result` имеет `is_error: true`, а его содержимое указывает код ошибки `url_not_allowed`.

## Правила списков доменов

Эти правила одинаково применяются к `allowed_domains` (java, php: `allowedDomains`; csharp, go: `AllowedDomains`) и `blocked_domains` (java, php: `blockedDomains`; csharp, go: `BlockedDomains`). Запрос, нарушающий одно из них, отклоняется, как описано в разделе [Ошибки валидации](https://platform.claude.com/docs/ru/managed-agents/tools-web-restrictions#validation-errors).

* **Один список на запись:** задайте в записи либо `allowed_domains` (java, php: `allowedDomains`; csharp, go: `AllowedDomains`), либо `blocked_domains` (java, php: `blockedDomains`; csharp, go: `BlockedDomains`), но не оба.
* **Размер списка:** каждый список содержит от 1 до 64 доменов, каждый длиной от 1 до 255 символов.
* **Без пустых списков:** чтобы не применять ограничений, опустите поле или передайте `null`.
* **Без дубликатов:** домен может встречаться в списке только один раз. `www.example.com` и `example.com` считаются разными доменами.

### Чему соответствует указанный домен

Указанный домен соответствует этому хосту и всем его поддоменам. `example.com` охватывает `docs.example.com`, но `docs.example.com` не охватывает ни `example.com`, ни `api.example.com`.

Начальный `www.` — такой же поддомен, как и любой другой, поэтому `www.example.com` не охватывает `example.com`. Чтобы охватить оба варианта, укажите домен без префикса `www.`

Имена хостов сравниваются без учёта регистра.

### Формат домена

Каждый домен — это регистрируемое доменное имя или его поддомен, записанный как простое имя хоста. Он может содержать буквы ASCII, цифры, дефисы, подчёркивания и точки. Один завершающий `/` игнорируется.

| Не допускается                                                                             | Пример                   | Используйте вместо этого               |
| ------------------------------------------------------------------------------------------ | ------------------------ | -------------------------------------- |
| Схема                                                                                      | `https://example.com`    | `example.com`                          |
| Порт                                                                                       | `example.com:443`        | `example.com`                          |
| Подстановочный знак                                                                        | `*.example.com`          | `example.com`                          |
| Путь в домене для `web_fetch`                                                              | `example.com/*`          | `example.com`                          |
| IP-адрес в любой форме: IPv4, IPv6, в квадратных скобках или в сокращённой числовой записи | `127.1`                  | Доменное имя сайта                     |
| Отдельный домен верхнего уровня или суффикс реестра без имени                              | `com`, `co.uk`, `gov.uk` | Полный домен, например `example.co.uk` |
| Имя из одной метки                                                                         | `intranet`               | Полный домен, например `example.co.uk` |
| Символы не из ASCII, как в интернационализированном доменном имени                         |                          | Форма `xn--` (Punycode)                |

Домен также отклоняется, если он содержит учётные данные или пробельные символы либо если одна из его меток начинается или заканчивается дефисом. `localhost` и хосты, оканчивающиеся на `.localhost`, `.local`, `.internal`, `.localdomain` или `.invalid`, также отклоняются.

### Суффиксы пути в доменах для веб-поиска

Домен для `web_search` может содержать суффикс пути, например `example.com/blog`. Путь не может содержать пробелы, `?`, `#` или любой из символов `$ , | ^ !`.

Для `web_search` также предпочтительнее использовать простые имена хостов. Поисковый провайдер сопоставляет суффиксы пути как шаблоны URL, а не как строгие правила для хостов.

## Ошибки валидации

API проверяет эти настройки, когда вы [создаёте агента](https://platform.claude.com/docs/ru/managed-agents/agent-setup#create-an-agent) или [обновляете агента](https://platform.claude.com/docs/ru/managed-agents/agent-setup#update-an-agent). Он также проверяет их, когда вы создаёте или обновляете сессию, передающую `tools` (csharp, go: `Tools`).

Нарушения формата и ограничений отклоняются с ошибкой 400 `invalid_request_error`:

| Нарушение                       | Сообщение об ошибке                                                                                                                                                  |
| ------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| В записи заданы оба списка.     | Содержит `Only one of allowed_domains or blocked_domains may be set.`                                                                                                |
| Список пуст.                    | Содержит `allowed_domains: Empty list of domains is ambiguous. Provide at least one domain or null.`                                                                 |
| Домен нарушает правило формата. | Указывает список домена и позицию, отсчитываемую от нуля. Например, `allowed_domains.0: IP addresses are not supported; provide a plain hostname like "example.com"` |

В тех же запросах API также отклоняет три настройки, зависящие от провайдеров поиска и загрузки:

* Домен в `allowed_domains` (java, php: `allowedDomains`; csharp, go: `AllowedDomains`), к которому поисковому роботу Anthropic не разрешён доступ.
* Значение `user_location.country`, которое не поддерживает поисковый провайдер. Сообщение заканчивается на `user_location.country: not a country the search provider supports`.
* Значение `user_location.timezone`, которое не является допустимым именем IANA.

В облачной среде с [сетевым режимом](https://platform.claude.com/docs/ru/managed-agents/environments#networking) `limited` при создании и обновлении сессии также проверяется соответствие `allowed_domains` (java, php: `allowedDomains`; csharp, go: `AllowedDomains`) списку `allowed_hosts` (java, php: `allowedHosts`; csharp, go: `AllowedHosts`) среды. См. правило в разделе [Задание списков доменов для агента](https://platform.claude.com/docs/ru/managed-agents/tools-web-restrictions#set-domain-lists-on-an-agent).

### Когда принятая настройка перестаёт быть допустимой

Сессия повторно проверяет конфигурацию при первой инициализации инструмента. Если ранее принятая настройка к этому моменту перестала быть допустимой, сессия отправляет событие [`session.error`](https://platform.claude.com/docs/ru/managed-agents/events-and-streaming). Затем она возвращается в состояние `idle` без повторных попыток.

Чтобы продолжить сессию:

1. Исправьте настройку, [обновив инструменты сессии](https://platform.claude.com/docs/ru/managed-agents/session-operations#updating-the-agent-configuration).
2. Также обновите агента, чтобы новые сессии запускались с исправленной конфигурацией.
3. Отправьте новое сообщение `user.message`.

## Мультиагентные сессии и сессии, ориентированные на результат

В [мультиагентной сессии](https://platform.claude.com/docs/ru/managed-agents/multiagent-orchestration) все списки доменов, применимые к потоку, действуют одновременно. Агент, указанный в списке `predefined_agents` (java, php: `predefinedAgents`; csharp, go: `PredefinedAgents`) параметра `subagents` (csharp, go: `Subagents`), ограничен тремя наборами списков:

* Собственными `allowed_domains` и `blocked_domains`
* Списками любого агента, который его вызвал
* Текущими списками агента, которого запускает сессия

Настройки объединяются следующим образом:

| Настройка                             | Как объединяется                                                                                                                                                                                                         |
| ------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `allowed_domains`                     | Инструмент может обращаться к хосту, только если его охватывает каждый список.                                                                                                                                           |
| `blocked_domains`                     | Списки суммируются.                                                                                                                                                                                                      |
| `max_content_tokens`, `user_location` | Не объединяются. Поток использует значение из собственной конфигурации инструмента, если оно задано. В противном случае — значение агента, который его вызвал, а если и его нет — из текущей конфигурации агента сессии. |

Поэтому указанный в списке агент может сузить круг того, к чему обращается инструмент, но никогда не может его расширить:

* Указанный в списке агент, задающий `blocked_domains`, сохраняет `allowed_domains` агента сессии и блокирует эти хосты в его пределах.
* Указанный в списке агент, задающий собственные `allowed_domains`, может обращаться только к хостам, которые охвачены и его списком, и списком агента сессии.

Запись `{"type": "self"}` в списке `predefined_agents` (java, php: `predefinedAgents`; csharp, go: `PredefinedAgents`) параметра `subagents` (csharp, go: `Subagents`) не имеет собственных веб-настроек и следует текущим настройкам агента сессии.

Если у объединяемых списков `allowed_domains` нет ни одного общего домена, инструмент остаётся доступным этому агенту, но каждый вызов завершается ошибкой. Каждый вызов возвращает ошибку `url_not_allowed` с сообщением о том, что ни один домен не разрешён. Описание инструмента сообщает модели то же самое. Чтобы избежать этого, держите `allowed_domains` каждого указанного в списке агента в пределах `allowed_domains` агента сессии.

Оценщик в [сессиях, ориентированных на результат](https://platform.claude.com/docs/ru/managed-agents/define-outcomes), работает без `web_search` и `web_fetch` независимо от этих настроек.

## Изменение списков во время сессии

Вы можете изменить списки в сессии в состоянии ожидания, [обновив её инструменты](https://platform.claude.com/docs/ru/managed-agents/session-operations#updating-the-agent-configuration). Новые списки действуют до конца сессии.

В мультиагентной сессии каждый поток применяет новые списки со своего следующего хода. Для агента, указанного в списке `predefined_agents` (java, php: `predefinedAgents`; csharp, go: `PredefinedAgents`) параметра `subagents` (csharp, go: `Subagents`), обновление не изменяет собственные списки агента. Они остаются такими, какими их задало определение агента при создании сессии.

## Отличия от инструментов Messages API

Эти настройки используют те же поля `allowed_domains` (java, php: `allowedDomains`; csharp, go: `AllowedDomains`) и `blocked_domains` (java, php: `blockedDomains`; csharp, go: `BlockedDomains`), что и [фильтрация доменов](https://platform.claude.com/docs/ru/agents-and-tools/tool-use/server-tools#domain-filtering) в серверных инструментах Messages API. Managed Agents отличается в четырёх аспектах:

* Каждый список [ограничен 64 доменами](https://platform.claude.com/docs/ru/managed-agents/tools-web-restrictions#domain-list-rules).
* Домены, указанные для `web_fetch`, [не могут содержать путь](https://platform.claude.com/docs/ru/managed-agents/tools-web-restrictions#domain-format).
* Домены [должны быть в ASCII](https://platform.claude.com/docs/ru/managed-agents/tools-web-restrictions#domain-format). Messages API принимает записи в Unicode, хотя и не рекомендует их использовать.
* `max_uses` (java, php: `maxUses`; csharp, go: `MaxUses`), `citations` (csharp, go: `Citations`) и `cache_control` (java, php: `cacheControl`; csharp, go: `CacheControl`) недоступны в наборе инструментов.

## Следующие шаги

<CardGroup cols={2}>
  <Card title="Инструменты" icon="tool" href="https://platform.claude.com/docs/ru/managed-agents/tools">
    Ознакомьтесь со встроенными инструментами, включайте или отключайте их и определяйте пользовательские инструменты.
  </Card>

  <Card title="Политики разрешений" icon="lock" href="https://platform.claude.com/docs/ru/managed-agents/permission-policies">
    Управляйте тем, когда выполняются инструменты агента и MCP.
  </Card>

  <Card title="Настройка облачной среды" icon="settings" href="https://platform.claude.com/docs/ru/managed-agents/environments">
    Управляйте собственным исходящим сетевым доступом песочницы.
  </Card>

  <Card title="Мультиагентная оркестрация" icon="sitemap" href="https://platform.claude.com/docs/ru/managed-agents/multiagent-orchestration">
    Координируйте работу нескольких агентов в рамках одной сессии.
  </Card>
</CardGroup>
