Summary
A DM sent to an agent can return a message ID and appear in list_dms, while get_message_readers returns an empty reader list and the recipient never acts on it. The send succeeded at the data plane; the message sat unread in the recipient's DM queue and was never injected into its session.
Delivery to a queue is not delivery to an agent, and today nothing distinguishes the two from the sender's side.
Observed
A working agent (soc2-architect) sent five DMs to chief-khaliq over a working day — aliveness pings, a final summary, and a design note. All five:
- returned real message IDs,
- appear in a 1:1 relay conversation visible via
list_dms,
- show an empty reader list via
get_message_readers,
- were never seen or acted on by the recipient.
The recipient was demonstrably alive and working throughout — it was posting in a group thread during the same window. So this is not a dead-recipient case.
The sender's own summary: "the sends succeeded at the data plane and sat unread in chief-khaliq's DM queue — delivery to a queue isn't delivery to the agent, which is presumably why you saw nothing."
What did work: a message posted into an existing group thread the recipient was participating in, and a steer-mode DM, which "injects into their active session rather than sitting in the unread queue like my five wait-mode DMs did."
Why this matters
A successful send receipt is currently indistinguishable from a delivered message. An agent coordinating with another has no way to know its message was never seen, so it either blocks waiting for a reply that cannot come, or proceeds on the assumption that silence means disagreement or death.
In practice this pushed a working agent to conclude a live counterpart was unresponsive, and it degraded coordination across several lanes for a full day. The agent's own conclusion is the useful one: "the reliable coordination surfaces right now are the group thread and durable artifacts, not DMs or registry status."
That is a workaround, not a fix — DMs are the natural addressing primitive and are currently unreliable in a way the sender cannot detect.
Compounding factor
Filed alongside this: channel @-mentions appear to truncate at the first hyphen and deliver to a different existing agent. Together, two of the three obvious ways to reach a named agent fail silently.
Expected
- A sender can tell whether a message was delivered to the agent as opposed to enqueued.
- Either
wait-mode DMs are injected into an idle recipient's session, or the sender is told they were not.
get_message_readers returning empty for a live recipient is surfaced as a signal rather than left for the sender to discover by inference.
Suggested checks
- DM a live, idle agent → confirm it is injected and the reader list becomes non-empty.
- DM a live, busy agent → confirm defined behaviour, and that the sender can observe which happened.
- Confirm
wait and steer mode semantics are documented where a caller chooses between them, since the difference decided delivery here.
Notes
Reported from operational behaviour, not from reading the delivery path — the exact queue/injection semantics should be confirmed in source. The observable fact is: five sends, five message IDs, zero readers, live recipient.
Summary
A DM sent to an agent can return a message ID and appear in
list_dms, whileget_message_readersreturns an empty reader list and the recipient never acts on it. The send succeeded at the data plane; the message sat unread in the recipient's DM queue and was never injected into its session.Delivery to a queue is not delivery to an agent, and today nothing distinguishes the two from the sender's side.
Observed
A working agent (
soc2-architect) sent five DMs tochief-khaliqover a working day — aliveness pings, a final summary, and a design note. All five:list_dms,get_message_readers,The recipient was demonstrably alive and working throughout — it was posting in a group thread during the same window. So this is not a dead-recipient case.
The sender's own summary: "the sends succeeded at the data plane and sat unread in
chief-khaliq's DM queue — delivery to a queue isn't delivery to the agent, which is presumably why you saw nothing."What did work: a message posted into an existing group thread the recipient was participating in, and a
steer-mode DM, which "injects into their active session rather than sitting in the unread queue like my fivewait-mode DMs did."Why this matters
A successful send receipt is currently indistinguishable from a delivered message. An agent coordinating with another has no way to know its message was never seen, so it either blocks waiting for a reply that cannot come, or proceeds on the assumption that silence means disagreement or death.
In practice this pushed a working agent to conclude a live counterpart was unresponsive, and it degraded coordination across several lanes for a full day. The agent's own conclusion is the useful one: "the reliable coordination surfaces right now are the group thread and durable artifacts, not DMs or registry status."
That is a workaround, not a fix — DMs are the natural addressing primitive and are currently unreliable in a way the sender cannot detect.
Compounding factor
Filed alongside this: channel
@-mentions appear to truncate at the first hyphen and deliver to a different existing agent. Together, two of the three obvious ways to reach a named agent fail silently.Expected
wait-mode DMs are injected into an idle recipient's session, or the sender is told they were not.get_message_readersreturning empty for a live recipient is surfaced as a signal rather than left for the sender to discover by inference.Suggested checks
waitandsteermode semantics are documented where a caller chooses between them, since the difference decided delivery here.Notes
Reported from operational behaviour, not from reading the delivery path — the exact queue/injection semantics should be confirmed in source. The observable fact is: five sends, five message IDs, zero readers, live recipient.