Useful direction, and the audit-receipt questions above are the right ones. I want to raise a structural one that I think matters more than any feature on the list, because it decides whether the guarantee holds at all.
An in-workflow approval node governs the path that runs through it. It cannot govern an agent’s tool calls.
If the sensitive action is a normal node downstream of your Intercept/Approve gate, you’re fine. But the moment the sensitive action is a tool bound to an AI Agent node, the agent invokes it inside its own loop — the tool call never traverses the canvas, so a gate sitting downstream of the agent node never sees it and never fires. The refund already happened; your node approves the summary afterwards. That isn’t a bug, it’s the topology: the workflow graph and the agent’s tool-call graph are two different graphs, and only one of them has your node in it.
So for the agentic case, the governance has to live in the tool, not in the canvas. The tool wrapper calls TrustLoop, blocks, and only then performs the side effect. Same for the kill switch — “Block” only blocks what passes through the node.
Two consequences worth designing for:
Hold the credential, not just the flow. Governance that a workflow author can bypass by simply not adding your node is a convention, not a control. The version of this that’s actually enforceable is the one where the credential for the dangerous action lives behind your wrapper, so the unapproved path can’t authenticate at all. That’s a much stronger sell to the person who has to sign off on this, and it’s the difference between “we have an approval step” and “unapproved actions are impossible.”
Approve the payload, not a description of it. If the human sees an LLM-generated summary of the pending action, then the thing being approved and the thing being executed are two different artifacts — and when the input is attacker-controlled (a support ticket, an inbound email), the summary is exactly where you’d attack. “Refund $5” on the approval card, amount: 500000 in the payload. The receipt should show the exact serialized call that will be executed, hashed, and the executor should refuse anything whose hash doesn’t match what was approved. That single property is what makes the audit trail evidence rather than decoration.
None of this is a criticism of building it — approval and masking are the right primitives, and Rory’s point about durable receipts is the right next one. It’s just that in the agentic case the interesting boundary moved, and the node-in-the-canvas placement is one topology behind where the risk now lives.