Skip to content

fix(slack): keep status line on legacy assistant.threads.setStatus - #113698

Open
palol wants to merge 1 commit into
NousResearch:mainfrom
palol:fix/slack-thinking-status-regression
Open

palol wants to merge 1 commit into
NousResearch:mainfrom
palol:fix/slack-thinking-status-regression

Conversation

@palol

@palol palol commented Sep 17, 2026

Copy link
Copy Markdown

Problem

Since the Agent Sessions API routing landed (commit a5522f69c0), the Slack
"thinking" status line silently stopped rendering. On slack-sdk 3.44+, the adapter
prefers agents.sessions.setStatus, but that endpoint's status parameter is a
closed enum (active|processing|suspended|closed) with no free-text field.

Hermes sends free text ("is thinking...", "still working… (2m03s)") and "" to
clear, so every call returns invalid_arguments: must be a valid enum value [json-pointer:/status], which _set_thread_status swallows at logger.debug.

Repro (live bot token):

  • agents.sessions.setStatus(status="is thinking...") -> invalid_arguments
  • agents.sessions.setStatus(status="") -> invalid_arguments (the clear path)
  • agents.sessions.setStatus(status="processing") -> ok
  • assistant.threads.setStatus(status="is thinking...") -> ok:true (legacy accepts free text)

Fix

Keep the status line on the legacy assistant.threads.setStatus (free-text
capable, supported until the Feb 2027 assistant-view deprecation). Route only the
title through agents.sessions.rename.

  • plugins/platforms/slack/adapter.py: _session_status_method now always returns
    client.assistant_threads_setStatus, with a comment stating the WHY (enum-only API).
  • tests/gateway/test_slack.py: the two Agent-Sessions status tests now assert the
    status stays on the legacy method even when the SDK exposes agent sessions (red on
    base, green with the fix). Title-via-rename tests unchanged.
  • website/docs/user-guide/messaging/slack.md: corrected the two places that claimed
    the status call routes through agents.sessions.setStatus.

Test plan

scripts/run_tests.sh tests/gateway/test_slack.py — 244 passed, 0 failed, 1 skipped.

agents.sessions.setStatus (Agent Sessions API, slack-sdk 3.44+) takes a closed
enum (active|processing|suspended|closed) with no free-text field, so Hermes'
free-text status verbs ("is thinking...", "still working… (2m03s)") and the
empty-string clear all fail with invalid_arguments and the status line silently
never renders. Route only the title through agents.sessions.rename; keep the
status line on assistant.threads.setStatus, which accepts free text and is
supported until the Feb 2027 assistant-view deprecation.
@alt-glitch alt-glitch added type/bug Something isn't working P3 Low — cosmetic, nice to have comp/plugins Plugin system and bundled plugins platform/slack Slack app adapter duplicate This issue or pull request already exists labels Sep 17, 2026
@alt-glitch

Copy link
Copy Markdown

This was generated by AI during triage.

Duplicate of #110391. Both PRs unconditionally keep free-text status on assistant.threads.setStatus and change the same adapter/tests; #110391 is the earlier PR by the original issue reporter. This PR's docs correction can be folded into that canonical PR.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

comp/plugins Plugin system and bundled plugins duplicate This issue or pull request already exists P3 Low — cosmetic, nice to have platform/slack Slack app adapter type/bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants