request_approval()
ScopedCreates a pending approval and returns instructions for the human — run cascadian approve <short-id> in their own terminal. The approval token is generated out of band and never appears in any tool response, so no model output can ever contain it (invariant I5).
request_approval(decision_id, reason)→ PENDING + INSTRUCTIONSCallable over MCP as request_approval(decision_id, reason). REST mirror POST /v1/approvals Planned — alpha is MCP-only
The hard boundary, as a tool call. The agent asks; the human approves in their own terminal, out of band. The response carries instructions — never the token — so there is no prompt, no injection, no model output that can mint an approval. Trust the architecture, not the model's restraint.
Over MCP, your agent invokes it on its own when the moment calls for it — just describe the situation. A Python SDK for headless runtimes is planned; this is what the call will look like.
| Param | Type | Description |
|---|---|---|
| decision_idREQUIRED | string | The decision awaiting sign-off. |
| reason | string | Context for the human reviewing it. |

