When using tools, we can specify things with interrupt_on, but how do we add human intervention for high-risk steps within a skill? Is there a better way? Take OpenClaw, which is getting a lot of buzz right now—most of what users are really doing is just installing skills. It makes having human-in-the-loop control over method calls inside skills pretty important too.
Skills are essentially declarative: SkillsMiddleware loads SKILL.md files and injects their contents into the system prompt. A skill itself does not define an execution pipeline, it only provides instructions that the agent follows when it later decides to invoke tools.
Because of that, “interrupting within a skill” really means interrupting before the specific tool calls that the skill leads the agent to make.
Suggestions
1. Tool-level interrupt_on is the primary control point
Since skills ultimately execute through the agent’s normal tool-calling path, tool-level gating is the most reliable way to control risky skill behavior.
If a skill performs high-risk actions such as execute, edit_file, or similar tools, those are already covered when the CLI runs with HITL enabled.
The experimental allowed_tools field in skill frontmatter can also help here, because it explicitly signals which tools a skill is expected to use:
---
name: my-skill
description: Does something
allowed-tools: execute write_file
---
SkillsMiddleware surfaces this in the system prompt, and it is also available at runtime through SkillMetadata.allowed_tools.
However, there is currently no automatic wiring from allowed_tools into interrupt_on.
So if you want this behavior, you would need to:
-
read
skills_metadatafrom state -
collect
allowed_toolsacross loaded skills -
union those tools into your
interrupt_onconfiguration yourself
That gives you a practical way to automatically apply stricter HITL policies for third-party skills.
2. Explicit confirmation instructions inside SKILL.md
The better option is to place confirmation rules directly inside the skill instructions.
Example:
## High-Risk Steps
Before running `execute` with any install command, present the full command to the user with:
"I'm about to run: <command>. Shall I proceed? (yes/no)"
Wait for explicit approval before continuing.
Do not proceed if the user's response is ambiguous.
This creates prompt-level HITL behavior.