hermes - ✅(Solved) Fix [Bug]: /config terminal.timeout value does not match value in config.yaml nor TERMINAL_TIMEOUT env variable [2 pull requests, 2 comments, 2 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#16723Fetched 2026-04-28 06:51:15
View on GitHub
Comments
2
Participants
2
Timeline
11
Reactions
0
Timeline (top)
labeled ×4commented ×2cross-referenced ×2mentioned ×1

Error Message

Additional Logs / Traceback (optional)

Root Cause

Root Cause Analysis (optional)

PR fix notes

PR #16807: fix(cli): show effective terminal timeout in /config

Description (problem / solution / changelog)

What does this PR do?

Fixes the interactive CLI /config display so the Terminal section uses the terminal settings already loaded by Hermes config before falling back to TERMINAL_* environment variables.

This addresses a case where /config could show Timeout: 60s even though config.yaml and hermes config show reported terminal.timeout: 3600.

Related Issue

Fixes #16723

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

  • Updated HermesCLI.show_config() to read terminal backend / env_type, cwd, and timeout from the loaded CLI config first.
  • Kept environment variables as a fallback when a value is not present in config.
  • Added regression tests for config/env timeout mismatch and backend taking precedence over legacy env_type.

How to Test

  1. source /Users/blackishgreen03/workspace/hermes-agent/venv/bin/activate && python -m pytest tests/cli/test_cli_init.py -q
  2. Result: 28 passed
  3. Full suite was attempted with python -m pytest tests/ -q, but this local environment is not clean for the whole repository: it fails with missing optional packages such as acp, numpy, and fastapi, plus many unrelated existing gateway/web/tool failures (16556 passed, 117 skipped, 191 failed, 66 errors).

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 pytest tests/ -q and all tests pass
  • I've added tests for my changes (required for bug fixes, strongly encouraged for features)
  • I've tested on my platform: macOS, Python 3.11 using the existing local repo venv

Documentation & Housekeeping

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

For New Skills

N/A

Screenshots / Logs

Targeted test:

28 passed in 11.83s

Changed files

  • cli.py (modified, +19/-4)
  • tests/cli/test_cli_init.py (modified, +38/-0)

PR #16840: fix(cli): show effective terminal timeout in /config

Description (problem / solution / changelog)

Summary

  • read terminal backend/cwd/timeout from effective loaded config in /config display
  • keep env values as fallback only, so /config no longer reports stale default timeout values
  • align displayed timeout with config.yaml loaded runtime settings

Test plan

  • Inspect /config implementation path and config load precedence
  • Validate output logic now uses effective config values
  • Run Hermes CLI and compare /config timeout against hermes config show

Made with Cursor

Changed files

  • cli.py (modified, +14/-4)

Code Example

⚙️  /config

+--------------------------------------------------+
|               (^_^) Configuration                |
+--------------------------------------------------+

  -- Model --
  Model:     gemma4:e4b
  Base URL:  http://192.168.86.48:11434/v1
  API Key:   Not set!

  -- Terminal --
  Environment:  docker
  Working Dir:  /opt/hermes
  Timeout:      60s

  -- Agent --
  Max Turns:  90
  Toolsets:   browser, clarify, code_execution, cronjob, delegation, file, image_gen, memory, messaging, session_search, skills, terminal, todo, tts, vision, web
  Verbose:    False

  -- Session --
  Started:     2026-04-27 21:52:00
  Config File: /opt/data/config.yaml (loaded)

---

terminal:
  backend: docker
  modal_mode: auto
  cwd: .
  timeout: 3600

---

hermes@729406ccdeaf:/opt/hermes$ echo $TERMINAL_TIMEOUT
3600

hermes@729406ccdeaf:/opt/hermes$ /opt/hermes/.venv/bin/hermes config show

┌─────────────────────────────────────────────────────────┐
│              ⚕ Hermes Configuration└─────────────────────────────────────────────────────────┘

Paths
  Config:       /opt/data/config.yaml
  Secrets:      /opt/data/.env
  Install:      /opt/hermes

API Keys
  OpenRouter     (not set)
  OpenAI (STT/TTS) (not set)
  Exa            (not set)
  Parallel       (not set)
  Firecrawl      (not set)
  Tavily         (not set)
  Browserbase    (not set)
  Browser Use    (not set)
  FAL            (not set)
  Anthropic      (not set)

Model
  Model:        {'default': 'gemma4:e4b', 'provider': 'custom', 'base_url': 'http://192.168.86.48:11434/v1'}
  Max turns:    90

Display
  Personality:  kawaii
  Reasoning:    off
  Bell:         off
  User preview: first 2 line(s), last 2 line(s)

Terminal
  Backend:      docker
  Working dir:  .
  Timeout:      3600s
  Docker image: nikolaik/python-nodejs:python3.11-nodejs20

Timezone
  Timezone:     (server-local)

Context Compression
  Enabled:      yes
  Threshold:    50%
  Target ratio: 20% of threshold preserved
  Protect last: 20 messages
  Model:        (auto)

Messaging Platforms
  Telegram:     not configured
  Discord:      not configured

────────────────────────────────────────────────────────────
  hermes config edit     # Edit config file
  hermes config set <key> <value>
  hermes setup           # Run setup wizard

---

N/A

---
RAW_BUFFERClick to expand / collapse

Bug Description

Hermes v0.11.0 (2026.4.23) official docker image.

From hermes CLI:

⚙️  /config

+--------------------------------------------------+
|               (^_^) Configuration                |
+--------------------------------------------------+

  -- Model --
  Model:     gemma4:e4b
  Base URL:  http://192.168.86.48:11434/v1
  API Key:   Not set!

  -- Terminal --
  Environment:  docker
  Working Dir:  /opt/hermes
  Timeout:      60s

  -- Agent --
  Max Turns:  90
  Toolsets:   browser, clarify, code_execution, cronjob, delegation, file, image_gen, memory, messaging, session_search, skills, terminal, todo, tts, vision, web
  Verbose:    False

  -- Session --
  Started:     2026-04-27 21:52:00
  Config File: /opt/data/config.yaml (loaded)

From config.yaml:

terminal:
  backend: docker
  modal_mode: auto
  cwd: .
  timeout: 3600

From docker exec -it -u hermes hermes-cli /bin/bash:

hermes@729406ccdeaf:/opt/hermes$ echo $TERMINAL_TIMEOUT
3600

hermes@729406ccdeaf:/opt/hermes$ /opt/hermes/.venv/bin/hermes config show

┌─────────────────────────────────────────────────────────┐
│              ⚕ Hermes Configuration                    │
└─────────────────────────────────────────────────────────┘

◆ Paths
  Config:       /opt/data/config.yaml
  Secrets:      /opt/data/.env
  Install:      /opt/hermes

◆ API Keys
  OpenRouter     (not set)
  OpenAI (STT/TTS) (not set)
  Exa            (not set)
  Parallel       (not set)
  Firecrawl      (not set)
  Tavily         (not set)
  Browserbase    (not set)
  Browser Use    (not set)
  FAL            (not set)
  Anthropic      (not set)

◆ Model
  Model:        {'default': 'gemma4:e4b', 'provider': 'custom', 'base_url': 'http://192.168.86.48:11434/v1'}
  Max turns:    90

◆ Display
  Personality:  kawaii
  Reasoning:    off
  Bell:         off
  User preview: first 2 line(s), last 2 line(s)

◆ Terminal
  Backend:      docker
  Working dir:  .
  Timeout:      3600s
  Docker image: nikolaik/python-nodejs:python3.11-nodejs20

◆ Timezone
  Timezone:     (server-local)

◆ Context Compression
  Enabled:      yes
  Threshold:    50%
  Target ratio: 20% of threshold preserved
  Protect last: 20 messages
  Model:        (auto)

◆ Messaging Platforms
  Telegram:     not configured
  Discord:      not configured

────────────────────────────────────────────────────────────
  hermes config edit     # Edit config file
  hermes config set <key> <value>
  hermes setup           # Run setup wizard

Steps to Reproduce

  1. Update config.yaml and set terminal.timeout to 3600.
  2. Remove existing docker container
  3. Start hermes cli in new docker container docker run -it --name hermes-cli --group-add 999 -v /var/run/docker.sock:/var/run/docker.sock -v ~/docker/volumes/hermes/:/opt/data -e AGENT_BROWSER_EXECUTABLE_PATH=/opt/hermes/.playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell -e TERMINAL_TIMEOUT=3600 nousresearch/hermes-agent
  4. Check /config
  5. Also check env variable and run hermes config show in interactive session while attached to the running container.

Expected Behavior

terminal.timeout values to match.

Actual Behavior

In hermes cli, /config shows terminal.timeout 60s instead of 3600s.

Affected Component

CLI (interactive chat)

Messaging Platform (if gateway-related)

No response

Debug Report

N/A

Operating System

Docker

Python Version

No response

Hermes Version

v0.11.0 (2026.4.23

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

extent analysis

TL;DR

The terminal.timeout value in the Hermes CLI configuration is not being updated correctly, showing 60s instead of the expected 3600s.

Guidance

  • The discrepancy between the terminal.timeout values in config.yaml (3600) and the Hermes CLI output (60s) suggests a potential issue with how the configuration is being loaded or parsed.
  • Verify that the config.yaml file is being loaded correctly by checking the hermes config show output, which also shows the correct terminal.timeout value of 3600s.
  • Check the environment variable TERMINAL_TIMEOUT inside the container, which is set to 3600, to ensure it's not being overridden somewhere.
  • Investigate the Hermes CLI code to see how it loads and displays the terminal.timeout value, as it might be using a different source or default value.

Example

No code example is provided as the issue seems to be related to configuration loading or parsing, and without more information about the Hermes CLI code, it's difficult to provide a specific example.

Notes

The fact that hermes config show displays the correct terminal.timeout value suggests that the issue might be specific to the /config command in the Hermes CLI.

Recommendation

Apply workaround: manually set the terminal.timeout value using the hermes config set command to ensure it's updated correctly, until the root cause of the issue is identified and fixed.

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]: /config terminal.timeout value does not match value in config.yaml nor TERMINAL_TIMEOUT env variable [2 pull requests, 2 comments, 2 participants]