LLM-integrated applications often rely on third-party tools to execute user requests. This flexibility introduces significant security risks, as malicious apps can manipulate planning phases or hijack execution flows to leak data or disrupt system availability.
The Abstract-Concrete-Execute (ACE) architecture addresses these vulnerabilities by enforcing a strict separation between high-level intent and low-level execution. By decoupling these phases, architects can apply static analysis and capability barriers to ensure that agent behavior remains within defined security constraints.
In short
- •
ACE decouples planning from execution, creating an abstract plan using only trusted information before mapping it to concrete system apps.
- •
Static analysis of the abstract plan allows for the verification of information flow constraints before any code is executed.
- •
Isolated execution environments and capability barriers prevent individual apps from exceeding their assigned privileges or accessing unauthorized data.
- •
This architecture effectively neutralizes common LLM-based attack vectors like planner manipulation and execution manager hijacking.
Decoupling Planning from Execution
The core of the ACE architecture is the separation of the planning phase into two distinct steps. First, a specialized LLM generates an abstract execution plan based solely on the user query and trusted system information. This abstract plan uses a restricted subset of Python to define the logic, preventing the LLM from generating arbitrary or malicious control flows.
By establishing this abstract boundary, the system creates a hard constraint on possible execution traces. This prevents the system from being tricked by malicious app descriptions or unexpected outputs that might otherwise alter the intended logic.
Verification and Concrete Instantiation
Once the abstract plan is generated, the system maps it to concrete, installed apps. This process uses similarity scores between abstract and concrete app descriptions to find valid matches. A compatibility layer resolves type discrepancies, ensuring that the concrete implementation aligns with the abstract requirements.
Before execution, the concrete plan undergoes static verification against security policies. The system models information flow as a bounded lattice, rejecting any plan that violates defined privilege or data access rules. If no secure assignment exists, the system terminates, preventing the execution of potentially compromised logic.
Isolated Execution Environments
The final execution phase follows an orchestrator-worker architecture. The orchestrator manages resource allocation and enforces strict privilege boundaries. Each app runs within an isolated runtime environment, and communication between components is restricted to well-defined network sockets.
This isolation ensures that even if a single app is compromised, it cannot access data or capabilities outside its assigned scope. By enforcing these barriers, ACE maintains the integrity of the entire system, even when interacting with third-party tools.
Implementing ACE requires a shift in how developers think about agent-based systems. Instead of allowing LLMs to directly invoke tools, architects must treat the planning phase as a formal, verifiable step. This approach provides a necessary safeguard for practical AI agents.
Sources
ACE: A Security Architecture for LLM-Integrated App Systems (SNU MMLab)
https://mmlab.snu.ac.kr/community/seminar/2026-07-21-ace-a-security-architecture-for-llm-integrated-app-systems
Literature Review: ACE Security Architecture
https://themoonlight.io/en/review/ace-a-security-architecture-for-llm-integrated-app-systems
React Native Security: A Guide to Protecting Your App
https://itransition.com/developers/react-native/security




