This plugin requires configuration values that are prompted when the plugin is enabled. Sensitive values are stored in your system keychain.
soundBundled sound name: bell, chime, ding, pop, or blip.
${user_config.sound}enabledToggle sound on/off without uninstalling.
${user_config.enabled}custom_sound_fileAbsolute path to a .wav/.mp3/.aiff file. Overrides 'sound' when set.
${user_config.custom_sound_file}Matches all tools
Hooks run on every tool call, not just specific ones
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimBased on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
A Claude Code plugin that plays a sound when Claude is waiting on you — turn finished, permission prompt, or idle attention notification. Five short tones ship with the plugin; you can also point it at any audio file you like.
PermissionRequest and Notification), you hear one sound, not two — a per-user PID file debounces re-triggers while a player is still alive.UserPromptSubmit kills any still-playing sound on your next chat message; PostToolUse does the same when you answer an AskUserQuestion / ExitPlanMode prompt. Mainly matters for longer custom files; bundled tones have already finished by then.AskUserQuestion, Claude emits a short follow-up reply, the turn ends, and Stop fires immediately. You're already paying attention — no need to ping you again.setsid (or backgrounded on systems without it), the hook script returns immediately, and missing players / missing files exit silently with code 0.The plugin ships with a tiny local marketplace (.claude-plugin/marketplace.json), so installation is two CLI commands:
# Register this directory as a marketplace (one-time, user scope)
claude plugin marketplace add /absolute/path/to/this/repo
# Install the plugin from that marketplace
claude plugin install input-sound@lajna-local
Default scope is user (~/.claude/settings.json) — enabled across all projects. Use --scope project for a project-scoped install (./.claude/settings.json, shared via git) or --scope local for a personal project install (./.claude/settings.local.json).
Equivalent flow from inside a Claude Code session:
/plugin marketplace add /absolute/path/to/this/repo
/plugin install input-sound@lajna-local
Verify:
claude plugin list # input-sound@lajna-local should show as enabled
Inside Claude Code, /hooks should list the Stop, Notification, and UserPromptSubmit hooks pointing at scripts under ${CLAUDE_PLUGIN_ROOT}.
The plugin declares three userConfig fields:
| Field | Type | Default | Notes |
|---|---|---|---|
sound | string | bell | One of bell, chime, ding, pop, blip. Invalid names fall back to bell. |
custom_sound_file | file path | (empty) | Absolute path to your own audio file. When set, takes precedence over sound. |
enabled | boolean | true | Mute without uninstalling. |
The userConfig schema doesn't support enum/dropdown fields, so sound is free-text — typo-safe via the bell fallback.
Edit values via the interactive plugin manager (/plugin inside Claude Code → select input-sound → edit config), or write them directly into ~/.claude/settings.json under the relevant plugin config block.
| Name | Length | Character |
|---|---|---|
bell | 0.35s | Warm 880 Hz bell with a 1760 Hz overtone. The default. |
chime | 0.45s | Brighter 1320 Hz + 1980 Hz pairing, slightly longer release. |
ding | 0.30s | Single 1760 Hz sine, short. |
pop | 0.08s | Quick low-frequency blip. |
blip | 0.12s | Two-tone snap at 660 + 1320 Hz. |
All are 16-bit mono WAV at 22.05 kHz, 3.5–20 KB each. Generated by scripts/_generate_sounds.py — re-run it to tweak frequencies, lengths, or envelopes.
Format support depends on the player picked at runtime:
| Platform | Player(s) probed | Formats |
|---|---|---|
| Linux | paplay → pw-play → aplay → play | WAV always works. FLAC/OGG via PulseAudio/PipeWire. MP3 only if play (sox) is selected — but earlier players are probed first, so don't rely on it. |
| macOS | afplay | WAV, AIFF, MP3, M4A/AAC. |
| Windows | powershell.exe (Git Bash / WSL / Cygwin) | WAV only (System.Media.SoundPlayer). |
→ Use WAV for portability. MP3 will fail silently on Windows and on Linux setups without sox.
Path requirements:
${CLAUDE_PROJECT_DIR}, which changes per session.~ expansion. Write /home/you/sounds/foo.wav, not ~/sounds/foo.wav.Behavioral limits:
Notification events until the first finishes or you respond.npx claudepluginhub lajnalegenden/claude-code-sound --plugin input-soundUltra-compressed communication mode. Cuts ~75% of tokens while keeping full technical accuracy by speaking like a caveman.
Memory compression system for Claude Code - persist context across sessions
Multi-model consensus engine integrating OpenAI Codex CLI, Gemini CLI, and Claude CLI for collaborative code review and problem-solving.
Curate auto-memory, promote learnings to CLAUDE.md and rules, extract proven patterns into reusable skills.