MCP defines how agents connect to tools.
KiLu defines whether those tools are allowed to execute.
Add ALLOW / REQUIRE_CONFIRM / BLOCK before MCP tool execution without rewriting your stack.
MCP is excellent for exposing tools to models and agents. But once a model decides to invoke a tool, most stacks still execute immediately.
That means the model proposes the action and effectively authorizes itself to act.
Can suggest caution, but remain bypassable. No decision record is produced.
Show what happened — after execution. Too late to prevent unwanted side effects.
Control access to tools, not whether this specific action should run right now.
Low-risk action proceeds. Grant is issued, receipt is recorded.
High-risk action pauses for explicit approval before execution.
Policy-violating action never executes. Denial is recorded as evidence.
A model may be good at selecting tools. That does not mean it should authorize destructive, expensive, or sensitive actions on its own.
KiLu separates tool selection from execution authority.
Wrap tool execution, not your whole architecture.
// before — tool executes immediately server.tool("send_email", schema, async (args) => { return sendEmail(args); }); // after — KiLu gates execution server.tool("send_email", schema, withKiluGate({ actor: "agent:mcp", action: "email.send", }, async (args) => { return sendEmail(args); }));
The MCP integration proof runs locally with a mock authority layer and can be pointed at a real KiLu control plane.
| Approach | What it does | What it misses |
|---|---|---|
| Prompt guardrails | Adds caution to prompts | Not authoritative — bypassable |
| Audit logs | Records what happened | Too late — action already ran |
| HITL everywhere | Adds manual pauses | Fatigue, no policy semantics |
| OAuth / scopes | Controls access | Not decisioning at action time |
| KiLu | Decides before execution | Explicit authority layer — you control policy |
KILU_BASE_URL and KILU_API_KEY environment variables to point at a running KiLu control plane instance.
REQUIRE_CONFIRM need explicit approval. Low-risk actions can be set to ALLOW automatically.
You do not need to redesign your system.
Wrap one high-risk tool and introduce execution authority incrementally.