Claude Platform Docs
Managed AgentsSicherheit

Deine Managed-Agents-Bereitstellung absichern

Die Einstellungen, die begrenzen, was deine Agenten erreichen und tun können, die wichtigsten zuerst.

Dieser Leitfaden listet die Einstellungen auf, die begrenzen, was ein Agent auf Claude Managed Agents erreichen und tun kann, die wichtigsten zuerst. Jeder Abschnitt verlinkt auf die Seite, die die jeweilige Einstellung vollständig behandelt.

AbschnittEinstellung oder EntscheidungEmpfohlen
Wählen, wo der Agent läuftCloud- oder selbst gehostete SandboxCloud, es sei denn, Tools müssen auf Infrastruktur laufen, die du kontrollierst
Das Netzwerk begrenzennetworking.type der Umgebunglimited, nur mit den Hosts, die der Agent benötigt
Anmeldedaten in Vaults aufbewahreninjection_location und networking bei jedem Umgebungsvariablen-CredentialNur Request-Header und limited-Networking nur mit den Hosts, für die der Schlüssel bestimmt ist
Websuche und Web-Fetch einschränkenallowed_domains bei jedem Web-ToolEine Allowlist bei jedem Tool. Liste bei web_fetch nur die Websites auf, die der Agent benötigt. Liste bei web_search die Websites auf, von denen du Ergebnisse möchtest
Riskante Aktionen genehmigenpermission_policy bei jedem Toolauto bei bash, write, edit, web_fetch und MCP-Tools, die nur Daten lesen. Stattdessen always_ask bei einem Tool, wenn du seine Änderungen außerhalb der Sandbox nicht rückgängig machen kannst oder wenn weitergeleiteter Endbenutzertext allein es nicht ausführen lassen soll
Dem Agenten den kleinsten Tool-Satz gebendefault_config.enabled beim Agent-Toolsetfalse, dann aktiviere die Tools, die der Agent benötigt
Nicht vertrauenswürdige Eingaben von mächtigen Tools fernhaltenWelche Tools und Anmeldedaten ein Agent besitzt, wenn er nicht vertrauenswürdige Eingaben liestKein Agent, der nicht vertrauenswürdige Eingaben liest, hat ein Tool auf always_allow, das Dateien schreibt, Befehle ausführt oder Datensätze ändert
Limits und eine Möglichkeit zum Stoppen festlegenbudget bei jeder Session und jedem DeploymentEine Obergrenze, die darauf abgestimmt ist, was eine Ausführung voraussichtlich kostet
Optional einen Offline-Reviewer jedes Transkript lesen lassenEin von dir ausgeführter Offline-Review-Job, der die Events jeder Session liestOptional. Eine Prüfung jeder Session, die in den Leerlauf gegangen ist oder beendet wurde, nach Zeitplan
Sessions überwachen und Aufbewahrung überprüfenWebhooks und Löschen von SessionsEine Benachrichtigung, wenn eine Session in den Leerlauf geht, ihr Budget erreicht oder beendet wird, und eine Prüfung, warum sie in den Leerlauf gegangen ist. Speichere die Events, die du behalten möchtest, in deinen eigenen Logs, und lösche Sessions, die du nicht mehr benötigst

Sicherheitsrisiken und Sandbox-Grenzen erklärt, warum diese Einstellungen wichtig sind und wovor sie nicht schützen. Informationen zum Prüfen und Überwachen von Sessions findest du unter Agent-Sessions überprüfen und überwachen.

Wählen, wo der Agent läuft

Wo die Tools des Agenten laufen, entscheidet darüber, wer die „sandbox“ (isolierte Ausführungsumgebung) absichert: Anthropic bei einer Cloud-Umgebung oder du bei einer selbst gehosteten Sandbox. Wie du zwischen beiden wählst und was jeweils an Anthropic gelangt, erfährst du unter Eine Agent-Umgebung auswählen.

Wenn du eine selbst gehostete Sandbox verwendest, beachte diese vier Punkte:

  • Netzwerk: Das Netzwerk begrenzen gilt für Cloud-Umgebungen. Lege für eine selbst gehostete Sandbox die entsprechenden Limits für ihren Datenverkehr in deiner eigenen Firewall fest. Deine Firewall begrenzt nicht die MCP-Server, die ein Agent deklariert, also prüfe diese sowie alle, die deine Anwendung für eine Session festlegt.
  • Web-Tools: Die Web-Tools laufen auf den Servern von Anthropic, daher begrenzt deine Firewall sie nicht. Begrenze sie mit ihren Domainlisten. Siehe Websuche und Web-Fetch einschränken.
  • Anmeldedaten: Umgebungsvariablen-Credentials werden bei selbst gehosteten Sandboxes noch nicht unterstützt.
  • Isolation und Härtung: Du bist für beides verantwortlich. Siehe das Sicherheitsmodell.

Keine der beiden Optionen ändert die Compliance-Abdeckung von Managed Agents oder wie lange der Session-Verlauf aufbewahrt wird. Siehe Sessions überwachen und Aufbewahrung überprüfen.

Das Netzwerk begrenzen

Setze networking.type auf limited und liste in allowed_hosts nur die Hosts auf, die der Agent benötigt. Eine Anfrage zum Erstellen einer Umgebung, die networking weglässt, erhält möglicherweise unrestricted, also setze networking in jeder Erstellungsanfrage. Siehe Risiken von uneingeschränktem Networking.

Dateien, Memory Stores und GitHub-Repositories, die du anhängst, bleiben für den Agenten unabhängig von allowed_hosts verfügbar.

Die Beispiele auf dieser Seite verwenden einen Support-Agenten. Er liest das Ticket eines Kunden, schlägt die Bestellung nach, liest dein Hilfe-Center und entwirft eine Antwort. Deine Anwendung führt die Bestellabfrage aus, die keinen Host benötigt, daher erlaubt diese Umgebung einen Host, das Hilfe-Center, für web_fetch:

ant apply environment.yaml
environment.yaml
# yaml-language-server: $schema=https://platform.claude.com/schemas/ant/beta/environment.json
name: support-agent
config:
  type: cloud
  networking:
    type: limited
    allowed_hosts:
      - help.example.com

Eine limited-Umgebung hat drei Networking-Einstellungen:

EinstellungWas sie für Code in der Sandbox öffnetEmpfohlen
allowed_hostsDie Hosts, die du auflistest, für jede AnfrageNur die Hosts, die der Agent benötigt, einschließlich des Hosts jedes MCP-Servers, den du betreibst oder dem du vertraust
allow_package_managersDie Paketmanager-Hosts. Sie umfassen jedes Repository und jeden Pfad auf github.com, gitlab.com und bitbucket.org, wo jeder Inhalte veröffentlichen kann und wo Code in der Sandbox Dateien hochladen kannfalse, es sei denn, die packages-Einstellung der Umgebung listet Pakete auf, was true erfordert. Wenn der Agent während der Ausführung Pakete installiert, liste stattdessen nur die benötigten Registry-Hosts in allowed_hosts auf
allow_mcp_serversKeinen Host. Managed Agents verbindet sich von den Servern von Anthropic aus mit MCP-Servernfalse, wobei der Host jedes MCP-Servers, den du betreibst oder dem du vertraust, in allowed_hosts aufgelistet ist

Die Einstellungen allow_package_managers und allow_mcp_servers fügen keine Hosts für Websuche und Web-Fetch hinzu.

Lass allow_mcp_servers deaktiviert, was der Standard ist, und liste den Host jedes MCP-Servers, den du betreibst oder dem du vertraust, in allowed_hosts auf. Jeder Host, den du auflistest, ist auch für Code in der Sandbox offen. Bei deaktiviertem allow_mcp_servers lehnt eine Prüfung bei der Session-Erstellung die Anfrage ab, wenn der Host eines MCP-Servers nicht aufgelistet ist. Siehe Authentifizierung bei der Session-Erstellung bereitstellen. Dieselbe Prüfung läuft, wenn ein Session-Update mcp_servers ändert.

Wenn du Hosts für allowed_hosts auswählst, befolge diese zwei Regeln:

  • Liste nur Hosts auf, die du betreibst oder denen du vertraust.
  • Vermeide *.-Wildcards und Shared-Hosting-Domains, auf denen jeder Inhalte veröffentlichen kann.

Wenn der Agent bash behält, lege die Berechtigungsrichtlinie des bash-Tools so fest, wie es Riskante Aktionen genehmigen beschreibt.

Alle Networking-Einstellungen findest du unter Einrichtung der Cloud-Umgebung.

Anmeldedaten in Vaults aufbewahren

Speichere jedes Secret in einem „vault“ (Tresor). Lege für jedes Umgebungsvariablen-Credential den Injektionsort auf ausschließlich Request-Header fest und liste nur die Hosts auf, für die das Secret bestimmt ist. Code in der Sandbox sieht einen Platzhalter statt des Secrets. Managed Agents setzt das echte Secret nur in ausgehende HTTPS-Anfragen an die Hosts ein, die das Credential erlaubt. So bleibt das Secret außerhalb der direkten Reichweite des Modells, es sei denn, ein Dienst sendet es zurück, etwa ein Endpunkt, der Request-Header zurückgibt. Wenn das networking des Credentials unrestricted ist, setzt Managed Agents das echte Secret in Anfragen an jeden Host ein, den die Umgebung die Sandbox erreichen lässt. Um einen Vault zu verwenden, übergib seine ID in vault_ids, wenn du die Session oder das Deployment erstellst.

EinstellungSetze sie aufWarumWas sie nicht tut
injection_location{"header": true, "body": false}, nachdem du geprüft hast, dass der Dienst den Schlüssel aus einem Header liestRequest-Bodys werden oft aus Inhalten erstellt, die der Agent liest, daher ist ein Schlüssel in einem Body stärker exponiert. Benenne beide Felder: Eine Erstellungsanfrage, die das Objekt weglässt, aktiviert beide Orte, und ein Update ändert nur die Felder, die du sendestCode kann den Schlüssel weiterhin auf jedem Host verwenden, den das Credential erlaubt. Ein Dienst, der den Schlüssel im Body erwartet, erhält den Platzhalter und lehnt die Anfrage ab
networking beim Credentiallimited, mit genau den Hosts, für die der Schlüssel bestimmt istAntworten erreichen die Sandbox ungeschwärzt, also vermeide Wildcards, Shared-Hosting-Domains und Hosts, die Request-Header zurückgebenSie öffnet den Host nicht. Die Umgebung muss ihn ebenfalls erlauben
Die Berechtigungen des Schlüssels beim Dienst, der den Schlüssel ausgestellt hatNur die Berechtigungen, die der Agent benötigtDer Agent kann alles tun, was der Schlüssel erlaubtNicht zutreffend
Das GitHub-Token eines eingebundenen RepositorysEin fein granuliertes Token mit den minimalen BerechtigungenCode in der Sandbox kann damit während der gesamten Session aus dem eingebundenen Repository abrufen und dorthin pushen. Gewähre Schreibzugriff nur, wenn der Agent pushen mussNicht zutreffend

Der Support-Agent benötigt kein Vault-Credential, da deine Anwendung den API-Key für deine Bestell-API hält. Wenn dein Agent ein Vault-Credential hält, findest du die Anfrage in jeder Sprache unter Ein Credential hinzufügen.

Halte Schlüssel aus System-Prompts, Agentendefinitionen und Nachrichten heraus. Gib dem Agenten keinen Claude-API-Key. Selbst wenn sich ein Claude-API-Key in einem Vault befindet, kann Code in der Sandbox ihn verwenden, um die Claude API direkt aufzurufen. Er kann alles tun, was dieser Schlüssel erlaubt, etwa Sessions starten oder löschen oder Websuche und Web-Fetch verwenden. Die Tool-Einstellungen, Genehmigungen und das Budget des Agenten gelten für diese Aufrufe nicht. In einer limited-Umgebung kann Code diese Aufrufe nur tätigen, wenn allowed_hosts die Sandbox api.anthropic.com erreichen lässt.

Rufe Tokens selbst ab und speichere sie im Vault, denn ein Token, das Code in der Sandbox mit einem gespeicherten Secret abruft, kommt ungeschwärzt zurück.

Bewahre Vaults für Workloads mit unterschiedlichen Vertrauensstufen in separaten Workspaces auf, da jeder API-Key mit Zugriff auf einen Workspace dessen Vaults referenzieren kann. Verwende API-Keys, die auf einen Workspace beschränkt sind.

Informationen zu MCP-Credentials und Rotation findest du unter Mit Vaults authentifizieren.

Websuche und Web-Fetch einschränken

Setze allowed_domains bei web_fetch auf die Websites, die der Agent benötigt. Jede URL, die der Agent abruft, kann Daten an die Website übertragen, auf die sie verweist, daher ist diese Liste eine Sicherheitskontrolle. Setze bei web_search allowed_domains auf die Websites, von denen du Ergebnisse möchtest, sodass Ergebnisse nur von Websites stammen, deren Genauigkeit du vertraust. Die Liste verhindert nicht, dass die Suchanfrage den Suchanbieter erreicht. Suchergebnisse enthalten Text von Seiten, daher begrenzt die Liste auch, von welchen Websites Text den Agenten erreicht. Setze allowed_domains bei beiden Tools für jeden Umgebungstyp.

Eine blocked_domains-Liste blockiert die Hosts, die du auflistest, und deren Subdomains, und keinen anderen Host. Derselbe Inhalt kann den Agenten weiterhin über Webarchive, Caches, Mirrors oder verwandte Domains erreichen, die du nicht aufgelistet hast. Verlasse dich für die Sicherheit nicht auf blocked_domains. Verwende allowed_domains und benenne die Hosts, denen du vertraust.

In einer limited-Umgebung begrenzt die allowed_hosts-Liste aus Das Netzwerk begrenzen auch die Web-Tools. Eine unrestricted-Umgebung oder eine selbst gehostete Sandbox begrenzt die Web-Tools nicht.

In einer limited-UmgebungErgebnis
Ein allowed_domains-Eintrag bei einem aktivierten Web-Tool liegt außerhalb von allowed_hostsDas Erstellen einer Session schlägt mit einem 400-Fehler fehl, ebenso ein Session-Update, das einen solchen Eintrag hinzufügt. Eine Session, die ein Deployment nach seinem Zeitplan oder durch eine manuelle Ausführung startet, wird trotzdem erstellt. Das Tool gibt dann nichts von Hosts außerhalb von allowed_hosts zurück
Ein Web-Tool hat keine eigene ListeDas Tool gibt Seiten und Ergebnisse nur von Hosts in allowed_hosts zurück. Setze zusätzlich allowed_domains beim Tool
allowed_hosts hat keine EinträgeKeines der Web-Tools gibt eine Seite oder ein Suchergebnis zurück
Du fügst allowed_hosts einen Host für ein Web-Tool hinzuDer Host ist auch für Code in der Sandbox offen

Die beiden Listen gleichen Hosts unterschiedlich ab:

ListeEintragPasst aufPasst nicht auf
allowed_hosts (Umgebung)example.comexample.comwww.example.com
allowed_hosts (Umgebung)*.example.comJede Subdomainexample.com
allowed_domains (Web-Tool)example.comexample.com und jede SubdomainAndere Domains

Wenn der Agent eine Website und alle ihre Subdomains benötigt, liste sowohl example.com als auch *.example.com in allowed_hosts auf, und liste andernfalls exakte Hosts auf. Wenn ein Tool example.com auflistet und allowed_hosts nur *.example.com auflistet, wird die Session erstellt. Die Prüfung bei der Session-Erstellung zählt example.com als innerhalb von *.example.com, aber das Tool gibt nichts von example.com selbst zurück. Wie die beiden Listen abgleichen, erfährst du unter Domainlisten für einen Agenten festlegen.

Das web_fetch-Tool öffnet außerdem nur URLs, die bereits in der Session aufgetaucht sind:

Wo die URL auftauchtweb_fetch kann sie öffnen
Der Text einer Benutzernachricht, einschließlich Endbenutzertext, den du weiterleitestJa
Die Beschreibung eines user.define_outcome-EventsJa
Die Adresse eines WebsuchergebnissesJa
Der Text einer Seite, die web_fetch zuvor zurückgegeben hat (kein PDF), in dem die vollständige URL angezeigt wirdJa
Der Text des Ergebnisses eines benutzerdefinierten Tools, wenn Claude das Tool direkt aufgerufen hatJa, es sei denn, das Ergebnis ist mit is_error: true markiert
Der System-PromptNein
Die Konfiguration des Agenten, einschließlich allowed_domains-EinträgenNein
Claudes eigene AusgabeNein
Ausgabe von bash und den anderen Sandbox-ToolsNein
Ein MCP-Tool-ErgebnisNein
Eine an eine Benutzernachricht angehängte DateiNein

In einer Multiagenten-Session öffnet web_fetch eine URL von einem anderen Agenten nur, wenn sie diesen Agenten über eine mit Ja markierte Quelle erreicht hat. Das Ergebnis eines benutzerdefinierten Tools aus einem direkten Aufruf zählt als mit Ja markierte Quelle. Das gilt auch, wenn Claude dessen Text geschrieben hat, zum Beispiel wenn das Tool seine Eingabe wiederholt. Eine URL kann auch dann zählen, wenn sie ohne https:// geschrieben ist, etwa example.com/docs. Das web_fetch-Tool kann einen Link, der Wörter statt seiner URL anzeigt, wie „Support kontaktieren“, nicht immer öffnen. Wenn der Agent eine URL abrufen muss, die nicht in der Session aufgetaucht ist, sende sie in einer Benutzernachricht.

Diese Regel verringert die Wahrscheinlichkeit, dass eingeschleuster Text eine URL erstellt, die private Daten überträgt. Endbenutzertext, Suchergebnisse, abgerufene Seiten und Ergebnisse benutzerdefinierter Tools können weiterhin URLs hinzufügen, also lass allowed_domains gesetzt. Die Messages API wendet eine ähnliche Regel mit einer anderen Liste von Quellen an. Siehe URL-Validierung.

Eine Domainliste bei web_fetch begrenzt das bash-Tool nicht. Das Netzwerk begrenzen ebenfalls. Siehe Regeln für Domainlisten.

Riskante Aktionen genehmigen

Setze auto bei bash, write, edit und web_fetch sowie bei MCP-Tools, die nur Daten lesen. Verwende stattdessen always_ask bei einem Tool, wenn du seine Änderungen außerhalb der Sandbox nicht rückgängig machen kannst. Verwende es auch bei einem Tool, das nicht allein deshalb ausgeführt werden soll, weil von dir weitergeleiteter Endbenutzertext danach verlangt. Eine Berechtigungsrichtlinie bestimmt, ob ein Tool-Aufruf ausgeführt wird, auf deine Genehmigung wartet oder vom Server bewertet wird.

ToolEmpfohlene RichtlinieWarum
read, glob, grepalways_allowSie lesen Dateien in der Sandbox und ändern nichts
bash, write, editauto. Verwende always_ask bei einem Tool, wenn du seine Änderungen außerhalb der Sandbox nicht rückgängig machen kannst. Verwende always_ask bei bash, wenn du Endbenutzertext weiterleitestDer Standard des Agent-Toolsets ist always_allow, was jeden Aufruf ohne Genehmigung ausführt
web_fetchautoEine URL, die der Agent abruft, kann Daten an die Website übertragen, auf die sie verweist
web_searchalways_ask, wenn der Agent Daten verarbeitet, die du nicht in einer Suchanfrage gesendet haben möchtest. Andernfalls always_allowallowed_domains begrenzt, von welchen Websites Ergebnisse stammen, nicht, was die Anfrage enthält
MCP-Tools, die nur Daten lesenauto, für jedes Tool in den configs des Toolsets festgelegtDer Toolset-Standard bleibt always_ask, sodass ein Tool, das der MCP-Server später hinzufügt, weiterhin auf Genehmigung wartet
MCP-Tools, die Daten ändernalways_askDies ist der Standard des MCP-Toolsets. Behalte ihn bei
Benutzerdefinierte ToolsDein Code entscheidet, ob jeder Aufruf ausgeführt wirdBerechtigungsrichtlinien gelten nicht

Das Toolset in Dem Agenten den kleinsten Tool-Satz geben wendet diese Richtlinien an.

Die auto-Richtlinie lässt den Server einen Aufruf ausführen, ablehnen oder für eine Genehmigung pausieren. Eine Person kann nicht jeden Aufruf in einer langen Ausführung genehmigen, daher prüft stattdessen der Server jeden einzelnen. Kombiniere auto mit eingeschränktem Networking, einem Schlüssel mit eng gefassten Berechtigungen, einem Budget und einer Benachrichtigung bei Sessions im Leerlauf. auto ist kein menschlicher Kontrollpunkt. Wenn also eine Person die Aufrufe eines Tools prüfen muss, bevor sie ausgeführt werden, konfiguriere always_ask bei diesem Tool.

auto behandelt Text in user.message-Events und die Beschreibung in einem user.define_outcome-Event als deine Anweisung, einschließlich Endbenutzertext, den du weiterleitest.

Eine pausierte Session wartet unbegrenzt, daher benötigt eine unbeaufsichtigte Session einen Client, der pausierte Aufrufe beantwortet oder die Session unterbricht.

Prüfe jeden pausierten Aufruf, bevor du ihn erlaubst. Ein Client, der jeden Aufruf erlaubt, ohne ihn einer Person zu zeigen, ist dasselbe wie always_allow. Siehe Auf Bestätigungsanfragen antworten und Sehen, wie jeder Aufruf bewertet wurde.

Dem Agenten den kleinsten Tool-Satz geben

Setze default_config.enabled auf false und aktiviere nur die Tools, die der Agent benötigt. Das Agent-Toolset aktiviert standardmäßig alle acht integrierten Tools.

ToolWas es tut
bashFührt jeden Befehl aus, einschließlich Anfragen an erlaubte Hosts
write, editÄndern Dateien in der Sandbox
read, glob, grepLesen Dateien in der Sandbox
web_fetch, web_searchGeben Seiten und Suchergebnisse aus dem Web über die Server von Anthropic zurück

Der Support-Agent benötigt drei integrierte Tools: read und write für seinen Entwurf und web_fetch für das Hilfe-Center. Er schlägt Bestellungen über ein benutzerdefiniertes Tool, lookup_order, nach, das deine Anwendung ausführt. Deine Anwendung hält den API-Key für deine Bestell-API, daher benötigt der Agent weder bash noch Anmeldedaten.

Das folgende Beispiel begrenzt web_fetch mit allowed_domains auf help.example.com. Es setzt auto bei write und web_fetch, wie es Riskante Aktionen genehmigen empfiehlt. Wenn das Ticket eines Kunden den Agenten dazu bringt, diese Tools zu verwenden, kann der Agent nur Dateien in der Sandbox ändern oder Seiten des Hilfe-Centers öffnen. Deshalb benötigt keines der beiden Tools always_ask. Das Beispiel setzt außerdem always_ask in default_config, sodass ein Tool, das du später ohne eigene Richtlinie aktivierst, always_ask verwendet:

ant apply agent.md
agent.md
---
name: Support Agent
model: claude-opus-5-5
tools:
  - type: agent_toolset_20260401
    default_config:
      enabled: false
      permission_policy:
        type: always_ask
    configs:
      - name: read
        enabled: true
        permission_policy:
          type: always_allow
      - name: write
        enabled: true
        permission_policy:
          type: auto
      - name: web_fetch
        enabled: true
        allowed_domains: [help.example.com]
        permission_policy:
          type: auto
  - type: custom
    name: lookup_order
    description: Look up one order by its ID. Returns the status, the items, and the delivery date.
    input_schema:
      type: object
      properties:
        order_id:
          type: string
          description: The order ID from the ticket
      required:
        - order_id
---

Ein Agent-Update ersetzt das gesamte tools-Array, also sende jeden Eintrag, den du behalten möchtest.

Ein Agent-Update erreicht nur neue Sessions, also prüfe auch Deployments, Agenten, die diesen Agenten auflisten, und bestehende Sessions:

  • Ein Deployment fixiert eine Agentenversion, also richte jedes Deployment auf die neue aus.
  • Ein Agent, der diesen in subagents.predefined_agents oder workflows.predefined_agents auflistet, behält die Version, die er fixiert hat, also aktualisiere auch diesen Agenten.
  • Um eine bereits bestehende Session stärker einzuschränken, aktualisiere die Tools dieser Session. Die Session muss idle sein, und das Update ersetzt das gesamte tools-Array. In einer Multiagenten-Session gelten neue allowed_domains- und blocked_domains-Listen bei den Web-Tools des Agenten, den die Session ausführt, auch für jeden anderen Agenten. Sie gelten ab dem nächsten Turn jedes Agenten. Die aktivierten Tools und Berechtigungsrichtlinien dieser Agenten ändern sich nicht. Um diese zu ändern, aktualisiere jeden Agenten und starte dann eine neue Session.

Begrenze auch MCP-Server und benutzerdefinierte Tools auf das, was der Agent benötigt:

  • MCP-Server: Ein MCP-Toolset aktiviert standardmäßig jedes Tool, das der Server bereitstellt. Setze default_config.enabled auf false und aktiviere benannte Tools, sodass Tools, die ein Server später hinzufügt, deaktiviert bleiben. Entferne Server, die der Agent nicht verwendet. Siehe MCP-Connector.
  • Benutzerdefinierte Tools: Deine Anwendung führt sie aus, und Berechtigungsrichtlinien gelten nicht. Validiere die Eingabe jedes Aufrufs in deiner Anwendung und begrenze, worauf das Tool zugreifen kann.

Nicht vertrauenswürdige Eingaben von mächtigen Tools fernhalten

Prüfe, welche Tools und Anmeldedaten ein Agent besitzt, wann immer er nicht vertrauenswürdige Eingaben liest, also Text, den jemand außerhalb deines Teams schreiben kann. Dieser Abschnitt verwendet zwei Begriffe:

  • Nicht vertrauenswürdige Eingaben: Webseiten, Suchergebnisse, Support-Tickets, E-Mails, Repository-Dateien, Uploads, MCP-Server-Ergebnisse und Endbenutzernachrichten, die du weiterleitest.
  • Mächtige Tools: bash, write, edit, web_fetch, web_search, MCP-Tools und benutzerdefinierte Tools, die Daten schreiben oder senden, sowie jedes Tool, das Anmeldedaten verwendet.

Text in nicht vertrauenswürdigen Eingaben kann den Agenten anweisen, ein mächtiges Tool zu verwenden, das er besitzt. Der Support-Agent liest Tickets, daher erreicht er deine Bestell-API nur über das benutzerdefinierte Tool lookup_order. Deine Anwendung prüft, dass die Bestellung zum Absender des Tickets gehört.

Eingabe, die der Agent liestFähigkeit, die er ebenfalls hatTu Folgendes
Tickets, E-Mails oder Uploadsbash mit AnmeldedatenErsetze bash durch ein benutzerdefiniertes Tool, das eine Sache tut. Wenn der Agent bash behalten muss, genehmige jeden Aufruf mit always_ask
Webseiten oder SuchergebnisseDateien schreiben oder Datensätze ändernDeaktiviere die Web-Tools oder begrenze sie auf Websites, die du betreibst oder denen du vertraust
MCP-Ergebnisse oder Repository-DateienMCP-Tools, die schreibenBelasse das MCP-Toolset auf always_ask und aktiviere nur die Tools, die der Agent benötigt
Ein eingebundenes GitHub-RepositoryJedes ToolBinde nur Repositories ein, denen du vertraust. Ein Agent mit read lädt Skills aus dem .claude/skills-Verzeichnis des Repositorys als Agent-Anweisungen, ohne Prüfschritt. Siehe Skills aus einem GitHub-Repository laden
Jede nicht vertrauenswürdige EingabeSchreiben in einen Memory StoreHänge den Store als read_only an, es sei denn, der Agent muss schreiben. Der Standard ist read_write, und spätere Sessions lesen gespeicherten Text als vertrauenswürdige Memory

In einer Cloud-Umgebung kann das Lesen einer Datei mit read auch CLAUDE.md- und AGENTS.md-Dateien als Anweisungen laden. Sie werden aus dem Verzeichnis der Datei und ihren übergeordneten Verzeichnissen geladen, bis hinauf zum Arbeitsverzeichnis der Sandbox. Dateien, die sie mit @ und einem Pfad referenzieren, etwa @docs/setup.md, werden ebenfalls geladen, bis zu fünf Referenzebenen tief. Eine Referenz kann auf eine beliebige Stelle in der Sandbox verweisen, zum Beispiel @/etc/hosts. Keine Einstellung schaltet dies ab, außer das Deaktivieren von read, also behandle ein Repository, Paket oder Archiv, das jemand außerhalb deines Teams schreiben kann, als nicht vertrauenswürdige Eingabe.

Wenn ein Agent nicht vertrauenswürdige Eingaben lesen und zugleich handeln muss, empfiehlt dieser Leitfaden eines von drei Designs:

  • Trenne Lesen vom Handeln. In einer Multiagenten-Session gibt ein Lead-Agent Aufgaben an einen Fetcher, der das Web liest, und einen Writer, der Dateien oder Datensätze ändert.
  • Gib dem Agenten ein eng gefasstes benutzerdefiniertes Tool. Deine Anwendung führt das Tool aus, prüft seine Eingabe und hält die Anmeldedaten. Der Support-Agent verwendet dieses Design, nicht die Trennung. Siehe Tool-Aufrufe beantworten, die die Session pausieren.
  • Beziehe eine Person ein. Verwende always_ask beim mächtigen Tool, sodass eine Person jeden Aufruf genehmigt.

Die Trennung verwendet drei Agenten:

AgentLiestBesitztGibt weiter
Lead (der Agent, den die Session ausführt)Deine Nachricht und was die anderen Agenten zurücksendenKeine integrierten Tools. Seine subagents.predefined_agents-Liste benennt den Fetcher und den WriterEine Aufgabe an jeden Agenten
FetcherWebseiten und SuchergebnisseNur web_fetch und web_search, jeweils mit allowed_domainsKurze Ergebnisse in einem Format, das du in seinem System-Prompt anforderst
WriterDie Aufgabe vom LeadDie Tools, die Dateien schreiben, Befehle ausführen oder Datensätze ändern, auf auto oder always_ask. Keine Web-ToolsSein Ergebnis

Die Ergebnisse des Fetchers werden aus nicht vertrauenswürdigen Seiten erstellt, und der Lead kann ihren Text an den Writer weitergeben. Belasse auto oder always_ask bei den Tools des Writers. Der Fetcher kann weiterhin einen Teil dessen, was er liest, an die Websites auf seiner web_fetch-Liste und in seinen Anfragen an den Suchanbieter senden.

Agenten in einer Multiagenten-Session teilen sich die Sandbox, ihre Dateien und die Vault-Credentials, daher trennt diese Aufteilung nur ihre Tools und Konversationen. Für eine stärkere Trennung verwende zwei Sessions mit separaten Umgebungen und Vaults. Lass deine Anwendung nur feste Felder, etwa eine Bestell-ID, zwischen den beiden Sessions weitergeben.

Limits und eine Möglichkeit zum Stoppen festlegen

Lege beim Erstellen jeder Session ein Budget fest und entscheide im Voraus, wie du einen Agenten stoppst.

KontrolleWas sie tut
Session-BudgetEine Obergrenze für Ausgaben zu öffentlichen Listenpreisen. Bei Erreichen der Obergrenze pausieren die Session und jeder Thread. Laufende Anfragen können abgeschlossen werden und ihre Tool-Aufrufe werden weiterhin ausgeführt, sodass die Ausgaben die Obergrenze überschreiten können. Siehe Wenn eine Session ihr Budget erreicht
Deployment-BudgetDieselbe Obergrenze, angewendet auf jede Session, die ein Deployment startet
user.interrupt-EventStoppt die Modellantwort sofort. Ein laufender Tool-Aufruf kann zuerst abgeschlossen werden. Die Session wechselt zu idle, es sei denn, ein Workflow-Run hält sie auf running, und wird bei deiner nächsten Nachricht fortgesetzt. Ein Interrupt beendet keinen Workflow-Run
Eine Session archivieren oder löschenArchivieren behält den Verlauf und blockiert neue Events. Löschen entfernt den Datensatz, die Events und die Sandbox
Ein Deployment pausieren oder archivierenPausieren stoppt neue geplante Ausführungen, erlaubt aber weiterhin manuelle Ausführungen. Archivieren beendet den Zeitplan dauerhaft. Bereits laufende Sessions laufen weiter
Einen Vault oder ein Credential archivieren oder löschenEntfernt das Secret ohne Neustart aus laufenden Sessions. Rechne mit einer Verzögerung. Die Sessions laufen weiter, also unterbrich sie ebenfalls. Ein Token, das der Agent bereits mit dem Secret abgerufen hat, bleibt in der Sandbox

Um einen laufenden Agenten zu stoppen, befolge diese Schritte:

  1. Sende user.interrupt für sich allein.
  2. Pausiere bei einem geplanten Agenten zusätzlich das Deployment, damit keine neue geplante Ausführung startet. Um den Zeitplan dauerhaft zu beenden, archiviere das Deployment.
  3. Wenn ein Schlüssel möglicherweise offengelegt wurde, rotiere ihn bei dem Dienst, der ihn ausgestellt hat.
  4. Wenn der Agent offene Workflow-Runs hat, sende zusätzlich eine user.message, die ihn auffordert, diese zu stoppen, da ein Interrupt keinen Run beendet. Welche Tool-Aufrufe du zuerst abbrechen musst, erfährst du unter Eine Session mit offenen Runs unterbrechen.
  5. Warte, bis die Session zu idle wechselt. Eine laufende Session kann nicht archiviert oder gelöscht werden.
  6. Archiviere die Session, um ihren Verlauf zu behalten. Lösche sie, wenn du den Verlauf nicht mehr benötigst.

Ein Interrupt macht nicht rückgängig, was der Agent bereits getan oder gesendet hat. Das Archivieren eines Agenten stoppt seine laufenden Sessions nicht.

Das max_list_cost.amount eines Budgets ist eine ganze Zahl von US-Cent, geschrieben als String, sodass "125" 1,25 $ bedeutet. Siehe Ein Budget bei der Session-Erstellung festlegen.

Du kannst einer Session, die ohne Budget erstellt wurde, kein Budget hinzufügen. Um eine Obergrenze zu ändern oder zu entfernen, siehe Eine Session an ihrem Budget fortsetzen. Nachdem du die Obergrenze einer Session entfernt hast, kannst du keine neue festlegen.

Ein Budget begrenzt die Ausgaben, aber es begrenzt nicht, was der Agent vor Erreichen der Obergrenze tut. Um Workloads mit unterschiedlichen Vertrauensstufen voneinander zu trennen, verwende separate Workspaces. Gib jedem Workload einen API-Key, der auf einen Workspace beschränkt ist, denn ein Schlüssel, der mehrere Workspaces erreichen kann, kann in jedem von ihnen handeln.

Siehe Session-Budgets, Session-Operationen und Geplante Deployments.

Nächste Schritte

Networking-Modi, erlaubte Hosts und Paketmanager.

Genehmigungsrichtlinien und Bestätigungsanfragen.

Credential-Typen, Injektionsorte und Rotation.

Obergrenzen, Fortsetzen bei einem Budget und Budgets für Deployments.

Was this page helpful?