Claude Code v2.1.251, released 28 August 2026, added live streaming of a foreground subagent's tool calls and results to devices connected over Remote Control. The same changelog entry is explicit about the boundary: "background subagents, the default, still show status only." Understanding what that split actually buys you, and why it's drawn exactly there, means understanding how Claude Code decides whether a subagent runs in the foreground or the background in the first place, since that decision, not a Remote Control setting, is what determines what you see.
What changed
Before this release, Remote Control already synced subagent and workflow progress across your connected devices, but at the level of status: a subagent was running, or it had finished, or it needed a permission approved. What arrived on your phone or in the browser didn't include the individual tool calls a subagent was making along the way, only the outcome. As of v2.1.251, a foreground subagent's tool calls and results now stream live to Remote Control clients as they happen, the same detail you'd see watching that subagent's progress in your terminal.
Background subagents are explicitly carved out of this. They keep showing status only: running, waiting on a permission, finished, or failed, without a live feed of what they're actually doing tool call by tool call.
Foreground versus background: the distinction that decides everything here
Claude Code's own subagents documentation draws a firm line between the two, and it's worth quoting directly since the difference is exactly what this feature turns on:
- Foreground subagents "block the main conversation until complete. Permission prompts are passed through to you as they come up."
- Background subagents "run concurrently while you continue working. When a background subagent reaches a tool call that needs permission, Claude Code surfaces the prompt in your main session and names the subagent that is asking."
A foreground subagent is one you're already, by definition, waiting on: your main conversation is blocked until it finishes, so there's no competing activity for a live tool-call feed to interrupt. A background subagent is explicitly designed to not demand your attention while it runs, which is precisely why Claude Code keeps it to status updates rather than a running commentary of every tool call, on Remote Control or in your own terminal.
How Claude Code decides which one a subagent gets
This isn't something you toggle per subagent. Claude Code works through a fixed list of cases, in order, and the first one that applies decides foreground or background:
- If an in-process agent team teammate spawned the subagent, it runs in the foreground.
- If
CLAUDE_CODE_DISABLE_BACKGROUND_TASKSis set to1, it runs in the foreground. - Where fork mode is on, which is the default in interactive sessions as of v2.1.232, Claude Code runs the subagent in the background, forked or not, and Claude cannot ask for the foreground.
- Where fork mode is off, Claude Code runs a subagent in the background by default, and in the foreground only when it needs that subagent's result before it can continue.
The practical upshot: in a typical interactive session today, with fork mode on by default, most subagents Claude spawns run in the background, which means most subagents don't get this new live streaming either. The cases where you actually see it, an agent team teammate's subagent, a session with CLAUDE_CODE_DISABLE_BACKGROUND_TASKS=1 set, or a fork-mode-off session where Claude genuinely can't proceed without a subagent's answer, are narrower than "any subagent I spawn." That's a deliberate consequence of how fork mode reshaped subagent execution, not an oversight in how this streaming feature was scoped.
Why the line is drawn here, not somewhere else
It would be technically possible to stream a background subagent's tool calls too. Anthropic didn't, and the reasoning follows directly from what background subagents are for. They exist so you can keep working while several run at once, sometimes many in parallel through a workflow fanning out several agents. Live tool-call streaming from every one of those, on top of your main session's own activity, would work against the reason background execution exists: to let you not watch it. A foreground subagent has already put your main conversation on hold, so there's nothing left for a detailed feed to compete with, and no cost to giving you everything.
This mirrors how Claude Code already treats foreground and background subagents differently in the terminal itself, not just over Remote Control. A background subagent's row disappears from the transcript within 30 seconds of finishing successfully (or stays visible longer if it failed or was stopped), precisely so background work doesn't clutter a session you're meant to be free to ignore. Extending that same restraint to what Remote Control streams is consistent with the existing design, not a new policy invented for this feature.
What you actually see on a connected device
When your session is connected to Remote Control and a foreground subagent runs, the device shows that subagent's tool calls and results arriving live, the same activity you'd watch scroll by in your terminal. Remote Control already kept the conversation and the progress of subagents and workflows in sync across every connected device, including queuing updates through a dropped connection and delivering them once it reconnects; this feature adds tool-call-level detail to that sync specifically for foreground subagents, rather than changing how the sync itself works.
For a background subagent, a connected device still shows what it showed before this release: that the subagent is running, that it's waiting on a permission (with the subagent named so you know which one is asking), or that it finished or failed. You can stop a background subagent from the device the same as you always could, since stopping something doesn't require having watched its tool calls first.
A worked example
Say you're running a session with CLAUDE_CODE_DISABLE_BACKGROUND_TASKS=1 set, which forces every subagent Claude spawns into the foreground, and you dispatch a subagent to audit a large module for a specific bug pattern before continuing the main task. Because that subagent is now guaranteed to run in the foreground, connecting your phone over Remote Control mid-audit shows the subagent's tool calls as they happen: which files it's reading, what it's grepping for, what it finds, live, not just a "running" indicator that resolves into a result once it's done.
Contrast that with the default, fork-mode-on case: dispatch the same audit as an ordinary background subagent, and a connected phone shows only that the audit is running and, eventually, that it finished, with the tool-call detail staying in your terminal's own transcript rather than reaching the device at all.
Setup and requirements
There's nothing to turn on specifically for this streaming. It applies automatically to any foreground subagent's activity once two conditions are already met: your session is connected to Remote Control, which on Team and Enterprise plans an Owner must enable first in Claude Code admin settings, and you're running Claude Code v2.1.251 or later. What decides whether a given subagent qualifies is purely the foreground/background logic above, not anything you configure on the Remote Control side.
How this compares to watching a session in your own terminal
Remote Control's whole premise is that a connected device sees roughly what you'd see if you were sitting at the machine yourself, and this feature narrows a real gap between the two. Before v2.1.251, a foreground subagent's tool calls were already fully visible in your terminal, since your main conversation is blocked on it anyway and the transcript shows its activity inline. A connected phone, by contrast, only learned the outcome once the subagent finished. That asymmetry meant stepping away from your desk mid-task, precisely the situation Remote Control exists for, cost you visibility into exactly the subagent work you were most likely to be waiting on: a foreground one, by definition blocking everything else. This release closes that specific gap rather than adding a new kind of visibility your terminal never had.
Background subagents were never fully visible in the terminal transcript either, by design: a background subagent's own tool-call detail scrolls by in its own pane if you open it, not in your main conversation, and its row clears from view within 30 seconds of a successful finish. Remote Control's status-only treatment of background subagents matches that existing terminal behavior rather than falling short of it. If you want a background subagent's own detailed activity, opening that subagent's own transcript, locally or through agent view, is the way to see it, on Remote Control or off it.
A note on what streams to a device
A live tool-call feed means whatever a foreground subagent reads, writes, or runs is now visible on whichever device is connected, not only in your local terminal. That's consistent with how Remote Control already treats your main conversation, permission prompts and all, but it's worth having in mind if a foreground subagent is likely to touch something sensitive, a credentials file, a customer record, output from a command you wouldn't want visible on a phone screen left unattended. The underlying data never leaves your control any differently than it already does over Remote Control generally: execution and file access stay on your machine the whole time, and the connected device only ever receives what's being streamed to it, not independent access to your filesystem.
Troubleshooting
A subagent's tool calls aren't showing up on my connected device. Check whether that subagent is actually running in the foreground. With fork mode on, the interactive default since v2.1.232, every subagent runs in the background regardless of anything you do at dispatch time; Claude cannot request the foreground under fork mode at all.
I want every subagent to stream live, not just foreground ones. That's not currently offered; background subagents are deliberately limited to status updates. Setting CLAUDE_CODE_DISABLE_BACKGROUND_TASKS=1 forces subagents into the foreground and gets you the streaming, but it also means every subagent now blocks your main conversation until it finishes, which is a real trade-off, not a free toggle.
Remote Control shows the subagent as running but nothing else. Confirm you're on Claude Code v2.1.251 or later; earlier versions sync status for subagents and workflows but never streamed tool-call detail regardless of foreground or background.
A teammate's subagent streams live but my own dispatched subagents don't. That's expected. An in-process agent team teammate's subagent runs in the foreground unconditionally, ahead of the fork-mode check, which is why it behaves differently from an ordinary subagent you spawn directly in the same session.
Where to go next
For how fork mode itself changed subagent execution, see how Claude Code's subagent forking works. For the broader Remote Control feature this builds on, connecting a session to your phone or another browser, see Claude Code's own Remote Control documentation. Browse the full Claude Code catalog at getclaudeskills.com/platforms/claude-code.
Verified 30 August 2026 directly against the v2.1.251 changelog entry at code.claude.com/docs/en/changelog and the foreground/background subagent definitions, decision order, and fork-mode default in Claude Code's sub-agents reference, fetched with a verbatim-quote-only prompt to confirm exact wording.
