hermes - ✅(Solved) Fix /reasoning status ignores per-platform show_reasoning override [2 pull requests, 1 comments, 2 participants]

Official PRs (…)
ON THIS PAGE

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
NousResearch/hermes-agent#11903Fetched 2026-04-18 05:58:23
View on GitHub
Comments
1
Participants
2
Timeline
4
Reactions
0
Timeline (top)
cross-referenced ×2commented ×1referenced ×1

PR fix notes

PR #11948: fix: /reasoning status should respect per-platform show_reasoning override

Description (problem / solution / changelog)

Fixes #11903

The _handle_reasoning_command method only reads the global display.show_reasoning key via _load_show_reasoning(), ignoring per-platform overrides in display.platforms.<platform>.show_reasoning. Response rendering already uses resolve_display_setting() for per-platform resolution (line 3621).

Fix: In the status display path (/reasoning without args), use resolve_display_setting() to get the effective per-platform value so the command reports the correct state for the current platform.

With config like:

display:
  show_reasoning: false
  platforms:
    telegram:
      show_reasoning: true

Running /reasoning from Telegram now correctly shows **Display:** on ✓ instead of **Display:** off.

Changed files

  • gateway/run.py (modified, +13/-1)

PR #11959: fix(gateway): respect platform reasoning display state

Description (problem / solution / changelog)

Summary

  • make /reasoning status resolve show_reasoning with the same per-platform override logic used by normal response rendering
  • keep the command output aligned with the effective runtime display state for the current platform
  • add regression coverage for a Telegram-specific display.platforms.telegram.show_reasoning override

Verification

  • source venv/bin/activate && pytest -q tests/gateway/test_reasoning_command.py::TestReasoningCommand::test_reasoning_command_status_uses_platform_show_reasoning_override tests/gateway/test_reasoning_command.py

Closes #11903

Changed files

  • gateway/run.py (modified, +12/-1)
  • tests/gateway/test_reasoning_command.py (modified, +27/-0)

Code Example

display:
  show_reasoning: false
  platforms:
    telegram:
      show_reasoning: true
RAW_BUFFERClick to expand / collapse

Bug Description

/reasoning status reports the wrong display state when a platform-specific display.platforms.<platform>.show_reasoning override is set. _handle_reasoning_command("/reasoning") reloads state via _load_show_reasoning(), but _load_show_reasoning() only reads the global display.show_reasoning key.

Affected Files / Lines

  • gateway/run.py:1181-1189
  • gateway/run.py:5667-5733
  • Related behavior: response rendering already resolves per-platform display settings separately in gateway/run.py:3625-3636

Why this is a bug

The command UI can tell the user **Display:** off even when the current platform is actually configured to show reasoning. That makes the command self-contradictory and confusing right after a per-platform toggle.

Minimal Reproduction

With config.yaml containing:

display:
  show_reasoning: false
  platforms:
    telegram:
      show_reasoning: true

Run /reasoning from Telegram.

Observed in repo-local repro:

  • REASONING_DISPLAY_LINE **Display:** off

Expected Behavior

For a Telegram event, /reasoning should report the effective per-platform state (on ✓ in this config).

Actual Behavior

The status command only reflects the global fallback key and reports off.

Suggested Investigation Direction

Make the status path use the same per-platform resolution logic as normal response rendering. A regression test around a platform override would keep the command and runtime behavior aligned.

extent analysis

TL;DR

Update the _load_show_reasoning() function to consider platform-specific overrides for display.show_reasoning when determining the display state.

Guidance

  • Review the gateway/run.py file, specifically lines 1181-1189 and 5667-5733, to understand how the _handle_reasoning_command("/reasoning") and _load_show_reasoning() functions interact.
  • Compare the logic in _load_show_reasoning() with the per-platform display settings resolution in gateway/run.py:3625-3636 to identify the discrepancy.
  • Modify the _load_show_reasoning() function to incorporate the same per-platform resolution logic as the response rendering code.
  • Create a regression test to ensure the command and runtime behavior remain aligned when using platform-specific overrides.

Example

def _load_show_reasoning(platform=None):
    # existing code to load global display.show_reasoning
    # ...
    if platform and 'platforms' in display_config and platform in display_config['platforms']:
        return display_config['platforms'][platform].get('show_reasoning', global_show_reasoning)
    return global_show_reasoning

Notes

The provided code snippet is a hypothetical example and may require adjustments to fit the actual implementation. The key idea is to make the _load_show_reasoning() function aware of platform-specific overrides.

Recommendation

Apply a workaround by modifying the _load_show_reasoning() function to consider platform-specific overrides, as this will directly address the reported issue and provide the correct display state for the /reasoning command.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING