Protocol for using AskUserQuestion tool effectively. Use for confidence gates, destructive actions, multi-step tasks, and UI/UX decisions.
AskUserQuestion is a core feature for user confirmation and preference collection.
Serving users means ASKING, not ASSUMING.
Every significant action should have user confirmation. The cost of asking is tokens. The cost of assuming wrong is trust.
AskUserQuestion MUST be invoked when ANY of these conditions apply:
If you find yourself thinking "I think this is what the user wants" - that thought means you should ask first.
| Action | Examples | Require Confirmation |
|---|---|---|
| Delete | rm, git reset, empty trash | ALWAYS |
| Overwrite | Write to existing file, replace content | ALWAYS |
| Publish | git push, deploy, social post | ALWAYS |
| Commit | git commit (when not explicitly requested) | ALWAYS |
| Deploy | vercel, aws deploy, docker push | ALWAYS |
| Send | email, slack, notifications | ALWAYS |
Any task with 3+ distinct steps requires checkpoint questions.
Rule: Never execute more than 3 steps without a checkpoint.
ANY visual or design choice requires confirmation:
| Decision Type | Examples | Ask First |
|---|---|---|
| Icon choice | Which icon, where to place | ALWAYS |
| Color selection | Brand colors, theme | ALWAYS |
| Layout changes | Grid, flex, positioning | ALWAYS |
| Component removal | Removing existing UI | ALWAYS |
| Typography | Font, size, weight | ALWAYS |
| Spacing | Margins, padding, gaps | ALWAYS |
When you detect yourself making an assumption, stop and ask.
Pattern to recognise:
Each of these phrases should trigger AskUserQuestion.
Pattern: "[Tool] can [capability]. [preference choice]?"
Result: User learns capability EXISTS + Claude learns preference
| Never Do | Why |
|---|---|
| Mention "Other" in options | It's implicit in the tool |
| Two options, same destination | Violates DRY |
| Vague options | Be concrete |
| More than 4 options | Tool constraint |
Question: Clear, specific, ends with ?
Header: Max 12 chars
Options: 2-4 distinct, actionable choices
- "Option label" - Brief description of what happens
| Component | Tokens |
|---|---|
| SKILL.md load | ~600 |
| Per AskUserQuestion | ~150-200 |
| Acknowledgment | ~50 |
ROI: Prevents assumption errors (5k-50k tokens wasted on wrong path).
Before any significant action, verify:
The cost of asking is tokens.
The cost of assuming wrong is trust.