feat: terminal bell (BEL) when Claude Code is waiting for tool approval

Open 💬 12 comments Opened Mar 20, 2026 by langdon

Summary

Ring the terminal bell (\a / BEL) when Claude Code pauses and is waiting for the user to approve a tool use. This is distinct from a completion bell — it's a "I need you right now" signal, not a "I'm done" notification.

Motivation

When Claude Code is running in a buried terminal or tmux pane, there's no way to know it's blocked on an approval prompt without switching to it and looking. The session silently waits, the user is doing something else, and minutes pass.

A terminal bell on the approval prompt solves this without any external tooling — it works in tmux, screen, iTerm2, Wezterm, Ghostty, and every terminal that supports the standard BEL character. Most terminals can translate BEL into a visual bell, a dock badge, or a desktop notification depending on user preference. The user controls what "bell" means to them.

Proposed behavior

When the approval prompt is displayed (the "Allow / Deny" dialog for tool use), emit a single \a (BEL, \x07) to stderr before or alongside the prompt text.

Optionally, make this configurable:

// ~/.claude/settings.json
{
  "bellOnApproval": true  // default: true
}

Why not just use the existing Notification hook?

The Notification hook fires for general notifications, not specifically for approval prompts. Wiring a bell through a hook requires the user to write and maintain a shell script for something that could be a one-liner in the core UI.

Related

  • #32610 — terminal bell on completion (different use case — "I'm done" vs "I need you")
  • #13922 — configurable idle_prompt notification hook

---

Drafted with AI assistance. AI-G — fully AI-generated, human-reviewed.

View original on GitHub ↗

This issue has 12 comments on GitHub. Read the full discussion on GitHub ↗