[FEATURE] Feature Request: Add hook event for interactive MCQ/selection prompts
Preflight Checklist
- [x] I have searched existing requests and this feature hasn't been requested yet
- [x] This is a single feature request (not multiple features)
Problem Statement
Feature Request
What
Add a dedicated hook event (e.g. UserPrompt or SelectionPrompt) that fires
whenever Claude Code displays an interactive multiple-choice selection UI to the user.
Why
Currently, the Notification hook only covers tool permission prompts.
The MCQ selection interface (the ❯ numbered options UI) does not trigger any hook,
making it impossible to get a notification sound or run a command when Claude Code
is waiting for user input via the selection menu.
Expected behavior
A hook like:
"hooks": {
"UserPrompt": [...]
}
that fires whenever Claude Code pauses and presents the user with a choice selection UI.
Current workaround
PreToolUse fires too broadly (every tool call) and doesn't specifically
target the selection prompt moment.
Proposed Solution
Feature Request
What
Add a dedicated hook event (e.g. UserPrompt or SelectionPrompt) that fires
whenever Claude Code displays an interactive multiple-choice selection UI to the user.
Why
Currently, the Notification hook only covers tool permission prompts.
The MCQ selection interface (the ❯ numbered options UI) does not trigger any hook,
making it impossible to get a notification sound or run a command when Claude Code
is waiting for user input via the selection menu.
Expected behavior
A hook like:
"hooks": {
"UserPrompt": [...]
}
that fires whenever Claude Code pauses and presents the user with a choice selection UI.
Current workaround
PreToolUse fires too broadly (every tool call) and doesn't specifically
target the selection prompt moment.
Proposed Solution
Introduce a new lifecycle hook event — suggested name: UserPrompt or SelectionPrompt —
that is emitted specifically when Claude Code renders the interactive ❯ numbered selection UI
and is waiting for the user to make a choice.
This would follow the same structure as existing hooks:
"hooks": {
"UserPrompt": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "<any shell command>"
}
]
}
]
}
This is consistent with the existing hook architecture and requires minimal new surface area —
just a new emit point in the selection prompt rendering code.
Alternative Solutions
_No response_
Priority
Medium - Would be very helpful
Feature Category
Configuration and settings
Use Case Example
Real-World Use Case
Scenario: Multi-window developer workflow
When actively coding, I typically have multiple windows open simultaneously —
browser, editor, terminal, documentation, etc. Claude Code runs in one of these
windows in the background while I work elsewhere.
When Claude Code reaches an MCQ selection prompt (e.g. asking how to proceed,
which approach to take, or confirming a decision), it silently waits with no
system-level notification. Since I am focused on another window, I have no idea
it is waiting for my input.
The result:
- Claude Code sits idle for minutes (sometimes longer) waiting for a response
- I only notice when I happen to switch back to that window
- Entire chunks of productive AI-assisted work time are wasted on idle waiting
With a UserPrompt hook, I could trigger a sound, a desktop notification,
or any shell command the moment Claude Code needs my attention — letting me
respond immediately without constantly context-switching back to check on it.
This is especially valuable for long-running tasks where Claude Code may hit
multiple decision points, and every unnoticed prompt compounds the wasted time.
Additional Context
_No response_
This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗