You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
send_discord_message (added in #953) is channel-only — it posts to a Discord text channel and creates a thread off the message so user replies route back to a live session. It cannot proactively DM a Discord user. This issue tracks adding a user_id / DM target.
Why DM support was deferred
The proactive-post amnesia fix relies on the deferred thread-history hydration path: the bot's posted message becomes the thread root, and on the first authorized reply the binding actor fetches that root from Discord server-side history and adopts it as context (mirrors how send_slack_message works).
Discord DMs are a flat conversation with no distinct thread root. The thread-history-backfill capability already documents this — see its spec scenarios:
"Discord DM has no thread root, so no bot content hydrates from history"
"Discord DM never defers and never re-arms"
So a DM proactive post would route replies correctly (the DM channel id is a stable session key), but the bot's own posted message could not be recovered as context on the first reply — the proactive-post amnesia bug would remain open for DMs. Rather than ship a tool whose DM path has weaker context guarantees than its channel path, DM support was deferred.
What closing this needs
Either:
A new context-recovery mechanism for flat conversations (e.g. seed the proactive session's transcript with the posted message at post time), or
An explicitly-documented, accepted weaker guarantee for DM proactive posts.
Plus the tool surface (user_id parameter, DM channel opening) and ACL parity (AllowDirectMessages, AllowedUserIds) adapted to Discord.
Summary
send_discord_message(added in #953) is channel-only — it posts to a Discord text channel and creates a thread off the message so user replies route back to a live session. It cannot proactively DM a Discord user. This issue tracks adding auser_id/ DM target.Why DM support was deferred
The proactive-post amnesia fix relies on the deferred thread-history hydration path: the bot's posted message becomes the thread root, and on the first authorized reply the binding actor fetches that root from Discord server-side history and adopts it as context (mirrors how
send_slack_messageworks).Discord DMs are a flat conversation with no distinct thread root. The
thread-history-backfillcapability already documents this — see its spec scenarios:So a DM proactive post would route replies correctly (the DM channel id is a stable session key), but the bot's own posted message could not be recovered as context on the first reply — the proactive-post amnesia bug would remain open for DMs. Rather than ship a tool whose DM path has weaker context guarantees than its channel path, DM support was deferred.
What closing this needs
Either:
Plus the tool surface (
user_idparameter, DM channel opening) and ACL parity (AllowDirectMessages,AllowedUserIds) adapted to Discord.Related
send_discord_messageproactive-post tool (channel-only)add-discord-proactive-post—design.md"Decision: Channel-only scope — DM proactive posting deferred" records this rationaleopenspec/specs/thread-history-backfill/spec.md— Discord DM limitation scenarios