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
- Launch a background subagent via the Agent tool (
run_in_backgrounddefault). Let it complete. - 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. - 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.