[{"data":1,"prerenderedAt":739},["ShallowReactive",2],{"blog-openai-codex-cli-de":3},{"slug":4,"published":5,"minutes":6,"category":7,"tags":8,"keywords":14,"about":23,"sources":30,"cover":61,"og":62,"expertise":63,"locales":64,"lang":66,"title":68,"description":69,"coverAlt":70,"metaTitle":71,"takeaways":72,"faq":78,"toc":91,"blocks":122,"others":471},"openai-codex-cli","2026-08-31",11,"agents",[9,10,11,12,13],"Coding agent","Terminal","Sandbox","CI","Rust",[15,16,17,18,19,20,21,22],"openai codex cli","codex cli config.toml","codex exec CI","codex sandbox mode","codex vs claude code","codex cli review","codex cli pricing","AGENTS.md codex",[24,27],{"name":25,"url":26},"OpenAI Codex","https:\u002F\u002Fdevelopers.openai.com\u002Fcodex",{"name":28,"url":29},"Model Context Protocol","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FModel_Context_Protocol",[31,34,37,40,43,46,49,52,55,58],{"title":32,"url":33},"Codex CLI documentation","https:\u002F\u002Fdevelopers.openai.com\u002Fcodex\u002Fcli",{"title":35,"url":36},"Codex: configuration","https:\u002F\u002Fdevelopers.openai.com\u002Fcodex\u002Fconfiguration",{"title":38,"url":39},"Codex: sample configuration","https:\u002F\u002Fdevelopers.openai.com\u002Fcodex\u002Fconfig-file\u002Fconfig-sample",{"title":41,"url":42},"Codex: permissions","https:\u002F\u002Fdevelopers.openai.com\u002Fcodex\u002Fpermission-modes",{"title":44,"url":45},"Codex: non-interactive mode","https:\u002F\u002Fdevelopers.openai.com\u002Fcodex\u002Fnon-interactive-mode",{"title":47,"url":48},"Codex: authentication","https:\u002F\u002Fdevelopers.openai.com\u002Fcodex\u002Fauth",{"title":50,"url":51},"Codex: Model Context Protocol","https:\u002F\u002Fdevelopers.openai.com\u002Fcodex\u002Fextend\u002Fmcp",{"title":53,"url":54},"Codex: pricing","https:\u002F\u002Fdevelopers.openai.com\u002Fcodex\u002Fpricing",{"title":56,"url":57},"Codex: open-source components","https:\u002F\u002Fdevelopers.openai.com\u002Fcodex\u002Fopen-source",{"title":59,"url":60},"Codex changelog","https:\u002F\u002Fdevelopers.openai.com\u002Fcodex\u002Fchangelog","\u002Fimages\u002Fblog\u002Fopenai-codex-cli\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fopenai-codex-cli\u002Fog.jpg","ai-engineer",[65,66,67],"en","de","hu","OpenAI Codex CLI: der Agent, der Rechte als Konfigurationsdatei behandelt","Codex CLI ist OpenAIs quelloffener Terminal-Agent fürs Programmieren. Wie Sandbox, Freigaberichtlinie und config.toml zu bewerten sind und was unbewachte CI-Läufe kosten.","Ein Blatt, per Linie mit einem geschlossenen Gehäuse verbunden, drei Klappen, eine offen.","Codex CLI: Rechte als Konfigurationsdatei · Balázs Csorba",[73,74,75,76,77],"Codex CLI steht unter Apache-2.0, der Kern ist in Rust geschrieben, und es gibt versionierte npm-Pakete. In CI lässt sich also eine Version pinnen, statt zur Laufzeit per curl zu laden.","Das Berechtigungsmodell besteht aus zwei unabhängigen Einstellungen, sandbox_mode und approval_policy. Wer eine Freigabe prüft, weitet die Sandbox nie aus.","codex exec läuft standardmäßig read-only, schreibt den Fortschritt nach stderr und nur die letzte Nachricht nach stdout. Das ist gefahrlos in eine Pipeline einhängbar.","Die CLI verlangt ein Git-Repository und startet außerhalb eines Repositories nicht, außer man setzt --skip-git-repo-check.","ChatGPT-Abo und API-Abrechnung sind verschiedene Buchhaltungssysteme: Das Abo zählt Nachrichten, die API zählt Tokens, und egymást számolni nem lehet.",[79,82,85,88],{"q":80,"a":81},"Ist Codex CLI quelloffen?","Ja. CLI, SDK und App-Server liegen im Repository openai\u002Fcodex unter der Apache-2.0-Lizenz. Die IDE-Erweiterung und Codex Cloud sind nicht quelloffen, die Security-CLI erscheint separat als openai\u002Fcodex-security.",{"q":83,"a":84},"Wie bringe ich Codex CLI in CI, ohne dass es etwas anfasst?","Nimm codex exec. Es läuft in einer read-only Sandbox, sofern du nicht --sandbox workspace-write setzt. Der Fortschritt geht nach stderr, die letzte Agentennachricht nach stdout, eine Pipeline kann die Antwort also greifen, ohne Fortschrittszeilen zu parsen. Ein API-Key ist in CI das richtige Credential, weil die API pro Token abrechnet.",{"q":86,"a":87},"Worin unterscheiden sich sandbox_mode und approval_policy?","sandbox_mode legt die Grenze fest: read-only, workspace-write oder danger-full-access. approval_policy legt fest, wann der Agent pausiert: on-request, never oder eine granulare Tabelle. Sie sind getrennt, und der Wechsel des Prüfers von user auf auto_review lässt die Sandboxgrenze unverändert.",{"q":89,"a":90},"Funktioniert Codex CLI ohne Git-Repository?","Nicht standardmäßig. Die CLI verlangt, dass Befehle in einem Git-Repository laufen, damit keine destruktiven Änderungen entstehen, und codex exec startet sonst nicht. --skip-git-repo-check hebt das auf, was nur in einem Container sinnvoll ist, den man ohnehin selbst kontrolliert.",[92,95,98,101,104,107,110,113,116,119],{"id":93,"title":94},"what-it-is","Was es ist",{"id":96,"title":97},"how-it-works","Wie es funktioniert",{"id":99,"title":100},"getting-started","Erste Schritte",{"id":102,"title":103},"permissions","Sandbox und Freigaben",{"id":105,"title":106},"automation","Automatisierung und codex exec",{"id":108,"title":109},"mcp-support","MCP und Projektkontext",{"id":111,"title":112},"cost","Kosten und Limits",{"id":114,"title":115},"where-it-shingles","Wo es zu kurz kommt",{"id":117,"title":118},"verdict","Urteil",{"id":120,"title":121},"sources","Quellen",[123,127,135,138,141,175,176,179,185,188,189,192,194,216,217,228,230,276,279,290,291,297,299,310,328,329,332,334,337,338,341,348,349,352,403,406,407,410,422,437,438],{"type":124,"content":125},"paragraph",[126],"OpenAI Codex CLI ist ein Terminal-Agent fürs Programmieren: Er liest ein Repository, ändert Dateien, führt die Kommandos des Projekts aus und iteriert, bis die Aufgabe erledigt ist. Interessant ist nicht die Agentenschleife, die mehrere Wettbewerber ebenfalls haben. Interessant ist, dass das Sicherheitsmodell als zwei Einstellungen in einer TOML-Datei ausgedrückt wird, die ein Team committen, reviewen und pinnen kann, statt als Prompt oder als Kontoregel, die der Anbieter serverseitig durchsetzt.",{"type":124,"content":128},[129,130,134],"Das macht es zum am besten steuerbaren Coding-Agent seiner Kategorie, und zugleich zu dem, in dem Konfigurationsfehler am teuersten sind. Denn ein committetes ",{"tag":131,"children":132},"code",[133],"sandbox_mode = \"danger-full-access\""," ist eine Richtlinie, die ohne Review in Produktion geht. Alles Weitere ist eine Bewertung, wie gut dieser Kompromiss trägt.",{"type":136,"level":137,"id":93,"text":94},"heading",2,{"type":124,"content":139},[140],"Die CLI wird als versionierte npm-Pakete ausgeliefert, aktuell 0.160.1, das Repository steht unter Apache-2.0 mit einem Rust-Kern. Sie ist eine Oberfläche eines breiteren Codex-Produkts, zu dem außerdem die ChatGPT-Desktop-App, eine IDE-Erweiterung und ein Cloud-Runner gehören. Die CLI ist der Teil, der auf einem Entwicklerrechner läuft, und der einzige, der quelloffen ist.",{"type":142,"ordered":143,"items":144},"list",false,[145,151,161,163,173],[146,147,150],"Apache-2.0, Rust-Kern, npm-Paket ",{"tag":131,"children":148},[149],"@openai\u002Fcodex"," sowie ein eigenständiges Installationsskript.",[152,153,156,157,160],"Die Konfiguration liegt in ",{"tag":131,"children":154},[155],"~\u002F.codex\u002Fconfig.toml"," und lässt sich pro Projekt über ",{"tag":131,"children":158},[159],".codex\u002Fconfig.toml"," eingrenzen.",[162],"Zwei getrennte Anmeldewege: ChatGPT-Abonnement oder API-Key, mit unterschiedlichen Limits und unterschiedlicher Abrechnung.",[164,165,168,169,172],"Lokale Arbeit braucht ein Git-Repository; ",{"tag":131,"children":166},[167],"codex exec"," erzwingt dieselbe Regel und bietet ",{"tag":131,"children":170},[171],"--skip-git-repo-check",".",[174],"MCP-Server werden in derselben Konfigurationsdatei definiert und mit IDE-Erweiterung und Desktop-App auf demselben Host geteilt.",{"type":136,"level":137,"id":96,"text":97},{"type":124,"content":177},[178],"Der Turn-Ablauf ist der bekannte: Ein Prompt plus Repository-Kontext gehen ans Modell, das Modell erzeugt Tool-Calls, die CLI führt sie in einer Sandbox aus, und die Ergebnisse kommen als Tool-Output für den nächsten Turn zurück. Anders als bei einem Shell-Wrapper sind Sandbox und Freigabeprüfung zwei getrennte Tore, und beide sind konfiguriert, nicht interaktiv erfragt.",{"type":180,"src":181,"alt":182,"wide":183,"caption":184},"image","\u002Fimages\u002Fblog\u002Fopenai-codex-cli\u002Fdiagram-7.webp","One Codex turn, with the sandbox and the approval gate The prompt and the AGENTS.md instructions go to the model. The model emits a tool call. The sandbox decides whether the call touches only the workspace, and the approval policy decides whether it pauses for the user first. If the call runs, its output returns to the model and the loop continues.",true,"Sandbox und Freigabeprüfung sind getrennt. Die eine zu erweitern erweitert die andere nicht.",{"type":124,"content":186},[187],"Die Schleife ist nicht das Produkt, auch wenn sie interessant klingt. Was ein Team tatsächlich konfiguriert, ist die Grenze um sie herum, und die Dokumentation betont ungewöhnlich deutlich, dass beide orthogonal zueinander stehen. Ein Lauf mit Full access bearbeitet jede Datei auf dem Rechner und führt Befehle mit Netzwerk ohne Nachfrage aus, und die Doku beschreibt das als erheblich erhöhtes Risiko von Datenverlust und Leaks, statt es zu verstecken.",{"type":136,"level":137,"id":99,"text":100},{"type":124,"content":190},[191],"Installieren, anmelden, starten. Beim ersten Start bietet die CLI Sign in with ChatGPT oder einen API-Key an, und die Wahl wirkt später, weil sie entscheidet, welche Limits gelten und in welchem Abrechnungsmodus du arbeitest.",{"type":131,"code":193},"# Install on macOS or Linux; npm and Homebrew are also supported.\ncurl -fsSL https:\u002F\u002Fchatgpt.com\u002Fcodex\u002Finstall.sh | sh\n\n# Run inside a project directory, then sign in.\ncodex\n\n# Pin the version in CI instead of tracking latest.\nnpm install -g @openai\u002Fcodex@0.160.1\n\n# The first prompt is a good place for \u002Finit, which writes AGENTS.md.\n# \u002Fstatus, \u002Fmodel, \u002Fpermissions and \u002Freview are the other useful commands.",{"type":124,"content":195},[196,197,200,201,204,205,208,209,211,212,215],"",{"tag":131,"children":198},[199],"AGENTS.md"," ist die dauerhafte Instruktionsdatei. Die CLI liest eine globale ",{"tag":131,"children":202},[203],"~\u002F.codex\u002FAGENTS.md"," und geht danach vom Projektwurzelverzeichnis bis zum aktuellen Verzeichnis, eine Datei pro Ebene, wobei ",{"tag":131,"children":206},[207],"AGENTS.override.md"," über ",{"tag":131,"children":210},[199]," gewinnt. Die Gesamtlänge ist über ",{"tag":131,"children":213},[214],"project_doc_max_bytes"," begrenzt, standardmäßig 32 KiB. Für ein Team ist diese Datei das Wertvollste, was man schreiben kann, weil sie der Teil des Agentenverhaltens ist, der durch ein Code-Review geht.",{"type":136,"level":137,"id":102,"text":103},{"type":124,"content":218},[219,220,223,224,227],"Dieser Teil lohnt zweimaliges Lesen. Die Sandbox ist die Grenze, die Freigaberichtlinie ist die Pause. Der Standard, Ask for approval, ist ",{"tag":131,"children":221},[222],"sandbox_mode = \"workspace-write\""," mit ",{"tag":131,"children":225},[226],"approval_policy = \"on-request\""," und menschlichem Prüfer. Die Doku weist darauf hin, dass der Wechsel des Prüfers auf auto_review die Sandbox nicht erweitert. Das ist das richtige Design und zugleich der Detailpunkt, den die meisten Werkzeuge falsch machen.",{"type":131,"code":229},"# ~\u002F.codex\u002Fconfig.toml\nmodel = \"gpt-6.1-sol\"\nmodel_reasoning_effort = \"medium\"\n\n# Boundary: read-only | workspace-write | danger-full-access\nsandbox_mode = \"read-only\"\n\n# Pausing: on-request | never | granular table\napproval_policy = \"on-request\"\n\n# Reviewer: user | auto_review\napprovals_reviewer = \"user\"\n\n# Extra roots and network, only used when sandbox_mode = workspace-write\n[sandbox_workspace_write]\nwritable_roots = [\"~\u002Fcode\"]\nnetwork_access = false",{"type":231,"head":232,"rows":239},"table",[233,235,237],[234],"Einstellung",[236],"Werte",[238],"Wirkung",[240,249,258,267],[241,245,247],[242],{"tag":131,"children":243},[244],"sandbox_mode",[246],"read-only, workspace-write, danger-full-access",[248],"Welche Dateien und welches Netzwerk der Agent erreicht. Standard read-only.",[250,254,256],[251],{"tag":131,"children":252},[253],"approval_policy",[255],"on-request, never, granular",[257],"Wann der Agent pausiert. Standard on-request.",[259,263,265],[260],{"tag":131,"children":261},[262],"approvals_reviewer",[264],"user, auto_review",[266],"Wer eine Anfrage beantwortet. Ändert die Sandbox nicht.",[268,272,274],[269],{"tag":131,"children":270},[271],"\u002Fpermissions",[273],"Ask for approval, Approve for me, Full access",[275],"Interaktive Presets über denselben beiden Einstellungen.",{"type":124,"content":277},[278],"Die Konfigurationsdatei geht deutlich tiefer. Es gibt einen Netzwerk-Proxy mit Allow- und Deny-Regeln pro Domain, eine Shell-Umgebungsrichtlinie, die Variablen mit Namen wie Keys oder Tokens filtert, schreibbare Wurzeln und Hooks, die vor einem Tool-Aufruf laufen. Das ist viel Oberfläche, und der Versuchung, alles zu konfigurieren, sollte man widerstehen. Jeder Regler ist eine Entscheidung, die jemand für andere treffen muss.",{"type":280,"variant":281,"title":282,"body":283},"callout","warn","Kein Full Access auf einem geteilten Runner",[284],[285,286,289],"Die Doku beschreibt Full access als erheblich erhöhtes Risiko von Datenverlust und Leaks und betont, dass ",{"tag":131,"children":287},[288],"danger-full-access"," für kontrollierte Umgebungen gedacht ist, etwa einen isolierten CI-Runner oder einen Container. Ein gehosteter Runner mit Schreibrechten und ein Agent im Full Access ist eine unbegrenzte Schleife mit deinen Zugangsdaten darin.",{"type":136,"level":137,"id":105,"text":106},{"type":124,"content":292},[293,294,296],"Der nicht-interaktive Modus ist der Grund, diese CLI einer chatgetriebenen Agentenlösung vorzuziehen. ",{"tag":131,"children":295},[167]," läuft standardmäßig in einer read-only Sandbox, schreibt den Fortschritt nach stderr, druckt nur die letzte Nachricht nach stdout und startet außerhalb eines Git-Repositories nicht. Diese letzte Regel ist eine Bremse gegen einen Agenten, der ein Verzeichnis umschreibt, für das er keinen Diff zeigen kann.",{"type":131,"code":298},"# Progress on stderr, final message on stdout: safe to pipe.\ncodex exec \"summarise the repository structure\" | tee summary.md\n\n# Machine-readable: one JSON object per event.\ncodex exec --json \"triage the open bug reports\" | jq\n\n# Escalate the sandbox explicitly, never implicitly.\ncodex exec --sandbox workspace-write \"add a regression test and run it\"\n\n# Structured final answer against a schema, written to a file.\ncodex exec \"extract project metadata\" \\\n  --output-schema .\u002Fschema.json -o .\u002Fmetadata.json",{"type":124,"content":300},[301,302,305,306,309],"Zwei Details machen das produktionsreif. Mit ",{"tag":131,"children":303},[304],"--json"," trägt der Ereignisstrom die Nutzung einschließlich gecachter Eingabetokens, eine Pipeline kann Kosten also pro Lauf statt pro Monat zuordnen. Und ein MCP-Server mit ",{"tag":131,"children":307},[308],"required = true"," lässt den Start scheitern, statt still weiterzulaufen. Das ist der Unterschied zwischen einem kaputten CI-Lauf und einem unauffällig falschen.",{"type":280,"variant":311,"title":312,"body":313},"note","Zugangsdaten in CI",[314],[315,316,319,320,323,324,327],"Die Dokumentation rät davon ab, ",{"tag":131,"children":317},[318],"OPENAI_API_KEY"," oder ",{"tag":131,"children":321},[322],"CODEX_API_KEY"," als Job-Umgebungsvariable in Workflows zu setzen, die Repository-Code auschecken oder ausführen, denn Build-Skripte und Lifecycle-Hooks im selben Job können sie auslesen. Scope den Key auf den einzelnen Aufruf oder nutze die Workflow-Action ",{"tag":131,"children":325},[326],"openai\u002Fcodex-action",", die genau dafür da ist.",{"type":136,"level":137,"id":108,"text":109},{"type":124,"content":330},[331],"MCP-Server stehen in derselben Konfigurationsdatei und werden zwischen CLI, IDE-Erweiterung und Desktop-App auf demselben Host geteilt. Unterstützt sind stdio und Streamable HTTP, OAuth inklusive Dynamic Client Registration.",{"type":131,"code":333},"[mcp_servers.docs]\ncommand = \"npx\"\nargs = [\"-y\", \"@upstash\u002Fcontext7-mcp\"]\nenv_vars = [\"CONTEXT7_TOKEN\"]\nrequired = true          # fail startup instead of running without it\nenabled_tools = [\"search\", \"summarize\"]\ndefault_tools_approval_mode = \"prompt\"\ntool_timeout_sec = 45",{"type":124,"content":335},[336],"MCP kostet Kontext, und die Preisdokumentation sagt das deutlich: Jeder Server vergrößert die Nachricht und verbraucht mehr vom Kontingent. Ein vernünftiges Team lässt zwei oder drei aktiv, deaktiviert den Rest und behandelt die Serverliste als Teil des Budgets pro Turn statt als Bequemkeitsliste.",{"type":136,"level":137,"id":111,"text":112},{"type":124,"content":339},[340],"Zwei Abrechnungssysteme teilen sich dieselbe Binärdatei, und sie sind nicht vergleichbar. Ein ChatGPT-Abo zählt Nachrichten in Fünf-Stunden-Fenstern, und die veröffentlichten Zahlen sind Schätzungen, keine Obergrenzen: rund 15 bis 160 lokale Nachrichten je fünf Stunden im Plus-Tarif für die mittleren Modelle, gegenüber 350 bis 3.000 beim günstigsten. Ein API-Key zählt Tokens zu veröffentlichten Raten, und das macht ihn zum richtigen Credential für Automatisierung.",{"type":124,"content":342},[343,344,347],"Der praktische Rat ist kurz. Nimm das Abo für interaktive Arbeit, bei der ein Mensch da ist und bemerkt, wenn das Kontingent knapp wird, und den API-Key für alles Unbemannte, weil nur dort eine vorhersagbare Position pro Lauf entsteht. Der Befehl ",{"tag":131,"children":345},[346],"\u002Fstatus"," zeigt die verbleibende Kapazität in der Sitzung, und die Doku stellt klar, dass allein die Promptlänge kein verlässlicher Prädiktor für den Verbrauch einer Aufgabe ist.",{"type":136,"level":137,"id":114,"text":115},{"type":124,"content":350},[351],"Drei Probleme, sortiert nach ihrer Tragweite. Erstens ist die Konfigurationsoberfläche riesig für ein Werkzeug, dessen Kernschleife unspektakulär ist, und es gibt keine Möglichkeit, es mit absichtlich kleiner Konfiguration zu betreiben, die man in einem Durchgang prüfen kann. Zweitens ändert sich das Produkt um die CLI schnell: Modelle werden zu festen Terminen abgekündigt, mehrere wurden innerhalb eines Jahres stillgelegt, und ein committeter Modellname in einer Config oder einem CI-Skript wird zur Last. Drittens meldet der Review-Befehl Funde, ohne den Arbeitsbaum zu ändern. Das ist das richtige Verhalten und deutlich weniger nützlich als die Varianten, die ihre Funde gleich beheben.",{"type":231,"head":353,"rows":361},[354,355,357,359],[196],[356],"Codex CLI",[358],"Claude Code",[360],"Cline CLI",[362,376,385,394],[363,365,368,372],[364],"Nicht-interaktiver Einstieg",[366],{"tag":131,"children":367},[167],[369],{"tag":131,"children":370},[371],"claude -p",[373],{"tag":131,"children":374},[375],"cline --json",[377,379,381,383],[378],"Maschinenlesbare Ausgabe",[380],"JSONL-Ereignisse, JSON-Schema-Ausgabe",[382],"JSON oder stream-json, --json-schema",[384],"Newline-getrennte Nachrichten",[386,388,390,392],[387],"Automatisierungsstandard",[389],"read-only Sandbox",[391],"Bare Mode überspringt lokale Konfiguration",[393],"auto-approve true",[395,397,399,401],[396],"Konfiguration",[398],"Eine TOML-Datei, clientübergreifend geteilt",[400],"Settings-Dateien, MCP-Konfiguration, Hooks",[402],"Konfigurationsansicht und CLI-Flags",{"type":124,"content":404},[405],"Der Vergleich ist so knapp, dass der entscheidende Faktor selten der Agent selbst ist. Es ist, wie eure Berechtigungsgeschichte bereits aussieht. Wenn im Team bereits eine committete Agent-Konfiguration im Review liegt, passt Codex. Wenn nicht, ist die Stärke der CLI eine Last, bis jemand diese Datei schreibt.",{"type":136,"level":137,"id":117,"text":118},{"type":124,"content":408},[409],"Codex CLI ist die stärkste Wahl für Teams, die einen Coding-Agenten wollen, dessen Verhalten ein reviewbares Artefakt ist. Die Trennung von Sandbox und Freigabe ist gut durchdacht, der read-only-Standard für die Automatisierung ist der richtige Standard, und Apache-2.0 heißt, dass die Konfiguration vendored und gepinnt werden kann. Für eine einzelne Person, die einen Agenten ausprobieren will, bevor sie eine Richtlinie schreibt, ist es die schwächere Wahl.",{"type":142,"ordered":183,"items":411},[412,414,416,418,420],[413],"Nimm es, wenn die Rechte des Agenten in einer Datei liegen sollen, die durch ein Code-Review geht, und pinne in CI die npm-Version.",[415],"Nutze für alles Unbemannte einen API-Key. Eine Abrechnung über Abo-Credits verträgt sich nicht mit einem geplanten Job.",[417],"Schreibe AGENTS.md, bevor du irgendetwas anderes einstellst. Es verändert das Verhalten stärker als jede Flag in der config.toml.",[419],"Lass sandbox_mode für die Automatisierung auf workspace-write und reserviere danger-full-access für einen Container, den du kontrollierst.",[421],"Lass es weg, wenn du über ein Jahr eine stabile Modellkennung brauchst. Die Abkündigungstakte ist schneller, als die meisten Teams verkraften.",{"type":280,"variant":423,"title":424,"body":425},"tip","Fang kleiner an, als die Doku nahelegt",[426],[427,428,430,431,433,434,436],"Die wertvolle Konfiguration für die meisten Repositories sind vier Zeilen: ein Modell, ",{"tag":131,"children":429},[222],", ",{"tag":131,"children":432},[226]," und eine ",{"tag":131,"children":435},[199]," mit dem Testbefehl darin. Alles andere kann warten, bis ein konkretes Problem auftaucht.",{"type":136,"level":137,"id":120,"text":121},{"type":142,"ordered":183,"items":439},[440,444,447,450,453,456,459,462,465,468],[441],{"tag":442,"href":33,"children":443},"a",[32],[445],{"tag":442,"href":36,"children":446},[35],[448],{"tag":442,"href":39,"children":449},[38],[451],{"tag":442,"href":42,"children":452},[41],[454],{"tag":442,"href":45,"children":455},[44],[457],{"tag":442,"href":48,"children":458},[47],[460],{"tag":442,"href":51,"children":461},[50],[463],{"tag":442,"href":54,"children":464},[53],[466],{"tag":442,"href":57,"children":467},[56],[469],{"tag":442,"href":60,"children":470},[59],[472,529,602,670],{"slug":473,"published":474,"minutes":6,"category":7,"tags":475,"keywords":481,"about":492,"sources":501,"cover":523,"og":524,"expertise":63,"locales":525,"lang":66,"title":526,"description":527,"coverAlt":528},"agent-tool-design-descriptions-errors","2026-10-17",[476,477,478,479,480],"AI agents","Tool use","Function calling","MCP","Agent design",[482,483,484,485,486,487,488,489,490,491],"agent tool design","writing tool descriptions for llm","function calling best practices","tool use error handling","mcp tool design","tool calling is_error","how many tools should an agent have","tool search defer_loading","agent computer interface","llm tool schema design",[493,496,498],{"name":494,"url":495},"Intelligent agent","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FIntelligent_agent",{"name":28,"url":497},"https:\u002F\u002Fmodelcontextprotocol.io\u002F",{"name":499,"url":500},"Poka-yoke","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FPoka-yoke",[502,505,508,511,514,517,520],{"title":503,"url":504},"Anthropic Engineering: Writing effective tools for agents, with agents (Sep 2025)","https:\u002F\u002Fwww.anthropic.com\u002Fengineering\u002Fwriting-tools-for-agents",{"title":506,"url":507},"Anthropic Engineering: Building effective agents (Dec 2024)","https:\u002F\u002Fwww.anthropic.com\u002Fengineering\u002Fbuilding-effective-agents",{"title":509,"url":510},"Claude Platform Docs: Define tools","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fagents-and-tools\u002Ftool-use\u002Fdefine-tools",{"title":512,"url":513},"Claude Platform Docs: Handle tool calls","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fagents-and-tools\u002Ftool-use\u002Fhandle-tool-calls",{"title":515,"url":516},"Claude Platform Docs: Tool search tool","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fagents-and-tools\u002Ftool-use\u002Ftool-search-tool",{"title":518,"url":519},"Model Context Protocol specification 2025-11-25: Tools","https:\u002F\u002Fmodelcontextprotocol.io\u002Fspecification\u002F2025-11-25\u002Fserver\u002Ftools",{"title":521,"url":522},"OpenAI API Docs: Function calling","https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fguides\u002Ffunction-calling","\u002Fimages\u002Fblog\u002Fagent-tool-design-descriptions-errors\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fagent-tool-design-descriptions-errors\u002Fog.jpg",[65,66,67],"Tools für KI-Agenten gestalten: Namen, Beschreibungen, Schemas und Fehlermeldungen","Agent-Tools, die richtig gewählt und aufgerufen werden: aufgabenorientierte Tools, Beschreibungen, Schemas, kompakte Antworten und verwertbare Fehlermeldungen.","Ein Sockel mit drei Schlitzen; über dem mittleren steht ein passend breiter Block, daneben zwei Blöcke falscher Breite.",{"slug":530,"published":474,"minutes":6,"category":7,"tags":531,"keywords":537,"about":550,"sources":560,"cover":596,"og":597,"expertise":63,"locales":598,"lang":66,"title":599,"description":600,"coverAlt":601},"coding-agents-legacy-codebase-migration",[532,533,534,535,536],"Legacy migration","Coding agents","Strangler fig","Testing","Code review",[538,539,540,541,542,543,544,545,546,547,548,549],"legacy code migration ai","coding agent legacy codebase","strangler fig pattern ai","characterization tests legacy code","ai code migration review","agent assisted refactoring","legacy modernization coding agent","differential testing migration","shadow traffic migration","ai code review gate","test harness before migration","llm code migration",[551,554,557],{"name":552,"url":553},"Legacy code","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FLegacy_code",{"name":555,"url":556},"Characterization test","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FCharacterization_test",{"name":558,"url":559},"Strangler fig pattern","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FStrangler_fig_pattern",[561,564,566,569,572,575,578,581,584,587,590,593],{"title":562,"url":563},"Martin Fowler: Strangler Fig (2024)","https:\u002F\u002Fmartinfowler.com\u002Fbliki\u002FStranglerFigApplication.html",{"title":565,"url":556},"Wikipedia: Characterization test",{"title":567,"url":568},"Google Research: Accelerating code migrations with AI (2024)","https:\u002F\u002Fresearch.google\u002Fblog\u002Faccelerating-code-migrations-with-ai\u002F",{"title":570,"url":571},"Ziftci et al.: Migrating Code At Scale With LLMs At Google (arXiv 2504.09691)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2504.09691",{"title":573,"url":574},"Anthropic: Effective harnesses for long-running agents (2025)","https:\u002F\u002Fwww.anthropic.com\u002Fengineering\u002Feffective-harnesses-for-long-running-agents",{"title":576,"url":577},"Anthropic: Redesigning source control at Anthropic (2026)","https:\u002F\u002Fwww.anthropic.com\u002Fengineering\u002Fredesigning-source-control",{"title":579,"url":580},"METR: Measuring the Impact of Early-2025 AI on Experienced Open-Source Developer Productivity","https:\u002F\u002Fmetr.org\u002Fblog\u002F2025-07-10-early-2025-ai-experienced-os-dev-study\u002F",{"title":582,"url":583},"Chand et al.: Why Industry Migrates and When It Trusts LLMs (ESEM 2026)","https:\u002F\u002Fdrops.dagstuhl.de\u002Fentities\u002Fdocument\u002F10.4230\u002FLIPIcs.ESEM.2026.85",{"title":585,"url":586},"Li et al.: Environment-in-the-Loop: Rethinking Code Migration with LLM-based Agents (arXiv 2602.09944)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2602.09944",{"title":588,"url":589},"AWS: Amazon Q Developer just reached a $260 million dollar milestone (2024)","https:\u002F\u002Faws.amazon.com\u002Fblogs\u002Fdevops\u002Famazon-q-developer-just-reached-a-260-million-dollar-milestone\u002F",{"title":591,"url":592},"OpenAI: Why SWE-bench Verified no longer measures frontier coding capabilities (2026)","https:\u002F\u002Fopenai.com\u002Findex\u002Fwhy-we-no-longer-evaluate-swe-bench-verified\u002F",{"title":594,"url":595},"GitHub Docs: About GitHub Copilot cloud agent","https:\u002F\u002Fdocs.github.com\u002Fen\u002Fcopilot\u002Fconcepts\u002Fagents\u002Fcoding-agent\u002Fabout-coding-agent","\u002Fimages\u002Fblog\u002Fcoding-agents-legacy-codebase-migration\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fcoding-agents-legacy-codebase-migration\u002Fog.jpg",[65,66,67],"Legacy-Codebase mit Coding-Agenten migrieren: ein Strangler-Fig-Playbook","Wie Coding-Agenten eine Legacy-Migration tragen: Characterization-Tests zuerst, ein Seam pro Task, Review-Gates und differentielle Verifikation.","Ein Stapel Schichten, bei dem die obersten zwei durch neue ersetzt werden, daneben eine Naht und ein Haken.",{"slug":603,"published":474,"minutes":604,"category":7,"tags":605,"keywords":608,"about":620,"sources":630,"cover":664,"og":665,"expertise":63,"locales":666,"lang":66,"title":667,"description":668,"coverAlt":669},"background-agents-async-pr-workflow",12,[533,606,12,536,607],"Pull requests","Automation",[609,610,611,612,613,614,615,616,617,618,619],"background coding agent","async coding agent","cloud coding agent pull request","copilot coding agent limits","codex cloud tasks","claude code cloud sessions","jules coding agent limits","agent pull request review","coding agent sandbox","agent CI gating","cost per merged pull request",[621,624,627],{"name":622,"url":623},"Software agent","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FSoftware_agent",{"name":625,"url":626},"Pull request","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FDistributed_version_control",{"name":628,"url":629},"Continuous integration","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FContinuous_integration",[631,632,635,638,641,644,647,650,653,655,658,661],{"title":594,"url":595},{"title":633,"url":634},"GitHub Docs: Risks and mitigations for Copilot cloud agent","https:\u002F\u002Fdocs.github.com\u002Fen\u002Fcopilot\u002Fconcepts\u002Fagents\u002Fcloud-agent\u002Frisks-and-mitigations",{"title":636,"url":637},"OpenAI Developers: Codex cloud environments","https:\u002F\u002Fdevelopers.openai.com\u002Fcodex\u002Fcloud\u002Fenvironments",{"title":639,"url":640},"Anthropic: Use Claude Code in the cloud","https:\u002F\u002Fcode.claude.com\u002Fdocs\u002Fen\u002Fclaude-code-on-the-web",{"title":642,"url":643},"Google Jules: Limits and plans","https:\u002F\u002Fjules.google\u002Fdocs\u002Fusage-limits\u002F",{"title":645,"url":646},"Google Jules: Getting started","https:\u002F\u002Fjules.google\u002Fdocs\u002F",{"title":648,"url":649},"GitHub Docs: About protected branches","https:\u002F\u002Fdocs.github.com\u002Fen\u002Frepositories\u002Fconfiguring-branches-and-merges-in-your-repository\u002Fmanaging-protected-branches\u002Fabout-protected-branches",{"title":651,"url":652},"GitHub Docs: Models and pricing for GitHub Copilot","https:\u002F\u002Fdocs.github.com\u002Fen\u002Fcopilot\u002Freference\u002Fcopilot-billing\u002Fmodels-and-pricing",{"title":654,"url":54},"OpenAI Developers: Codex pricing",{"title":656,"url":657},"Ehsani et al.: Where Do AI Coding Agents Fail? An Empirical Study of Failed Agentic Pull Requests in GitHub (MSR 2026, arXiv 2601.15195)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2601.15195",{"title":659,"url":660},"Peralta et al.: Why Are Agentic Pull Requests Merged or Rejected? An Empirical Study (MSR 2026, arXiv 2605.22534)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2605.22534",{"title":662,"url":663},"DORA: State of AI-assisted Software Development 2025","https:\u002F\u002Fdora.dev\u002Fdora-report-2025","\u002Fimages\u002Fblog\u002Fbackground-agents-async-pr-workflow\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fbackground-agents-async-pr-workflow\u002Fog.jpg",[65,66,67],"Coding-Agenten im Hintergrund: Pull Requests, Queues und Review","Wie asynchrone Coding-Agenten Tasks einreihen, in Sandboxes laufen, Draft-PRs öffnen und CI passieren. Grenzen, Kosten, Review und Fehlerbilder.","Eine Karte in einer Ablage fächert sich zu fünf Feldern auf, alle Pfeile führen zu einer Seite hinter einem Tor.",{"slug":671,"published":672,"minutes":673,"category":7,"tags":674,"keywords":680,"about":692,"sources":700,"cover":733,"og":734,"expertise":63,"locales":735,"lang":66,"title":736,"description":737,"coverAlt":738},"context-rot-compaction-long-running-agents","2026-10-16",10,[675,676,677,678,679],"Context rot","Compaction","Context engineering","Long-running agents","Agent memory",[681,682,683,684,685,686,687,688,689,690,691],"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",[693,696,699],{"name":694,"url":695},"Context window","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FLarge_language_model#Context_window",{"name":697,"url":698},"Attention (machine learning)","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FAttention_(machine_learning)",{"name":494,"url":495},[701,704,707,710,713,715,718,721,724,727,730],{"title":702,"url":703},"Chroma: Context Rot: How Increasing Input Tokens Impacts LLM Performance (Jul 2025)","https:\u002F\u002Fresearch.trychroma.com\u002Fcontext-rot",{"title":705,"url":706},"Liu et al.: Lost in the Middle: How Language Models Use Long Contexts (2023)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2307.03172",{"title":708,"url":709},"Modarressi et al.: NoLiMa: Long-Context Evaluation Beyond Literal Matching (2025)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2502.05167",{"title":711,"url":712},"Anthropic: Effective context engineering for AI agents (Sep 2025)","https:\u002F\u002Fwww.anthropic.com\u002Fengineering\u002Feffective-context-engineering-for-ai-agents",{"title":714,"url":574},"Anthropic: Effective harnesses for long-running agents (Nov 2025)",{"title":716,"url":717},"Claude API docs: Compaction at a token threshold","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fbuild-with-claude\u002Fcompaction-threshold",{"title":719,"url":720},"Claude API docs: Compaction on demand","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fbuild-with-claude\u002Fcompaction-on-demand",{"title":722,"url":723},"Claude API docs: Context editing","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fbuild-with-claude\u002Fcontext-editing",{"title":725,"url":726},"Claude API docs: Memory tool","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fagents-and-tools\u002Ftool-use\u002Fmemory-tool",{"title":728,"url":729},"OpenAI API docs: Compaction","https:\u002F\u002Fplatform.openai.com\u002Fdocs\u002Fguides\u002Fcompaction",{"title":731,"url":732},"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.","Eine kleine Presse drückt einen hohen Blätterstapel zu einem kurzen, zwei Notizen zweigen ab.",1792261157643]