---
title: Domains für Websuche und Web-Fetch einschränken
url: https://platform.claude.com/docs/de/managed-agents/tools-web-restrictions
description: Steuere, welche Websites die Websuche- und Web-Fetch-Tools eines Agenten erreichen können, begrenze abgerufene Inhalte und lokalisiere Suchergebnisse.
featureMetadata:
  topic:
    title: Managed Agents
    url: https://platform.claude.com/docs/en/managed-agents/overview
  status: beta
  betaHeader: managed-agents-2026-04-01
---

Um zu steuern, welche Websites die Web-Tools des Agenten erreichen können, lege eine Domainliste für die Einträge `web_search` und `web_fetch` des [Agent-Toolsets](https://platform.claude.com/docs/de/managed-agents/tools#configuring-the-toolset) fest. Jeder dieser `configs` (csharp, go: `Configs`)-Einträge akzeptiert eine von zwei Listen:

* **`allowed_domains` (java, php: `allowedDomains`; csharp, go: `AllowedDomains`):** Das Tool kann nur diese Hosts erreichen.
* **`blocked_domains` (java, php: `blockedDomains`; csharp, go: `BlockedDomains`):** Das Tool kann diese Hosts niemals erreichen.

Jedes Tool hat seine eigene Liste, sodass `web_search` und `web_fetch` unterschiedliche Einschränkungen haben können.

<Note>
  `web_search` und `web_fetch` laufen auf den Servern von Anthropic, nicht in der Sandbox. Eine Cloud-Umgebung mit `limited` [Networking](https://platform.claude.com/docs/de/managed-agents/environments#networking) wendet ihre `allowed_hosts` (java, php: `allowedHosts`; csharp, go: `AllowedHosts`) ebenfalls auf sie an; siehe [Domainlisten für einen Agenten festlegen](https://platform.claude.com/docs/de/managed-agents/tools-web-restrictions#set-domain-lists-on-an-agent). `unrestricted` Networking und selbst gehostete Umgebungen schränken sie nicht ein. Die Listen pro Tool schränken diese Tools zusätzlich ein. Einstellungen für Websuche und Web-Fetch auf Organisationsebene in der Claude Console gelten für die Messages API. Sie gelten nicht für Managed-Agents-Sessions.
</Note>

## Domainlisten für einen Agenten festlegen

Das folgende Beispiel erstellt einen Agenten, der `web_search` auf zwei Websites beschränkt und einen Host für `web_fetch` blockiert. Außerdem setzt es `user_location` (java, php: `userLocation`; csharp, go: `UserLocation`) und `max_content_tokens` (java, php: `maxContentTokens`; csharp, go: `MaxContentTokens`), die unter [Einstellungen](https://platform.claude.com/docs/de/managed-agents/tools-web-restrictions#settings) beschrieben werden. Anschließend gibt das Beispiel das `configs` (csharp, go: `Configs`)-Array aus der Antwort aus.

<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/de/cli-sdks-libraries/cli/apply) erstellt den Agenten und gibt seine ID aus, nicht das `configs`-Array.
  </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>

In einer Cloud-Umgebung mit `limited` [Networking](https://platform.claude.com/docs/de/managed-agents/environments#networking) gilt die `allowed_hosts` (java, php: `allowedHosts`; csharp, go: `AllowedHosts`) der Umgebung auch für `web_search` und `web_fetch`. Das Erstellen einer Session schlägt mit einem 400-Fehler fehl, wenn die `allowed_domains` (java, php: `allowedDomains`; csharp, go: `AllowedDomains`) eines aktivierten Web-Tools einen Eintrag enthält, der nicht innerhalb von `allowed_hosts` (java, php: `allowedHosts`; csharp, go: `AllowedHosts`) liegt. Dasselbe gilt für ein Session-Update, das einen solchen Eintrag hinzufügt. Um das zu beheben, füge den Host zu `allowed_hosts` (java, php: `allowedHosts`; csharp, go: `AllowedHosts`) hinzu oder entferne den Eintrag aus `allowed_domains` (java, php: `allowedDomains`; csharp, go: `AllowedDomains`). Zur Laufzeit gibt ein `web_fetch`-Aufruf für eine URL auf einem Host, auf den `allowed_hosts` (java, php: `allowedHosts`; csharp, go: `AllowedHosts`) nicht zutrifft, ein `url_not_allowed`-Fehlerergebnis zurück. `web_search` lässt Ergebnisse von solchen Hosts weg. Die beiden Listen werden unterschiedlich abgeglichen: Der Eintrag eines Tools deckt seine Subdomains ab, aber ein `allowed_hosts` (java, php: `allowedHosts`; csharp, go: `AllowedHosts`)-Eintrag trifft genau auf einen Host zu, es sei denn, er beginnt mit `*.`. Zum Beispiel liegt der Tool-Eintrag `docs.example.com` nicht innerhalb von `allowed_hosts` (java, php: `allowedHosts`; csharp, go: `AllowedHosts`) mit dem Wert `["example.com"]`, aber innerhalb von `["docs.example.com"]` oder `["*.example.com"]`.

Lege in der Claude Console erlaubte oder blockierte Domains in den Zeilen `web_search` und `web_fetch` der Karte **Built-in tools** im Agentenformular fest. Setze `max_content_tokens` und `user_location` in der **Raw**-Ansicht der Agentenkonfiguration.

## Einstellungen

Zusätzlich zu `enabled` (csharp, go: `Enabled`) und `permission_policy` (java, php: `permissionPolicy`; csharp, go: `PermissionPolicy`) akzeptieren die Web-Tool-Einträge die folgenden Einstellungen:

| Einstellung                                                                          | Gilt für                  | Beschreibung                                                                                                                                                                                                                               |
| ------------------------------------------------------------------------------------ | ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `allowed_domains` (java, php: `allowedDomains`; csharp, go: `AllowedDomains`)        | `web_search`, `web_fetch` | Die einzigen Hosts, die das Tool erreichen kann. Siehe [Regeln für Domainlisten](https://platform.claude.com/docs/de/managed-agents/tools-web-restrictions#domain-list-rules).                                                             |
| `blocked_domains` (java, php: `blockedDomains`; csharp, go: `BlockedDomains`)        | `web_search`, `web_fetch` | Hosts, die das Tool nicht erreichen kann. Siehe [Regeln für Domainlisten](https://platform.claude.com/docs/de/managed-agents/tools-web-restrictions#domain-list-rules).                                                                    |
| `max_content_tokens` (java, php: `maxContentTokens`; csharp, go: `MaxContentTokens`) | `web_fetch`               | Begrenzt die Menge an abgerufenem Seiteninhalt, die in den Kontext aufgenommen wird. Muss eine positive Ganzzahl sein. Siehe [Inhaltslimits](https://platform.claude.com/docs/de/agents-and-tools/tool-use/web-fetch-tool#content-limits). |
| `user_location` (java, php: `userLocation`; csharp, go: `UserLocation`)              | `web_search`              | Lokalisiert Suchergebnisse. Ein Objekt mit denselben Feldern wie der Parameter [`user_location`](https://platform.claude.com/docs/de/agents-and-tools/tool-use/web-search-tool#localization) der Messages API.                             |

Wie die SDKs diese Einträge typisieren, erfährst du unter [Typen von Konfigurationseinträgen in den SDKs](https://platform.claude.com/docs/de/managed-agents/tools#config-entry-types-in-the-sdks).

## Wenn eine Domain nicht erlaubt ist

`web_search` lässt Ergebnisse weg, die seine Domainliste nicht erlaubt. Ein `web_fetch`-Aufruf für eine URL, die seine Domainliste nicht erlaubt, gibt ein Fehlerergebnis an den Agenten zurück. Das `agent.tool_result`-Event hat `is_error: true`, und sein Inhalt nennt den Fehlercode `url_not_allowed`.

## Regeln für Domainlisten

Diese Regeln gelten gleichermaßen für `allowed_domains` (java, php: `allowedDomains`; csharp, go: `AllowedDomains`) und `blocked_domains` (java, php: `blockedDomains`; csharp, go: `BlockedDomains`). Eine Anfrage, die gegen eine davon verstößt, wird abgelehnt, wie unter [Validierungsfehler](https://platform.claude.com/docs/de/managed-agents/tools-web-restrictions#validation-errors) beschrieben.

* **Eine Liste pro Eintrag:** Setze für einen Eintrag entweder `allowed_domains` (java, php: `allowedDomains`; csharp, go: `AllowedDomains`) oder `blocked_domains` (java, php: `blockedDomains`; csharp, go: `BlockedDomains`), nicht beides.
* **Listengröße:** Jede Liste enthält 1 bis 64 Domains mit jeweils 1 bis 255 Zeichen.
* **Keine leeren Listen:** Um keine Einschränkung anzuwenden, lass das Feld weg oder sende `null`.
* **Keine Duplikate:** Eine Domain darf nur einmal in einer Liste vorkommen. `www.example.com` und `example.com` gelten als unterschiedliche Domains.

### Worauf eine gelistete Domain zutrifft

Eine gelistete Domain trifft auf diesen Host und alle seine Subdomains zu. `example.com` deckt `docs.example.com` ab, aber `docs.example.com` deckt weder `example.com` noch `api.example.com` ab.

Ein führendes `www.` ist eine Subdomain wie jede andere, daher deckt `www.example.com` nicht `example.com` ab. Führe die reine Domain auf, um beide abzudecken.

Hostnamen werden ohne Berücksichtigung der Groß- und Kleinschreibung verglichen.

### Domainformat

Jede Domain ist ein registrierbarer Domainname oder eine Subdomain davon, geschrieben als einfacher Hostname. Sie kann ASCII-Buchstaben, Ziffern, Bindestriche, Unterstriche und Punkte enthalten. Ein einzelnes abschließendes `/` wird ignoriert.

| Nicht akzeptiert                                                                                   | Beispiel                 | Stattdessen verwenden                        |
| -------------------------------------------------------------------------------------------------- | ------------------------ | -------------------------------------------- |
| Ein Schema                                                                                         | `https://example.com`    | `example.com`                                |
| Ein Port                                                                                           | `example.com:443`        | `example.com`                                |
| Ein Platzhalter                                                                                    | `*.example.com`          | `example.com`                                |
| Ein Pfad bei einer `web_fetch`-Domain                                                              | `example.com/*`          | `example.com`                                |
| Eine IP-Adresse in jeder Form, ob IPv4, IPv6, in eckigen Klammern oder numerische Kurzschreibweise | `127.1`                  | Der Domainname der Website                   |
| Eine reine Top-Level-Domain oder ein Registry-Suffix                                               | `com`, `co.uk`, `gov.uk` | Eine vollständige Domain wie `example.co.uk` |
| Ein Name mit nur einem Label                                                                       | `intranet`               | Eine vollständige Domain wie `example.co.uk` |
| Nicht-ASCII-Zeichen, wie in einem internationalisierten Domainnamen                                |                          | Die `xn--`-Form (Punycode)                   |

Eine Domain wird außerdem abgelehnt, wenn sie Anmeldedaten oder Leerzeichen enthält oder wenn eines ihrer Labels mit einem Bindestrich beginnt oder endet. `localhost` und Hosts, die auf `.localhost`, `.local`, `.internal`, `.localdomain` oder `.invalid` enden, werden ebenfalls abgelehnt.

### Pfadsuffixe bei Websuche-Domains

Eine `web_search`-Domain kann ein Pfadsuffix tragen, etwa `example.com/blog`. Der Pfad darf keine Leerzeichen, `?`, `#` oder eines der Zeichen `$ , | ^ !` enthalten.

Bevorzuge auch für `web_search` einfache Hostnamen. Der Suchanbieter gleicht Pfadsuffixe als URL-Muster ab statt als strikte Host-Regeln.

## Validierungsfehler

Die API validiert diese Einstellungen, wenn du [einen Agenten erstellst](https://platform.claude.com/docs/de/managed-agents/agent-setup#create-an-agent) oder [einen Agenten aktualisierst](https://platform.claude.com/docs/de/managed-agents/agent-setup#update-an-agent). Sie validiert sie auch, wenn du eine Session erstellst oder aktualisierst, die `tools` (csharp, go: `Tools`) angibt.

Format- und Limitverstöße werden mit einem 400-Fehler `invalid_request_error` abgelehnt:

| Verstoß                                      | Fehlermeldung                                                                                                                                                           |
| -------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Ein Eintrag setzt beide Listen.              | Enthält `Only one of allowed_domains or blocked_domains may be set.`                                                                                                    |
| Eine Liste ist leer.                         | Enthält `allowed_domains: Empty list of domains is ambiguous. Provide at least one domain or null.`                                                                     |
| Eine Domain verstößt gegen eine Formatregel. | Nennt die Liste der Domain und die nullbasierte Position. Zum Beispiel `allowed_domains.0: IP addresses are not supported; provide a plain hostname like "example.com"` |

Bei denselben Anfragen lehnt die API außerdem drei Einstellungen ab, die von den Such- und Abrufanbietern abhängen:

* Eine Domain in `allowed_domains` (java, php: `allowedDomains`; csharp, go: `AllowedDomains`), auf die der Crawler von Anthropic nicht zugreifen darf.
* Ein `user_location.country`, das der Suchanbieter nicht unterstützt. Die Meldung endet mit `user_location.country: not a country the search provider supports`.
* Eine `user_location.timezone`, die kein gültiger IANA-Name ist.

In einer Cloud-Umgebung mit `limited` [Networking](https://platform.claude.com/docs/de/managed-agents/environments#networking) prüfen das Erstellen und Aktualisieren von Sessions außerdem `allowed_domains` (java, php: `allowedDomains`; csharp, go: `AllowedDomains`) gegen die `allowed_hosts` (java, php: `allowedHosts`; csharp, go: `AllowedHosts`) der Umgebung. Siehe die Regel unter [Domainlisten für einen Agenten festlegen](https://platform.claude.com/docs/de/managed-agents/tools-web-restrictions#set-domain-lists-on-an-agent).

### Wenn eine akzeptierte Einstellung nicht mehr gültig ist

Die Session prüft die Konfiguration erneut, wenn sie das Tool zum ersten Mal initialisiert. Ist eine zuvor akzeptierte Einstellung zu diesem Zeitpunkt nicht mehr gültig, gibt die Session ein [`session.error`](https://platform.claude.com/docs/de/managed-agents/events-and-streaming)-Event aus. Anschließend kehrt sie ohne erneuten Versuch zu `idle` zurück.

Um die Session fortzusetzen:

1. Korrigiere die Einstellung, indem du [die Tools der Session aktualisierst](https://platform.claude.com/docs/de/managed-agents/session-operations#updating-the-agent-configuration).
2. Aktualisiere auch den Agenten, damit neue Sessions mit der korrigierten Konfiguration starten.
3. Sende eine neue `user.message`.

## Multiagenten- und ergebnisorientierte Sessions

In einer [Multiagenten-Session](https://platform.claude.com/docs/de/managed-agents/multiagent-orchestration) wird jede Domainliste, die für einen Thread gilt, gleichzeitig durchgesetzt. Ein Agent, der in der `predefined_agents` (java, php: `predefinedAgents`; csharp, go: `PredefinedAgents`)-Liste von `subagents` (csharp, go: `Subagents`) aufgeführt ist, ist an drei Gruppen von Listen gebunden:

* Seine eigenen `allowed_domains` und `blocked_domains`
* Die Listen jedes Agenten, der ihn aufgerufen hat
* Die aktuellen Listen des Agenten, den die Session ausführt

Die Einstellungen werden wie folgt kombiniert:

| Einstellung                           | Wie sie kombiniert wird                                                                                                                                                                                                                          |
| ------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `allowed_domains`                     | Das Tool kann einen Host nur erreichen, wenn jede Liste ihn abdeckt.                                                                                                                                                                             |
| `blocked_domains`                     | Die Listen werden zusammengefasst.                                                                                                                                                                                                               |
| `max_content_tokens`, `user_location` | Nicht kombiniert. Ein Thread verwendet den Wert aus seiner eigenen Tool-Konfiguration, falls gesetzt. Andernfalls verwendet er den Wert des Agenten, der ihn aufgerufen hat, und andernfalls die aktuelle Konfiguration des Agenten der Session. |

Ein aufgeführter Agent kann daher einschränken, was ein Tool erreicht, es aber niemals erweitern:

* Ein aufgeführter Agent, der `blocked_domains` setzt, behält die `allowed_domains` des Agenten der Session und blockiert diese Hosts darin.
* Ein aufgeführter Agent, der eigene `allowed_domains` setzt, kann nur die Hosts erreichen, die sowohl seine Liste als auch die Liste des Agenten der Session abdecken.

Ein `{"type": "self"}`-Eintrag in der `predefined_agents` (java, php: `predefinedAgents`; csharp, go: `PredefinedAgents`)-Liste von `subagents` (csharp, go: `Subagents`) hat keine eigenen Web-Einstellungen und folgt den aktuellen Einstellungen des Agenten der Session.

Wenn die kombinierten `allowed_domains`-Listen keine gemeinsame Domain haben, bleibt das Tool für diesen Agenten verfügbar, aber jeder Aufruf schlägt fehl. Jeder Aufruf gibt einen `url_not_allowed`-Fehler zurück, der besagt, dass keine Domain erlaubt ist. Die Tool-Beschreibung teilt dem Modell dasselbe mit. Um dies zu vermeiden, halte die `allowed_domains` jedes aufgeführten Agenten innerhalb der `allowed_domains` des Agenten der Session.

Der Grader in [ergebnisorientierten Sessions](https://platform.claude.com/docs/de/managed-agents/define-outcomes) läuft unabhängig von diesen Einstellungen ohne `web_search` und `web_fetch`.

## Listen während einer Session ändern

Du kannst die Listen einer inaktiven Session ändern, indem du [ihre Tools aktualisierst](https://platform.claude.com/docs/de/managed-agents/session-operations#updating-the-agent-configuration). Die neuen Listen gelten für den Rest der Session.

In einer Multiagenten-Session wendet jeder Thread die neuen Listen ab seinem nächsten Turn an. Für einen Agenten, der in der `predefined_agents` (java, php: `predefinedAgents`; csharp, go: `PredefinedAgents`)-Liste von `subagents` (csharp, go: `Subagents`) aufgeführt ist, ändert das Update die eigenen Listen des Agenten nicht. Diese bleiben so, wie die Definition des Agenten sie beim Erstellen der Session festgelegt hat.

## Unterschiede zu den Tools der Messages API

Diese Einstellungen verwenden dieselben Felder `allowed_domains` (java, php: `allowedDomains`; csharp, go: `AllowedDomains`) und `blocked_domains` (java, php: `blockedDomains`; csharp, go: `BlockedDomains`) wie die [Domainfilterung](https://platform.claude.com/docs/de/agents-and-tools/tool-use/server-tools#domain-filtering) bei den Server-Tools der Messages API. Managed Agents unterscheidet sich in vier Punkten:

* Jede Liste ist [auf 64 Domains begrenzt](https://platform.claude.com/docs/de/managed-agents/tools-web-restrictions#domain-list-rules).
* Für `web_fetch` gelistete Domains [dürfen keinen Pfad enthalten](https://platform.claude.com/docs/de/managed-agents/tools-web-restrictions#domain-format).
* Domains [müssen ASCII sein](https://platform.claude.com/docs/de/managed-agents/tools-web-restrictions#domain-format). Die Messages API akzeptiert Unicode-Einträge, rät jedoch davon ab.
* `max_uses` (java, php: `maxUses`; csharp, go: `MaxUses`), `citations` (csharp, go: `Citations`) und `cache_control` (java, php: `cacheControl`; csharp, go: `CacheControl`) sind im Toolset nicht verfügbar.

## Nächste Schritte

<CardGroup cols={2}>
  <Card title="Tools" icon="tool" href="https://platform.claude.com/docs/de/managed-agents/tools">
    Sieh dir die integrierten Tools an, aktiviere oder deaktiviere sie und definiere benutzerdefinierte Tools.
  </Card>

  <Card title="Berechtigungsrichtlinien" icon="lock" href="https://platform.claude.com/docs/de/managed-agents/permission-policies">
    Steuere, wann Agent- und MCP-Tools ausgeführt werden.
  </Card>

  <Card title="Einrichtung der Cloud-Umgebung" icon="settings" href="https://platform.claude.com/docs/de/managed-agents/environments">
    Steuere den eigenen ausgehenden Netzwerkzugriff der Sandbox.
  </Card>

  <Card title="Multiagenten-Orchestrierung" icon="sitemap" href="https://platform.claude.com/docs/de/managed-agents/multiagent-orchestration">
    Koordiniere mehrere Agenten innerhalb einer einzigen Session.
  </Card>
</CardGroup>
