Skip to content

Two separate clarify timeout config keys cause silent CLI auto-decide after 120s #25859

@explainanalyze

Description

@explainanalyze

There are two independent clarify-response timeout knobs in ~/.hermes/config.yaml, and they govern different code paths:

Key Path Default Read by
agent.clarify_timeout Gateway (Telegram, Discord, Slack, etc.) 600 tools/clarify_gateway.py:get_clarify_timeout()
clarify.timeout CLI / TUI 120 hermes_cli/callbacks.py:clarify_callback() via CLI_CONFIG["clarify"]["timeout"] (also cli.py:9947)

Symptoms

  • User raises agent.clarify_timeout to a longer value to stop the agent from auto-deciding on long interactive walkthroughs (e.g. review-concierge-style workflows where per-item verification can run 5-15 min).
  • Gateway sessions correctly respect the new timeout.
  • CLI/TUI sessions still auto-decide after 120s because clarify.timeout falls back to its own default in cli.py:367-369.
  • The documentation (website/docs/user-guide/messaging/telegram.md:921) only mentions agent.clarify_timeout, so users have no reason to suspect a second key exists.

Reproduction

  1. Set agent.clarify_timeout: 5000 in ~/.hermes/config.yaml.
  2. Start a CLI session, trigger a clarify prompt, wait.
  3. After ~120s, prompt times out with (clarify timed out after 120s - agent will decide).

Suggested fixes (pick one)

  1. Consolidate - have hermes_cli/callbacks.py read agent.clarify_timeout first, then fall back to clarify.timeout, then to the hardcoded default. Single source of truth for users.
  2. Document the split - keep both keys but cross-reference them in the config reference and the Telegram docs, and surface the CLI key in hermes config output.
  3. Rename - move CLI key to cli.clarify_timeout and gateway key to gateway.clarify_timeout; alias old keys for one release.

Affected files

  • cli.py:367-369 (default), cli.py:9947
  • hermes_cli/callbacks.py:26
  • tools/clarify_gateway.py:231-247
  • website/docs/user-guide/messaging/telegram.md:921

Related gotcha

CLI_CONFIG is loaded once at module import (cli.py:620), so any timeout change requires a session restart to take effect. Worth noting in whichever doc gets updated.

Hermes v0.13.0 (2026.5.7) on macOS.

Metadata

Metadata

Assignees

No one assigned

    Labels

    P2Medium — degraded but workaround existsarea/configConfig system, migrations, profilescomp/cliCLI entry point, hermes_cli/, setup wizardcomp/gatewayGateway runner, session dispatch, deliverytype/bugSomething isn't working

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions