fix(cli): prevent update crash in non-TTY environments (Telegram)#2850
Closed
devorun wants to merge 2 commits into
Closed
fix(cli): prevent update crash in non-TTY environments (Telegram)#2850devorun wants to merge 2 commits into
devorun wants to merge 2 commits into
Conversation
Description This PR fixes issue NousResearch#2848 where triggering `/update` from a non-interactive context (like Telegram or systemd) causes the CLI to crash or exit with code 1. Root Cause: During an update that introduces new config options, `cmd_update` unconditionally prompts the user using `input()`. In headless environments without an attached TTY, this immediately throws an `EOFError` (or receives EOF), preventing the gateway from restarting and completing the update. Fix: Wrapped the `input()` call with a `sys.stdin.isatty()` guard. If it's a non-interactive session, it automatically skips the migration prompt by defaulting the response to `"n"`, allowing the update and restart sequence to finish gracefully without duplicating log messages. Closes NousResearch#2848
Description This PR fixes issue NousResearch#2848 where triggering `/update` from a non-interactive context (like Telegram or systemd) causes the CLI to crash or exit with code 1. Root Cause: During an update that introduces new config options, `cmd_update` unconditionally prompts the user using `input()`. In headless environments without an attached TTY, this immediately throws an `EOFError` (or receives EOF), preventing the gateway from restarting and completing the update. Fix: Wrapped the `input()` call with a `sys.stdin.isatty()` guard. If it's a non-interactive session, it automatically skips the migration prompt by defaulting the response to `"n"`, allowing the update and restart sequence to finish gracefully without duplicating log messages. Closes NousResearch#2848
teknium1
added a commit
that referenced
this pull request
Mar 26, 2026
cmd_update calls input() unconditionally during config migration. In headless environments (Telegram gateway, systemd), there's no TTY, so input() throws EOFError and the update crashes. Guard with sys.stdin.isatty(), default to skipping the migration prompt when non-interactive. Salvaged from PR #2850 by devorun. Closes #2848.
Contributor
|
Merged via salvage PR. Thanks @devorun! |
teknium1
added a commit
that referenced
this pull request
Mar 26, 2026
cmd_update calls input() unconditionally during config migration. In headless environments (Telegram gateway, systemd), there's no TTY, so input() throws EOFError and the update crashes. Guard with sys.stdin.isatty(), default to skipping the migration prompt when non-interactive. Salvaged from PR #2850 by devorun. Closes #2848.
outsourc-e
pushed a commit
to outsourc-e/hermes-agent
that referenced
this pull request
Mar 26, 2026
…3094) cmd_update calls input() unconditionally during config migration. In headless environments (Telegram gateway, systemd), there's no TTY, so input() throws EOFError and the update crashes. Guard with sys.stdin.isatty(), default to skipping the migration prompt when non-interactive. Salvaged from PR NousResearch#2850 by devorun. Closes NousResearch#2848.
angelburgosrosado
pushed a commit
to angelburgosrosado/hermes-agent
that referenced
this pull request
Apr 27, 2026
…3094) cmd_update calls input() unconditionally during config migration. In headless environments (Telegram gateway, systemd), there's no TTY, so input() throws EOFError and the update crashes. Guard with sys.stdin.isatty(), default to skipping the migration prompt when non-interactive. Salvaged from PR NousResearch#2850 by devorun. Closes NousResearch#2848.
02356abc
pushed a commit
to 02356abc/hermes-agent
that referenced
this pull request
May 14, 2026
…3094) cmd_update calls input() unconditionally during config migration. In headless environments (Telegram gateway, systemd), there's no TTY, so input() throws EOFError and the update crashes. Guard with sys.stdin.isatty(), default to skipping the migration prompt when non-interactive. Salvaged from PR NousResearch#2850 by devorun. Closes NousResearch#2848.
olympus-terminal
pushed a commit
to olympus-terminal/hermes-agent
that referenced
this pull request
May 16, 2026
…3094) cmd_update calls input() unconditionally during config migration. In headless environments (Telegram gateway, systemd), there's no TTY, so input() throws EOFError and the update crashes. Guard with sys.stdin.isatty(), default to skipping the migration prompt when non-interactive. Salvaged from PR NousResearch#2850 by devorun. Closes NousResearch#2848.
gweeteve
pushed a commit
to gweeteve/hermes-agent
that referenced
this pull request
Jun 2, 2026
…3094) cmd_update calls input() unconditionally during config migration. In headless environments (Telegram gateway, systemd), there's no TTY, so input() throws EOFError and the update crashes. Guard with sys.stdin.isatty(), default to skipping the migration prompt when non-interactive. Salvaged from PR NousResearch#2850 by devorun. Closes NousResearch#2848.
Egavasyug
pushed a commit
to Egavasyug/hermes-agent
that referenced
this pull request
Jun 10, 2026
…3094) cmd_update calls input() unconditionally during config migration. In headless environments (Telegram gateway, systemd), there's no TTY, so input() throws EOFError and the update crashes. Guard with sys.stdin.isatty(), default to skipping the migration prompt when non-interactive. Salvaged from PR NousResearch#2850 by devorun. Closes NousResearch#2848.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
This PR fixes issue #2848 where triggering
/updatefrom a non-interactive context (like Telegram or systemd) causes the CLI to crash or exit with code 1.Root Cause:
During an update that introduces new config options,
cmd_updateunconditionally prompts the user usinginput(). In headless environments without an attached TTY, this immediately throws anEOFError(or receives EOF), preventing the gateway from restarting and completing the update.Fix:
Wrapped the
input()call with asys.stdin.isatty()guard. If it's a non-interactive session, it automatically skips the migration prompt by defaulting the response to"n", allowing the update and restart sequence to finish gracefully without duplicating log messages.Closes #2848
What does this PR do?
Related Issue
Fixes #
Type of Change
Changes Made
How to Test
Checklist
Code
fix(scope):,feat(scope):, etc.)pytest tests/ -qand all tests passDocumentation & Housekeeping
docs/, docstrings) — or N/Acli-config.yaml.exampleif I added/changed config keys — or N/ACONTRIBUTING.mdorAGENTS.mdif I changed architecture or workflows — or N/AFor New Skills
hermes --toolsets skills -q "Use the X skill to do Y"Screenshots / Logs