LACUNA: Sichere Agenten als rekursive Programmlöcher
LACUNA: Safe Agents as Recursive Program Holes
May 27, 2026
Autoren: Yaoyu Zhao, Yichen Xu, Oliver Bračevac, Cao Nguyen Pham, Frank Zhengqing Wu, Martin Odersky
cs.AI
Zusammenfassung
LLM-Agenten handeln zunehmend, indem sie Code schreiben, dennoch besteht eine Kluft zwischen der Laufzeitumgebung, die den Agenten steuert, und dem Code, den das Modell schreibt. Die Laufzeitumgebung besitzt die Steuerung der Schleife, des Kontexts und des Kontrollflusses, und das Modell hat wenig Einfluss auf einen dieser Aspekte. Wenn der vom Modell geschriebene Code die Laufzeitumgebung selbst formen könnte, würden Agenten ausdrucksstärker, aber es würde auch Sicherheitsprobleme verschärfen. Ein Modell kann durch eine Prompt-Injektion abgelenkt werden, das falsche Werkzeug aufrufen oder teilweise fehlschlagen und einen inkonsistenten Zustand hinterlassen, und jeder solche Fehler reicht weiter, wenn der Code die Laufzeitumgebung formt, als wenn er eine einzelne Aktion ausdrückt. Wir präsentieren LACUNA, ein Programmiermodell für Agenten, das diese Kluft schließt und dabei die Sicherheit bewahrt. Jede Agentenaktion ist ein typisierter Aufruf agent[T](task), den das LLM mit Code füllt, wenn die Ausführung ihn erreicht, und der Code wird vor der Ausführung gegen das umgebende Programm typgeprüft. Da jede Aktion als Ganzes akzeptiert oder abgelehnt wird, hinterlässt eine abgelehnte die Umgebung unverändert, und ihre Compiler-Diagnosen steuern einen erneuten Versuch. Dieselbe Prüfung begrenzt auch, welche Werkzeuge und Daten eine Aktion verwenden darf und wie sie fließen. Unser Primitiv drückt ReAct-Schleifen, Unteragenten, Fähigkeiten, parallele Zerlegung und Multi-Modell-Planung als gewöhnlichen Kontrollfluss aus. Wir evaluieren LACUNA anhand einer Sammlung von Testfällen, BrowseComp-Plus und τ^2-bench. Bei BrowseComp-Plus werden 8,6 % der Generierungen vor der Ausführung abgelehnt, mit durchschnittlich 0,7 erneuten Versuchen pro Abfrage, und der Agent erreicht eine Genauigkeit von 27,1 %. Bei τ^2-bench löst LACUNA 76,0 % von 392 Aufgaben in vier Bereichen mit einem leistungsfähigen Modell, gleichauf mit dem Basisagenten.
English
LLM agents increasingly act by writing code, yet a split persists between the runtime that drives the agent and the code the model writes. The runtime owns the loop, context, and control flow, and the model has little say over any of them. Letting model-written code shape the runtime itself would make agents more expressive, but it would also sharpen safety problems. A model can be diverted by a prompt injection, call the wrong tool, or fail partway and leave an inconsistent state, and each such failure reaches further when the code shapes the runtime than when it expresses a single action. We present LACUNA, a programming model for agents that closes this split while preserving safety. Each agent action is a typed call agent[T](task) that the LLM fills with code when execution reaches it, and the code is type-checked against the surrounding program before it runs. Because each action is accepted or rejected as a whole, a rejected one leaves the environment untouched, and its compiler diagnostics drive a retry. The same check also bounds which tools and data an action may use and how they flow. Our primitive expresses ReAct loops, sub-agents, skills, parallel decomposition, and multi-model planning as ordinary control flow. We evaluate LACUNA on a collection of test cases, BrowseComp-Plus, and τ^2-bench. On BrowseComp-Plus, 8.6% of generations are rejected before execution, with 0.7 retries per query on average, and the agent reaches 27.1% accuracy. On τ^2-bench, LACUNA solves 76.0% of 392 tasks across four domains with a capable model, on par with the baseline agent.