[BUG] iOS app shows raw Task-tool launch metadata instead of the subagent transcript

Status Open
Reported on v2.1.220
Maintainer reply None cached
Activity 0 comments · opened Jul 28, 2026

Surface: Claude iOS app
Area: Remote Claude Code session → subagent detail view

What's wrong?

Tapping through to a subagent in a remote Claude Code session opens a sheet titled with the agent type (e.g. general-purpose), but the body renders the parent session's Task tool call — its input prompt and its tool_result — rather than the child agent's own session.

Scrolling up reveals the launch prompt rendered as body text; below it, a Result block containing the async-launch acknowledgment, which is model-directed internal plumbing explicitly marked as never-surface-to-user content:

  • "Async agent launched successfully. (This tool result is internal metadata — never quote or paste any part of it…)"
  • The internal agentId, with instructions telling the model not to mention it to the user
  • Orchestration directives aimed at the model ("You know nothing about its results…", "Do not duplicate this agent's work…")
  • An absolute output_file path on the host filesystem (/private/tmp/claude-…/tasks/<id>.output), plus a "Do NOT Read or tail this file" warning

<img width="400" alt="Image" src="https://github.com/user-attachments/assets/2f20d70b-4bce-4f97-b306-b7e7c296a186" />

What should happen?

The sheet should show the subagent's own session: the task it was given, its tool calls and progress, and its final report — the same thing the drill-in shows on web/desktop.

Steps to reproduce

  1. Start a Claude Code session on the web / remote environment.
  2. Have the session spawn a background subagent via the Agent/Task tool (run_in_background default, i.e. the async path).
  3. Open that session in the Claude iOS app.
  4. Tap the subagent entry in the transcript to drill in.

Two distinct defects

  1. Wrong node resolved. The subagent detail view isn't wired to the async agent's transcript, so it falls back to rendering the launch tool call from the parent. The correct target is the child session (the agent's own JSONL transcript / output file), not the parent's tool_result.
  1. Internal metadata not filtered. Even as a fallback, this payload should never render. It is addressed to the model, not the user, and it leaks an internal agent ID and an absolute host path. Whatever the view resolves to, launch-acknowledgment tool_results for the Task tool should be suppressed or replaced with a status chip ("Agent running…" / "Agent completed").

Additional information

  • Reproduced with a background (async) subagent. Worth checking whether a synchronous subagent (run_in_background: false) drills in correctly — if so, the async path is simply missing its transcript wiring and this narrows the fix considerably.
  • The title bar resolves correctly (general-purpose), so the app does have the agent's identity — it's the body content that's mis-sourced.
  • Serif body styling on the prompt text suggests it's going through the normal message renderer rather than a dedicated agent-transcript view.

Environment

  • Claude Code version: 2.1.220
  • Client: Claude iOS app (viewing a remote/web Claude Code session)
  • Host OS: macOS
  • Platform: Anthropic API
  • Regression: I don't know

View original on GitHub ↗