
PROBLEM: Letting an LLM drive a security tool creates a trust problem. A model that can both reason and execute will eventually propose something a human would never permit, and its own confidence is not evidence. Teams building AI security agents therefore face a choice between useless autonomy and no autonomy at all. SOLUTION: Raphael separates reasoning from authority. The model observes the target and proposes an action as data. A deterministic runtime, Broker and Policy engine, independently decides whether that action is allowed against the operator's declared target, ports and protocols. Only then does a capability execute it. The result is written to an append-only, causally chained evidence ledger and fed back as context for the next decision, so the agent reasons from measured outcomes rather than its own memory. Every run is sealed, so evidence deletion or reordering is detectable. TARGET USERS: students learning offensive security, who need to see why each step happened rather than a score; and developers of AI-generated applications, who need an agent that tests them without handing it unchecked execution. INTERACTION: an operator opens a browser console, declares the authorized target, and types a plain-language instruction. They watch the transcript: proposal, policy decision, execution, evidence, and the next turn. The model never receives a tool handle. WHAT MAKES IT DISTINCTIVE: the boundary is the product. In our run against a live Kioptrix Level 1 VulnHub VM, the model discovered open services, then proposed an SSH session on its own and Policy refused it with ssh-no-session-spec. The refusal, and the reason for it, are recorded as evidence. A model that asked for something wrong is contained and explained rather than obeyed or silently dropped. EFFECTIVENESS: 2,161 automated tests pass with zero failures. Scope, port and protocol enforcement are covered by tests that assert denial, not just success.
27 Sep 2026