Zum Inhalt springen
CASOON

Claude Managed Agents: Von der Messages API zur gehosteten Agent-Runtime

Was sich verlagert, wenn Anthropic Orchestrierung, Persistenz und Sandbox als Plattformfunktion anbietet

20 Minuten
Claude Managed Agents: Von der Messages API zur gehosteten Agent-Runtime
#Claude #Anthropic #Agent-Systeme #Architektur
SerieClaude & Claude Code
Teil 5 von 6

Claude Managed Agents sind weniger ein neues Feature als ein Betriebsmodell: Anthropic hostet nicht nur ein Modell, sondern eine Agent-Runtime mit Session-Log, Harness und Sandbox. Der eigentliche Wandel liegt in der Verlagerung von Zuständigkeiten: Was früher dein Code war — State, Loop, Retry-Logik, Tool-Routing, Secret-Handhabung — wird jetzt als Plattformfunktion angeboten.

Der klassische Agent-Loop

Das typische Muster war bisher: Du rufst die Messages API auf, hältst die komplette History selbst, erkennst Tool-Calls, führst sie selbst aus, schickst Tool-Ergebnisse zurück, verwaltest Retry-Logik, State, Sandboxing, Hosting und Secrets. Ein manueller while-Loop in deiner Anwendungsschicht.

# Klassisches Muster: alle Zuständigkeiten im eigenen Code
messages = []
while True:
    response = client.messages.create(model="...", messages=messages, tools=tools)
    messages.append({"role": "assistant", "content": response.content})

    if response.stop_reason == "tool_use":
        tool_result = execute_tool(response.content)
        messages.append({"role": "user", "content": tool_result})
    else:
        break

Genau diese Zuständigkeiten — State, Loop, Tool-Routing, Retry-Logik und Secret-Handhabung — übernimmt Managed Agents als Plattformfunktion. Das entspricht einer Migration weg vom manuellen while-Loop hin zu Sessions und Events.

Die vier Bausteine

1
Agent = Definition Versionierte Konfiguration: Modell, System Prompt, Tools, MCP-Server, Skills. Das 'Image' des Verhaltens — nicht der laufende Prozess.
2
Environment = Sandbox-Blueprint Beschreibung der Ausführungsumgebung: Netzwerkzugriff, Pakete, Runtimes. Nicht persistent — jede Session bekommt eine eigene isolierte Container-Instanz.
3
Session = append-only Event-Log Dauerhaftes Objekt außerhalb des Kontextfensters. Hier lebt der Ablaufzustand, die Interaktionshistorie und der Event-Stream — unabhängig vom Harness.
4
Events = Steuer- und Beobachtungsebene Deine App schickt User-Events hinein, die Plattform streamt Statusänderungen, Modellantworten, Tool-Nutzung und Fehler zurück.

Der konzeptionell wichtigste Unterschied zu klassischen API-Setups: Die Session ist kein Request-Response-Aufruf und keine serverseitige History-Kopie. Sie ist ein append-only Event-Log, das außerhalb des Kontextfensters des Modells liegt — ein dauerhaftes Objekt, das unabhängig vom Harness existiert. Anthropic positioniert das als eigenständiges Persistenz-Konzept, nicht nur als bequemeres State-Management.

Eine Environment-Definition beschreibt, welche Laufzeiten und Pakete in der Sandbox verfügbar sind, welche Netzwerkdomänen erlaubt sind und ob der Browser-Zugriff aktiviert wird:

# Environment-Definition (konzeptuell — genaue API kann abweichen)
environment = anthropic.beta.environments.create(
    name="python-data-env",
    runtime={
        "python": {"version": "3.12", "packages": ["pandas", "numpy", "httpx"]},
        "node": {"version": "22"},
    },
    network={
        "allowed_domains": ["api.github.com", "linear.app", "*.notion.so"],
    },
    browser=True,  # Web-Browsing aktivieren
)

Netzwerkzugriff ist per Default eingeschränkt — nur explizit freigegebene Domains sind erreichbar. Das verhindert, dass ein Agent unkontrolliert externe Dienste kontaktiert oder Daten exfiltriert.

Brain, Hands, Session — die Schnittstellenlogik dahinter

Die vier Bausteine beschreiben das Modell von außen. Intern beschreibt Anthropic das System über drei explizite Ebenen — Brain, Hands und Session — die die Schnittstellenlogik zwischen diesen Bausteinen klären. Die Kernidee: Intelligenz und Ausführung sind bewusst getrennt.

Brain: Intelligenz und Entscheidung

Der Brain umfasst das Modell plus Harness — die Logik für Planung, Tool-Auswahl und Schleifensteuerung. Er liest den Session-Event-Log, entscheidet über den nächsten Schritt (Tool-Call oder Antwort) und ist selbst stateless: Der Brain hält keinen eigenen State, sondern liest alles aus dem Log. Das macht ihn austauschbar — ein Harness-Neustart verliert nichts, weil der State im Session-Log liegt, nicht im Prozess. Mehrere Brain-Instanzen könnten theoretisch denselben Session-Log bedienen.

Hands: Ausführung und Sandbox

Hands sind die isolierten Container-Umgebungen für Tool-Ausführung — Code-Interpreter, Web-Browser, MCP-Server. Jede Session startet eine eigene Sandbox-Instanz auf Basis der Environment-Definition (Pakete, Netzwerkregeln). Tools laufen hier, ohne dass der Brain direkten Zugriff auf die Sandbox hat. Ergebnisse fließen append-only in den Session-Log zurück. Das isoliert Ausfälle: Ein Sandbox-Crash killt nicht den gesamten Agenten — Brain und Session bleiben intakt.

Session: Persistente Gedächtnisschicht

Die Session ist der append-only Event-Log, der Brain und Hands verbindet: eine dauerhafte Abfolge von User-Events, Tool-Results und Modellantworten. Sie liegt außerhalb des Kontextfensters und unterstützt Wiederaufnahme nach Harness-Neustart sowie Checkpointing für Long-Running Tasks. Dein Backend streamt Events hinein, die Plattform pusht Updates heraus.

Das macht die Architektur anschlussfähig an das Event-Sourcing-Muster — ein stärkerer mentaler Anker als “append-only Log”:

  • Session = Event Store: unveränderliche, zeitgeordnete Abfolge aller Ereignisse
  • Brain = stateless Consumer: liest den Log, leitet nächste Aktion ab, hält keinen eigenen State
  • Hands = Side-effect Executor: führt aus, schreibt Ergebnis zurück in den Log

Warum das relevant ist: Der Log ist vollständig — theoretisch replay-fähig, praktisch debugbar über die Event-Timeline, und resilient weil der State im Log liegt, nicht im Prozess.

KomponenteEigenschaftPraktischer Nutzen
BrainStateless, austauschbarHarness-Neustart ohne State-Verlust
HandsIsoliert, instanzbasiertSandbox-Crash isoliert, nicht propagiert
SessionPersistent, append-onlyStundenlange Runs resilient gegenüber Ausfällen

Anthropic formuliert das Ziel explizit: nicht einen festen Harness für immer bauen, sondern stabile Interfaces, die zukünftige Agent-Implementierungen überleben. Managed Agents ist in diesem Sinn ein Meta-Harness — eine übergeordnete Runtime, die Brain und Hands über definierte Interfaces virtualisiert, statt sie in einem Prozess zu bündeln. Das ist ein fundamentaler Unterschied zu Agent-Stacks, bei denen Orchestrierungslogik und Ausführung eng gekoppelt sind.

Was das konkret löst

Fehlertoleranz durch Entkopplung. Wenn der Harness abstürzt, geht die Session nicht verloren — das Event-Log liegt als eigenständiges Objekt außerhalb. Ein neuer Harness kann mit der Session-ID wieder einsteigen und dort weitermachen, wo der Vorgänger aufgehört hat. Das ist kein Komfort-Feature, sondern ein ernstes Produktionsargument für langlebige Agenten-Runs.

Kontext-Management als Persistenz-Konzept. Klassische API-Setups senden History im Kontextfenster mit — das Modell „erinnert sich” nur an das, was du mitschickst. Bei Managed Agents liegt der Session-Log als dauerhaftes Objekt außerhalb des Kontextfensters. Das Modell liest daraus, was relevant ist — aber der Log selbst wird nicht vom Modell begrenzt oder verwaltet.

Strukturelle Sicherheitsgrenzen. Die eigentliche Idee ist nicht nur „Secrets nicht in die Sandbox”, sondern eine strukturelle Trennung: Credentials sind über Vaults und Proxies erreichbar, ohne direkt im Agentenprozess zu liegen. Tokens fließen nicht durch Prompts oder Umgebungsvariablen. Secret-Felder werden laut Dokumentation in keiner Response zurückgegeben. Die Sicherheitsgrenze ist in die Architektur eingebaut, nicht nachträglich aufgelegt.

Produkt- und Nutzerkontext sauber getrennt. Der Agent ist das wiederverwendbare Produkt-Artefakt. Authentisierung kommt pro Session über vault_ids. Derselbe Agent läuft für viele Endnutzer — jeder Session-Lauf bekommt andere Credentials, ohne dass der Agent selbst angepasst werden muss. Anthropic beschreibt das Prinzip direkt: „Manage your product at the agent level and your users at the session level.”

Cloud-native Ausführung für lange Runs. Managed Agents ist für zustandsbehaftete Ausführung über Minuten oder Stunden ausgelegt, mit mehreren Tool-Calls, isolierten Containern und persistenter Historie. Das ist nicht „Chat mit Tools”, sondern ein gehosteter Agent-Worker mit Zustandsmodell — mit minimalem eigenem Infrastrukturaufwand.

Wie eine App damit aussieht

Dein Frontend spricht nicht direkt mit Claude Managed Agents, sondern mit deinem Backend oder einem Serverless-Endpoint. Dieses Backend erstellt oder verwendet eine Session, schickt User-Events hinein und streamt Antworten zurück:

// Backend: Session starten und Events senden
const session = await anthropic.beta.sessions.create({
  agent_id: "agent_xyz",
  vault_ids: [userVaultId],  // nutzerspezifische Credentials, nicht im Agenten-Code
});

const stream = await anthropic.beta.sessions.stream(session.id, {
  type: "user.message",
  content: userInput,
});

for await (const event of stream) {
  // agent.message, agent.tool_use, agent.custom_tool_use, etc.
}

Vaults: Credentials pro Nutzer

Vaults sind das Muster für Multi-Tenant-Anwendungen — derselbe Agent, unterschiedliche Credentials pro Nutzer. Du legst beim Onboarding oder OAuth-Flow einen Vault an und übergibst seine ID bei der Session-Erstellung:

// Einmalig beim Onboarding: Vault mit Nutzer-Credentials anlegen
const vault = await anthropic.beta.vaults.create({
  secrets: {
    GITHUB_TOKEN: userGithubToken,
    NOTION_API_KEY: userNotionKey,
    LINEAR_API_KEY: userLinearKey,
  },
});
// vault.id in deiner Datenbank zum Nutzer speichern

// Pro Session: Vault zuweisen — Agent bekommt Zugriff ohne dass Tokens in Prompts landen
const session = await anthropic.beta.sessions.create({
  agent_id: "agent_xyz",
  vault_ids: [vault.id],
});

Der Agent-Code selbst enthält keine Credentials und kennt keine Nutzer-IDs — die Trennung passiert auf Vault-Ebene. Laut Dokumentation werden Secret-Felder in keiner Response zurückgegeben: Der Wert verlässt den Vault nur als maskiertes Token in die Sandbox.

Observability: Was der Event-Stream liefert

Der Stream gibt deutlich mehr als nur Text zurück. Jedes Event hat einen Typ, aus dem sich der vollständige Ablauf eines Agent-Runs rekonstruieren lässt:

for await (const event of stream) {
  switch (event.type) {
    case "agent.message":
      // Textantwort des Modells → an Frontend streamen
      break;
    case "agent.tool_use":
      // Eingebautes Tool wurde aufgerufen (z. B. Web-Suche, Code-Ausführung)
      // event.tool_name, event.input, event.result
      break;
    case "agent.custom_tool_use":
      // Dein Code ist gefragt — event.tool_name + event.input zurückgeben
      const result = await myToolHandler(event.tool_name, event.input);
      await session.submitToolResult(event.tool_call_id, result);
      break;
    case "session.error":
      // Fehler mit Kontext — event.message, event.recoverable
      break;
  }
}

Die Anthropic Console zeigt für jede Session eine vollständige Event-Timeline: welche Tools in welcher Reihenfolge aufgerufen wurden, Token-Verbrauch pro Schritt und den vollständigen Input/Output jedes Tool-Calls. Das macht Debugging von Multi-Step-Runs deutlich einfacher als Logs in eigenen Agent-Loops.

Praktischer Debugging-Workflow bei unerwartetem Agent-Verhalten:

  1. Session-ID aus dem Backend-Log holen
  2. Event-Timeline in der Anthropic Console öffnen — alle Schritte zeitgeordnet sichtbar
  3. Tool-Inputs und -Outputs pro Schritt prüfen: erste Abweichung von der Erwartung identifizieren
  4. Fehlentscheidung im System Prompt, der Agent-Definition oder dem Tool-Handler lokalisieren

In der Praxis steckt das Problem häufig in Schritt 3: Ein Tool gibt mehr, weniger oder anders zurück als erwartet — der Folgefehler liegt dann nicht im Modell, sondern in der Tool-Implementierung oder dem Kontext, den der Agent bekommen hat.

UI, Agent-Definition, Sandbox und Credentials sind damit strukturell getrennt. Anthropic unterscheidet drei Tool-Kategorien:

  • Eingebaute Tools laufen in der Managed-Agents-Laufzeit direkt
  • MCP-Tools verbinden externe Systeme über ein standardisiertes Interface
  • Custom Tools bleiben dein Verantwortungsbereich — die Session emittiert ein agent.custom_tool_use-Event, dein System liefert ein user.custom_tool_result zurück

Das ist architektonisch sauberer als alles in einen monolithischen Tool-Runner zu kippen. Wer tiefer in die interne Tool-Struktur einsteigen will: die Analyse des Claude Code Leaks hat vieles davon offengelegt.

Failure-Modes und Grenzen der Plattform

Agent-Systeme scheitern nicht nur an Logik-Fehlern — sie scheitern an Infrastruktur, Timing und der Natur des nicht-deterministischen Modellverhaltens. Typische Failure-Modes bei Managed Agents:

Tool-Timeout. Tools haben eine Ausführungszeitbeschränkung. Wenn ein externer API-Call zu lang dauert oder eine Datenbankabfrage unter Last langsam wird, bricht der Tool-Call mit einem Timeout-Fehler ab. Der Agent entscheidet dann auf Basis unvollständiger oder fehlender Tool-Ergebnisse — was zu Folgentscheidungen führen kann, die ohne den fehlenden Kontext falsch sind.

Sandbox-Crash. Code-Execution in der Hands-Sandbox kann durch Speicher-Overflow, unbehandelte Exceptions oder Runtime-Fehler abbrechen. Da die Sandbox isoliert ist, bleibt der Brain-Layer intakt — der Session-Log enthält das Fehler-Event, und je nach Harness-Konfiguration kann die Session weiterlaufen oder wird abgebrochen.

Halluzinierter Tool-Call. Das Modell versucht, ein Tool aufzurufen, das in der Agent-Definition nicht existiert oder mit falschen Parametern übergeben wird. Der Harness leitet das agent.custom_tool_use-Event weiter — dein Tool-Handler entscheidet, ob das einen Fehler auslöst oder ob eine sinnvolle Default-Antwort zurückgegeben werden kann. Klare Tool-Beschreibungen und Parameter-Schemata reduzieren diese Fehlerklasse deutlich.

Infinite Loop. Ohne explizite Abbruchbedingung kann ein Agent in eine Schleife geraten — Tool-Call → Ergebnis unklar → erneuter Tool-Call → … Das Harness-Verhalten (maximale Schrittanzahl, Timeout pro Session) ist die erste Verteidigung; in der Agent-Definition sollte der System Prompt klare Abbruchkriterien und Formulierungen wie „Wenn das Tool dreimal kein brauchbares Ergebnis liefert, antworte dem Nutzer mit einer Fehlerbeschreibung” enthalten.

Was sich für Entwickler ändert

Die wichtigste gedankliche Umstellung: nicht mehr „ich rufe ein Modell auf”, sondern „ich starte und steuere eine laufende Agent-Instanz”.

Früher bedeutete das:

  • Modell + eigener Loop
  • eigene State-Verwaltung
  • eigene Tool-Ausführung
  • eigene Secrets
  • eigenes Hosting

Mit Claude Managed Agents:

  • Versionierter Agent + definiertes Environment
  • Session als append-only Event-Log außerhalb des Kontextfensters
  • Vaults für strukturierte Credential-Trennung
  • Gehostete, isolierte Container-Instanzen
  • Optional MCP als standardisierte Außenanbindung

Die eigentliche Verschiebung ist subtiler als die Checkliste suggeriert: Nicht „weniger Code schreiben”, sondern „anderen Code schreiben”. Der Verantwortungsbereich verlagert sich von Infrastruktur auf Steuerung — auf das Design von Agent-Definitionen, Vault-Strukturen, Tool-Interfaces und die Frage, wann eine Session abgebrochen oder neugestartet werden sollte. Das ist ein höheres Abstraktionsniveau, aber kein geringeres Komplexitätsniveau.

MCP als strategische Investition. Der Einsatz von MCP-Tools zahlt sich doppelt aus: Dieselben MCP-Server funktionieren sowohl im Agent SDK als auch in Managed Agents — und lassen sich potenziell auch von anderen MCP-kompatiblen Systemen (Claude.ai, Claude Desktop, Drittanbieter-Clients) nutzen. MCP-Integration ist kein Lock-in in Managed Agents, sondern eine Standardisierungsinvestition: Die Arbeit, ein System via MCP anzubinden, ist portabel und nicht verschwendet, wenn die Plattform gewechselt wird.

Für viele Fälle brauchst du weniger eigene Orchestrierung — weniger n8n, weniger LangGraph, weniger Eigenbau-Loops. Aber deine Anwendungsschicht verschwindet nicht: Backend für Session-Management, UI-Integration, Business-Logik und Custom Tools bleiben in deiner Verantwortung. Was abgenommen wird, ist der Agent Runtime Core.

Managed Agents vs. Agent SDK

Anthropic bietet zwei Wege für Claude-basierte Agenten an. Der Unterschied liegt nicht im Modell, sondern in Hosting, Kontrolle und Betriebsmodell:

AspektManaged AgentsAgent SDK
HostingAnthropic CloudSelbst (Laptop, VPS, Kubernetes)
Agent-LoopAutomatisch (Harness + Sandbox)Selbst implementiert
PersistenzSessions mit append-only Event-LogEigenes State-Management
ToolsEingebaut, MCP, CustomVoll anpassbar, lokale Dateien
PreisTokens + ~0,07 €/Session-StundeNur Tokens + eigene Infra
NetzwerkPublic + MCPBeliebig, auch privat
DebuggingLogs/Traces via Anthropic ConsoleVoll introspektiv

Pricing im Detail

Managed Agents nutzt ein hybrides Modell: Token-Verbrauch plus Session-Gebühr für aktive Laufzeit.

KomponenteKostenBeschreibung
Tokenswie Claude API (~3–28 €/Mio.)Input/Output je nach Modell
Session-Stunde~0,07 €/hNur bei aktiver Laufzeit (Tool-Calls, Harness)
EnvironmentsinklusiveBis 10 parallel; Enterprise: unbegrenzt
Vaults / MCPkeine ExtragebührSecrets und externe Tools inklusive

Zwei Beispiele zur Orientierung:

  • Kurze Session (5 min, 10k Tokens): ~0,01 € Session + 0,09 € Tokens = ~0,10 €
  • Long-Running (2 h, 100k Tokens): ~0,25 € Session + 0,92 € Tokens = ~1,17 €

Einstieg: Claude Console bietet einen Free Tier mit 10 Sessions/Monat. Danach Pay-as-you-go; Enterprise-Rabatte ab ~9.200 €/Monat. Alle Preise sind Richtwerte; Anthropic rechnet in USD ab.

Kostenrealität bei tool-intensiven Workloads. Ein Agent, der pro Task 20-30 Tool-Calls ausführt (Dateioperationen, API-Calls, Code-Ausführung), verursacht oft mehr Token-Kosten als Session-Zeitkosten — jeder Tool-Zyklus kostet Tokens für Input und Output. Bei kurzen Tasks (unter 10 min) ist die Session-Gebühr meist der kleinere Posten; bei Long-Running Tasks (über 30 min) kehrt sich das um. Die Kalkulation sollte daher nach Task-Typ aufgeschlüsselt sein, nicht pauschal über alle Workloads gemittelt.

Session-Schnitt-Muster für Multi-User-Anwendungen. Nicht eine Session pro Nutzer — sondern eine Session pro Aufgabe. Wenn ein Nutzer täglich drei bis vier unterschiedliche Aufgaben hat, ist es kostengünstiger und architektonisch sauberer, pro Aufgabe eine neue Session zu starten, statt eine dauerhafte Session offen zu halten. Abgeschlossene Sessions können archiviert und bei Bedarf als Kontext für neue Sessions referenziert werden — das Modell bekommt als Kontext die relevante Historie, nicht die gesamte Session-Geschichte.

Managed Agents macht Sinn für produktive Workloads: Multi-Stunden-Aufgaben wie Recherche oder Batch-Processing, automatische Wiederaufnahme bei Harness-Abstürzen, keine eigene Infra. Der Preis dafür ist die Session-Gebühr und die Plattformabhängigkeit.

Agent SDK ist die richtige Wahl für Entwicklung und lokale Umgebungen, private Netze, vollständige Kontrolle über Runtime und Budget-Limits (max_budget_usd), und überall, wo Session-Gebühren oder Vendor-Lock-in nicht akzeptabel sind.

Hybrid-Ansatz: Mit SDK prototypieren (schnelle Iteration, kein Overhead), für Produktion zu Managed Agents migrieren. Dieselben MCP-Server funktionieren in beiden Setups — die Investition in MCP-Integration ist nicht verschwendet.

Architektur-Entscheidungsregel. Eine Faustregel: Wenn das System primär Schritte ausführt, die du im Voraus kennst — API-Calls, Transformationen, vorher definierte Workflows — liefert das Agent SDK mehr Kontrolle bei weniger Overhead. Wenn das System denken, planen und auf unvorhergesehene Situationen reagieren soll, mit zustandsbehaftetem Verlauf über Minuten bis Stunden, ist Managed Agents die sauberere Wahl. Kurz: Workflow → Agent SDK. Thinking System → Managed Agents.

Abgrenzung zu Cloudflare

Wer sich mit Cloudflare Dynamic Workers als Agenten-Infrastruktur beschäftigt hat, fragt sich an dieser Stelle: Wo ist der Unterschied?

Cloudflare liefert Infrastruktur-Primitive — Workers AI für Modell-Inferenz, Dynamic Workers als ephemere Code-Execution-Sandbox, Durable Objects für persistenten State. Das entspricht grob der Hands-Schicht von Managed Agents, aber ohne fertige Session-Persistenz, ohne eingebautes Tool-Routing, ohne Harness. Du verdrahtest das selbst.

AspektManaged AgentsCloudflare Workers AI
ModellClaude (Anthropic)Viele (Llama, Mistral, …)
Session / StateEingebaut (Event-Log)Durable Objects (selbst)
Code-ExecutionAnthropic SandboxDynamic Workers (V8 Isolates)
OrchestrierungAutomatisch (Harness)Selbst implementiert
Token-EffizienzStandard Tool-CallingCode Mode: bis −81 % Token via Batch-Ausführung
DatenhaltungAnthropic Cloud (USA)EU-Edge möglich (DSGVO)
EigenaufwandGeringHoch

Cloudflares Dynamic Workers sind bei der Code-Execution in einem Punkt strukturell überlegen: V8-Isolates starten in ~5 ms, verbrauchen ~3 MB RAM pro Isolate und erlauben den sogenannten Code Mode — statt zehn sequenzieller Tool-Calls generiert der Agent eine einzige TypeScript-Funktion, die alles in einem Schritt ausführt. Für reine Ausführungs-Workloads ist das effizienter.

Managed Agents gewinnt, wenn: du Claude bevorzugst, stundenlange stateful Runs brauchst, wenig eigene Infra aufbauen willst.

Cloudflare gewinnt, wenn: Multi-Modell-Flexibilität nötig ist, EU-Datenhaltung eine harte Anforderung ist, oder kurze Tasks maximal token-effizient sein sollen.

Hybrid-Szenario: Cloudflare Dynamic Workers als Hands-Layer, Claude Managed Agents als Brain/Session-Layer — verbunden über MCP. Technisch möglich, operativ aber ein eigenes Integrationsprojekt.

Was nicht gelöst ist

Managed Agents löst Infrastruktur-Probleme — Persistenz, Isolation, Credential-Trennung. Es löst keine inhärenten Eigenschaften von LLM-basierten Systemen.

Nicht-Determinismus bleibt. Derselbe Prompt führt zu unterschiedlichen Ergebnissen. Das gilt für Entscheidungen, Tool-Calls und die Reihenfolge von Schritten. Managed Agents macht das System resilienter gegenüber Infrastruktur-Ausfällen, aber nicht deterministischer. Wer reproduzierbare Ergebnisse braucht, muss das auf Anwendungsebene sicherstellen — durch strukturierte Outputs, Validierungsschritte oder explizite Kontrollpunkte im Ablauf.

Keine transaktionale Sicherheit. Der Session-Log ist append-only und persistent — aber Tool-Calls sind keine Datenbank-Transaktionen. Wenn ein Agent einen Schritt ausführt (E-Mail schickt, Datei schreibt, API-Call macht) und der nächste Schritt fehlschlägt, gibt es kein automatisches Rollback. Idempotente Tool-Implementierungen und eine explizite Fehler-Strategie pro Tool sind Entwickler-Aufgabe, nicht Plattform-Aufgabe.

Session ≠ Datenbank. Der Event-Log ist für Observability und Resilienz ausgelegt, nicht für strukturierte Abfragen. Wer Auswertungen über viele Sessions braucht — Häufigkeit von Tool-Calls, Fehlerquoten, Nutzer-Feedback — muss das außerhalb des Session-Logs aufbauen. Managed Agents bietet keinen Query-Layer über den Log.

Prompt-Qualität bleibt der Engpass. Keine Plattform gleicht eine schwache Agent-Definition aus. System Prompts, Tool-Beschreibungen und die Formulierung von Aufgaben sind der entscheidende Hebel für die Qualität des Agent-Verhaltens. Managed Agents macht das Scaffolding besser — es macht das Modellverhalten nicht robuster, wenn das Prompting vage ist.

Einordnung

Claude Managed Agents verschiebt nicht primär das Modell, sondern die Zuständigkeiten: Anthropic übernimmt Session-Persistenz, Tool-Orchestrierung und die Ausführungsumgebung. Was das architektonisch bedeutet, lässt sich in einem Satz fassen:

Nicht nur „Das Modell kann Tools benutzen”, sondern „Die Plattform betreibt deinen Agenten zustandsbehaftet, mit append-only Event-Log außerhalb des Kontextfensters, struktureller Credential-Trennung und isolierten Sandboxes.”

Der Preis dafür ist Abhängigkeit. Ob der Tausch sinnvoll ist, hängt davon ab, wie viel eigene Runtime-Infrastruktur du heute baust — und wie lange du das noch selbst betreiben willst.

Wer Managed Agents richtig einordnet, sieht es als das, was es ist: eine Serverless-Runtime für nicht-deterministische, zustandsbehaftete Systeme — mit allem, was das bedeutet. Serverless bedeutet: Zahlen für Ausführung, nicht für Bereitschaft. Deployen von Definitionen, nicht von Prozessen. Debugging über Event-Logs, nicht über Stack-Traces. Und Leben mit den Grenzen der Plattform — genau wie bei AWS Lambda oder Cloudflare Workers.

Das ist kein Kritikpunkt. Es ist eine Einordnung. Und sie hilft, die richtigen Entscheidungen zu treffen: wann Managed Agents der richtige Betriebsmodus ist, wann das Agent SDK mehr Sinn ergibt — und wann das Problem selbst noch keine stabile technische Entscheidung erlaubt.