Skip to content

fix(discord): restore auto-threading in free-response channels - #13958

Closed
chhotu-claw wants to merge 1 commit into
NousResearch:mainfrom
chhotu-claw:fix/discord-free-response-auto-thread
Closed

chhotu-claw wants to merge 1 commit into
NousResearch:mainfrom
chhotu-claw:fix/discord-free-response-auto-thread

Conversation

@chhotu-claw

Copy link
Copy Markdown

Summary

  • restore Discord auto-thread creation for free-response channels
  • keep discord.no_thread_channels as the explicit inline-reply escape hatch
  • update Discord docs so mention-free and no-thread behavior are documented separately

Test Plan

  • python3 -m pytest tests/gateway/test_discord_free_response.py::test_discord_free_channel_still_auto_threads -q
  • PYTHONPATH="/tmp${PYTHONPATH:+:$PYTHONPATH}" source "$HOME/.hermes/hermes-agent/venv/bin/activate" && PYTHONPATH="/tmp${PYTHONPATH:+:$PYTHONPATH}" scripts/run_tests.sh tests/gateway/test_discord_free_response.py tests/gateway/test_discord_channel_controls.py -q

Fixes #12750

@alt-glitch alt-glitch added P1 High — major feature broken, no workaround type/bug Something isn't working platform/discord Discord bot adapter comp/gateway Gateway runner, session dispatch, delivery labels Apr 22, 2026
@teknium1 teknium1 added sweeper:risk-session-state Sweeper risk: may lose/corrupt/mis-associate session or context state sweeper:risk-message-delivery Sweeper risk: may drop, duplicate, misroute, or suppress messages sweeper:risk-compatibility Sweeper risk: may break existing users, config, migrations, defaults, or upgrades sweeper:blast-moderate Sweeper blast radius: moderate — a subsystem or single platform labels Jun 29, 2026
@teknium1

Copy link
Copy Markdown
Collaborator

Thanks for the careful work here — clean diff, test, and docs all moved together.

We're going to keep the current behavior (free-response channels reply inline, auto-threading skipped) and close this one. The reasoning:

The skip_thread = ... or is_free_channel line this PR removes wasn't an accidental regression — it was a deliberate fix (commit 232f507, "fix(discord): keep free-response channels inline"). The intent: a free-response channel is a lightweight chat surface, and spawning a brand-new thread per message turns it into a thread machine. The docs at the time already documented "skip auto-threading," and there's a regression test (test_discord_free_response_channel_skips_auto_thread) guarding it. So this PR would reverse a documented, test-guarded behavior.

The underlying tension in #12750 is real, though: one user wants free-response and threads. The right fix is to decouple the two concerns rather than flip the global default — keep free-response inline, and let someone who wants threads opt in explicitly (e.g. listing the channel under discord.auto_thread / a dedicated opt-in) instead of coupling threading to the mention gate. We'll track that as the real follow-up.

Note also the branch is stale: gateway/platforms/discord.py has since moved to plugins/platforms/discord/adapter.py, so it wouldn't apply cleanly regardless.

Appreciate the contribution — closing as we're keeping the inline default, not because the work was wrong.

@teknium1 teknium1 closed this Jun 30, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

comp/gateway Gateway runner, session dispatch, delivery P1 High — major feature broken, no workaround platform/discord Discord bot adapter sweeper:blast-moderate Sweeper blast radius: moderate — a subsystem or single platform sweeper:risk-compatibility Sweeper risk: may break existing users, config, migrations, defaults, or upgrades sweeper:risk-message-delivery Sweeper risk: may drop, duplicate, misroute, or suppress messages sweeper:risk-session-state Sweeper risk: may lose/corrupt/mis-associate session or context state type/bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: Discord - Hermes no longer responds in threads

3 participants