All issues labeled as bugs by the maintainers. Sourced from the official GitHub repo; status derived from official labels; every entry links back to its source with a last-checked date.
#58345 Workaround P2 comp/agent [Bug]: xAI grok-4.3 drops optional multiline string args from MCP tool calls — AgentMail sends blank emails (docs recommend the affected combo)
On xai-oauth with grok-4.3, optional multiline string args are dropped from MCP tool calls, causing AgentMail to send blank emails while reporting success.
#58327 Fixed P1 comp/agent [Bug]: Context compression breaks tool message chain, causing "role 'tool' must be a response to a preceding message with 'tool_calls'" on strict providers
Context compression could orphan tool messages by dropping their assistant tool_calls message, causing HTTP 400 on strict providers like DeepSeek. Closed.
#58322 Investigating P3 comp/plugins Langfuse traces emit service.name=unknown_service when observability.service_name is unset
When the Langfuse observability plugin is enabled without observability.service_name configured, traces fall back to service.name=unknown_service, making it impossible to attribute traces to a specific agent.
#58320 Investigating P3 comp/tools web_search/web_extract fail silently - no clear user guidance on failure
web_search and web_extract fail silently or return empty results when no web backend API key is configured, without any indication to the user that search is unavailable.
#58317 Workaround P2 comp/agent Compression crash: AttributeError 'dict' object has no attribute 'count' in _summarize_tool_result
Context compression crashes with AttributeError: 'dict' object has no attribute 'count' when a write_file tool result's content argument is parsed as a dict instead of a string, blocking compression entirely until the context window overflows.
#58309 Workaround P2 comp/desktop Desktop GUI polling spawns new CLI process every 10 seconds, causing repeated plugin discovery
The Desktop GUI spawns a new CLI process roughly every 10 seconds, each running a full plugin discovery cycle, causing excessive log output and unnecessary CPU/disk usage.
#58304 Workaround P2 comp/desktop Bug: Desktop startup stalls indefinitely after unclean TUI exit while using a local model endpoint
When a user points /model at a local loopback endpoint and exits the TUI uncleanly, the session's ended_at stays NULL, causing the next Desktop launch to synchronously retry the dead endpoint and block the backend event loop for 60-100+ seconds, producing a startup timeout.
#58299 Workaround P2 comp/gateway send_message_tool drops home.thread_id on bare platform targets (messages land in DM lobby instead of home topic)
send_message_tool's home-channel fallback only copies home.chat_id and drops home.thread_id, so bare `hermes send --to telegram` calls land in the DM root instead of the configured topic when Telegram DM topic mode is active.
#58298 Workaround P2 comp/agent Subagent delegation ignores config, always uses credential-pool model (glm-4-flash)
Subagent delegation ignores the configured provider/model and always falls back to glm-4-flash from the credential pool, confirmed across 5 test scenarios including one where delegation config was empty and should have inherited the parent's model.
#58290 Workaround P2 comp/cli [Bug]: using /model xxx --provider xxx will automaticlly change the config.yaml, and I never input the --global
Sending /model xxx --provider xxx via feishu changes the default model/provider in config.yaml even without the --global flag, when it should only affect the runtime session.
#58281 Workaround P2 comp/tools [Bug]: [Bug]: Disabling the `coding` toolset silently strips explicitly-enabled `terminal`/`file` tools — model receives Tools: 0
When agent.disabled_toolsets includes a composite toolset like coding, Hermes subtracts all of its tools even from toolsets the user explicitly enabled (terminal, file), silently resulting in zero tools sent to the model with no warning.
#58277 Workaround P2 comp/cli [Bug]: Empty YAML key (terminal:) in profile config.yaml crashes load_cli_config with TypeError
An empty terminal: key in a profile's config.yaml is parsed by YAML as None, which load_cli_config() fails to fall back to {} for, causing a TypeError that crashes the agent before the first conversation turn.
#58275 Investigating P3 comp/desktop `hermes desktop` launcher doesn't detach on Windows — leaks Electron/Python zombies and dies when parent shell closes
On Windows, hermes desktop launches Electron as a child process inheriting the parent PowerShell console, so closing the parent shell kills the Desktop app, and child process logs (including garbled encoding errors) flood the user's terminal.
#58270 Fixed P1 comp/gateway fix(telegram): updater.stop() in reconnect ladder hangs on CLOSE-WAIT sockets — heartbeat loop stuck for hours
The Telegram reconnect handler's updater.stop() call has no timeout, so when the underlying TCP socket is stuck in CLOSE-WAIT the polling task never wakes up, permanently blocking reconnect attempts and silently dropping messages for hours until a manual restart.
#58269 Investigating P3 comp/plugins [feishu] Remove outdated table-to-text fallback — post(md) now supports GFM tables
The Feishu adapter forces any message containing markdown table syntax into plain text type (stripping all formatting), based on an outdated 2026-04 assumption; the reporter's live testing suggests Feishu's post type now renders GFM tables correctly, making the fallback unnecessary.
#58265 Workaround P2 comp/cli Config `provider`-key warning storms concurrent-log-handler on Windows → serve/gateway event-loop stall
On Windows, a benign unknown provider config key triggers a warning on every load_picker_context() call, and the resulting log volume deadlocks concurrent-log-handler's cross-process lock, stalling the asyncio event loop for ~14s at a time and dropping desktop/TUI WebSockets while /health stays green.
#58259 Fixed P2 comp/gateway Telegram typing indicator persists for full cron job lifetime, not just until message delivery
Duplicate report of the Telegram cron-job typing indicator persisting for the full subprocess lifetime instead of stopping at message delivery; closed as a duplicate.
#58258 Workaround P2 comp/gateway Telegram typing indicator persists for full cron job lifetime, not just until message delivery
A cron job's Telegram delivery keeps the typing indicator active for the entire lifetime of the job's subprocess rather than stopping once the delivery message is sent, which can last 30-60+ minutes for long-running jobs.
#58251 Investigating P3 comp/desktop Desktop: removed composer attachments resurrect on session switch
Removing a composer attachment in Hermes Desktop only updates the in-memory store, not localStorage, so the attachment reappears after switching sessions and switching back.
#58237 Workaround P2 comp/dashboard [Bug]: Dashboard auto-SSO redirect 500s when only basic auth provider is configured
When the Hermes Dashboard is bound to a non-loopback address with only basic_auth configured, visiting the root URL 500s because the auto-redirect calls the SSO start_login() path, which basic auth (password-only) doesn't implement.
#58236 Fixed P1 comp/gateway Gateway hangs indefinitely on Telegram connect (attempt 1/8) — asyncio.wait_for never fires under s6 supervision
The Telegram gateway adapter hangs indefinitely at connect attempt 1/8 with the 30s asyncio.wait_for timeout never firing, but only under s6-overlay supervision per the reporter's diagnostics.
#58231 Workaround P2 comp/agent [Bug] minimax-oauth provider requires API key env var despite being OAuth
When minimax-oauth is configured for auxiliary.title_generation, Hermes still tries to load a MINIMAX-OAUTH_API_KEY env var instead of using the existing OAuth token auth, causing title generation to fail.
#58226 Workaround P2 comp/agent [Bug]: Anthropic OAuth usage renders low-usage windows as 100% used (utilization ≤1 wrongly scaled ×100)
The /usage dashboard misreports a barely-used Anthropic OAuth account as 100% used because the code incorrectly multiplies an already-percentage utilization value by 100 when it is <= 1.
#58215 Investigating P3 comp/tui Desktop: discovered_repos cache leaks across all profiles
Desktop's filesystem scanner broadcasts all discovered git repos to every profile's database due to a replace=True handler, so switching profiles shows repos belonging to other profiles.
#58207 Workaround P2 comp/dashboard [Bug]: Dashboard OAuth provider login fails in gated mode because startOAuthLogin requires legacy session token
In gated dashboard auth mode, clicking the Nous Portal provider login inside an already-authenticated dashboard fails before calling the backend because the frontend requires a legacy session token that is intentionally absent.
#58200 Workaround P2 comp/agent [Bug]: Trajectory files are not created in CLI / TUI / Gateway
Setting agent.save_trajectories: true in config.yml per the documentation does not produce any *.jsonl trajectory files, because the code never checks this config option.
#58185 Workaround P2 comp/agent [Bug]: /model picker for Bedrock offers bare foundation-model IDs that 400 on on-demand accounts (and persists them)
The Bedrock /model picker lists non-invokable bare foundation-model IDs alongside inference-profile IDs, and selecting one persists it to config.yaml, causing every subsequent call to 400; the setup wizard already dedupes this but the picker path does not.
#58184 Workaround P2 comp/gateway cronjob deliver=origin 不稳定:Yuanbao WS断连时投递失败
## 现象
在 Yuanbao 平台创建 cronjob 时用 `deliver=origin`,投递时好时坏。看日志基本就是两种结果:
1. 正常投递(live adapter 路径命中)
2.
#58175 Workaround P2 comp/gateway Signal group messages rejected by _is_user_authorized despite passing adapter-level filter
Signal group messages that pass the adapter-level filter are still rejected by _is_user_authorized because Platform.SIGNAL is missing from the platform_group_user_env_map dict used for group authorization.
#58172 Workaround P2 comp/cli [Setup]: hermes update causes unbounded .git directory growth on long-running VPS
Every hermes update pull adds git objects without cleaning up old ones, causing unbounded .git directory growth (884MB after months) that can push a long-running VPS's disk usage to risky levels.
#58168 Fixed P1 comp/agent Bug: Context compaction produces invalid message sequences (orphaned tool messages), breaking sessions permanently
The trajectory compressor produces invalid message sequences with orphaned tool messages after context compaction, permanently breaking long-running sessions with a DeepSeek API 400 error.
#58166 Workaround P2 comp/dashboard fix(dashboard-auth): GET /auth/login?provider=basic returns HTTP 500 (NotImplementedError in BasicAuthProvider.start_login)
When the dashboard uses the built-in basic auth provider, the GET /auth/login?provider=basic redirect returns HTTP 500 instead of the login form because BasicAuthProvider.start_login() always raises NotImplementedError.
#58150 Workaround P2 comp/cli [Bug]: Hermes use window nodejs instead of its built-in node
Hermes on Windows uses the system's installed Node.js instead of its bundled version when the system Node.js is updated, causing version mismatches and terminal window flashing.
#58149 Investigating P3 tool/web [Bug] unbroker skill field-test: web_extract limits, broker jurisdiction gap, subagent ledger reliability, missing broker refs
Field-testing the unbroker skill against a real subject surfaced structural issues: web_extract's DuckDuckGo backend can't fetch arbitrary pages, several brokers are blocked by anti-bot protection from datacenter IPs, and some brokers are missing reference JSON files.
#58135 Workaround P2 comp/agent [Bug]: `is_container()` false-positives on hosts running Docker containers (containerd markers in mountinfo), making `home_mode: auto` subprocess HOME non-deterministic — breaks browser auto-launch with "Chrome not found"
is_container() misidentifies a host as running inside a container when Docker containers using the containerd snapshotter are present, because it scans mountinfo for markers that also appear in overlay mounts on the host; the cached false result destabilizes home_mode: auto and can break browser auto-launch.
#58117 Workaround P2 comp/agent Thinking blocks cause blank text responses in CLI mode + infinite heartbeat loops
When a model uses thinking blocks (e.g. DeepSeek), the agent's text response fails to reach the user in CLI mode, causing wasted API cost and infinite loops in cron/heartbeat jobs; disabling thinking blocks works around it but isn't configurable.
#58116 Fixed P2 comp/gateway bug: platforms.weixin.enabled: false ignored when WEIXIN_* env vars are present
Setting platforms.weixin.enabled: false in config.yaml does not stop the gateway from connecting to WeChat/iLink when WEIXIN_* environment variables are present. This issue is now closed.
#58105 Workaround P2 comp/agent [Bug]: Message routing bug - User input sent to wrong session
In Hermes TUI, user input typed in one session is sometimes routed to and answered by a different session instead of the currently active one.
#58100 Workaround P2 comp/cli [Bug]: get_env_value_prefer_dotenv returns None when get_secret returns None instead of falling through to os.environ
get_env_value_prefer_dotenv() returns None when get_secret() finds no match, instead of falling through to os.environ, preventing secrets injected via Bitwarden Secrets Manager from being resolved.
#58087 Workaround P2 comp/agent Bug: finish_reason='length' triggers spurious continuation retries on short complete responses (Ollama/GLM provider)
When the agent produces a short but complete final response, the finish_reason == 'length' truncation handler spuriously fires a continuation prompt, causing the same short response to be resent 2-3 times on Telegram.
#58081 Workaround P2 comp/gateway [Bug] Responses API: compressed transcript not stored in ResponseStore, causing re-compression loop
When context compression fires during a /v1/responses conversation chained via previous_response_id, the compressed transcript isn't stored correctly in ResponseStore, so history keeps growing and re-triggers compression on every subsequent request.
#58049 Workaround P2 comp/gateway v0.18.0: QQBot adapter fails to connect - QQAdapter.connect() missing is_reconnect parameter
After upgrading to v0.18.0, the QQ Bot adapter fails to connect with an unexpected is_reconnect keyword error because gateway/run.py now passes that parameter to all adapters, but the QQ Bot adapter was not updated to accept it.
#58032 Workaround P2 comp/gateway Bug: multiplex_profiles: false leaves orphaned sessions that cause wrong profile routing
Turning off gateway.multiplex_profiles does not clean up stale profile sessions in the shared state.db, so the gateway keeps routing messages to a disabled profile.
#58010 Fixed P1 comp/gateway AsyncSessionDB breaks /resume — missing await in slash_commands.py
AsyncSessionDB wraps SessionDB methods as async coroutines, but slash_commands.py calls them without await, causing /resume to crash with a TypeError. This issue is now closed.
#57903 Fixed P2 comp/agent async LLM calls block the desktop WebSocket loop via busy-poll in interruptible_*_api_call
After extensive investigation, the actual cause of desktop WebSocket loop stalls was found to be GIL contention from the Anthropic SDK's streaming consumer parsing thousands of SSE chunks, not the originally suspected busy-poll. This issue is now closed.
[Bug]: Envelope-layout cache breakpoints silently no-op during tool loops (tool messages skipped, empty-assistant markers ignored) — ~2x input cost on OpenRouter + Claude
On the OpenRouter/envelope cache layout, cache breakpoints get placed on tool and empty-assistant messages that cannot carry an effective cache marker, silently disabling caching for most of an agentic conversation and roughly doubling input cost. This issue is now closed.
#57836 Fixed P2 comp/gateway [Bug]: Headless MCP OAuth blocks gateway startup with stale cached tokens
A non-interactive gateway run can stay stuck in MCP OAuth discovery for the full browser-callback timeout when token refresh fails, and retries then fail because the callback port is still in use. This issue is now closed.
#57749 Investigating P3 comp/dashboard dashboard-auth.log grows without rotation
The dashboard-auth.log file is written via plain append with no size cap or rotation, unlike other log files in the system, causing it to grow unbounded on busy dashboards.
#57740 Investigating P3 comp/agent PII (email/SSN) persisted unredacted in the session JSON transcript export
The redaction logic covers secrets like API keys and tokens but has no coverage for generic PII such as email addresses or SSNs, and the opt-in JSON transcript export writes such values unredacted.
#57739 Workaround P2 comp/gateway [Bug]: macOS gateway enters restart loop — hardcoded --replace in launchd plist and incorrect exit code on SIGTERM
On macOS, when an external trigger kills the Hermes gateway process, it enters an infinite restart loop of roughly 8-10 second cycles, logging 400+ SIGTERM events in a single session.
#57736 Workaround P2 comp/cron HERMES_CRON_SESSION set process-globally: interactive gateway sessions inherit cron approval policy after any cron runs
The cron scheduler sets HERMES_CRON_SESSION as a process-global environment variable, so once any cron job runs, all subsequent interactive gateway sessions in the same process are misclassified as cron sessions by the approval layer, permanently blocking execute_code under the default deny policy.
#57735 Workaround P2 tool/terminal redact_secrets rewrites executed command text (corrupts Authorization headers / inline code), not just logs
Enabling security.redact_secrets rewrites secret-shaped substrings inside the actual command text sent to the shell or interpreter, not just in logs, corrupting commands that legitimately contain credential-like strings.
#57705 Investigating P3 comp/cli [Bug]How do I add this address model API? I get an error when I try to add it, and it doesn't work
The reporter states they get an error and the feature does not work when trying to add a specific address model API, with only a link and a screenshot attached and no further description.
#57581 Fixed P3 comp/tools [Bug]: Plugin-registered web providers can't be selected via web.extract_backend
Setting web.extract_backend to a provider name registered by a plugin is silently ignored, and web_extract() dispatches to a different auto-detected backend instead of honoring the plugin or raising an error. This issue is now closed.
#57228 Workaround P2 comp/agent MCP stdio subprocesses leak on reconnect in long-lived workers (orphans accumulate until DB contention)
Long-lived Hermes worker processes accumulate orphaned MCP stdio subprocesses over time (53 in the reported case), causing SQLite DB handle contention and intermittent memory tool failures even though health checks report the MCP server as healthy.
#56058 Investigating P3 comp/desktop Bug: Desktop chat model picker persists to global config instead of session-scoped override
Switching models via the desktop chat model picker on Windows persists the change to the global config.yaml instead of scoping it to the current session, contrary to documented behavior.
#55725 Investigating P3 comp/desktop [Bug]: session duplicates under both new worktree group and main group after sidebar worktree creation
After creating a worktree from the sidebar fork button, the session appears under both the new worktree group and the main group until the project view is re-entered.
#55712 Workaround P2 comp/dashboard Remote dashboard session expires due to rotating refresh-token replay
Remote dashboard sessions repeatedly expire around the refresh-token rotation window when accessed from another machine on the LAN.
#55698 Investigating P3 comp/gateway Telegram local Bot API video documents can fail caching with method not found and become empty turns
With a local Bot API server, Telegram video documents can fail caching with 'method not found', producing empty turns despite the file existing locally.
#55697 Workaround P2 tool/file read_file undercounts total_lines and can silently drop the last line of a file without a trailing newline
read_file undercounts total_lines for files without a trailing newline and can silently drop the last line at a page boundary while reporting the read as complete.
#55677 Fixed P2 comp/agent [Bug] Context compaction fails with 'No user query found in messages' Jinja template error, corrupts session
Context compaction crashed with a Jinja 'No user query found in messages' error on the 2nd/3rd attempt with LMStudio-hosted models, corrupting the session. Closed.
#55658 Workaround P2 comp/desktop [Bug]It cannot be started after updating
The reporter states the application cannot be started after an update, with only a screenshot attached and no textual description.
#55253 Investigating P3 comp/cli Bound OpenAI Codex auth JSON responses
The OpenAI Codex device-auth login flow reads successful JSON responses with unbounded httpx calls, with no byte cap on the response body for several auth endpoints.
#55248 Investigating P3 comp/plugins Bound Codex image SSE parsing
The bundled openai-codex image generation provider parses SSE streams without any local size caps on individual lines, accumulated events, or the overall stream, risking unbounded memory buffering.
#55239 Workaround P2 comp/gateway Slack stale thread sessions suppress reset-time thread context
SlackAdapter checks only whether a session key exists, not whether it would be reset by the configured reset policy, so a Slack thread can lose its expected thread-history reseed after the underlying session actually resets.
#54220 Fixed P2 comp/agent [Tracking] Windows Desktop GUI: console windows (cmd/conhost/git/gh/powershell) flash on subprocess spawns
This tracking issue consolidates roughly 25 reports of console windows (cmd, conhost, git, gh, powershell) flashing on the Windows desktop GUI when its windowless pythonw.exe backend spawns console-subsystem child processes without the no-window flag, and documents which spawn sites are still leaking based on source and git-history verification.
#52914 Workaround P2 comp/gateway [Bug]: fix(qqbot): QQBot adapter.connect() missing is_reconnect parameter causes infinite retry loop
After updating past a specific commit, the QQBot gateway fails to connect and enters an infinite retry loop, because QQAdapter.connect() receives an unexpected 'is_reconnect' keyword argument.
#52523 Fixed P2 comp/cron cron create --no-agent --script ... fails with 'str' object has no attribute 'exists'
On Windows, creating a script-based no-agent cron job via hermes cron create --no-agent --script fails immediately with a 'str' object has no attribute 'exists' error before schedule validation runs.
#52401 Workaround P2 comp/cron Desktop App (macOS): Non-default profile shows sessions and cron jobs from default profile — cross-profile data leak in UI
On the macOS desktop app, a non-default profile shows sessions, channels, and cron jobs belonging to the default profile: a cross-profile data leak in the UI.
[Bug]: /agents TUI slash command does not update subagent completion status — stays stuck on 'running'
The /agents TUI panel stayed stuck on 'running' after subagents finished. Closed.
#52060 Fixed P2 comp/gateway Cron Telegram nudges land in General topic — #22773 DM-topic heuristic mis-classifies threaded-DM forum topics
Since a prior fix (#22773), proactive cron deliveries to a Telegram threaded-DM forum topic land in the General topic instead due to a misclassification in cron/scheduler.py's DM-topic heuristic.
#50663 Fixed P2 comp/agent [Bug]: z.ai limits hermes agent during "peak hours"
z.ai rate limits (429) the Hermes agent during peak hours when using a Max coding plan with glm-5.2, while opencode and Claude on the same account are unaffected; suspected to be based on request signature detection.
#48534 Fixed P1 comp/agent Anthropic Max OAuth fails: token exchange 404s because Anthropic now blocks the claude-cli/ User-Agent
The built-in Anthropic OAuth token exchange fails with HTTP 404 because Anthropic now blocks any request carrying a claude-cli/ User-Agent prefix regardless of version, confirmed by testing multiple User-Agent strings.
#48056 Workaround P2 comp/gateway Telegram DM topic cron delivery falls back out of topic
Cron deliveries targeting a Telegram private DM topic can fail to stay in that topic because the cron path only carries a generic thread_id, missing the metadata the adapter needs for private DM topics.
[Bug] Desktop build fails after update - electronDist does not exist (cache invalidated)
This closed issue reported that Hermes Desktop builds fail again after code updates with an 'electronDist does not exist' error, because the update process clears the Electron binary cache, indicating the fix in PR #47276 was incomplete.
#46755 Investigating P3 comp/tui Desktop update button shows run hermes update from terminal after CLI-based rebuild
The Desktop app's Update button sometimes shows a manual 'run hermes update from terminal' dialog instead of updating directly, because resolveUpdaterBinary() fails to find hermes-setup.exe after a CLI-based rebuild that doesn't recopy it.
#46742 Fixed P2 comp/desktop [Bug]: Build failed in 898ms in Ubuntu 26.04 LTS
Desktop update on Ubuntu 26.04 failed at the vite build step and the desktop app could no longer start, while the CLI kept working. Closed.
#46511 Workaround P2 comp/cron Cron jobs don't fallback when credential pool is exhausted (OAuth providers)
Cron jobs using OAuth-based providers fail with HTTP 429 when the credential pool is exhausted instead of falling back through the configured fallback_providers chain, unlike the main gateway/CLI session.
#45058 Fixed P3 comp/tools web_search/web_extract silently routes to Parallel.ai without user opt-in
This issue reports that a commit changed the default behavior of web_search/web_extract to silently route traffic to Parallel's hosted search.parallel.ai endpoint when no backend is configured, with no user opt-in or prompt, and that follow-up commits hardened this default further. This issue is closed.
#44562 Investigating P3 comp/desktop [BUG] Frontend crash : tapClientLookup Index out of bounds when tool returns unexpected data
Hermes Desktop GUI's frontend crashes with a tapClientLookup: Index out of bounds error and white-screens when tools like skill_manage, memory, or cronjob return an unexpected data structure.
#44022 Fixed P2 comp/gateway [Bug]: Desktop/TUI session.resume fails with "No LLM provider configured" when session only stored a bare billing_provider (e.g. custom)
Resuming any older chat in the Hermes desktop or TUI app fails with "No LLM provider configured" even though the default provider is valid and new chats work fine, while the identical session resumes correctly via the CLI's --resume flag.
#43747 Workaround P2 comp/agent [Bug]: openai-codex credential pool marks healthy later account as usage_limit_reached; auth reset restores operation
Hermes incorrectly marks all openai-codex pooled credentials as rate-limited even when one account still has quota, and running hermes auth reset openai-codex immediately restores normal operation.
#42961 Workaround P2 comp/cli terminal.cwd config ignored for local backend — process cwd always used instead
The terminal.cwd config setting is silently discarded for the local terminal backend because cli.py unconditionally overrides it with the process's launch directory, so it only works for non-local backends.
#42187 Investigating P3 comp/gateway fix: Show Codex gpt-5.5 autoraise notice once per gateway session
This issue reports that the Codex gpt-5.5 compaction-threshold notice can be shown repeatedly within the same durable gateway session when the AIAgent instance is rebuilt, and proposes showing it only once per session.
#40187 Workaround P2 comp/cli [Bug]: Windows desktop app fails to compile during hermes update / hermes desktop
Running hermes update or hermes desktop fails during the final Electron packaging stage; the reporter's title references a Windows desktop app, but the attached build log shows electron-builder packaging for macOS (darwin arm64).
Desktop Working Directory setting does not override stale remembered workspace cwd
In Hermes Desktop, updating the Working Directory setting does not take effect for new sessions if the renderer's localStorage already has a remembered workspace cwd, so new sessions keep starting in the old directory despite config.yaml being updated correctly.
#38448 Workaround P2 comp/cli hermes -z can miss MCP tools because oneshot snapshots tools before MCP discovery
In oneshot mode (hermes -z), the agent's tool list is built before MCP discovery registers dynamic MCP tools/aliases, so tools from configured MCP servers are never available even though they pass hermes mcp test.
Desktop app: pasted screenshots attach duplicate copies
Pasting a screenshot into the Hermes desktop chat composer attaches two duplicate copies instead of one, likely due to duplicate clipboard event handlers firing.
#38240 Investigating P3 tool/skills [skills-index-watchdog] Skills index is stale or degraded (degraded)
An automated freshness probe detected the skills index in a degraded state (github: 0 < 30); this issue is auto-opened by a GitHub Actions workflow and will reopen until the underlying rebuild problem is fixed.
#38129 Investigating P3 comp/cron [Bug]: Cron sessions expose the memory tool but memory is unavailable at runtime
In cron jobs, the memory tool is exposed to the agent but fails at runtime with 'Memory is not available', because cron sessions run with skip_memory=True while still inheriting the memory tool in their default toolset.
send_message tool fails for WhatsApp: @lid JIDs not recognized, home channel fallback, and raw phone numbers cause jidDecode error
Reports three related bugs in WhatsApp send_message: unrecognized @lid JIDs cause silent fallback to the home channel, raw phone numbers trigger a jidDecode error on the bridge, and send_message bypasses the more robust live adapter.
#35876 Workaround P2 comp/agent fix(vision): _resolve_single_provider kwargs regression — fallback_chain silently fails on Gemini quota errors
When Gemini returns a 429 quota error, the vision fallback chain fails silently because _resolve_single_provider does not correctly forward explicit_base_url/explicit_api_key kwargs to resolve_provider_client, so no fallback provider is used.
#34871 Workaround P2 tool/mcp hermes mcp serve crashes with ModuleNotFoundError: No module named 'mcp_serve'
Starting the MCP server after a standard pip install crashes due to a module path issue. Labeled P2 by maintainers, so a workaround exists.
WorkaroundReinstall as a full package, clear stale caches, and restart. After changing config, reset the session so the MCP reloads.
#34860 Workaround P3 tool/skills bundled skill sync can leave stale .bak directories
Skill sync leaves behind stale backup directories. A low-priority P3 cleanup issue that does not affect functionality.
WorkaroundManually remove the stale .bak directories; skills keep working normally.
#34821 No fix yet P1 comp/cli install.ps1 line 2284 throws 'Cannot use -Ensure and -Stage simultaneously' on bare invocation
The Windows installer script has a parameter conflict on bare invocation. Labeled P1, meaning it blocks installation with no official workaround yet.
[Bug] v0.15.0 Docker image: stage2-hook.sh, main-wrapper.sh missing; container_boot module removed
The official v0.15.0 Docker image fails to start with exit code 127: two init scripts (stage2-hook.sh, main-wrapper.sh) present in source but missing from the built image, plus a reference to the hermes_cli.container_boot module that was removed in the v0.15.0 refactor. Issue is closed as fixed.
#33932 Fixed P1 comp/agent OpenAI Codex provider crashes with "'NoneType' object is not iterable" (HTTP None)
Switching to gpt-5.5 via the OpenAI Codex provider (subscription OAuth) crashes on the first user message with "Non-retryable error (HTTP None): 'NoneType' object is not iterable," though fallback then takes over.
#33334 Fixed P3 comp/plugins [Bug]: Database corruption problem with Kanban causing system crash.
Hermes crashes on large tasks that use the Kanban board because SQLite handles concurrent file locking poorly: when multiple subagents write to the same ticket at once, the database becomes corrupted, sometimes shutting down entirely and taking Hermes' own state with it. Issue is closed as fixed.
#33237 Fixed P3 comp/agent openai-codex provider crashes with TypeError: 'NoneType' object is not iterable on every request (chatgpt.com sends output: null in response.completed event)
The openai-codex provider crashes on every request after a gateway restart with a TypeError, because the chatgpt.com Codex endpoint returns output: null in response.completed events, which OpenAI SDK 2.24.0's parser cannot handle; this uncaught error drains the credential pool. Issue is closed as fixed.
#33075 Fixed P3 comp/agent openai-codex/gpt-5.5 still unstable in Hermes v0.14.0: subagents almost always hit APIConnectionError/TTFB timeout while Codex CLI works
Users reported that openai-codex/gpt-5.5 remained highly unstable in Hermes v0.14.0, especially with concurrent subagents hitting connection timeouts, while the official Codex CLI worked fine on the same machine; the issue is now closed.
#32956 Fixed P3 comp/agent [Bug]: Codex Responses streaming crashes with TypeError: 'NoneType' object is not iterable (openai-codex / chatgpt.com backend)
Reporter filed a crash in Codex Responses streaming (TypeError: 'NoneType' object is not iterable) with details provided in an attached file and screenshots rather than in the issue body; this issue is marked as a duplicate.
#32903 Fixed P3 comp/agent openai-codex provider crashes: SDK parse_response fails on null output from Codex backend
This issue reports that Hermes v0.14.0 crashes with a 'NoneType' object is not iterable error under the openai-codex provider with gpt-5.5, root-caused to the OpenAI SDK's parse_response() lacking a null guard when the Codex backend returns output: null. This issue is closed.
#32892 Fixed P3 comp/agent [Bug]: Error: 'NoneType' object is not iterable
This issue reports that Hermes crashes with a 'NoneType' object is not iterable error when using the openai-codex provider with gpt-5.5, aborting as a non-retryable client error. This issue is closed.
#32883 Fixed P2 comp/agent Fix Codex stream None output recovery
This issue documents a reproducible Hermes crash when the OpenAI Codex Responses backend returns response.output = None mid-stream, and proposes patches (backfilling output, fallback to responses.create, guarding output_text access) to make Hermes resilient to it. This issue is closed.
#32373 Fixed P2 comp/agent openai-codex / gpt-5.5 repeatedly produces no first byte after #31967/#32016
Even after the merged Codex timeout fixes (#31967, #32016), openai-codex / gpt-5.5 still frequently stalls with "No first byte from provider in 45s" errors and repeated reconnects, distinct from the earlier stale-timeout issue.
#28823 Workaround P2 comp/gateway [Bug]: WhatsApp: quotedMessageId/context is not forwarded to agent — reply context is lost
The WhatsApp adapter discards quotedMessageId/context metadata when a user replies to a message, so the agent never receives the quoted message's ID or content, making reply-based corrections unreliable.
[Bug]: xAI OAuth loopback on macOS: local callback received, but Hermes times out
On a local macOS Hermes install, the xAI OAuth browser callback succeeds ("authorization received") but Hermes still throws an authorization timeout and never stores xAI credentials, a case the reporter distinguishes from documented remote/SSH callback failures.
#27282 Fixed P1 comp/gateway [--tui] gateway exits mid-turn with stdin EOF (TUI closed the command pipe) — NOT byterover-related
On macOS in --tui mode, the gateway repeatedly exits mid-conversation with "stdin EOF (TUI closed the command pipe)" even with only built-in memory enabled (no byterover), which the reporter notes is distinct from a similar SIGPIPE issue (#14036) caused by the byterover memory plugin.
#26879 Investigating P3 comp/agent [Bug] auxiliary task provider identity lost when base_url + api_key are both set
When an auxiliary task config sets provider, base_url, and api_key together, the provider name is silently overwritten with 'custom', bypassing provider-specific handling and causing subtle failures.
[Bug]: xAI OAuth (xai-oauth) returns HTTP 403 for standard SuperGrok subscribers — backend enforcing Heavy-only despite docs claiming all tiers
This closed issue reported that the xai-oauth provider returned HTTP 403 at inference time for standard (non-Heavy) SuperGrok subscribers, apparently due to an xAI backend restriction rather than a Hermes-side bug.
#26425 Fixed P2 comp/agent [Bug]: Response truncated due to output length limit — still occurring after #7237 fix (re-opening closed issue)
This issue reports that the 'Response truncated due to output length limit' error persists across different large-context models even after fixes in #7242 and #9525, despite the earlier #7237 being closed as 'not a bug'. This issue is closed.
#26083 Investigating P3 comp/gateway Microsoft Teams platform plugin fails to load on bundled Python 3.11 — microsoft-teams-apps requires Python ≥ 3.12
The Teams platform plugin fails to bind port 3978 because it imports the microsoft-teams-apps package, which requires Python 3.12 or newer, while the Hermes installer creates a Python 3.11 venv regardless of a newer system Python being available.
#25495 Fixed P1 comp/gateway [Bug]: Matrix / synapse broken in the official docker image
The Matrix/Synapse gateway in the official Docker image breaks after a certain build, with startup logs stalling at 'fixing ownership :1000'; the bot can still send messages but does not respond to channel prompts. Issue is closed as fixed.
#24443 Workaround P2 comp/agent MiMo reasoning models may fail in Hermes because reasoning_content is not preserved in chat history
MiMo reasoning models can fail in multi-turn conversations because Hermes does not preserve and echo back the reasoning_content field, which MiMo's API requires in thinking mode, resulting in 400 errors.
#24186 Fixed P3 comp/plugins Hermes update broke Kanban — 401 Unauthorized on board load
After a Hermes update, the Kanban board fails to load with a 401 Unauthorized error via the dashboard, which the reporter suspects stems from the same update cycle that also broke Telegram pairing and introduced the 64K context minimum error.
#24140 Fixed P1 comp/agent All models rejected with "context window below minimum 64,000 tokens" — Telegram completely down
All calls to MiniMax-M2.7 and kimi-k2.6 (32,768 token context) were rejected by Hermes Agent's 64K minimum context check, taking down the Telegram bot and cron jobs even though the models previously worked without any config changes.
[Bug]: Docker with HERMES_UID; permissions issue with Dashboard chat
Starting the Docker image with HERMES_UID/HERMES_GID and a shared volume causes permission-denied errors when using the Chat feature in the web Dashboard. Issue is closed as fixed.
#22714 Fixed P1 comp/gateway Matrix gateway: no in-band channel to drive per-message LLM orchestration in a downstream dispatcher
The reporter describes a Matrix gateway deployment fronting a custom LLM dispatcher that routes requests between local and cloud models per rule, and reports there is no in-band channel for per-message routing decisions (like a user's /model command) to reach that downstream dispatcher.
#21444 Fixed P2 comp/agent [Bug]: All openai-codex / gpt-5.5 primary calls hang silently for full stale timeout
With openai-codex / gpt-5.5 as the primary model, every turn hangs silently for the full ~300s non-streaming stale timeout before falling back, while the same setup works immediately with gpt-5.4-codex.
Dashboard Chat tab fails with EACCES in Docker image — /opt/hermes/ui-tui is root-owned but dashboard runs as hermes
In the official Hermes Docker image, the dashboard's Chat tab fails on first connection because it runs as the unprivileged hermes user while /opt/hermes/ui-tui/ is root-owned, causing esbuild to fail writing the TUI bundle with EACCES.
#18449 Investigating P3 comp/tui bug(ui-tui): rapid terminal resize can still leave corrupted glyphs / scattered letters
hermes --tui can still display corrupted or stale glyphs after rapid terminal window resizing, a recurrence of the resize-desync class of issue previously addressed in #14640.
#17199 Workaround P2 comp/cli deepseek provider: model normalization and base_url override break custom endpoints (e.g. Volcengine ARK)
Custom OpenAI-compatible endpoints configured under the deepseek provider break because non-standard model names get force-normalized to deepseek-chat, and the credential pool's base_url is rebuilt from hardcoded defaults on every startup, ignoring config.yaml or auth.json settings.
#15895 Workaround P2 comp/agent [Bug]: google-gemini-cli causing 429 but gquota ok
Despite gquotas showing ample remaining quota (~98% used), using the google-gemini-cli provider with Gemini 3.1 Pro via OAuth returns HTTP 429 errors. Issue is open.
#15717 Fixed P2 comp/agent [Bug]: DeepSeek API 400 error: "reasoning_content" in thinking mode must be passed back to the API
Using a DeepSeek thinking-mode model (e.g. deepseek-v4-flash) causes an HTTP 400 error because Hermes does not pass the model's reasoning_content back on subsequent requests as DeepSeek's API requires. Issue is closed as fixed.
[Bug]: On a Claude Max 20x subscription with a valid OAuth access token from ~/.claude/.credentials.json, every Hermes request to native Anthropic (provider: anthropic, https://api.anthropic.com/v1/messages) is rejected with HTTP 400
With a valid Claude Max 20x OAuth access token, every Hermes request to the native Anthropic provider fails with HTTP 400, reporting that extra usage has been exhausted. Issue is closed as fixed.
#14420 Fixed P2 comp/agent My agent was unable to give me an accurate answer based on the previous context.
Using hermes chat with a custom Ollama endpoint and the local gemma4:e4b model, the agent fails to recall and use prior conversation context (such as a name the user gave it), producing inconsistent answers. Issue is closed as fixed.
#13834 Workaround P2 comp/agent Hermes openai-codex fails on same machine/network where official Codex CLI still works
On the same macOS machine and network where the official Codex CLI works, Hermes configured with the openai-codex provider repeatedly fails with APIConnectionError/APITimeoutError, suggesting its compatibility layer is not equivalent to the official Codex CLI transport.
[Bug]: Bot does not receive messages on fresh Matrix setup (no inbound events, sync stalls)
On a fresh Debian setup after updating, the Matrix bot joins rooms successfully but never receives or processes messages, with no inbound event logs even in debug mode; the sync loop appears to stall after about 30 seconds. Issue is closed as fixed.
[Bug]: OpenAI Codex OAuth works in CLI, but Telegram gateway replies No Codex credentials stored
OpenAI Codex OAuth works via CLI, but the Telegram gateway reports 'No Codex credentials stored' despite the same credentials being valid, in a Docker/Coolify deployment. This issue is now closed.
#11179 Fixed P2 comp/agent [Bug]: Responses stream crashes when terminal response.output is null
When an OpenAI-compatible provider returns a terminal response with output as null rather than an empty list, Hermes's existing recovery logic for the empty-array case did not cover it, causing get_final_response() to raise before streamed output could be backfilled; the issue is now closed.
[Setup]: Copilot // API call failed (attempt 1/3): APIConnectionError
On a MacBook M5 running Python 3.9.6, chatting with a hermes-configured Copilot provider repeatedly fails with APIConnectionError after 3 retries; the reporter notes running `hermes update` resolves it. Issue is closed as fixed.
[Bug]: Persistent HTTP 529 / “server cluster is currently under high load” errors in Hermes when using MiniMax M2.7
Calls to MiniMax M2.7 via Hermes repeatedly return HTTP 529 Overloaded errors even under moderate usage, and Hermes' retry logic keeps hitting the same error; the reporter asks whether this is a MiniMax-side capacity/routing issue. Issue is closed as fixed.
[Bug]: No auxiliary LLM provider configured
This issue reports that Hermes still shows a 'no auxiliary LLM provider configured' warning even after setting OPENROUTER_API_KEY in .hermes/.env, on Hermes v0.9.0 under WSL Ubuntu 22.04. This issue is closed.
[Bug]: hermes command not found in external interactive shells after virtualenv migration (#8226)
This closed issue reports that after the virtualenv migration in PR #8226, the hermes command is not found in external interactive shells (e.g. docker exec) because the venv is not activated and its bin directory is not in PATH.
#9549 Workaround P2 comp/gateway [Feishu] Markdown tables not rendering in Feishu messages
Feishu does not render markdown tables sent by Hermes, showing raw text instead, because feishu.py wraps raw markdown in an md tag that Feishu's md tag doesn't support for tables.
Docker image missing 'dashboard' command (web UI not available in latest image)
The nousresearch/hermes-agent:latest Docker Hub image lacked the dashboard subcommand even though it exists in the main branch source, making the web UI unusable in containerized setups like Coolify; the issue is now closed.
HTTP 400 on all OpenRouter models - curl works fine
On a fresh Hermes install (WSL2 Ubuntu), all OpenRouter model calls return HTTP 400 and hermes doctor reports the same, even though curl with the identical API key gets a valid response.
[Bug]: HTTP 400 "Multiple authentication credentials received" when using native gemini provider
Using the built-in Gemini provider with a GEMINI_API_KEY causes an HTTP 400 error from the Google AI Studio endpoint because both an x-goog-api-key header and a Bearer token are sent; renaming the key to OPENAI_API_KEY works around it. Issue is closed as fixed.
[Bug]: Title: Two issues with the Feishu plugin
The reporter describes two Feishu plugin issues: clicking the button on the Feishu authorization card throws an error, and some Hermes messages create new topic threads instead of replying within an already-open Feishu topic.
[Bug]: "display.show_reasoning" config option is not honored by the API server adapter
This issue reports that the display.show_reasoning config option, which works for the CLI and messaging adapters, is not implemented in the API server adapter, so OpenAI-compatible clients like Open WebUI never see model reasoning traces.
[Bug]: Error: Response truncated due to output length limit
This closed issue reported that long-form responses in Hermes Agent's CLI chat or gateway messaging frequently triggered a truncation error mid-stream.
[Bug] Error code 200340 when approving dangerous commands via Feishu/Lark gateway
The command approval flow via the Feishu/Lark gateway frequently failed with error code 200340 when clicking any approval button, stalling the task, while the same approval worked fine via CLI/TUI; the issue is now closed.
[Bug]: UnicodeEncodeError
Chatting with the zai provider's glm-5.1 model fails repeatedly with a UnicodeEncodeError ('ascii' codec cannot encode certain characters), failing all 3 retry attempts. Issue is closed as fixed.
#6607 Fixed P3 comp/tools [Bug]: checkpoint_manager subprocess.run cwd can point to non-existent directory, causing FileNotFoundError
checkpoint_manager.py's _run_git() passes a resolved cwd path to subprocess.run even when that directory doesn't exist on disk, causing a silently-caught FileNotFoundError that quietly disables checkpoints for that directory.
[Setup]: Installer stuck at "Install ripgrep / ffmpeg [Y/n]" - no keyboard input detected
On Windows 11, the curl-piped Hermes installer hangs at the ripgrep/ffmpeg install prompt with the terminal accepting no keyboard input, and retrying, restarting the terminal, or reinstalling did not resolve it.
[Setup]: OSError: [Errno 22] Invalid argument:[prompt_toolkit crash]
Starting hermes chat prints a welcome message and a notice that the tirith security scanner is unavailable, then immediately crashes with a traceback showing an asyncio selector KeyError followed by an unhandled exception in main.py. Issue is closed as fixed.
Bot connects and syncs old messages, but silently ignores all new messages (no log output)
A Matrix bot connects, joins rooms, and syncs old messages, but produces zero log output and never responds to new incoming messages, even with DEBUG logging and an access-token login. Issue is closed as fixed.
[Bug]: codex suddenly reporting "emtpy/malformed response"
A user reported that the openai/codex provider suddenly started returning empty/malformed response errors on every message despite various troubleshooting attempts; the issue is now closed.
#5200 Workaround P2 comp/agent [docs] Context Files (AGENTS.md/SOUL.md): documented behavior doesn't match code
This issue reports three mismatches between documented and actual behavior for AGENTS.md and SOUL.md context file loading, including that AGENTS.md is not recursively loaded and cwd is overridden in gateway/messaging mode.
[Bug]: CLI is unreadable on light/cream terminal backgrounds — no light mode support
All built-in Hermes CLI skins use light-colored text designed for dark terminal backgrounds, making the banner, prompts, and input nearly invisible on light/cream terminal backgrounds; the issue is now closed.
[Bug]: python-olm build fail
Updating Hermes from 0.5.0 to 0.6.0 fails to build the python-olm dependency due to a CMake compatibility error, though the reporter notes it doesn't appear to affect Hermes agent's actual behavior.
#3002 Workaround P2 comp/cli [Bug]: Fails to install NeuTTS during setup
On a fresh Hermes install with NeuTTS enabled in the setup wizard, installation fails because the venv's Python has no pip module, even though pip3 may be available.
[Bug]: Discord API error in gateway
A scheduled cron job fails to deliver messages to a Discord channel (whether run automatically or manually), while manual test messages go through fine; the gateway log shows a Discord API 404 error. Issue is closed as fixed.
[Bug]: ⚠️ API call failed (attempt 1/3): BadRequestError
User reports that configuring hermes to use a custom OpenRouter model (minimax-m2.5) causes hermes chat to fail with a non-retryable HTTP 400 BadRequestError. Issue is closed as fixed.
[Bug]: hermesagent consistently forgets he/she/it has shell access
The reporter says Hermes agent repeatedly behaves as if it lacks shell access when using ChatGPT/Codex, requiring manual reminders, and asks whether adding "you have shell access" to memory is the only fix.
[Bug]: Blinking cursor or switching emojis causing prompt lines to flash repeatedly in terminal
This closed issue reported that a blinking cursor in Hermes's TUI caused the prompt input box border to flash repeatedly in terminal emulators like ghostty with tmux.