--- name: background-agents-reference description: CC background agents — long-running subagents with run_in_background and Monitor for progress streaming. layer: reference cc_feature: background-agents source: https://docs.claude.com/en/docs/claude-code/background-agents concept: async-agents-and-monitoring last_verified: 2026-04-19 ngram_overlap_score: null review_status: approved --- # Background Agents — Reference A background agent is a subagent launched with `run_in_background: true`. The parent does not block on its return; instead, the harness notifies the parent when the agent completes. Useful for long-running exploration, orchestration, and work that overlaps with user activity. > **Hard constraint (verified 2026-04-19):** The Claude Code harness does > NOT expose the `Agent` tool to sub-agents — foreground OR background. > A sub-agent cannot spawn further sub-agents. "Nested orchestration" > patterns silently degrade: the inner orchestrator loses its planned > swarm and falls back to single-context reasoning. Source: > github.com/anthropics/claude-code/issues/19077. Only the main session > can spawn agents. Plan shapes that require a swarm below a background > agent do not work — keep the orchestration in the main command context > instead. See Pitfalls and Composition below. ## Launching ``` Agent({ description: "...", subagent_type: "...", prompt: "...", run_in_background: true }) ``` The Agent tool returns a handle (agent ID / name). The parent continues its turn; no wait. ## Monitoring Two complementary tools work with background agents: - **Monitor** — streams updates from a named background process. Each event line arrives as a notification. Used for long-running Bash processes (and, in newer builds, some agent streaming paths). - **Completion notifications** — the harness posts a message to the parent when the background agent finishes. The parent sees it as a system-reminder / notification on its next turn. ## When background is worth it - **Overlapping work** — orchestrator runs 30+ minutes of research while the user continues coding. Without background, the user is blocked the whole time. - **Parallel waves** — wave N of sessions running concurrently; the parent collects results as they arrive. - **Long-running processes** — an agent waiting on a build, test run, or deployment. ## When background hurts - **Short tasks** — agent returns in 10 seconds; making it async adds overhead for no gain. - **Tight coupling** — if the parent needs the result before doing anything else, background is just foreground with extra steps. - **Unbounded token spend** — a background agent with no budget signaling can run until it hits limits. Cap explicitly. ## Common shapes ### Shape A: Orchestrator handoff (AVOID — see warning above) Pattern: parent interviews user, writes a spec, launches a background orchestrator that re-spawns a swarm of workers. **This does not work as documented.** The background orchestrator never gets the Agent tool, so the swarm never materializes and the inner orchestrator degrades to single-context reasoning. Anti-pattern confirmed in ultraplan-local v1.0–v2.3.2. Removed in v2.4.0 — the command markdown itself is now the orchestrator in main context. ### Shape B: Parallel waves (single-file execution only) Parent decomposes work into N independent sessions, launches them all in parallel with `run_in_background: true`, then synthesizes returns as they arrive. **Each session must be self-contained and avoid spawning further agents** — they can use Bash, Read, Grep, Edit, Write, but not Agent. Valid use: `ultraplan-local --decompose` execution where each session implements concrete code changes without further orchestration. ### Shape C: Watcher A background agent polls a process (build, test, deploy) and reports status changes. Uses Monitor for streaming. Watchers need Bash/Read only — no Agent tool needed, so the harness limitation does not apply. ## Pitfalls - **Lost context** — if the parent conversation ends before the background agent completes, the result may be orphaned. Persist to disk, not memory. - **Notification fatigue** — too many background agents = too many reminders interrupting the parent's flow. - **Debugging** — background agents run out of the user's view; their failures can be silent. Log to files, not just return messages. ## Composition - Background + worktrees: the canonical pattern for parallel implementation — each background agent in its own worktree, no clashes. Each session performs concrete file changes, not nested orchestration. - Background + subagents: **NOT SUPPORTED.** A sub-agent, whether foreground or background, does not have the Agent tool. Only the main session can spawn agents. See the warning at the top of this file. - Background + hooks: hooks fire inside the background agent's tool calls, same as foreground.