You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
TUI attention sound plays repeatedly while idle with no events (WSL2) #40882
When a session is idle — no prompts, no tool calls, no permission requests —
the TUI plays the default attention sound (bip-bop, ~3 beeps) repeatedly at
irregular intervals, completely unrelated to any event. The sound is not
triggered by question/permission/error/done events: at the moment it plays,
the log shows zero new entries, process CPU is flat, and there is no UI
activity. Sound stops as soon as opencode exits.
Plugins
None
OpenCode version
1.18.14
Steps to reproduce
Windows 11 + WSL2 (Ubuntu), opencode 1.18.14 (latest)
Use opencode normally until the agent completes a task and becomes idle
Leave the session idle without touching the terminal
After a short wait the default attention sound plays with no prompting,
and repeats at irregular intervals (observed plays ~40s apart at
22:49:10 / 22:49:50, then a longer gap)
I started tracing this and need a small log to pin the exact trigger before I can land a precise fix.
What I found so far: the notification for the completion sound fires in packages/tui/src/feature-plugins/system/notifications.ts on everysession.status busy→idle transition per session (deduped only by a module-local active set, so one sound per busy→idle cycle). Server-side, busy is re-published at the top of every agent step (path src/session/processor.ts / the run loop) and idle is published once per completed run. So a repeated idle sound means a session is going busy→idle repeatedly while it looks idle to you — a few candidates: a subagent session completing in the background, a queued/steer prompt re-running, a status that gets stuck busy, or the active session-warming-opt-in plugin.
To tell them apart, could you capture the actual event timeline? Drop this debug plugin at ~/.config/opencode/plugins/status-log.ts:
Then: 1) start opencode2, leave it idle, wait for the sound, 2) quit and paste ~/.cache/opencode/status-events.log.
What the log tells us:
STATUS <id> ... busy then ... idle pairs around each sound + the parent value → whether it's the top-level session (done) or a subagent (subagent_done) cycling.
busy with no matching idle → a stuck-busy status.
an empty log while the sound plays → not session.status-driven, and I'll look at the audio path instead.
If you could also run once with session-warming-opt-in disabled and share both logs, that bisects the most likely trigger.
Activity
anujbolewar commentedon Aug 7, 2026
I started tracing this and need a small log to pin the exact trigger before I can land a precise fix.
What I found so far: the notification for the completion sound fires in
packages/tui/src/feature-plugins/system/notifications.tson everysession.statusbusy→idle transition per session (deduped only by a module-localactiveset, so one sound per busy→idle cycle). Server-side,busyis re-published at the top of every agent step (pathsrc/session/processor.ts/ the run loop) andidleis published once per completed run. So a repeated idle sound means a session is going busy→idle repeatedly while it looks idle to you — a few candidates: a subagent session completing in the background, a queued/steer prompt re-running, a status that gets stuckbusy, or the activesession-warming-opt-inplugin.To tell them apart, could you capture the actual event timeline? Drop this debug plugin at
~/.config/opencode/plugins/status-log.ts:Then: 1) start
opencode2, leave it idle, wait for the sound, 2) quit and paste~/.cache/opencode/status-events.log.What the log tells us:
STATUS <id> ... busythen... idlepairs around each sound + theparentvalue → whether it's the top-level session (done) or a subagent (subagent_done) cycling.busywith no matchingidle→ a stuck-busy status.session.status-driven, and I'll look at the audio path instead.If you could also run once with
session-warming-opt-indisabled and share both logs, that bisects the most likely trigger.github-actions commentedon Oct 8, 2026
To stay organized issues are automatically closed after 60 days of no activity. If the issue is still relevant please open a new one.