Background agent completion banners need suppression or status line integration
Problem
When using run_in_background agents (e.g., a coordination watcher that polls every 60s), each completion triggers an unsuppressable banner in the terminal:
● Background command "bash ~/home-lab/watcher/poll-diff.sh" completed (exit code 0)
● Agent "coord watcher" completed
● Agent(coord watcher)
⎿ Backgrounded agent (↓ to manage · ctrl+o to expand)
This causes two serious UX issues:
1. Terminal recentering
Every completion yanks the viewport to the bottom, making it impossible to scroll up and read conversation history. If you're reading something 50 lines up, you get snapped back down every ~60 seconds.
2. Visual noise
A quiet watcher that finds nothing still prints 3-4 lines of chrome per cycle. Over a 30-minute session with a 60s poll interval, that's ~120 lines of noise with zero information content.
Current workaround: Stop using background agents for recurring tasks entirely, which defeats the purpose of having run_in_background.
Requested Solutions
Any of these would help:
- Silent mode flag —
Agent(run_in_background=true, silent=true)that suppresses the completion banner entirely. The agent can still call back into the conversation if it has something to report.
- Notification control — A setting like
"backgroundNotifications": "actionable_only"that only shows banners when the agent's result contains actual content (not empty/no-op results).
- No-recenter option — Keep the banners but don't auto-scroll the viewport. Let the user see them when they scroll down naturally.
- Recurring task primitive — A first-class
/looporTaskRecurringthat runs a command on an interval without spawning a new agent each cycle, with a single persistent status line instead of per-cycle banners.
- Status line integration (preferred) — Background agent status should update the persistent status bar at the bottom of the terminal (where tips/hints already appear), not inject banners into the conversation stream. A watcher could show
⟳ coord watcher: 0 changes (45s ago)in the status line, updating in-place without touching the scroll position. This is the same pattern Claude Code already uses for tips — extend it to background agent lifecycle.
Context
This is critical for long-running agent sessions that monitor external systems (coordination planes, CI pipelines, service health). The pattern of "poll → diff → report only changes" is common but currently unusable because the polling mechanism itself is too noisy.
Reproduction
# Launch any background agent that completes quickly and re-launches
Agent(prompt="run: sleep 5 && echo done", run_in_background=true)
# Try scrolling up in the conversation while it completes
# Terminal snaps back to bottom on completionThis issue has 5 comments on GitHub. Read the full discussion on GitHub ↗