hermes - ✅(Solved) Fix [Bug]: the optional parameter "-t" does not work in "hermes -t web chat", but works in "hermes chat -t web ". [4 pull requests, 1 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

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#28780Fetched 2026-05-20 04:02:04
View on GitHub
Comments
0
Participants
1
Timeline
8
Reactions
0
Participants
Timeline (top)
cross-referenced ×4labeled ×3referenced ×1

Error Message

Expected Behavior

the toolsets list shall only enable the web toolset, or "hermes -t web chat" shall lead to an error mesasge like "hermes: error: argument command: invalid parameters...".

Actual Behavior

"hermes -t web chat" works exactly same to "hermes chat", which is strange.

If you do not pay special attention to check the toolset list , the hermes will work in a way not expected by you.

It will misdirect the user.

Affected Component

CLI (interactive chat)

Messaging Platform (if gateway-related)

No response

Debug Report

Root Cause

I GUESS the potential root cause may lead to some more risky issues.

Fix Action

Fix / Workaround

() browser [13 tools] - Browser automation for web interaction (navigate, click, type, scroll, iframes, hold-click) with web search for finding URLs browser-cdp [ 2 tools] - Plugin toolset: browser-cdp () clarify [ 1 tools] - Ask the user clarifying questions (multiple-choice or open-ended) () code_execution [ 1 tools] - Run Python scripts that call tools programmatically (reduces LLM round trips) () computer_use [ 1 tools] - Background macOS desktop control via cua-driver — screenshots, mouse, keyboard, scroll, drag. Does NOT steal the user's cursor or keyboard focus. Works with any tool-capable model. () cronjob [ 1 tools] - Cronjob management tool - create, list, update, pause, resume, remove, and trigger scheduled tasks debugging [ 8 tools] - Debugging and troubleshooting toolkit () delegation [ 1 tools] - Spawn subagents with isolated context for complex subtasks discord [ 1 tools] - Discord read and participate tools (fetch messages, search members, create threads) discord_admin [ 1 tools] - Discord server management (list channels/roles, pin messages, assign roles) feishu_doc [ 1 tools] - Read Feishu/Lark document content feishu_drive [ 4 tools] - Feishu/Lark document comment operations (list, reply, add) () file [ 4 tools] - File manipulation tools: read, write, patch (with fuzzy matching), and search (content + files) hermes-acp [29 tools] - Editor integration (VS Code, Zed, JetBrains) — coding-focused tools without messaging, audio, or clarify UI hermes-api-server [35 tools] - OpenAI-compatible API server — full agent tools accessible via HTTP (no interactive UI tools like clarify or send_message) hermes-bluebubbles [48 tools] - BlueBubbles iMessage bot toolset - Apple iMessage via local BlueBubbles server hermes-cli [48 tools] - Full interactive CLI toolset - all default tools plus cronjob management hermes-cron [48 tools] - Default cron toolset - same core tools as hermes-cli; gated by hermes tools hermes-dingtalk [48 tools] - DingTalk bot toolset - enterprise messaging platform (full access) hermes-discord [50 tools] - Discord bot toolset - full access (terminal has safety checks via dangerous command approval) hermes-email [48 tools] - Email bot toolset - interact with Hermes via email (IMAP/SMTP) hermes-feishu [53 tools] - Feishu/Lark bot toolset - enterprise messaging via Feishu/Lark (full access) hermes-gateway [60 tools] - Gateway toolset - union of all messaging platform tools hermes-homeassistant [48 tools] - Home Assistant bot toolset - smart home event monitoring and control hermes-matrix [48 tools] - Matrix bot toolset - decentralized encrypted messaging (full access) hermes-mattermost [48 tools] - Mattermost bot toolset - self-hosted team messaging (full access) hermes-qqbot [48 tools] - QQBot toolset - QQ messaging via Official Bot API v2 (full access) hermes-signal [48 tools] - Signal bot toolset - encrypted messaging platform (full access) hermes-slack [48 tools] - Slack bot toolset - full access for workspace use (terminal has safety checks) hermes-sms [48 tools] - SMS bot toolset - interact with Hermes via SMS (Twilio) hermes-telegram [48 tools] - Telegram bot toolset - full access for personal use (terminal has safety checks) hermes-webhook [48 tools] - Webhook toolset - receive and process external webhook events hermes-wecom [48 tools] - WeCom bot toolset - enterprise WeChat messaging (full access) hermes-wecom-callback [48 tools] - WeCom callback toolset - enterprise self-built app messaging (full access) hermes-weixin [48 tools] - Weixin bot toolset - personal WeChat messaging via iLink (full access) hermes-whatsapp [48 tools] - WhatsApp bot toolset - similar to Telegram (personal messaging, more trusted) hermes-yuanbao [53 tools] - Yuanbao Bot 元宝消息平台工具集 - 群信息、成员查询、私聊、贴纸表情 homeassistant [ 4 tools] - Home Assistant smart home control and monitoring () image_gen [ 1 tools] - Creative generation tools (images) () kanban [ 9 tools] - Kanban multi-agent coordination — only active when the agent is spawned by the kanban dispatcher (HERMES_KANBAN_TASK env set). The dispatcher runs inside the gateway by default; see kanban.dispatch_in_gateway in config.yaml. Lets workers mark tasks done with structured handoffs, block for human input, heartbeat during long ops, comment on threads, and (for orchestrators) list, unblock, and fan out tasks. () memory [ 1 tools] - Persistent memory across sessions (personal notes + user profile) () messaging [ 1 tools] - Cross-platform messaging: send messages to Telegram, Discord, Slack, SMS, etc. () minimax-coding-plan-mcp [ 6 tools] - MCP server 'minimax-coding-plan-mcp' tools () minimax-mcp [12 tools] - MCP server 'minimax-mcp' tools moa [ 1 tools] - Advanced reasoning and problem-solving tools rl [10 tools] - RL training tools for running reinforcement learning on Tinker-Atropos safe [ 4 tools] - Safe toolkit without terminal access search [ 1 tools] - Web search only (no content extraction/scraping) () session_search [ 1 tools] - Search and recall past conversations with summarization shadow_tools [ 2 tools] - Plugin toolset: shadow_tools () skills [ 3 tools] - Access, create, edit, and manage skill documents with specialized instructions and knowledge spotify [ 7 tools] - Native Spotify playback, search, playlist, album, and library tools () terminal [ 2 tools] - Terminal/command execution and process management tools () todo [ 1 tools] - Task planning and tracking for multi-step work () tts [ 1 tools] - Text-to-speech: convert text to audio with Edge TTS (free), ElevenLabs, OpenAI, or xAI video [ 1 tools] - Video analysis and understanding tools (opt-in, not in default toolset) video_gen [ 1 tools] - Video generation tools. Single video_generate tool covers text-to-video (prompt only) and image-to-video (prompt + image_url) — the active backend auto-routes. Configure via hermes tools → Video Generation. () vision [ 1 tools] - Image analysis and vision tools () web [ 2 tools] - Web research and content extraction tools yuanbao [ 5 tools] - Yuanbao platform tools - group info, member queries, DM, stickers

PR fix notes

PR #28795: fix(cli): preserve -t/-m/--provider/--tui/--dev before chat subcommand

Description (problem / solution / changelog)

What does this PR do?

Fixes hermes -t web chat (and the sibling -m, --provider, --tui, --dev placements before the chat subcommand) silently dropping the flag value. Reported in #28780 for -t/--toolsets; the other four are sibling failures with the same root cause and are fixed in the same commit.

Root cause. The chat subparser re-declared these flags with default=None (or default=False for store_true) on top of the matching top-level parser flags. When argparse dispatches into the subparser it shares the namespace via dest, so the subparser's default overwrites whatever the top-level parser parsed before the subcommand. -s/--skills, -r/-c/-w, --yolo, and --pass-session-id already use default=argparse.SUPPRESS for exactly this reason — the chat-subparser action becomes a no-op unless the user explicitly passes the flag after chat, and the parent value survives. This PR extends the same fix to the remaining offenders.

Reproduction (origin/main, before fix):

>>> parser.parse_known_args(["-t", "web", "chat"]).toolsets
None
>>> parser.parse_known_args(["chat", "-t", "web"]).toolsets
'web'

After fix both calls return 'web'.

Audited siblings: contract test test_chat_subparser_inherited_value_flags_use_suppress scans every chat-subparser action whose dest is also on the top-level parser and asserts default is argparse.SUPPRESS. It fails on origin/main listing all five offenders (-m/--model, -t/--toolsets, --provider, --tui, --dev) and passes after this fix, so no widening needed.

Related Issue

Fixes #28780

Type of Change

  • Bug fix (non-breaking change that fixes an issue)
  • New feature (non-breaking change that adds functionality)
  • Security fix
  • Documentation update
  • Tests (adding or improving test coverage)
  • Refactor (no behavior change)
  • New skill (bundled or hub)

Changes Made

  • hermes_cli/_parser.py — switched chat subparser's -m/--model, -t/--toolsets, --provider, --tui, --dev declarations from default=None/default=False to default=argparse.SUPPRESS, matching the pattern already used for -s/--skills and the relaunch-inherited flags. Added a comment block explaining the SUPPRESS rationale.
  • tests/hermes_cli/test_argparse_flag_propagation.py — added TestChatSubparserInheritedValueFlags that imports the real build_top_level_parser (not the hand-rolled replica higher in the file) so future drift to default=None would re-fail. Covers: parametrized before-chat / after-chat cases for each value flag; negative case where no flag is passed; combined case with all three value flags; store_true cases for --tui and --dev; and a contract test asserting every shared-dest chat flag uses SUPPRESS.

How to Test

  1. Reproduce the bug on origin/main:
    uv run --with pytest --with pytest-xdist --with pytest-asyncio python3 -m pytest tests/hermes_cli/test_argparse_flag_propagation.py::TestChatSubparserInheritedValueFlags -v
    On origin/main 9 of the 15 new tests fail (the 6 after-chat cases were already passing because the bug only affects the before-chat position). After the fix, all 15 pass.
  2. Run the full file plus adjacent CLI suites — both clean:
    uv run --with pytest --with pytest-xdist --with pytest-asyncio python3 -m pytest tests/hermes_cli/test_argparse_flag_propagation.py tests/hermes_cli/test_apply_profile_override.py tests/hermes_cli/test_ignore_user_config_flags.py tests/hermes_cli/test_tui_resume_flow.py tests/hermes_cli/test_setup_model_provider.py tests/hermes_cli/test_regression_16767.py tests/hermes_cli/test_tool_token_estimation.py tests/hermes_cli/test_tools_config.py tests/hermes_cli/test_setup_noninteractive.py tests/hermes_cli/test_banner.py tests/hermes_cli/test_gmi_provider.py tests/hermes_cli/test_config_drift.py tests/hermes_cli/test_tools_disable_enable.py
    29 + 67 + 156 = 252 tests pass locally on macOS 15 (Python 3.11.14).
  3. Smoke-check the user's exact reported invocation — hermes -t web chat and verify /toolsets shows only web enabled.

Checklist

Code

  • I've read the Contributing Guide
  • My commit messages follow Conventional Commits (fix(scope):, feat(scope):, etc.)
  • I searched for existing PRs to make sure this isn't a duplicate
  • My PR contains only changes related to this fix/feature (no unrelated commits)
  • I've run focused tests for the touched code and all pass
  • I've added tests for my changes (required for bug fixes, strongly encouraged for features)
  • I've tested on my platform: macOS 15.x

Documentation & Housekeeping

  • I've updated relevant documentation (README, docs/, docstrings) — N/A (inline comment added in _parser.py)
  • I've updated cli-config.yaml.example if I added/changed config keys — N/A (no config keys touched)
  • I've updated CONTRIBUTING.md or AGENTS.md if I changed architecture or workflows — N/A
  • I've considered cross-platform impact (Windows, macOS) per the compatibility guide — argparse behavior is platform-independent
  • I've updated tool descriptions/schemas if I changed tool behavior — N/A

Changed files

  • hermes_cli/_parser.py (modified, +20/-5)
  • tests/hermes_cli/test_argparse_flag_propagation.py (modified, +117/-0)

PR #28799: fix(cli): preserve pre-subcommand flags across the chat subparser (#28780)

Description (problem / solution / changelog)

What does this PR do?

hermes -t web chat silently parses identically to hermes chat — all default toolsets are still enabled rather than just web — even though hermes chat -t web works correctly. The same silent clobber affects -m/--model, --provider, --tui, and --dev (e.g. hermes -m gpt5 chat ignores the model override).

Root cause. Those flags are defined on both the top-level parser (so they work with -z/--oneshot and --tui) and on the chat subparser (so the natural hermes chat -t web works). The chat subparser's defaults were None / False, which argparse applies after the top-level parse — overwriting args.toolsets (and friends) whenever the user put the flag before chat.

Fix. Set default=argparse.SUPPRESS on the five duplicated chat-subparser flags so an absent post-subcommand occurrence leaves the top-level value intact. Mirrors the pattern already used by --resume, --continue, --yolo, --ignore-user-config, etc., which were unaffected by the bug.

Behaviour after the fix:

InvocationBeforeAfter
hermes -t web chattoolsets=Nonetoolsets="web"
hermes chat -t webtoolsets="web"toolsets="web"
hermes -m gpt5 chatmodel=Nonemodel="gpt5"
hermes --provider openai chatprovider=Noneprovider="openai"
hermes --tui chattui=Falsetui=True
hermes -t web chat -t clitoolsets="cli"toolsets="cli" ✅ (post-subcommand still wins)

Related Issue

Fixes #28780

Type of Change

  • 🐛 Bug fix (non-breaking change that fixes an issue)
  • ✨ New feature (non-breaking change that adds functionality)
  • 🔒 Security fix
  • 📝 Documentation update (help text)
  • ✅ Tests (adding or improving test coverage)
  • ♻️ Refactor (no behavior change)
  • 🎯 New skill (bundled or hub)

Changes Made

  • hermes_cli/_parser.py — Set default=argparse.SUPPRESS on the chat subparser's -m/--model, -t/--toolsets, --provider, --tui, and --dev arguments so pre-subcommand values are no longer clobbered. Updated the top-level help text for -m, --provider, and -t to explicitly say they work before or after chat.
  • tests/hermes_cli/test_pre_subcommand_flags.py — 27 new tests covering: each affected flag in both positions, post-overrides-pre semantics, composition of all five flags stacked pre-subcommand, regression coverage for the already-working SUPPRESS'd flags (-r, -c, -w, -s, --yolo, --ignore-user-config), and a structural contract test asserting the chat subparser uses argparse.SUPPRESS for these flags.

How to Test

Reproduce the bug on main:

hermes -t web chat
# In the CLI:
/toolsets
# Expected (per issue): only 'web' is enabled.
# Actual on main:       every default toolset is enabled.

After this PR:

hermes -t web chat
/toolsets   # ← shows only the 'web' toolset enabled
exit

hermes -m gpt5 chat                            # model override works pre-subcommand
hermes --provider openai chat                  # provider override works pre-subcommand
hermes --tui chat                              # TUI launches pre-subcommand
hermes chat -t web                             # post-subcommand still works (unchanged)
hermes -t web chat -t cli                      # post wins ("cli") — explicit override

Automated coverage:

scripts/run_tests.sh tests/hermes_cli/test_pre_subcommand_flags.py -q
# 27 passed in 1.19s

The broader tests/hermes_cli/ suite was also exercised — every failure observed (PTY/systemd/kanban-DB tests) is a pre-existing platform-incompatibility flake on macOS and also fails identically on upstream/main without this PR. The parser fix introduces zero new failures.

Checklist

Code

  • I've read the Contributing Guide
  • My commit messages follow Conventional Commits (fix(cli):, test(cli):)
  • I searched for existing PRs to make sure this isn't a duplicate
  • My PR contains only changes related to this fix
  • I've run the relevant tests locally and they pass
  • I've added tests for my changes (27 new regression tests)
  • Tested on my platform: macOS 15.2 (Darwin 24.6.0)

Documentation & Housekeeping

  • Updated relevant help text (-m, --provider, -t now explicitly mention they work before or after chat)
  • N/A — no config keys added or changed
  • N/A — no architecture or workflow changes
  • N/A — argparse fix is platform-independent
  • N/A — no tool descriptions / schemas changed

Screenshots / Logs

Direct argparse trace before the fix:

>>> sys.argv = ['hermes', '-t', 'web', 'chat']
>>> args, _ = parser.parse_known_args()
>>> args.toolsets
None        # ← bug: top-level value silently dropped

After the fix:

>>> sys.argv = ['hermes', '-t', 'web', 'chat']
>>> args, _ = parser.parse_known_args()
>>> args.toolsets
'web'       # ← top-level value preserved

Changed files

  • hermes_cli/_parser.py (modified, +33/-8)
  • tests/hermes_cli/test_pre_subcommand_flags.py (added, +242/-0)

PR #13: fix(cli): make -t/--toolsets work before the chat subcommand (#28780)

Description (problem / solution / changelog)

🟢 Merge order: 1 / 12 — trivial, 1-line change, zero risk

Closes #28780 (P2)

Problem

hermes -t web chat silently ignored the -t flag. The top-level parser consumed -t web but the chat subparser's default of None overwrote it.

Fix

Use argparse.SUPPRESS as the default for the chat_parser's -t flag so it only sets toolsets when explicitly provided, letting the parent parser's value survive.

Risk assessment

FactorRating
Lines changed1
New code0
Side effectsNone — SUPPRESS only affects argparse namespace
Revert complexityTrivial

Files changed

  • hermes_cli/_parser.py (+1/-1)

Changed files

  • hermes_cli/_parser.py (modified, +1/-1)

PR #28907: fix(cli): make -t/--toolsets work before subcommand (fixes #28780)

Description (problem / solution / changelog)

Fixes #28780

Problem

hermes -t web chat ignores the -t flag and enables all toolsets, while hermes chat -t web correctly enables only web.

Root Cause

Argparse creates separate namespaces for the main parser and the chat subparser. When -t web is placed before chat, the main parser correctly parses it and sets toolsets='web'. However, the subparser's add_argument("-t", ..., default=None) sets a default of None which overwrites the parent's value in the shared namespace.

Solution

After parser.parse_args(), if args.command == 'chat' and args.toolsets is None, scan _processed_argv for -t/--toolsets appearing before the chat token. If found, recover the value.

Files Changed

FileChange
hermes_cli/main.pyPost-parse fallback: recover -t value from raw argv if subparser overwrote it
tests/cli/test_toolsets_argparse_fix.pyRegression test covering both argument orderings

Test Results

hermes -t web chat     → toolsets='web'  ✓
hermes chat -t web     → toolsets='web'  ✓
hermes chat            → toolsets=None   ✓
hermes -t web chat -q  → toolsets='web'  ✓

All 736 existing CLI tests pass.

Changed files

  • hermes_cli/main.py (modified, +12/-0)
  • tests/cli/test_toolsets_argparse_fix.py (added, +49/-0)

Code Example

### Expected Behavior

the toolsets list shall only enable the web toolset, or  "hermes -t web chat" shall lead to an error mesasge like "hermes: error: argument command: invalid parameters...". 

### Actual Behavior

"hermes -t web chat" works exactly same to "hermes chat", which is strange.

If you do not pay special attention to check the toolset list , the hermes will work in a way not expected by you.

It will misdirect the user. 



### Affected Component

CLI (interactive chat)

### Messaging Platform (if gateway-related)

_No response_

### Debug Report

---

### Operating System

Ubuntu 24.04

### Python Version

3.11.15

### Hermes Version

v0.13.0 (2026.5.7)

### Additional Logs / Traceback (optional)
RAW_BUFFERClick to expand / collapse

Bug Description

"hermes -t web chat" works exactly same to "hermes chat", which is strange.

I GUESS the potential root cause may lead to some more risky issues.

Steps to Reproduce

  1. use "hermes -t web chat" and get into hermes chat.
  2. /toolsets and check the list. Now we can see the -t paramter does not work. All the default toolsets are enabled, which is not expected.
+----------------------------------------------------------+
|                (^_^)b Available Toolsets                 |
+----------------------------------------------------------+

  (*) browser            [13 tools] - Browser automation for web interaction (navigate, click, type, scroll, iframes, hold-click) with web search for finding URLs
      browser-cdp        [ 2 tools] - Plugin toolset: browser-cdp
  (*) clarify            [ 1 tools] - Ask the user clarifying questions (multiple-choice or open-ended)
  (*) code_execution     [ 1 tools] - Run Python scripts that call tools programmatically (reduces LLM round trips)
  (*) computer_use       [ 1 tools] - Background macOS desktop control via cua-driver — screenshots, mouse, keyboard, scroll, drag. Does NOT steal the user's cursor or keyboard focus. Works with any tool-capable model.
  (*) cronjob            [ 1 tools] - Cronjob management tool - create, list, update, pause, resume, remove, and trigger scheduled tasks
      debugging          [ 8 tools] - Debugging and troubleshooting toolkit
  (*) delegation         [ 1 tools] - Spawn subagents with isolated context for complex subtasks
      discord            [ 1 tools] - Discord read and participate tools (fetch messages, search members, create threads)
      discord_admin      [ 1 tools] - Discord server management (list channels/roles, pin messages, assign roles)
      feishu_doc         [ 1 tools] - Read Feishu/Lark document content
      feishu_drive       [ 4 tools] - Feishu/Lark document comment operations (list, reply, add)
  (*) file               [ 4 tools] - File manipulation tools: read, write, patch (with fuzzy matching), and search (content + files)
      hermes-acp         [29 tools] - Editor integration (VS Code, Zed, JetBrains) — coding-focused tools without messaging, audio, or clarify UI
      hermes-api-server  [35 tools] - OpenAI-compatible API server — full agent tools accessible via HTTP (no interactive UI tools like clarify or send_message)
      hermes-bluebubbles [48 tools] - BlueBubbles iMessage bot toolset - Apple iMessage via local BlueBubbles server
      hermes-cli         [48 tools] - Full interactive CLI toolset - all default tools plus cronjob management
      hermes-cron        [48 tools] - Default cron toolset - same core tools as hermes-cli; gated by `hermes tools`
      hermes-dingtalk    [48 tools] - DingTalk bot toolset - enterprise messaging platform (full access)
      hermes-discord     [50 tools] - Discord bot toolset - full access (terminal has safety checks via dangerous command approval)
      hermes-email       [48 tools] - Email bot toolset - interact with Hermes via email (IMAP/SMTP)
      hermes-feishu      [53 tools] - Feishu/Lark bot toolset - enterprise messaging via Feishu/Lark (full access)
      hermes-gateway     [60 tools] - Gateway toolset - union of all messaging platform tools
      hermes-homeassistant [48 tools] - Home Assistant bot toolset - smart home event monitoring and control
      hermes-matrix      [48 tools] - Matrix bot toolset - decentralized encrypted messaging (full access)
      hermes-mattermost  [48 tools] - Mattermost bot toolset - self-hosted team messaging (full access)
      hermes-qqbot       [48 tools] - QQBot toolset - QQ messaging via Official Bot API v2 (full access)
      hermes-signal      [48 tools] - Signal bot toolset - encrypted messaging platform (full access)
      hermes-slack       [48 tools] - Slack bot toolset - full access for workspace use (terminal has safety checks)
      hermes-sms         [48 tools] - SMS bot toolset - interact with Hermes via SMS (Twilio)
      hermes-telegram    [48 tools] - Telegram bot toolset - full access for personal use (terminal has safety checks)
      hermes-webhook     [48 tools] - Webhook toolset - receive and process external webhook events
      hermes-wecom       [48 tools] - WeCom bot toolset - enterprise WeChat messaging (full access)
      hermes-wecom-callback [48 tools] - WeCom callback toolset - enterprise self-built app messaging (full access)
      hermes-weixin      [48 tools] - Weixin bot toolset - personal WeChat messaging via iLink (full access)
      hermes-whatsapp    [48 tools] - WhatsApp bot toolset - similar to Telegram (personal messaging, more trusted)
      hermes-yuanbao     [53 tools] - Yuanbao Bot 元宝消息平台工具集 - 群信息、成员查询、私聊、贴纸表情
      homeassistant      [ 4 tools] - Home Assistant smart home control and monitoring
  (*) image_gen          [ 1 tools] - Creative generation tools (images)
  (*) kanban             [ 9 tools] - Kanban multi-agent coordination — only active when the agent is spawned by the kanban dispatcher (HERMES_KANBAN_TASK env set). The dispatcher runs inside the gateway by default; see `kanban.dispatch_in_gateway` in config.yaml. Lets workers mark tasks done with structured handoffs, block for human input, heartbeat during long ops, comment on threads, and (for orchestrators) list, unblock, and fan out tasks.
  (*) memory             [ 1 tools] - Persistent memory across sessions (personal notes + user profile)
  (*) messaging          [ 1 tools] - Cross-platform messaging: send messages to Telegram, Discord, Slack, SMS, etc.
  (*) minimax-coding-plan-mcp [ 6 tools] - MCP server 'minimax-coding-plan-mcp' tools
  (*) minimax-mcp        [12 tools] - MCP server 'minimax-mcp' tools
      moa                [ 1 tools] - Advanced reasoning and problem-solving tools
      rl                 [10 tools] - RL training tools for running reinforcement learning on Tinker-Atropos
      safe               [ 4 tools] - Safe toolkit without terminal access
      search             [ 1 tools] - Web search only (no content extraction/scraping)
  (*) session_search     [ 1 tools] - Search and recall past conversations with summarization
      shadow_tools       [ 2 tools] - Plugin toolset: shadow_tools
  (*) skills             [ 3 tools] - Access, create, edit, and manage skill documents with specialized instructions and knowledge
      spotify            [ 7 tools] - Native Spotify playback, search, playlist, album, and library tools
  (*) terminal           [ 2 tools] - Terminal/command execution and process management tools
  (*) todo               [ 1 tools] - Task planning and tracking for multi-step work
  (*) tts                [ 1 tools] - Text-to-speech: convert text to audio with Edge TTS (free), ElevenLabs, OpenAI, or xAI
      video              [ 1 tools] - Video analysis and understanding tools (opt-in, not in default toolset)
      video_gen          [ 1 tools] - Video generation tools. Single ``video_generate`` tool covers text-to-video (prompt only) and image-to-video (prompt + image_url) — the active backend auto-routes. Configure via ``hermes tools`` → Video Generation.
  (*) vision             [ 1 tools] - Image analysis and vision tools
  (*) web                [ 2 tools] - Web research and content extraction tools
      yuanbao            [ 5 tools] - Yuanbao platform tools - group info, member queries, DM, stickers

  (*) = currently enabled

  Tip: Use 'all' or '*' to enable all toolsets
  Example: python cli.py --toolsets web,terminal


⚙️  /toolsets

Expected Behavior

the toolsets list shall only enable the web toolset, or "hermes -t web chat" shall lead to an error mesasge like "hermes: error: argument command: invalid parameters...".

Actual Behavior

"hermes -t web chat" works exactly same to "hermes chat", which is strange.

If you do not pay special attention to check the toolset list , the hermes will work in a way not expected by you.

It will misdirect the user.

Affected Component

CLI (interactive chat)

Messaging Platform (if gateway-related)

No response

Debug Report

Report     https://paste.rs/Xc5yu
agent.log  https://paste.rs/GVuH4

Operating System

Ubuntu 24.04

Python Version

3.11.15

Hermes Version

v0.13.0 (2026.5.7)

Additional Logs / Traceback (optional)

Root Cause Analysis (optional)

No response

Proposed Fix (optional)

No response

Are you willing to submit a PR for this?

  • I'd like to fix this myself and submit a PR

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

hermes - ✅(Solved) Fix [Bug]: the optional parameter "-t" does not work in "hermes -t web chat", but works in "hermes chat -t web ". [4 pull requests, 1 participants]