Resumed background subagent stays marked Completed; resume message renders as raw JSON in transcript

Open 💬 0 comments Opened Jul 14, 2026 by alekseibobrakov

Environment

  • Claude Code v2.1.205 (desktop app, macOS Darwin 25.5.0)
  • Model: Opus 4.8 main loop, sonnet subagents

Steps to reproduce

  1. Launch a background subagent via the Agent tool (run_in_background default). Let it complete.
  2. From the main loop, continue the same agent with SendMessage (to its agentId). The tool result says: Agent "<id>" was stopped (completed); resumed it in the background with your message.
  3. Open the Background tasks panel and the agent's transcript while the resumed run works.

Expected

  • The task card flips back to a running state while the resumed run is active.
  • The resume message renders as a normal chat message in the transcript.

Actual

  • The card keeps the original run's Completed badge (with the original duration) even though the resumed run is actively working — token count grows and tool calls fire for 35+ minutes.
  • In the transcript view, instead of the resume chat message the raw JSON of the SendMessage result is displayed to the user:

{"success":true,"message":"Agent \"a...\" was stopped (completed); resumed it in the background with your message. ...","resumedAgentId":"...","pin":{...}}

Impact

Confusing status: the user cannot tell whether the agent is alive. We had to verify liveness out-of-band (file mtimes on disk + tailing the task output JSONL). Functionally the resume works fine — this is a display/state issue only.

View original on GitHub ↗