[{"data":1,"prerenderedAt":914},["ShallowReactive",2],{"blog-a2a-protocol-agent-interoperability-de":3},{"slug":4,"published":5,"minutes":6,"category":7,"tags":8,"keywords":14,"about":26,"sources":36,"cover":61,"og":62,"expertise":63,"locales":64,"lang":66,"title":68,"description":69,"coverAlt":70,"metaTitle":71,"takeaways":72,"faq":78,"toc":94,"blocks":124,"others":634},"a2a-protocol-agent-interoperability","2026-10-16",12,"agents",[9,10,11,12,13],"A2A","AI agents","MCP","Interoperability","Agent security",[15,16,17,18,19,20,21,22,23,24,25],"a2a protocol","agent2agent protocol","a2a vs mcp","a2a agent card","agent-card.json well-known","a2a protocol 1.0","a2a task lifecycle","agent to agent communication protocol","a2a security","a2a json-rpc grpc","agent session smuggling",[27,30,33],{"name":28,"url":29},"Agent2Agent protocol","https:\u002F\u002Fa2a-protocol.org\u002F",{"name":31,"url":32},"Model Context Protocol","https:\u002F\u002Fmodelcontextprotocol.io\u002F",{"name":34,"url":35},"Linux Foundation","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FLinux_Foundation",[37,40,43,46,49,52,55,58],{"title":38,"url":39},"A2A Protocol Specification (latest, v1.0)","https:\u002F\u002Fa2a-protocol.org\u002Flatest\u002Fspecification\u002F",{"title":41,"url":42},"A2A: a2a.proto, the normative data model (GitHub)","https:\u002F\u002Fgithub.com\u002Fa2aproject\u002FA2A\u002Fblob\u002Fmain\u002Fspecification\u002Fa2a.proto",{"title":44,"url":45},"A2A docs: A2A and MCP","https:\u002F\u002Fa2a-protocol.org\u002Flatest\u002Ftopics\u002Fa2a-and-mcp\u002F",{"title":47,"url":48},"A2A docs: Agent discovery","https:\u002F\u002Fa2a-protocol.org\u002Flatest\u002Ftopics\u002Fagent-discovery\u002F",{"title":50,"url":51},"Google Developers Blog: Announcing the Agent2Agent Protocol (Apr 2025)","https:\u002F\u002Fdevelopers.googleblog.com\u002Fen\u002Fa2a-a-new-era-of-agent-interoperability\u002F",{"title":53,"url":54},"Linux Foundation: Launch of the Agent2Agent Protocol Project (Jun 2025)","https:\u002F\u002Fwww.linuxfoundation.org\u002Fpress\u002Flinux-foundation-launches-the-agent2agent-protocol-project-to-enable-secure-intelligent-communication-between-ai-agents",{"title":56,"url":57},"Linux Foundation: A2A surpasses 150 organizations in its first year (Apr 2026)","https:\u002F\u002Fwww.linuxfoundation.org\u002Fpress\u002Fa2a-protocol-surpasses-150-organizations-lands-in-major-cloud-platforms-and-sees-enterprise-production-use-in-first-year",{"title":59,"url":60},"Unit 42: Agent Session Smuggling in Agent2Agent Systems (Oct 2025)","https:\u002F\u002Funit42.paloaltonetworks.com\u002Fagent-session-smuggling-in-agent2agent-systems\u002F","\u002Fimages\u002Fblog\u002Fa2a-protocol-agent-interoperability\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fa2a-protocol-agent-interoperability\u002Fog.jpg","ai-engineer",[65,66,67],"en","de","hu","Das A2A-Protokoll erklärt: Agent Cards, Tasks und sein Platz neben MCP","Was das Agent2Agent-Protokoll in v1.0 standardisiert: Agent Cards, Tasks, Bindings, Sicherheit, der Unterschied zu MCP und wann es sich lohnt.","Zwei KI-Agenten verschiedener Organisationen tauschen über A2A Tasks aus, jeder über MCP mit eigenen Tools verbunden, die Agent Card liegt unter einer Well-known-URL.","A2A-Protokoll: Agent Cards, Tasks und MCP · Balázs Csorba",[73,74,75,76,77],"A2A verbindet Agenten miteinander; MCP verbindet einen Agenten mit seinen Tools. Die meisten realen Systeme, die A2A brauchen, nutzen auch MCP.","Eine Agent Card unter \u002F.well-known\u002Fagent-card.json beschreibt Identität, Schnittstellen, Skills und die Sicherheitsverfahren, die ein Aufrufer nutzen muss.","Arbeit ist ein Task mit vom Server vergebener ID und Zustandsmaschine, lang laufende und mehrstufige Aufträge sind also eingebaut, nicht angeflanscht.","Version 1.0 ist die erste stabile Spezifikation, mit JSON-RPC-, gRPC- und HTTP+JSON-Bindings und optional signierten Agent Cards.","Ein entfernter Agent ist nicht vertrauenswürdige Eingabe: jede Operation autorisieren, Webhook-URLs prüfen und sensible Aktionen außerhalb des Kanals bestätigen.",[79,82,85,88,91],{"q":80,"a":81},"Was ist das A2A-Protokoll?","Agent2Agent (A2A) ist ein offenes Protokoll, mit dem KI-Agenten verschiedener Teams oder Anbieter einander finden, Nachrichten austauschen und Tasks übergeben. Google stellte es im April 2025 vor und übergab es im Juni 2025 an die Linux Foundation; Version 1.0 ist die erste stabile Spezifikation.",{"q":83,"a":84},"Was ist der Unterschied zwischen A2A und MCP?","MCP standardisiert, wie ein Agent Tools und Ressourcen nutzt, typischerweise klar definierte Funktionen. A2A standardisiert, wie unabhängige, oft undurchsichtige Agenten als Gleichrangige an Tasks zusammenarbeiten, die zustandsbehaftet, mehrstufig und lang laufend sein können. Die A2A-Dokumentation nennt beide komplementär: A2A verbindet die Agenten miteinander, MCP jeden Agenten mit seinen Tools.",{"q":86,"a":87},"Wo wird eine A2A Agent Card veröffentlicht?","Die Spezifikation definiert eine Well-known-URI, https:\u002F\u002F{server_domain}\u002F.well-known\u002Fagent-card.json, abgerufen per einfachem HTTP-GET. Agenten lassen sich auch über kuratierte Registries finden oder direkt konfigurieren. Ausführlichere Karten können über die Operation für die erweiterte Agent Card nur authentifizierten Aufrufern ausgeliefert werden.",{"q":89,"a":90},"Ist A2A sicher?","Das Protokoll definiert die Ansatzpunkte: Sicherheitsverfahren in der Agent Card (API-Schlüssel, HTTP-Auth, OAuth 2.0, OpenID Connect, Mutual TLS), verpflichtende Autorisierung bei jeder Operation und optional signierte Karten. Ob ein Deployment sicher ist, hängt davon ab, ob man sie umsetzt und Nachrichten entfernter Agenten als nicht vertrauenswürdige Eingabe behandelt.",{"q":92,"a":93},"Brauche ich A2A für ein Multi-Agenten-System innerhalb einer Anwendung?","Meist nicht. Gehören einem alle Agenten und laufen sie in einer Codebasis, sind Sub-Agenten oder Funktionsaufrufe einfacher. A2A lohnt sich an Grenzen: zwischen Teams, Diensten oder Unternehmen, wo Agenten unabhängig deployt und versioniert werden.",[95,97,100,103,106,109,112,115,118,121],{"id":96,"title":80},"what-is-a2a",{"id":98,"title":99},"a2a-vs-mcp","Wie verhält sich A2A zu MCP?",{"id":101,"title":102},"agent-cards","Was steht in einer Agent Card?",{"id":104,"title":105},"tasks-and-messages","Wie funktionieren Tasks, Nachrichten und Artefakte?",{"id":107,"title":108},"bindings-and-updates","Welche Transporte und Update-Modi gibt es?",{"id":110,"title":111},"security","Was gehört zur Sicherheit bei A2A?",{"id":113,"title":114},"trust-between-agents","Warum ist ein entfernter Agent nicht vertrauenswürdige Eingabe?",{"id":116,"title":117},"when-to-use-a2a","Wann sollte man A2A nutzen, und wann nicht?",{"id":119,"title":120},"getting-started","Wie fängt man mit A2A an?",{"id":122,"title":123},"sources","Quellen",[125,129,132,135,147,163,164,170,179,215,224,225,248,250,273,284,291,292,340,347,366,367,370,447,464,466,469,470,482,485,508,509,520,531,532,535,566,578,579,607,608],{"type":126,"content":127},"paragraph",[128],"Die meisten Agenten-Werkzeuge drehten sich bisher um einen Agenten und seine Tools. Das nächste Problem taucht auf, sobald zwei Agenten verschiedener Teams zusammenarbeiten müssen: ein Einkaufsagent in Ihrem Shop, der den Verfügbarkeitsagenten eines Lieferanten fragen will, oder ein interner Support-Agent, der einen Fall an den Agenten des Logistikteams übergibt. Jede Seite hat ihr eigenes Framework, Modell und Deployment. Ohne gemeinsames Protokoll ist jede solche Paarung eine Einzelintegration.",{"type":126,"content":130},[131],"Agent2Agent (A2A) ist das offene Protokoll für dieses Problem. Dieser Artikel erklärt, was Version 1.0 der Spezifikation tatsächlich standardisiert, Agent Cards, Tasks, Nachrichten, Transporte und Sicherheit, wie es sich zu MCP verhält, welche Vertrauensprobleme es nicht für Sie löst und wann ich es einsetzen würde.",{"type":133,"level":134,"id":96,"text":80},"heading",2,{"type":126,"content":136},[137,138,142,143,146],"Google ",{"tag":139,"href":51,"children":140},"a",[141],"stellte A2A"," am 9. April 2025 mit mehr als 50 Technologiepartnern vor, aufgebaut auf bestehenden Standards wie HTTP, SSE und JSON-RPC. Die fünf Designprinzipien: agentische Fähigkeiten ernst nehmen, auf bestehenden Standards aufbauen, standardmäßig sicher sein, lang laufende Tasks unterstützen und modalitätsunabhängig sein. Am 23. Juni 2025 ",{"tag":139,"href":54,"children":144},[145],"startete die Linux Foundation das Agent2Agent-Projekt"," auf dem Open Source Summit North America, unterstützt von mehr als 100 Unternehmen, womit die Steuerung nicht mehr bei einem einzelnen Anbieter liegt.",{"type":126,"content":148},[149,150,153,154,158,159,162],"Die ",{"tag":139,"href":39,"children":151},[152],"aktuelle Spezifikation"," ist Version 1.0.0, nach 0.1.0, 0.2.6 und 0.3.0. Kompatibilität wird über Major- und Minor-Version geführt, Clients senden einen ",{"tag":155,"children":156},"code",[157],"A2A-Version","-Header. In ihrem ",{"tag":139,"href":57,"children":160},[161],"Update zum ersten Jahrestag"," am 9. April 2026 beschrieb die Linux Foundation 1.0 als erste stabile Spezifikation und meldete mehr als 150 unterstützende Organisationen, SDKs in fünf Sprachen (Python, JavaScript, Java, Go und .NET) sowie Unterstützung in Azure AI Foundry, Copilot Studio und Amazon Bedrock AgentCore Runtime.",{"type":133,"level":134,"id":98,"text":99},{"type":126,"content":165},[149,166,169],{"tag":139,"href":45,"children":167},[168],"A2A-Dokumentation"," beschreibt beide als komplementäre Schichten. MCP ist vertikal: Es gibt einem Agenten strukturierten Zugriff auf Tools und Ressourcen, die typischerweise klar definiert und oft zustandslos sind. A2A ist horizontal: Unabhängige, oft undurchsichtige Agenten arbeiten als Gleichrangige zusammen, mit Reasoning, Zustand und mehrstufigem Dialog auf beiden Seiten. In den Worten der Dokumentation: „A2A connects the agents to each other; MCP connects each agent to its own tools.“",{"type":171,"attrs":172,"inner":176,"caption":177},"diagram",{"viewBox":173,"role":174,"aria-labelledby":175},"0 0 720 290","img","a2a1-t a2a1-d","\u003Ctitle id=\"a2a1-t\">A2A zwischen Agenten, MCP zu Tools\u003C\u002Ftitle>\u003Cdesc id=\"a2a1-d\">Ein Client-Agent in Ihrer Anwendung spricht über A2A mit dem entfernten Agenten eines anderen Teams oder Anbieters und tauscht Tasks und Nachrichten aus. Jeder Agent nutzt seine eigenen Tools über MCP. Der entfernte Agent veröffentlicht seine Agent Card unter einer Well-known-URL.\u003C\u002Fdesc>\u003Cdefs>\u003Cmarker id=\"a2a1-ah\" viewBox=\"0 0 10 10\" refX=\"9\" refY=\"5\" markerWidth=\"7\" markerHeight=\"7\" orient=\"auto-start-reverse\">\u003Cpath d=\"M0 0L10 5L0 10z\" class=\"d-head-accent\" \u002F>\u003C\u002Fmarker>\u003C\u002Fdefs>\u003Crect x=\"30\" y=\"30\" width=\"250\" height=\"84\" rx=\"12\" class=\"d-box\" \u002F>\u003Ctext x=\"155\" y=\"66\" text-anchor=\"middle\" class=\"d-title\">Client-Agent\u003C\u002Ftext>\u003Ctext x=\"155\" y=\"90\" text-anchor=\"middle\" class=\"d-small\">Ihre Anwendung\u003C\u002Ftext>\u003Crect x=\"440\" y=\"30\" width=\"250\" height=\"84\" rx=\"12\" class=\"d-accent\" \u002F>\u003Ctext x=\"565\" y=\"66\" text-anchor=\"middle\" class=\"d-title\">Entfernter Agent\u003C\u002Ftext>\u003Ctext x=\"565\" y=\"90\" text-anchor=\"middle\" class=\"d-small\">anderes Team, Anbieter\u003C\u002Ftext>\u003Cpath d=\"M284 64H436\" class=\"d-line-accent\" marker-end=\"url(#a2a1-ah)\" \u002F>\u003Cpath d=\"M436 82H284\" class=\"d-line-accent\" marker-end=\"url(#a2a1-ah)\" \u002F>\u003Ctext x=\"360\" y=\"54\" text-anchor=\"middle\" class=\"d-label\">A2A: Tasks, Nachrichten\u003C\u002Ftext>\u003Cpath d=\"M90 114V186\" class=\"d-dash\" \u002F>\u003Crect x=\"30\" y=\"186\" width=\"120\" height=\"50\" rx=\"8\" class=\"d-mint\" \u002F>\u003Ctext x=\"90\" y=\"216\" text-anchor=\"middle\" class=\"d-text\">CRM-Tools\u003C\u002Ftext>\u003Cpath d=\"M220 114V186\" class=\"d-dash\" \u002F>\u003Crect x=\"160\" y=\"186\" width=\"120\" height=\"50\" rx=\"8\" class=\"d-mint\" \u002F>\u003Ctext x=\"220\" y=\"216\" text-anchor=\"middle\" class=\"d-text\">Doku-Suche\u003C\u002Ftext>\u003Cpath d=\"M500 114V186\" class=\"d-dash\" \u002F>\u003Crect x=\"440\" y=\"186\" width=\"120\" height=\"50\" rx=\"8\" class=\"d-gold\" \u002F>\u003Ctext x=\"500\" y=\"216\" text-anchor=\"middle\" class=\"d-text\">Lager-DB\u003C\u002Ftext>\u003Cpath d=\"M630 114V186\" class=\"d-dash\" \u002F>\u003Crect x=\"570\" y=\"186\" width=\"120\" height=\"50\" rx=\"8\" class=\"d-gold\" \u002F>\u003Ctext x=\"630\" y=\"216\" text-anchor=\"middle\" class=\"d-text\">ERP-API\u003C\u002Ftext>\u003Ctext x=\"155\" y=\"160\" text-anchor=\"middle\" class=\"d-label\">MCP\u003C\u002Ftext>\u003Ctext x=\"565\" y=\"160\" text-anchor=\"middle\" class=\"d-label\">MCP\u003C\u002Ftext>\u003Ctext x=\"565\" y=\"268\" text-anchor=\"middle\" class=\"d-small\">Agent Card: \u002F.well-known\u002Fagent-card.json\u003C\u002Ftext>",[178],"Der Client-Agent sieht nie die Tools, Prompts oder das Modell des entfernten Agenten; er sieht eine Agent Card und Task-Ergebnisse.",{"type":180,"head":181,"rows":186},"table",[182,184,185],[183],"Frage",[11],[9],[187,194,201,208],[188,190,192],[189],"Wer ist auf der anderen Seite?",[191],"Ein Tool- oder Datenserver",[193],"Ein anderer Agent, der denkt und plant",[195,197,199],[196],"Arbeitseinheit",[198],"Ein Tool-Aufruf mit Argumenten und Ergebnis",[200],"Ein Task mit ID, Zuständen, Nachrichten und Artefakten",[202,204,206],[203],"Einblick ins Innere",[205],"Tool-Schemas sind für das Modell sichtbar",[207],"Der entfernte Agent bleibt undurchsichtig",[209,211,213],[210],"Typische Grenze",[212],"Innerhalb des Deployments eines Agenten",[214],"Zwischen Teams, Diensten oder Unternehmen",{"type":126,"content":216},[217,218,223],"Die Überschneidung ist real: Ein A2A-Agent mit wenigen zustandslosen Skills ließe sich als MCP-Server verpacken, das sagt auch die Dokumentation. Meine Faustregel: Verhält sich die Gegenseite wie eine Funktion, MCP nutzen; muss sie Rückfragen stellen, Minuten oder Stunden arbeiten oder ihr Reasoning für sich behalten, A2A nutzen. Zur MCP-Seite siehe die ",{"tag":219,"to":220,"children":221},"link","\u002Fblog\u002Fmcp-server-security-checklist",[222],"MCP-Sicherheits-Checkliste",".",{"type":133,"level":134,"id":101,"text":102},{"type":126,"content":226},[227,228,231,232,235,236,239,240,243,244,247],"Eine Agent Card ist ein JSON-Dokument, in dem sich ein A2A-Server beschreibt. Das normative Datenmodell ist ",{"tag":139,"href":42,"children":229},[230],"a2a.proto","; Pflichtfelder von ",{"tag":155,"children":233},[234],"AgentCard"," sind Name, Beschreibung, unterstützte Schnittstellen, Version, Capabilities, Standard-Ein- und Ausgabemodi sowie Skills. Jede Schnittstelle nennt eine URL, ein Protokoll-Binding (",{"tag":155,"children":237},[238],"JSONRPC",", ",{"tag":155,"children":241},[242],"GRPC"," oder ",{"tag":155,"children":245},[246],"HTTP+JSON",") und eine Protokollversion. Jeder Skill hat ID, Name, Beschreibung und Tags, dazu optional Beispiele, eigene Ein- und Ausgabemodi und Sicherheitsanforderungen.",{"type":155,"code":249},"\u002F\u002F https:\u002F\u002Fagents.supplier.example\u002F.well-known\u002Fagent-card.json (illustrative)\n{\n  \"name\": \"Parts Availability Agent\",\n  \"description\": \"Answers stock and lead-time questions for industrial spare parts.\",\n  \"version\": \"2.3.0\",\n  \"provider\": { \"organization\": \"Example Supplier GmbH\", \"url\": \"https:\u002F\u002Fsupplier.example\" },\n  \"supportedInterfaces\": [\n    { \"url\": \"https:\u002F\u002Fagents.supplier.example\u002Fa2a\", \"protocolBinding\": \"JSONRPC\", \"protocolVersion\": \"1.0\" },\n    { \"url\": \"https:\u002F\u002Fagents.supplier.example\u002Fa2a\u002Frest\", \"protocolBinding\": \"HTTP+JSON\", \"protocolVersion\": \"1.0\" }\n  ],\n  \"capabilities\": { \"streaming\": true, \"pushNotifications\": true, \"extendedAgentCard\": true },\n  \"securitySchemes\": {\n    \"oidc\": { \"openIdConnectSecurityScheme\": { \"openIdConnectUrl\": \"https:\u002F\u002Flogin.supplier.example\u002F.well-known\u002Fopenid-configuration\" } }\n  },\n  \"securityRequirements\": [ { \"schemes\": { \"oidc\": { \"list\": [\"parts.read\"] } } } ],\n  \"defaultInputModes\": [\"text\u002Fplain\", \"application\u002Fjson\"],\n  \"defaultOutputModes\": [\"text\u002Fplain\", \"application\u002Fjson\"],\n  \"skills\": [\n    {\n      \"id\": \"check-availability\",\n      \"name\": \"Check availability\",\n      \"description\": \"Stock level and lead time for a part number at a given warehouse.\",\n      \"tags\": [\"inventory\", \"spare-parts\"],\n      \"examples\": [\"Is ART-10001 in stock in Vienna?\"]\n    }\n  ]\n}",{"type":126,"content":251},[252,253,256,257,260,261,264,265,268,269,272],"Für die Discovery nennt die ",{"tag":139,"href":48,"children":254},[255],"Dokumentation"," drei Wege: die Well-known-URI ",{"tag":155,"children":258},[259],"https:\u002F\u002F{server_domain}\u002F.well-known\u002Fagent-card.json",", kuratierte Registries (für die die Spezifikation keine Standard-API definiert) und direkte Konfiguration. Der Card-Endpunkt sollte ",{"tag":155,"children":262},[263],"Cache-Control"," mit ",{"tag":155,"children":266},[267],"max-age"," und ein ",{"tag":155,"children":270},[271],"ETag"," senden, Clients sollten bedingte Anfragen nutzen. Karten können mit JSON Web Signature (RFC 7515) über eine nach JSON Canonicalization Scheme (RFC 8785) kanonisierte Form signiert werden, und Clients sollten mindestens eine Signatur prüfen, bevor sie einer signierten Karte vertrauen.",{"type":126,"content":274},[275,276,279,280,283],"Eine öffentliche Karte sollte keine Interna preisgeben. Wer vertrauenswürdigen Partnern mehr Skills oder interne URLs zeigen will, setzt ",{"tag":155,"children":277},[278],"capabilities.extendedAgentCard"," und liefert die vollständige Karte über ",{"tag":155,"children":281},[282],"GetExtendedAgentCard"," aus, das eine Authentifizierung verlangen muss. Statische Geheimnisse gehören in keine Karte.",{"type":126,"content":285},[286,287,290],"Skill-Beschreibungen für ein Modell schreiben, nicht für eine Marketingseite. Auf Client-Seite liest oft ein LLM die Karte, um zu entscheiden, welcher entfernte Agent und welcher Skill zu einer Anfrage passen; eine Beschreibung erfüllt also dieselbe Rolle wie eine Tool-Beschreibung in MCP: sagen, was der Skill tut, welche Eingabe er erwartet und was er nicht tut. ",{"tag":155,"children":288},[289],"version"," bei jeder Skill-Änderung erhöhen, damit gecachte Karten und ETags aussagekräftig bleiben.",{"type":133,"level":134,"id":104,"text":105},{"type":126,"content":293},[294,295,299,300,303,304,307,308,311,312,315,316,319,320,323,324,327,328,331,332,335,336,339],"Eine ",{"tag":296,"children":297},"strong",[298],"Nachricht"," ist ein Kommunikationszug mit ",{"tag":155,"children":301},[302],"messageId",", einer Rolle (",{"tag":155,"children":305},[306],"ROLE_USER"," für den Client, ",{"tag":155,"children":309},[310],"ROLE_AGENT"," für den Server) und einer Liste von Parts. Ein ",{"tag":296,"children":313},[314],"Part"," ist die kleinste Inhaltseinheit: Text, Rohbytes, eine URL oder strukturierte Daten, optional mit ",{"tag":155,"children":317},[318],"mediaType"," und ",{"tag":155,"children":321},[322],"filename",". Übernimmt der Server Arbeit, legt er einen ",{"tag":296,"children":325},[326],"Task"," an, mit vom Server vergebener ",{"tag":155,"children":329},[330],"id",", einer ",{"tag":155,"children":333},[334],"contextId",", die zusammengehörige Tasks und Nachrichten gruppiert, einem Status, einer Historie und ",{"tag":296,"children":337},[338],"Artefakten",", den Ergebnissen wie Dokumenten oder strukturierten Daten, die wiederum aus Parts bestehen.",{"type":171,"attrs":341,"inner":344,"caption":345},{"viewBox":342,"role":174,"aria-labelledby":343},"0 0 720 170","a2a2-t a2a2-d","\u003Ctitle id=\"a2a2-t\">Lebenszyklus eines A2A-Tasks\u003C\u002Ftitle>\u003Cdesc id=\"a2a2-d\">Ein Task beginnt als submitted, wechselt zu working, kann in einem unterbrochenen Zustand pausieren, wenn der Agent Eingaben oder Autorisierung braucht, kehrt zu working zurück und endet in einem Endzustand: completed, failed, canceled oder rejected.\u003C\u002Fdesc>\u003Cdefs>\u003Cmarker id=\"a2a2-ah\" viewBox=\"0 0 10 10\" refX=\"9\" refY=\"5\" markerWidth=\"7\" markerHeight=\"7\" orient=\"auto-start-reverse\">\u003Cpath d=\"M0 0L10 5L0 10z\" class=\"d-head\" \u002F>\u003C\u002Fmarker>\u003C\u002Fdefs>\u003Crect x=\"20\" y=\"47\" width=\"118\" height=\"76\" rx=\"10\" class=\"d-box\" \u002F>\u003Ctext x=\"79\" y=\"81\" text-anchor=\"middle\" class=\"d-text\">Submitted\u003C\u002Ftext>\u003Ctext x=\"79\" y=\"103\" text-anchor=\"middle\" class=\"d-small\">ID vergeben\u003C\u002Ftext>\u003Cpath d=\"M138 85H158\" class=\"d-line\" marker-end=\"url(#a2a2-ah)\" \u002F>\u003Crect x=\"160\" y=\"47\" width=\"118\" height=\"76\" rx=\"10\" class=\"d-sky\" \u002F>\u003Ctext x=\"220\" y=\"81\" text-anchor=\"middle\" class=\"d-text\">Working\u003C\u002Ftext>\u003Ctext x=\"220\" y=\"103\" text-anchor=\"middle\" class=\"d-small\">Fortschritt\u003C\u002Ftext>\u003Cpath d=\"M279 85H299\" class=\"d-line\" marker-end=\"url(#a2a2-ah)\" \u002F>\u003Crect x=\"301\" y=\"47\" width=\"118\" height=\"76\" rx=\"10\" class=\"d-gold\" \u002F>\u003Ctext x=\"360\" y=\"81\" text-anchor=\"middle\" class=\"d-text\">Unterbrochen\u003C\u002Ftext>\u003Ctext x=\"360\" y=\"103\" text-anchor=\"middle\" class=\"d-small\">Eingabe, Auth\u003C\u002Ftext>\u003Cpath d=\"M419 85H439\" class=\"d-line\" marker-end=\"url(#a2a2-ah)\" \u002F>\u003Crect x=\"441\" y=\"47\" width=\"118\" height=\"76\" rx=\"10\" class=\"d-sky\" \u002F>\u003Ctext x=\"500\" y=\"81\" text-anchor=\"middle\" class=\"d-text\">Working\u003C\u002Ftext>\u003Ctext x=\"500\" y=\"103\" text-anchor=\"middle\" class=\"d-small\">fortgesetzt\u003C\u002Ftext>\u003Cpath d=\"M560 85H580\" class=\"d-line\" marker-end=\"url(#a2a2-ah)\" \u002F>\u003Crect x=\"582\" y=\"47\" width=\"118\" height=\"76\" rx=\"10\" class=\"d-mint\" \u002F>\u003Ctext x=\"641\" y=\"81\" text-anchor=\"middle\" class=\"d-text\">Endzustand\u003C\u002Ftext>\u003Ctext x=\"641\" y=\"103\" text-anchor=\"middle\" class=\"d-small\">fertig, Fehler …\u003C\u002Ftext>",[346],"Endzustände sind completed, failed, canceled und rejected; input-required und auth-required sind die unterbrochenen Zustände.",{"type":126,"content":348},[349,350,353,354,358,359,361,362,365],"Bemerkenswert ist der Zustand ",{"tag":155,"children":351},[352],"TASK_STATE_AUTH_REQUIRED",": Ein Agent kann mitten im Task pausieren, weil der Nutzer ihm Zugriff auf etwas gewähren muss, genau die Art Freigabeschritt, für die ich in ",{"tag":219,"to":355,"children":356},"\u002Fblog\u002Fhuman-in-the-loop-ai-agents",[357],"Human in the Loop für KI-Agenten"," plädiere. Um einen mehrstufigen Austausch fortzusetzen, schickt der Client eine neue Nachricht mit derselben ",{"tag":155,"children":360},[334]," und der ",{"tag":155,"children":363},[364],"taskId"," des bestehenden Tasks; nicht zusammenpassende IDs werden abgelehnt.",{"type":133,"level":134,"id":107,"text":108},{"type":126,"content":368},[369],"Version 1.0 definiert drei Standard-Bindings, JSON-RPC, gRPC und HTTP+JSON (REST), und erlaubt eigene. Alle Bindings müssen sich gleich verhalten, und die Proto-Datei ist die maßgebliche Quelle für die Datenobjekte. Die Kernoperationen bilden sich so ab:",{"type":180,"head":371,"rows":377},[372,374,376],[373],"Operation",[375],"JSON-RPC- und gRPC-Methode",[246],[378,389,400,411,422,433],[379,381,385],[380],"Nachricht senden",[382],{"tag":155,"children":383},[384],"SendMessage",[386],{"tag":155,"children":387},[388],"POST \u002Fmessage:send",[390,392,396],[391],"Senden und Updates streamen",[393],{"tag":155,"children":394},[395],"SendStreamingMessage",[397],{"tag":155,"children":398},[399],"POST \u002Fmessage:stream",[401,403,407],[402],"Task lesen",[404],{"tag":155,"children":405},[406],"GetTask",[408],{"tag":155,"children":409},[410],"GET \u002Ftasks\u002F{id}",[412,414,418],[413],"Task abbrechen",[415],{"tag":155,"children":416},[417],"CancelTask",[419],{"tag":155,"children":420},[421],"POST \u002Ftasks\u002F{id}:cancel",[423,425,429],[424],"Webhook registrieren",[426],{"tag":155,"children":427},[428],"CreateTaskPushNotificationConfig",[430],{"tag":155,"children":431},[432],"POST \u002Ftasks\u002F{id}\u002FpushNotificationConfigs",[434,436,445],[435],"Weitere Operationen",[437,239,440,239,443],{"tag":155,"children":438},[439],"ListTasks",{"tag":155,"children":441},[442],"SubscribeToTask",{"tag":155,"children":444},[282],[446],"entsprechende Endpunkte",{"type":126,"content":448},[449,451,452,455,456,458,459,243,461,463],{"tag":155,"children":450},[384]," blockiert standardmäßig; mit ",{"tag":155,"children":453},[454],"returnImmediately"," kehrt es sofort zurück, und der Client verfolgt den Task auf einem von drei Wegen: Polling mit ",{"tag":155,"children":457},[406],", Streaming mit ",{"tag":155,"children":460},[395],{"tag":155,"children":462},[442],", oder Push-Benachrichtigungen, bei denen der Server Updates per POST an einen vom Client registrierten Webhook schickt. Push ist die richtige Wahl für Tasks, die Stunden dauern, denn so lange will niemand einen Stream offen halten. Ein JSON-RPC-Aufruf sieht so aus:",{"type":155,"code":465},"\u002F\u002F POST https:\u002F\u002Fagents.supplier.example\u002Fa2a  (JSON-RPC binding, illustrative)\n{\n  \"jsonrpc\": \"2.0\",\n  \"id\": \"req-42\",\n  \"method\": \"SendMessage\",\n  \"params\": {\n    \"message\": {\n      \"messageId\": \"9b0c7e7a-2f1d-4c55-9f0e-1f6a2d0c3e11\",\n      \"role\": \"ROLE_USER\",\n      \"parts\": [{ \"text\": \"Is ART-10001 in stock in Vienna, and what is the lead time for 40 units?\" }]\n    }\n  }\n}",{"type":126,"content":467},[468],"Welches Binding man wählt, hängt vor allem davon ab, was die eigenen Dienste schon sprechen. JSON-RPC ist in Beispielen und SDKs am verbreitetsten, HTTP+JSON passt zu Teams mit REST-Gateways, die lesbare URLs in ihren Logs wollen, und gRPC zu internen Service-Meshes, die ohnehin Protobuf nutzen. Eine Karte kann mehrere Schnittstellen auflisten, ein Server kann also zwei Bindings anbieten, während Clients eines wählen.",{"type":133,"level":134,"id":110,"text":111},{"type":126,"content":471},[472,473,476,477,481],"Authentifizierung wird deklariert, nicht erfunden: Die Agent Card listet ",{"tag":155,"children":474},[475],"securitySchemes",", das können API-Schlüssel, HTTP-Auth, OAuth 2.0 (Authorization Code, Client Credentials oder Device Code), OpenID Connect oder Mutual TLS sein, und gibt an, welche verlangt werden. Zugangsdaten laufen in der Transportschicht, wie bei jeder HTTP-API. Für Agent-zu-Agent-Aufrufe zwischen Unternehmen passen OAuth Client Credentials oder mTLS am besten, und der aufrufende Agent sollte eine eigene Identität mit engen Scopes haben, wie in ",{"tag":219,"to":478,"children":479},"\u002Fblog\u002Fai-agent-identity-least-privilege",[480],"KI-Agenten sind Identitäten"," beschrieben.",{"type":126,"content":483},[484],"Der Sicherheitsteil der Spezifikation ergänzt Pflichten, die in der Praxis zählen:",{"type":486,"items":487},"list",[488,493,498,503],[489,492],{"tag":296,"children":490},[491],"Autorisierung bei jeder Operation",", mit auf den Aufrufer beschränkten Ergebnissen auch ohne Filter, und Prüfungen vor jedem Lookup, der die Existenz fremder Ressourcen verraten könnte.",[494,497],{"tag":296,"children":495},[496],"Webhook-Validierung gegen SSRF",": private Bereiche wie 10.0.0.0\u002F8 und 192.168.0.0\u002F16, localhost und Link-Local-Adressen ablehnen und wo möglich Allowlists nutzen; Webhook-Anfragen nach 10 bis 30 Sekunden abbrechen.",[499,502],{"tag":296,"children":500},[501],"Eingabevalidierung und Limits"," für Nachrichtengrößen, Dateigrößen und Anfragekomplexität, dazu Rate Limiting für alle Operationen.",[504,507],{"tag":296,"children":505},[506],"Webhook-Empfänger"," prüfen, ob sich jede Benachrichtigung auf einen selbst gestarteten Task bezieht, und vertragen doppelte Zustellungen.",{"type":133,"level":134,"id":113,"text":114},{"type":126,"content":510},[511,512,515,516,519],"Authentifizierung sagt Ihnen, wer der andere Agent ist, nicht, ob das, was er sagt, sicher ist. Am 31. Oktober 2025 veröffentlichte Unit 42 ",{"tag":139,"href":60,"children":513},[514],"Agent Session Smuggling",": Ein bösartiger entfernter Agent nutzt eine bestehende Session, um dem Client-Agenten verdeckte Anweisungen zu schicken. Im Proof of Concept, gebaut mit Googles Agent Development Kit, brachte der entfernte Agent einen Finanzassistenten dazu, seine Konfiguration und Session-Historie preiszugeben und ein ",{"tag":155,"children":517},[518],"buy_stock","-Tool aufzurufen, das der Nutzer nicht verlangt hatte. Unit 42 stellt klar, dass dies keine Schwachstelle in A2A selbst ist; ausgenutzt wird das implizite Vertrauen zwischen Agenten in jedem zustandsbehafteten, mehrstufigen Protokoll.",{"type":521,"variant":522,"title":523,"body":524},"callout","warn","Ausgaben entfernter Agenten wie Webinhalte behandeln",[525],[526,527,223],"Text, Daten und Artefakte eines anderen Agenten sind für Ihr Modell nicht vertrauenswürdige Eingabe, genau wie eine abgerufene Webseite. Unit 42 empfiehlt Bestätigung sensibler Aktionen außerhalb des Kanals, Context Grounding, das vom ursprünglichen Auftrag abdriftende Sessions beendet, verifizierte Agentenidentität und dem Nutzer zu zeigen, welche entfernten Anweisungen zu welchen Tool-Aufrufen geführt haben. Es gelten dieselben Designregeln wie bei der ",{"tag":219,"to":528,"children":529},"\u002Fblog\u002Fprompt-injection-lethal-trifecta-patterns",[530],"Abwehr von Prompt Injection",{"type":133,"level":134,"id":116,"text":117},{"type":126,"content":533},[534],"Ein Protokoll kostet etwas: eine Agent Card pflegen, einen Task-Speicher, Auth zwischen Diensten, Versionierung. Es lohnt sich an Grenzen, nicht innerhalb einer Codebasis. Meine Entscheidungshilfe:",{"type":180,"head":536,"rows":541},[537,539],[538],"Situation",[540],"Was ich nutzen würde",[542,547,551,556,561],[543,545],[544],"Ein Team, eine Codebasis, mehrere spezialisierte Agenten",[546],"Sub-Agenten oder Funktionsaufrufe im Framework; kein Protokoll",[548,550],[549],"Ein Agent braucht eine Datenbank, API oder ein Dateisystem",[11],[552,554],[553],"Agenten verschiedener Teams, getrennt deployt und versioniert",[555],"A2A, mit OAuth oder mTLS zwischen Diensten",[557,559],[558],"Ein Partner oder Anbieter stellt einen Agenten bereit, keine API",[560],"A2A-Client; Ausgaben als nicht vertrauenswürdig behandeln",[562,564],[563],"Die Gegenseite hat eine stabile, klar definierte API",[565],"Die API direkt aufrufen oder als MCP-Tool verpacken",{"type":126,"content":567},[568,569,573,574,223],"Wer abwägt, ob er überhaupt mehrere Agenten braucht: ",{"tag":219,"to":570,"children":571},"\u002Fblog\u002Fmulti-agent-systems-when-worth-it",[572],"Multi-Agenten-Systeme: wann sie sich lohnen"," behandelt Token-Kosten und Fehlermuster. Für den Handel gehört das Agent Payments Protocol (AP2) zum A2A-Ökosystem; ich vergleiche es mit UCP und ACP in ",{"tag":219,"to":575,"children":576},"\u002Fblog\u002Fagentic-commerce-protocols-ucp-acp-guide",[577],"Agentic-Commerce-Protokolle",{"type":133,"level":134,"id":119,"text":120},{"type":486,"ordered":580,"items":581},true,[582,587,592,597,602],[583,586],{"tag":296,"children":584},[585],"Eine Grenze wählen",", an der zwei Agenten schon über eine Einzelintegration sprechen, und den Austausch als Tasks mit expliziten Zuständen modellieren.",[588,591],{"tag":296,"children":589},[590],"Zuerst die Agent Card schreiben",": Skills mit klaren Beschreibungen und Beispielen, zum Start ein Binding und das Sicherheitsverfahren, das Sie wirklich durchsetzen.",[593,596],{"tag":296,"children":594},[595],"Ein offizielles SDK nutzen"," statt das Protokoll von Hand zu schreiben, und die Protokollversion festlegen.",[598,601],{"tag":296,"children":599},[600],"Tasks persistent speichern",", in einem Speicher, der Neustarts übersteht, denn Tasks können einen Prozess überleben; für alles Langsame Push-Benachrichtigungen nutzen.",[603,606],{"tag":296,"children":604},[605],"Über die Grenze hinweg tracen",", mit Task-ID und Context-ID in jeder Logzeile, damit sich ein Fehler von einem Agenten in den anderen verfolgen lässt.",{"type":133,"level":134,"id":122,"text":123},{"type":486,"ordered":580,"items":609},[610,613,616,619,622,625,628,631],[611],{"tag":139,"href":39,"children":612},[38],[614],{"tag":139,"href":42,"children":615},[41],[617],{"tag":139,"href":45,"children":618},[44],[620],{"tag":139,"href":48,"children":621},[47],[623],{"tag":139,"href":51,"children":624},[50],[626],{"tag":139,"href":54,"children":627},[53],[629],{"tag":139,"href":57,"children":630},[56],[632],{"tag":139,"href":60,"children":633},[59],[635,706,754,838],{"slug":636,"published":5,"minutes":637,"category":7,"tags":638,"keywords":644,"about":656,"sources":666,"cover":700,"og":701,"expertise":63,"locales":702,"lang":66,"title":703,"description":704,"coverAlt":705},"context-rot-compaction-long-running-agents",10,[639,640,641,642,643],"Context rot","Compaction","Context engineering","Long-running agents","Agent memory",[645,646,647,648,649,650,651,652,653,654,655],"context rot","context rot LLM","compaction AI agents","context engineering","long-running agents context window","Claude compaction API","context editing clear tool results","OpenAI responses compaction","lost in the middle LLM","agent context management","sub-agents context isolation",[657,660,663],{"name":658,"url":659},"Context window","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FLarge_language_model#Context_window",{"name":661,"url":662},"Attention (machine learning)","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FAttention_(machine_learning)",{"name":664,"url":665},"Intelligent agent","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FIntelligent_agent",[667,670,673,676,679,682,685,688,691,694,697],{"title":668,"url":669},"Chroma: Context Rot: How Increasing Input Tokens Impacts LLM Performance (Jul 2025)","https:\u002F\u002Fresearch.trychroma.com\u002Fcontext-rot",{"title":671,"url":672},"Liu et al.: Lost in the Middle: How Language Models Use Long Contexts (2023)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2307.03172",{"title":674,"url":675},"Modarressi et al.: NoLiMa: Long-Context Evaluation Beyond Literal Matching (2025)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2502.05167",{"title":677,"url":678},"Anthropic: Effective context engineering for AI agents (Sep 2025)","https:\u002F\u002Fwww.anthropic.com\u002Fengineering\u002Feffective-context-engineering-for-ai-agents",{"title":680,"url":681},"Anthropic: Effective harnesses for long-running agents (Nov 2025)","https:\u002F\u002Fwww.anthropic.com\u002Fengineering\u002Feffective-harnesses-for-long-running-agents",{"title":683,"url":684},"Claude API docs: Compaction at a token threshold","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fbuild-with-claude\u002Fcompaction-threshold",{"title":686,"url":687},"Claude API docs: Compaction on demand","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fbuild-with-claude\u002Fcompaction-on-demand",{"title":689,"url":690},"Claude API docs: Context editing","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fbuild-with-claude\u002Fcontext-editing",{"title":692,"url":693},"Claude API docs: Memory tool","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fagents-and-tools\u002Ftool-use\u002Fmemory-tool",{"title":695,"url":696},"OpenAI API docs: Compaction","https:\u002F\u002Fplatform.openai.com\u002Fdocs\u002Fguides\u002Fcompaction",{"title":698,"url":699},"Cognition: Don't Build Multi-Agents","https:\u002F\u002Fcognition.ai\u002Fblog\u002Fdont-build-multi-agents","\u002Fimages\u002Fblog\u002Fcontext-rot-compaction-long-running-agents\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fcontext-rot-compaction-long-running-agents\u002Fog.jpg",[65,66,67],"Context Rot bei langlaufenden Agenten: Leeren, Compaction, Memory und Sub-Agenten","Warum die Genauigkeit von LLMs mit wachsendem Kontext sinkt und wie Leeren, Compaction, Notizen und Sub-Agenten lange Agentenläufe stabil halten.","Die Kontextgröße eines Agenten steigt über die Turns und wird durch das Leeren alter Tool-Ergebnisse und Compaction in einem Band gehalten, statt bis zur Fenstergrenze zu wachsen.",{"slug":707,"published":5,"minutes":708,"category":7,"tags":709,"keywords":714,"about":725,"sources":732,"cover":748,"og":749,"expertise":63,"locales":750,"lang":66,"title":751,"description":752,"coverAlt":753},"browser-agents-e2e-testing-playwright",7,[710,711,712,11,713],"Playwright","E2E testing","Coding agents","Test automation",[715,716,717,718,719,720,721,722,723,724],"playwright test agents","playwright planner generator healer","ai e2e testing","playwright mcp","llm generated playwright tests","self-healing tests","browser agent testing","playwright init-agents","ai test automation 2026","playwright cli skills",[726,728,731],{"name":710,"url":727},"https:\u002F\u002Fplaywright.dev\u002F",{"name":729,"url":730},"End-to-end testing","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FSystem_testing",{"name":31,"url":32},[733,736,739,742,745],{"title":734,"url":735},"Playwright docs: Test agents (planner, generator, healer)","https:\u002F\u002Fplaywright.dev\u002Fdocs\u002Ftest-agents",{"title":737,"url":738},"Microsoft: Playwright MCP README (MCP vs CLI, accessibility snapshots)","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fplaywright-mcp",{"title":740,"url":741},"Playwright docs: Best practices","https:\u002F\u002Fplaywright.dev\u002Fdocs\u002Fbest-practices",{"title":743,"url":744},"Playwright docs: Locators","https:\u002F\u002Fplaywright.dev\u002Fdocs\u002Flocators",{"title":746,"url":747},"Browserbase: Stagehand README (act, extract, observe)","https:\u002F\u002Fgithub.com\u002Fbrowserbase\u002Fstagehand","\u002Fimages\u002Fblog\u002Fbrowser-agents-e2e-testing-playwright\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fbrowser-agents-e2e-testing-playwright\u002Fog.jpg",[65,66,67],"Browser-Agenten für E2E-Tests: Agenten Playwright-Tests schreiben lassen, nicht ausführen","Wo KI-Agenten bei E2E-Tests helfen: Playwright Planner, Generator und Healer, MCP oder CLI und die Leitplanken, die geheilte Tests ehrlich halten.","Ein Agent erkundet eine Web-App, schreibt einen Testplan in Markdown, macht daraus Playwright-Tests, und ein Healer repariert Locators, während Assertions geprüft bleiben.",{"slug":755,"published":756,"minutes":757,"category":7,"tags":758,"keywords":764,"about":773,"sources":783,"cover":832,"og":833,"expertise":63,"locales":834,"lang":66,"title":835,"description":836,"coverAlt":837},"ai-assisted-development-economics","2026-10-01",11,[759,760,761,762,763],"AI coding agents","Developer productivity","Engineering economics","Team cost","GDPR",[765,766,767,768,769,770,771,772],"AI coding agents cost","developer productivity AI study","METR AI developer slowdown","AI coding break-even cost model","one senior engineer vs team","AI coding agent vs agency","DORA AI adoption report","GDPR processor contract AI coding tools",[774,777,780],{"name":775,"url":776},"General Data Protection Regulation","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FGeneral_Data_Protection_Regulation",{"name":778,"url":779},"Randomized controlled trial","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FRandomized_controlled_trial",{"name":781,"url":782},"Bus factor","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FBus_factor",[784,787,790,793,796,799,802,805,808,811,814,817,820,823,826,829],{"title":785,"url":786},"METR: early-2025 AI and experienced open-source developers","https:\u002F\u002Fmetr.org\u002Fblog\u002F2025-07-10-early-2025-ai-experienced-os-dev-study\u002F",{"title":788,"url":789},"Becker et al.: arXiv 2507.09089","https:\u002F\u002Farxiv.org\u002Fabs\u002F2507.09089",{"title":791,"url":792},"METR: developer productivity experiment design, February 2026","https:\u002F\u002Fmetr.org\u002Fblog\u002F2026-02-24-uplift-update\u002F",{"title":794,"url":795},"Peng et al.: GitHub Copilot controlled experiment, arXiv 2302.06590","https:\u002F\u002Farxiv.org\u002Fhtml\u002F2302.06590v1",{"title":797,"url":798},"Cui et al.: three field experiments with software developers","https:\u002F\u002Fwww.microsoft.com\u002Fen-us\u002Fresearch\u002F?p=1148213",{"title":800,"url":801},"DORA: State of AI-assisted Software Development 2025","https:\u002F\u002Fresearch.google\u002Fpubs\u002Fdora-2025-state-of-ai-assisted-software-development-report\u002F",{"title":803,"url":804},"Google Cloud: highlights from the 2024 DORA report","https:\u002F\u002Fcloud.google.com\u002Fblog\u002Fproducts\u002Fdevops-sre\u002Fannouncing-the-2024-dora-report",{"title":806,"url":807},"Stack Overflow: Developer Survey 2025, AI","https:\u002F\u002Fsurvey.stackoverflow.co\u002F2025\u002Fai",{"title":809,"url":810},"Ziftci et al.: Migrating Code At Scale With LLMs At Google","https:\u002F\u002Farxiv.org\u002Fabs\u002F2504.09691",{"title":812,"url":813},"Alshahwan et al.: Automated Unit Test Improvement using Large Language Models at Meta","https:\u002F\u002Farxiv.org\u002Fabs\u002F2402.09171",{"title":815,"url":816},"GitClear: AI Copilot Code Quality: 2025 Look Back at 12 Months of Data","https:\u002F\u002Fwww.gitclear.com\u002Fai_assistant_code_quality_2025_research",{"title":818,"url":819},"GDPR, Regulation (EU) 2016\u002F679, Article 28","https:\u002F\u002Feur-lex.europa.eu\u002Feli\u002Freg\u002F2016\u002F679\u002Foj\u002Feng",{"title":821,"url":822},"Anthropic: Commercial Terms of Service","https:\u002F\u002Fwww.anthropic.com\u002Flegal\u002Fcommercial-terms",{"title":824,"url":825},"Claude: pricing","https:\u002F\u002Fclaude.com\u002Fpricing",{"title":827,"url":828},"Claude Platform: data residency","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fbuild-with-claude\u002Fdata-residency",{"title":830,"url":831},"GitHub Copilot: plans and pricing","https:\u002F\u002Fgithub.com\u002Ffeatures\u002Fcopilot\u002Fplans","\u002Fimages\u002Fblog\u002Fai-assisted-development-economics\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fai-assisted-development-economics\u002Fog.jpg",[65,66,67],"Ein Senior mit Coding-Agenten gegen ein Team: was die Belege sagen","Die Studien von METR, DORA, Microsoft und GitHub zu KI-Coding-Tools: was sie nicht beweisen, und ein Kostenmodell für einen Senior gegen ein Team oder eine Agentur.","Titelbild zur KI-Coding-Ökonomie: eine Pipeline vom Entwurf bis zur Auslieferung, in der Agenten das Schreiben beschleunigen und Review- und Qualitätskosten einen Teil des Gewinns zurückholen.",{"slug":839,"published":840,"minutes":757,"category":7,"tags":841,"keywords":846,"about":855,"sources":867,"cover":908,"og":909,"expertise":63,"locales":910,"lang":66,"title":911,"description":912,"coverAlt":913},"spec-driven-development-coding-agents","2026-09-30",[842,712,843,844,845],"Spec-driven development","Acceptance criteria","Plan mode","AI engineering",[847,848,849,850,851,852,853,854],"spec-driven development","spec driven development coding agents","acceptance criteria for coding agents","AI coding agent plan mode","GitHub Spec Kit","Kiro specs requirements design tasks","vibe coding vs spec-driven development","EARS requirements syntax",[856,859,861,864],{"name":857,"url":858},"Vibe coding","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FVibe_coding",{"name":851,"url":860},"https:\u002F\u002Fgithub.com\u002Fgithub\u002Fspec-kit",{"name":862,"url":863},"EARS (Easy Approach to Requirements Syntax)","https:\u002F\u002Falistairmavin.com\u002Fears\u002F",{"name":865,"url":866},"Kiro","https:\u002F\u002Fkiro.dev",[868,871,873,876,879,882,884,887,890,893,895,897,900,902,905],{"title":869,"url":870},"Birgitta Böckeler: Understanding Spec-Driven-Development: Kiro, spec-kit, and Tessl (martinfowler.com, 15 October 2025)","https:\u002F\u002Fmartinfowler.com\u002Farticles\u002Fexploring-gen-ai\u002Fsdd-3-tools.html",{"title":872,"url":860},"GitHub Spec Kit: README",{"title":874,"url":875},"GitHub Spec Kit: spec-driven.md methodology","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fspec-kit\u002Fblob\u002Fmain\u002Fspec-driven.md",{"title":877,"url":878},"Kiro documentation: specs","https:\u002F\u002Fkiro.dev\u002Fdocs\u002Fspecs\u002F",{"title":880,"url":881},"Kiro: Introducing Kiro","https:\u002F\u002Fkiro.dev\u002Fblog\u002Fintroducing-kiro\u002F",{"title":883,"url":863},"Alistair Mavin: EARS, the Easy Approach to Requirements Syntax",{"title":885,"url":886},"Anthropic: Best practices for Claude Code","https:\u002F\u002Fcode.claude.com\u002Fdocs\u002Fen\u002Fbest-practices",{"title":888,"url":889},"Cline documentation: Plan and Act","https:\u002F\u002Fdocs.cline.bot\u002Ffeatures\u002Fplan-and-act",{"title":891,"url":892},"OpenAI: Codex slash command reference","https:\u002F\u002Flearn.chatgpt.com\u002Fdocs\u002Freference\u002Fslash-commands",{"title":894,"url":786},"METR: early-2025 AI and experienced open-source developer productivity (July 2025)",{"title":896,"url":792},"METR: We are changing our developer productivity experiment design (February 2026)",{"title":898,"url":899},"Thoughtworks Technology Radar: Spec-driven development","https:\u002F\u002Fwww.thoughtworks.com\u002Fradar\u002Ftechniques\u002Fspec-driven-development",{"title":901,"url":858},"Wikipedia: Vibe coding",{"title":903,"url":904},"Anthropic: Claude API pricing","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fabout-claude\u002Fpricing",{"title":906,"url":907},"Anthropic: Prompt caching","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fbuild-with-claude\u002Fprompt-caching","\u002Fimages\u002Fblog\u002Fspec-driven-development-coding-agents\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fspec-driven-development-coding-agents\u002Fog.jpg",[65,66,67],"Spec-driven Development für Coding-Agenten: den Plan vor dem Code festlegen","Vibe Coding scheitert an echten Codebasen. Schreib eine Spec mit Akzeptanzkriterien, Plan und Tasks, lass den Agenten abhaken und prüfe vor dem ersten Code.","Titelbild zu Spec-driven Development: eine Pipeline von Spec und Plan zu Tasks und Verifikation, mit einem Review-Gate vor jedem Code.",1792177149402]