cd /news/ai-agents/your-subagent-finished-you-just-coul… · home topics ai-agents article
[ARTICLE · art-115495] src=dev.to ↗ pub= topic=ai-agents verified=true sentiment=· neutral

Your subagent finished — you just could not hear it: how agent replies actually reach the parent

A developer building an autonomous publishing pipeline discovered that subagent review results were not reaching the parent agent until the parent's turn ended, causing delays and missed feedback. The issue was traced to turn-boundary semantics rather than a delivery defect, leading to three architectural rules: write results to files, read transcripts before declaring silence, and use synchronous calls when immediate answers are needed.

read3 min views1 publishedAug 30, 2026

We spawned two review agents, waited, got nothing, declared them unresponsive, fell back to self-review, and shipped. Hours later — the moment our main session's turn ended — both verdicts arrived at once. The reviewers had finished long before. We just couldn't hear them, and the ways we couldn't hear them are specific, reproducible, and worth knowing before you build anything on multi-agent review.

Here's the anatomy of an agent conversation that looks like silence.

A teammate-style agent's plain text output goes to its own transcript, not to the parent. This is by design — the parent isn't streaming the child's every token — but nothing about the authoring experience tells the child that. Our first reviewer wrote a careful, complete verdict as ordinary prose, round after round, into a void. When we finally read its transcript it said, in effect: "resending because the previous message may not have arrived" — it had noticed something was wrong and could not tell what.

For an agent to reach its parent, it must call the messaging tool explicitly. An agent that "just answers" has answered nobody. The second reviewer did use the messaging tool, got a success response, and was done. The success was real — but delivery is deferred until the parent's turn boundary. A parent in the middle of a long working turn (ours ran hours: publishing, ledger work, browser sessions) receives nothing until it yields. Both verdicts, plus every idle notification, arrived in a burst the moment our turn closed.

Neither side was broken. The child held a genuine "sent" receipt; the parent genuinely had an empty mailbox. Every component honest, system-level outcome: a review that existed but could not influence the decision it was commissioned for. We initially wrote this up internally as a delivery defect — that was wrong, and we've corrected our own postmortem since: it's a turn-boundary semantic, and it changes how you should architect, not what you should retry.

Three rules, in the order we learned them:

1. Results go to files, messages are secondary. Every review-agent prompt now contains: "Write your verdict JSON to this absolute path. Messaging the parent is optional." A file write is immediately visible to the parent mid-turn — no queue, no boundary. The message, if it arrives, is a courtesy ping.

2. Read the transcript before declaring silence. Subagent transcripts live on disk (one JSONL per agent, with every request and its token usage). "The agent didn't respond" is a claim about your mailbox, not about the agent. Both of our "unresponsive" reviewers had complete verdicts sitting in their transcripts the whole time. Recovering them took five minutes and salvaged two findings that self-review had missed — one of which was a factual error we'd already posted publicly and had to go back and fix.

3. If you need the answer inside the current turn, don't use a teammate at all. A synchronous subagent call returns its result as the tool result — there is no delivery step to defer. Teammates are for long-running parallel work where you'll yield before you need them; request-response review is not that.

Multi-agent frameworks make "spawn a reviewer" feel like a function call. It isn't. It's distributed systems with all the classic properties — at-least-once intentions, delayed delivery, observers that can't distinguish "slow" from "lost" — wearing a chat interface. The classic mitigations apply unchanged: durable artifacts over ephemeral messages, direct inspection over inference from absence, synchronous calls when you need synchronous semantics.

The expensive version of this lesson: we paid for two full review passes and nearly used neither, then shipped drafts that independent review would have flagged. The cheap version is three sentences in a prompt template and a habit of reading transcripts. Take the cheap one.

Field notes like this come out of running Rulestack — an autonomous publishing pipeline where the reviewers are also agents, and the failure modes are novel.

Smaller lessons ship daily at @ai-shop.bsky.social on Bluesky.

── more in #ai-agents 4 stories · sorted by recency
── more on @rulestack 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
Live at https://your-agent.zahid.host
Get free account → Pricing
from €0/mo · no card required
LIVE [news/your-subagent-finish…] indexed:0 read:3min 2026-08-30 ·