pingdotgg / pingdotgg/t3code

[Bug]: Shells launched with run_in_background:true are invisible — no timeline row, excluded from task panel (agentKind filter)

Open
#9,107 0 comments 0 reactions 0 assignees View on GitHub

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 agentKind is not agent, which excludes local_bash background 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
  1. 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).
  2. Observe: the tool call returns immediately with a task id; after that there is no UI element showing a running background shell.
  3. 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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.