Skip to content

Desktop notifications

desktop notification screenshot

Desktop notifications are enabled by default. Once the agent hooks are wired up during Getting Started, no extra agent-side configuration is needed — the sidebar reads the same hook events it already consumes for status tracking and triggers OS notifications itself.

The Default column shows which events fire when @sidebar_notifications_events is unset. task_completed is the only event off by default — it can be noisy for agents that emit many sub-tasks.

Event Fired when Agent Default
stop Assistant finished responding (Stop hook) Claude, Codex, OpenCode ✓
notification Permission prompt or other attention request Claude, OpenCode ✓
stop_failure Assistant ended with an error (StopFailure hook) Claude, OpenCode ✓
permission_denied Permission explicitly denied (PermissionDenied hook) Claude only ✓
task_completed Sub-agent / Task tool completion (TaskCompleted hook) Claude only —

Restrict which events fire notifications with @sidebar_notifications_events (comma-separated event names). all fires every event. Unset fires every event except task_completed.

Terminal window
set -g @sidebar_notifications_events "stop,notification" # drop error notifications
set -g @sidebar_notifications_events "stop,notification,task_completed" # enable sub-agent notifications
set -g @sidebar_notifications_events all # explicit "fire everything"

An empty value disables every event without touching the master @sidebar_notifications switch.

  • macOS uses osascript
  • Linux uses notify-send
  • Windows is not supported yet

If the required notification command is missing, the feature quietly disables itself.

┌─────────────────────────────────────────────┐
│ repo (branch) / agent ← title │
│ <event body> ← body │
└─────────────────────────────────────────────┘

The title falls back to repo / agent when the branch is unknown, and to agent alone when there is no repo.

Event Body Fallback
stop Assistant’s last message, truncated to 240 chars with … Task completed
notification Wait reason Permission required
task_completed Task completed: {task_subject} Task completed
stop_failure Task failed: {error} Task failed
permission_denied (no payload) Permission required