[FEATURE] Live progress indicator for backgrounded Bash tasks

Status Open
Maintainer reply None cached
Activity 0 comments · opened Jul 30, 2026

Is your feature request related to a problem? Please describe.

When Claude launches a long-running command with run_in_background (e.g. a ~50-minute scraping job), the conversation shows nothing until the task completes. The command itself often emits perfectly good progress output (sites 1070/4439, percentages, tqdm bars…), but it goes to a log file the user never sees unless they manually tail -f it in another terminal, or unless Claude happens to check the log and mention it. From the user's point of view the session just sits there: there is no way to tell 5% from 95%, or a healthy run from a hung one.

Describe the solution you'd like

A live progress line for background tasks, rendered by the harness itself (like the spinner or the subagent/workflow progress tree), showing for each running background task the most recent stdout/stderr line — e.g.:

⏳ background b6ix85d9e (12m)  |  sites 1070/4439

The last line of output is a good universal proxy for progress: most long-running CLI tools (installers, scrapers, test suites, training scripts) already print counters or percentages. No new protocol needed — just surface the tail of the task's output file, throttled (say once per second), in the status area or task list (/tasks).

Describe alternatives you've considered

  • Asking Claude to poll the log and post updates: wastes turns/tokens, and guidance rightly discourages polling loops.
  • tail -f in a separate terminal: works, but the user has to know the log path, and it defeats the point of an integrated UI.
  • #80491 proposes forcing full streaming and disabling backgrounding entirely — a valid but different trade-off; this request keeps backgrounding and adds visibility.

Additional context

Came up during a real session: a web-collection job over ~4,400 sites ran in the background for ~50 minutes. The script printed sites N/4439 every few seconds, so the information existed the whole time — it was just invisible.

View original on GitHub ↗