ForgeFX Research Brief · 19 August 2026

Reset One Hermes Session Inside One Slack Thread

What Slack permits, how Hermes scopes sessions, why the current ForgeFX build has a command-routing conflict, and the safest operational answer.

Bottom lineReset the busy ForgeBase thread after its handoff. Do not reset the whole channel. Hermes is designed to reset the session bound to the current Slack thread, leaving every other thread untouched.@ForgeBot !new nowImportant: that is the intended and current-upstream syntax. The deployed ForgeFX build needs a small routing fix before this exact command is reliable under its strict first-token mention policy.
1Thread affected
0Other threads affected
2×Prior compressions
NoneAutomatic reset policy

Recommendation

Yes, reset this thread

The thread completed a handoff and Hermes warned that two compressions may reduce accuracy. This is exactly when a clean conversation boundary is useful. The old transcript remains stored and searchable; /new rotates active context rather than deleting history.

No, do not use a channel-root reset

A root-level native /new does not erase all Slack threads. It targets the root/channel session key available to that command, so it also does not reliably reset the intended child thread. Restarting the gateway is broader, disruptive, and the wrong abstraction.

What the Commands Actually Do

!new / !reset

Best choice inside Slack threads. Slack blocks app-created slash commands in thread composers, so Hermes accepts a leading bang command and routes it through the same reset handler.

/clear

Starts a fresh session too, but its extra “clear the screen” meaning is CLI-specific. It provides no useful Slack advantage over !new.

/compress

Preserves continuity while summarizing older context. It is not a reset and not a privacy delete. After repeated compression warnings, a handoff plus fresh session is safer.

/restart

Restarts the entire gateway process. It can interrupt unrelated work and does not substitute for rotating one thread’s conversation session.

Why Other Threads Stay Intact

Hermes builds a deterministic session key from the platform, Slack channel, and thread timestamp. For a Slack thread, the key has the conceptual shape:

agent:main:slack:group:<channel-id>:<thread-ts>

Resetting replaces the session ID attached to that one key. Different thread timestamps produce different keys. Threads are shared among participants by default, so a reset affects everyone collaborating inside that thread, but not sibling threads. The ForgeFX config separately keeps ordinary non-thread channel sessions isolated per user.

The ForgeFX-Specific Conflict

The installed ForgeFX configuration requires the exact ForgeBot mention to be the first token: mention_must_be_first: true. The installed adapter version rewrites commands only when the raw message itself begins with !. That creates a collision:

  • !new begins correctly for the bang parser but is rejected by the mention-first gate.
  • @ForgeBot !new passes the mention gate but the installed adapter does not yet classify the later bang token as a command.

Latest upstream Hermes explicitly supports and tests mention-prefixed thread commands such as @Hermes !new. The correct local fix is to normalize a known bang/slash command immediately after the qualifying first mention, while preserving the mention evidence for ForgeFX’s ownership gate.

Evidence

SourceFindingConfidence
Slack developer documentationDeveloper-created slash commands cannot be invoked in message threads. This is a Slack limitation, not a Hermes configuration problem.High · primary
Hermes Slack documentationUse the !cmd alternate prefix in threads; Hermes converts known bang commands to their slash-command equivalents and replies in the same thread.High · primary
Hermes slash-command reference/new and /reset create a fresh session; current docs state that mention-prefixed forms such as @Hermes !stop work in threads.High · primary
Hermes sessions documentationSession history remains in SQLite for search/resume. Compression reduces active context; it does not erase history.High · primary
Installed Hermes source: session key builder and reset handlerSlack thread IDs are part of the session key. Reset rotates only that key and clears its cached agent, queues, overrides, approvals, and session-scoped state.High · local code
ForgeBase threadThe thread had two compression warnings, then a verified handoff. A fresh boundary is operationally appropriate.High · internal
ForgeFX live configuration and installed adapterAutomatic reset mode is none; strict mention and mention-first are enabled. The local bang parser and first-token gate currently conflict.High · local runtime

Safe Rollout

  1. Patch the Slack adapter so @ForgeBot !new now becomes a real /new now command after the qualifying first mention.
  2. Add regression tests proving the command resets the current thread key and leaves sibling thread keys unchanged.
  3. Restart the gateway once, then run @ForgeBot !new now in the ForgeBase thread and verify the returned session ID changed.
  4. Keep automatic reset disabled unless a deliberate idle/daily policy is wanted. Compression already handles normal long-running continuity.

External

Slack’s primary docs establish the thread slash-command limitation. Hermes’s primary docs and current upstream tests establish the bang-prefix workaround and mention-prefixed command support.

Internal

The source Slack thread establishes the repeated-compression trigger and completed handoff. The installed Hermes version, local source, and ForgeFX configuration establish the deployment-specific routing conflict and current no-auto-reset policy.