Tool approvals
Copy page
Require explicit user approval before running selected tools.
Overview
Tool approvals let you mark specific tools as “requires approval”. When the agent tries to run one, execution pauses and your client must approve or deny before the run can continue.
Configure tools to require approval
TypeScript SDK (MCP tools)
See also: MCP tools
Visual Builder
In the Visual Builder, select an MCP server node connected to a Sub Agent and toggle approval for individual tools in the Tool Configuration section. You can also bulk toggle approvals for all enabled tools using the header checkbox.
See also: Tool Approvals in Visual Builder.
Runtime Behavior
When a tool requires approval, you’ll see a tool-approval-request in the stream.
See Chat API for the tool event payloads (including approval requests, tool inputs, and tool outputs).
Responding to an approval request
You can approve/deny in two ways.
Option A: Dedicated endpoint
POST /run/api/tool-approvals (or POST /api/tool-approvals if your Run API is not mounted under /run).
Option B: Respond via the chat endpoint (message part)
This is useful if your UI already models tool parts (for example, using the Vercel AI SDK UI message stream).
POST /run/api/chat with an assistant message that includes a tool-* part:
Vercel AI SDK (useChat) example
If you’re using the Vercel AI SDK UI message stream, approval requests show up as tool-* parts (e.g. tool-getWeather) with state: "approval-requested".
After calling addToolApprovalResponse(...), call sendMessage() so the updated messages (including the approval response) are POSTed back to /run/api/chat and the run can continue.
Only state: "approval-responded" triggers an approval/denial. If your client includes other tool approval parts in message
history (for example state: "approval-requested"), the server ignores them.
Tool approvals in Slack
When you run agents in Slack (via the Inkeep Slack app), tool approvals appear as interactive messages with Approve and Deny buttons.
How it works
- The agent requests to run a tool that requires approval
- Slack posts a message showing the tool name and its input parameters
- The user clicks Approve or Deny
- The agent continues based on the user's decision
Permissions
Only the user who started the conversation can approve or deny a tool request. If another user clicks the buttons, they see an error message.
Approval timeout
If no one responds to an approval request within the timeout period, the request expires and the message updates to show "Expired". The agent receives a timeout notification and can inform the user.
Tool approvals in Slack require account linking. Run /inkeep link to connect your Slack and Inkeep accounts before using agents with approval-required tools.