[FEATURE] Allow skipping a running hook via keypress (e.g. Esc)
Problem Statement
Hooks are incredibly useful, but they always run unconditionally when triggered. Sometimes the user knows the hook's result is unnecessary (e.g., skipping a plan review when prototyping). Currently there's no way to cancel or skip an individual hook during execution — the only option is to disable all hooks via /hooks, which is too coarse-grained.
While statusMessage shows a spinner during hook execution, there's no interactive way for the user to say "I don't need this right now."
Proposed Solution
While a hook is running (and the statusMessage spinner is visible), allow the user to press a specific key (e.g. Esc) to skip/cancel the running hook. The skipped hook should be treated as if it exited with code 0 (allow), so execution continues normally.
Priority
Medium - Would be very helpful
Feature Category
Interactive mode (TUI)
Use Case Example
- User has a
PreToolUsehook onExitPlanModethat sends the plan to an external AI for review (takes ~30-60 seconds) - User is prototyping and knows the plan doesn't need a full review this time
- The spinner shows "Reviewing plan..." — user presses
Esc - The hook is cancelled, ExitPlanMode proceeds immediately
- User saves ~30-60 seconds without having to disable all hooks
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗