Supercharge Your Workflow with Terminal Bell Notifications in Claude Code

Tired of babysitting your terminal to see if Claude Code has finished running a task? Terminal bell notifications eliminate the need to constantly monitor progress. With a quick setup, Claude can alert you the moment a task completes or requires input — letting you multitask freely while keeping focus on more important work.


Standard Configuration Setup

Claude Code includes built-in support for terminal bell notifications. To enable it globally, run:

claude config set --global preferredNotifChannel terminal_bell

This takes effect immediately (no restart needed). Once enabled, Claude will trigger a bell sound whenever tasks completed or require your input.


Test Your Terminal Bell

Before relying on this feature, confirm your terminal supports audible bells:

echo -e "\a"

If you hear a sound, you’re good to go. If not, don’t worry — alternative solutions are available for Windows WSL and macOS.


Windows WSL: Reliable Alternatives

Windows Subsystem for Linux often ignores standard bell commands. If echo -e "\a" produces no sound, you can bridge the gap with PowerShell-based alerts.

PowerShell Notification Commands

Run these commands inside WSL to trigger Windows system sounds:

Default system beep

powershell.exe -c "[System.Media.SystemSounds]::Beep.Play()"

Distinct “Question” sound (recommended)

powershell.exe -c "[System.Media.SystemSounds]::Question.Play()"

The Question sound stands out more clearly than the default beep, making it easier to notice.

Project-Specific Setup with CLAUDE.md

You can instruct Claude to use these commands automatically by adding them to your CLAUDE.md file:

## Notifications

When tasks are complete, notify me using:
powershell.exe -c "[System.Media.SystemSounds]::Question.Play()"

This ensures Claude consistently plays a sound whenever tasks finish, even if your terminal doesn’t support bells.


macOS: Overcoming Silent Bells

Some macOS terminals (e.g., iTerm2, Warp, Windsurf) fail to produce bell sounds, even when using standard commands like:

printf '\a'
echo -e '\007'
tput bel

If none of these produce a sound, you can fall back to AppleScript notifications:

osascript -e 'display notification "Task Complete" with title "Claude Code" sound name "Glass"'

This displays a system notification and plays the Glass sound — a reliable cross-terminal workaround.


VS Code Integration

If you’re running Claude Code inside VS Code, enable its built-in terminal bell support with these settings:

{
  "accessibility.signals.terminalBell": { 
       "sound": "on" 
  },
  "terminal.integrated.enableVisualBell": true
}

This ensures both audio and visual bell signals fire properly.


Implementation Checklist

To set up notifications effectively:

  1. Test bell support with:
echo -e "\a"
  1. If silent, try the WSL PowerShell or macOS AppleScript alternatives.
  2. Update your CLAUDE.md file with the appropriate notification command for consistent behavior.

Benefits: Why It Matters

Bell notifications transform Claude Code into a hands-off partner:

  • Multitasking freedom — work elsewhere without worrying about task completion.
  • Immediate awareness — know instantly when Claude finishes or needs your input.
  • Better focus — no more wasted attention checking terminal progress bars.

Instead of waiting, you can focus on building while Claude keeps you in the loop.


Troubleshooting

If notifications aren’t working:

  • Verify your terminal supports audio output.
  • Check system sound settings.
  • Test with echo -e "\a" before moving to advanced fixes.
  • On WSL, confirm PowerShell execution policies allow SystemSounds.
  • On macOS, ensure your terminal app has permission to send notifications.

Conclusion

Setting up terminal bell notifications in Claude Code only takes a few minutes, and the payoff is huge. Whether you use Linux, Windows WSL, macOS, or VS Code, there’s a solution that ensures Claude alerts you reliably.

Stop babysitting your terminal — let Claude notify you when it’s time to take action, and keep your focus where it belongs: shipping great code.

:warning: Note: I primarily use macOS/Linux. The Windows WSL examples above are based on community-documented solutions using PowerShell. If you’re a Windows user, feel free to share your results or improvements in the comments.