[Bug]: Shells launched with run_in_background:true are invisible — no timeline row, excluded from task panel (agentKind filter)
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 23k
- Forks
- 5.9k
- Avg merge
- 11h 14m
- Merged PRs (30d)
- 357
Description
What happened
When a Claude Code session starts a shell command with run_in_background: true from the first moment (as opposed to a foreground command that T3 auto-moves to background at its timeout), the running process has no visible representation anywhere in the UI — no live shell row in the thread timeline and no entry in the task panel — even while the process is alive and the backend has recorded it.
The two launch shapes end up with very different visibility:
- Foreground → auto-backgrounded at timeout: the timeline keeps a live "running" shell row. Visible. ✓
- Backgrounded from the start: the tool call completes in ~0.1 s (it just returns the task id), so the timeline row finishes immediately, and the task panel never shows it either — from reading the bundled client code, the panel's task tracker skips activities whose
agentKindis notagent, which excludeslocal_bashbackground tasks.
So a long-running background watcher/monitor process is effectively invisible. In our case the human operator concluded a PR watcher wasn't running (and lost trust in the agent's "watcher armed" claims) while the process was provably alive — the DB had the task.started activity with no completion, but nothing on screen reflected it.
Steps to reproduce
- In a T3 thread, have the agent run any long-lived command via the Bash tool with
run_in_background: true(e.g.sleep 600). - Observe: the tool call returns immediately with a task id; after that there is no UI element showing a running background shell.
- Compare: run the same command foreground with a 150 s timeout; when T3 moves it to background, a live row remains visible until it exits.
Expected
Both launch shapes should produce the same live "background shell running" indicator (timeline row and/or task panel entry) until the process exits.
Version
T3 Code desktop 0.0.37 (macOS, Apple Silicon), Claude Code provider.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by tracing the task panel's activity tracker and the timeline handling for the task.started activity, then compare the Bash tool's run_in_background path with the foreground-to-background timeout path. Confirm how the agentKind filter treats local_bash tasks. Done means a background shell remains visibly represented until its process exits, with coverage for both launch shapes.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- shell, typescript
- Domain
- backend, frontend
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 52/100