Corrected 2026-08-21. The original report claimed DMs to running agents are dropped fleet-wide, and cited flush returning 0 as evidence. Both were wrong: flush only applies to an agent in hold mode and none were held, so 0 was the expected answer and proved nothing; and every failed probe shared one sender, which I had not excluded. Re-tested with controls. The underlying bug is real but the mechanism is different and narrower.
Summary
An agent stops receiving DM injections after it has been alive for somewhere between 1h15m and 5h. Sends to it keep returning success — recipientMatched: true, resolvedRecipient correct, status: queued_unconfirmed — and nothing is delivered, queued, or dead-lettered. Reproduced on three nodes.
Evidence
Unique marker sent to each recipient, then its screen read via node agent attach --mode view and grepped for that marker. Process age from ps -o etime.
| recipient |
node |
process age |
state |
marker arrived |
| dm-control-probe-0821 |
chief-broker |
6m52s |
working |
YES |
| factory-314-rebase-0821 |
chief-broker |
37m57s |
working |
YES |
| rfc155-repoint-0821 |
chief-broker |
1h09m |
working |
YES |
| modal-15-threads-0821 |
sf-mini |
1h15m |
working |
YES |
| relaycast-factory-identity-0821 |
chief-broker |
5h09m |
idle |
NO |
| rfc169-conflict-0821 |
sf-mini |
5h47m |
idle |
NO |
| sandbox14-conflict-0821 |
finn-mini |
5h51m |
idle |
NO |
| factory-relay-egress-0821 |
chief-broker |
6h19m |
idle |
NO |
| cloud-daytona-transitions-0821 |
chief-broker |
9h57m |
idle |
NO |
| dogfood-metrics-v0-0820 |
chief-broker |
17h |
idle |
NO |
| marketing-lead |
chief-broker |
23h12m |
idle |
NO |
| factory-lead |
chief-broker |
1d17h |
working |
NO |
The boundary sits between 1h15m (delivers) and 5h09m (does not). I did not bisect it further.
Two confounds, both excluded by control
Not the sender. All my original probes went out as chief-voice-0819, an identity with no live seat. I spawned dm-control-probe-0821 and had it send from its own broker-registered identity to an 8-hour-old agent — same result, nothing delivered. Then sent from chief-voice-0819 to that fresh prober — delivered, and the prober confirmed the sender as chief-voice-0819. The sender identity is not the variable.
Not idleness. factory-lead was current_state: working with last_activity_ms: 3 at send time and still received nothing. Meanwhile fresh agents that were also working did receive. Age separates the groups; activity does not.
What the receipts look like
Identical for a delivering and a non-delivering recipient:
{"status": "queued_unconfirmed", "mode": "steer",
"requestedRecipient": "dogfood-metrics-v0-0820",
"resolvedRecipient": "dogfood-metrics-v0-0820",
"recipientMatched": true, "readConfirmed": false}
pending_messages is 0 on the affected recipients, so the message is not sitting queued at the node — it is lost before that. The field works: an unaffected agent showed pending_messages: 1 in the same listing. node deadletters shows nothing from today; newest entry is 5 days old.
Impact
A dispatcher cannot instruct any agent more than a few hours old. In our fleet this left 24 of 27 lanes parked at their prompts waiting on instructions that were accepted by the API and silently discarded — a full day of dispatch into a void, with every send reporting success. Task delivery at spawn time is unaffected, which is what makes this so hard to notice: newly spawned agents work perfectly, so the failure is invisible to anyone measuring spawns.
Asks
- Find what expires on the agent's delivery route between 1h and 5h — a session/route/connection generation is the obvious suspect — and either refresh it or fail the send.
recipientMatched: true should mean a reachable seat, not just a resolved name. Today those are different claims with one field.
- An injection that cannot be delivered must dead-letter with a distinguishing reason. Silent discard is the expensive part.
- Ideally expose the route's last-confirmed-delivery so a dispatcher can tell a deaf agent from a quiet one.
Summary
An agent stops receiving DM injections after it has been alive for somewhere between 1h15m and 5h. Sends to it keep returning success —
recipientMatched: true,resolvedRecipientcorrect,status: queued_unconfirmed— and nothing is delivered, queued, or dead-lettered. Reproduced on three nodes.Evidence
Unique marker sent to each recipient, then its screen read via
node agent attach --mode viewand grepped for that marker. Process age fromps -o etime.The boundary sits between 1h15m (delivers) and 5h09m (does not). I did not bisect it further.
Two confounds, both excluded by control
Not the sender. All my original probes went out as
chief-voice-0819, an identity with no live seat. I spawneddm-control-probe-0821and had it send from its own broker-registered identity to an 8-hour-old agent — same result, nothing delivered. Then sent fromchief-voice-0819to that fresh prober — delivered, and the prober confirmed the sender aschief-voice-0819. The sender identity is not the variable.Not idleness.
factory-leadwascurrent_state: workingwithlast_activity_ms: 3at send time and still received nothing. Meanwhile fresh agents that were also working did receive. Age separates the groups; activity does not.What the receipts look like
Identical for a delivering and a non-delivering recipient:
{"status": "queued_unconfirmed", "mode": "steer", "requestedRecipient": "dogfood-metrics-v0-0820", "resolvedRecipient": "dogfood-metrics-v0-0820", "recipientMatched": true, "readConfirmed": false}pending_messagesis 0 on the affected recipients, so the message is not sitting queued at the node — it is lost before that. The field works: an unaffected agent showedpending_messages: 1in the same listing.node deadlettersshows nothing from today; newest entry is 5 days old.Impact
A dispatcher cannot instruct any agent more than a few hours old. In our fleet this left 24 of 27 lanes parked at their prompts waiting on instructions that were accepted by the API and silently discarded — a full day of dispatch into a void, with every send reporting success. Task delivery at spawn time is unaffected, which is what makes this so hard to notice: newly spawned agents work perfectly, so the failure is invisible to anyone measuring spawns.
Asks
recipientMatched: trueshould mean a reachable seat, not just a resolved name. Today those are different claims with one field.