Anthropic hat am 7. Oktober drei Änderungen an Claude Managed Agents veröffentlicht, die alle dasselbe Ziel haben: Daten sollen einen Agenten nicht über das Netz verlassen können. Die wichtigste begrenzt, welche URLs web_fetch überhaupt noch abrufen darf.
Die URL muss vorher in der Sitzung aufgetaucht sein
web_fetch holt jetzt nur Adressen, die schon in der Sitzung standen – im Text einer Nutzernachricht, in einem web_search-Ergebnis oder auf einer Seite, die web_fetch vorher selbst geliefert hat.
Was nicht zählt, ist die eigentliche Pointe. Eine URL, die nur in Claudes eigener Ausgabe steht, reicht nicht. Der System-Prompt des Agenten reicht nicht. Ein angehängtes Dokument reicht nicht. Und die Ausgabe eines Tools wie bash, read oder eines MCP-Tools reicht auch nicht. In all diesen Fällen antwortet der Abruf mit url_not_in_prior_context.
Anthropic nennt den Grund direkt: geringeres Risiko für Datenabfluss. Der Angriff, den das schließt, ist bekannt – ein Modell liest in einem Dokument oder einer Tool-Ausgabe eine Anweisung, baut aus den Daten, die es gerade sieht, eine URL zusammen und ruft sie ab. Die Daten stehen dann im Server-Log des Angreifers. Wenn das Modell die Adresse nicht selbst erzeugen darf, funktioniert das nicht mehr.
Will man einem Agenten eine bestimmte URL erlauben, schickt man sie im Text eines user.message-Events.
allowed_hosts gilt jetzt auch für die Web-Tools
Die zweite Änderung schließt eine Lücke zwischen zwei Einstellungen, die bisher nebeneinander standen. Eine Cloud-Umgebung mit eingeschränktem Netz hat ihre allowed_hosts bisher nur auf die Sandbox angewandt. Jetzt greifen sie auch bei web_search und web_fetch.
Konkret: Ein web_fetch auf einen Host, der nicht passt, gibt url_not_allowed zurück. web_search lässt Treffer von solchen Hosts weg. Listet allowed_hosts keinen Host, liefern beide Tools nichts. allow_package_managers und allow_mcp_servers öffnen dabei keine Hosts für die Web-Tools – wer einen Host erreichen will, trägt ihn in allowed_hosts ein, womit er auch für die Sandbox offen ist. Unbeschränktes Netz und selbst gehostete Umgebungen sind davon nicht betroffen.
Die dritte Änderung macht aus einem stillen Widerspruch einen Fehler: Bei eingeschränktem Netz scheitert das Anlegen einer Session mit einem 400er, wenn die allowed_domains eines aktiven Web-Tools einen Eintrag enthalten, der nicht in allowed_hosts liegt. Dasselbe gilt für ein Update, das so einen Eintrag hinzufügt. Und allowed_hosts ist exakt: docs.example.com liegt nicht in ["example.com"], solange der Eintrag nicht mit *. beginnt.
Bestehende Agenten können daran brechen
Das ist keine Einstellung, die man einschaltet. Es ist das neue Verhalten.
Ein Agent, der eine URL aus einer Datenbank, einer CSV-Datei oder einer MCP-Antwort liest und sie dann abruft, hört damit auf zu funktionieren – und zwar nicht mit einem Netzfehler, sondern mit url_not_in_prior_context. Dasselbe gilt für jeden Agenten, dessen Arbeitsliste an URLs im System-Prompt steht. Wer so etwas betreibt, sollte das vor dem nächsten Lauf nachsehen.
Anthropic schließt die Lücke an der richtigen Stelle
Prompt Injection ist seit Jahren das offene Problem bei Agenten, und die üblichen Gegenmittel sind Klassifikatoren: Das Modell soll erkennen, dass eine Anweisung in einem Dokument keine Anweisung ist. Das funktioniert manchmal.
Diese Änderung macht etwas anderes. Sie nimmt dem Modell die Fähigkeit, die der Angriff braucht. Ob Claude die versteckte Anweisung erkennt, ist jetzt gleichgültig – es kann die Adresse nicht abrufen, weil die Plattform sie nicht in der Sitzung gesehen hat. Das ist der Unterschied zwischen einer Regel, die der Angreifer wegargumentieren kann, und einer, die er nicht wegargumentieren kann. Davon braucht es mehr.