Tool interruptions
Overview
Section titled “Overview”By default a user can interrupt the agent at any point, including while a tool is executing. For some tools this is undesirable: a payment confirmation or a compliance disclaimer read out after a lookup should be delivered in full.
The interruption_mode field controls this per tool. It is available on webhook tools, client
tools, system tools, and MCP servers.
Interruption modes
Section titled “Interruption modes”| Value | Dashboard label | Behavior |
|---|---|---|
allow |
Allow | The user can interrupt the agent at any time. This is the default. |
disable_during_tool |
Disable during execution | Interruptions are suppressed only while the tool runs. The agent response that follows can be interrupted. |
disable_during_tool_and_turn |
Disable during whole turn | Interruptions are suppressed while the tool runs and for the agent response that follows it. |
When several tools run in parallel, the strictest mode among them applies for that turn.
Configuration
Section titled “Configuration”Update via the dashboard
Section titled “Update via the dashboard”Navigate to tool configuration
Section titled “Navigate to tool configuration”Select the tool you want to configure in the Tools tab.
Set the interruption mode
Section titled “Set the interruption mode”Open Advanced settings and choose an option under Interruptions.
Save your configuration
Section titled “Save your configuration”Click Save to apply the change.
Update via the CLI
Section titled “Update via the CLI”Pull the tool configuration
Section titled “Pull the tool configuration”elevenlabs tools pullEdit `tool_configs/<tool-name>.json`
Section titled “Edit `tool_configs/<tool-name>.json`”Set interruption_mode on the tool:
{
"type": "webhook",
"name": "confirm_payment",
"description": "Confirms a pending payment",
"interruption_mode": "disable_during_tool_and_turn"
}Push your changes
Section titled “Push your changes”elevenlabs tools pushUpdate via the API
Section titled “Update via the API”from elevenlabs import ElevenLabs, ToolRequestModel
elevenlabs = ElevenLabs()
elevenlabs.conversational_ai.tools.update(
tool_id="tool_7101k5zvyjhmfg983brhmhkd98n6",
request=ToolRequestModel(
tool_config={
"type": "webhook",
"name": "confirm_payment",
"description": "Confirms a pending payment",
"interruption_mode": "disable_during_tool_and_turn",
"api_schema": {
"url": "https://api.example.com/payments/confirm",
"method": "POST",
},
},
),
)import { ElevenLabsClient } from "@elevenlabs/elevenlabs-js";
const elevenlabs = new ElevenLabsClient();
await elevenlabs.conversationalAi.tools.update("tool_7101k5zvyjhmfg983brhmhkd98n6", {
toolConfig: {
type: "webhook",
name: "confirm_payment",
description: "Confirms a pending payment",
interruptionMode: "disable_during_tool_and_turn",
apiSchema: {
url: "https://api.example.com/payments/confirm",
method: "POST",
},
},
});MCP servers
Section titled “MCP servers”An MCP server carries its own interruption_mode,
which applies to every tool it exposes. Individual tools can override it through the server's
tool_config_overrides, where the value set on a tool takes precedence over the server default.
Best practices
Section titled “Best practices”- Use
disable_during_toolwhen the tool call itself must complete, such as a transfer or a keypad sequence, but the user should be able to interrupt the response afterwards. - Use
disable_during_tool_and_turnwhen the response that follows the tool must be heard in full, such as a disclaimer or a confirmation read-back. - Leave the default
allowin place elsewhere, since suppressing interruptions makes the conversation feel less responsive.