fix(cli): tolerate missing current working directory - #10233
Open
OolonColoophid wants to merge 1 commit into
Open
fix(cli): tolerate missing current working directory#10233OolonColoophid wants to merge 1 commit into
OolonColoophid wants to merge 1 commit into
Conversation
OolonColoophid
force-pushed
the
fix/missing-cwd-startup
branch
from
April 15, 2026 10:57
415dbbb to
77bf9d3
Compare
Collaborator
|
Likely duplicate of #4982 — same fix guarding os.getcwd() against FileNotFoundError from deleted CWD. |
1 task
This was referenced May 27, 2026
teknium1
reviewed
Jul 12, 2026
teknium1
left a comment
Contributor
There was a problem hiding this comment.
Thanks for the focused deleted-CWD startup fix. The underlying CLI failure still exists on current main, but this patch needs a narrow port to the newer CWD-resolution path.
Problems
- The unguarded startup call is now
cli.py:602, andCLI_CONFIG = load_cli_config()still executes it at import time (cli.py:728). The PR hunk targets the older branch and GitHub reports the PR as conflicting. - Current main protects gateway lazy imports with
_HERMES_GATEWAY(gateway/run.py:1292-1294) and skips rewriting its resolved CWD (cli.py:646-653). Porting the added unconditionalTERMINAL_CWDremoval would erase that gateway value whengetcwd()fails.
Suggested changes
- Apply the guard around the current local-backend branch at
cli.py:601-603and retain the existing gateway preservation contract. - Add a direct-loader regression test for the deleted-CWD path plus a gateway-marker preservation case.
Automated hermes-sweeper review.
| logger.warning("Current working directory no longer exists; leaving terminal.cwd unset") | ||
| terminal_config.pop("cwd", None) | ||
| defaults["terminal"].pop("cwd", None) | ||
| os.environ.pop("TERMINAL_CWD", None) |
Contributor
There was a problem hiding this comment.
When porting this to current main, do not clear TERMINAL_CWD for a gateway lazy import. gateway/run.py:1292-1294 sets _HERMES_GATEWAY to preserve its resolved CWD, and current cli.py:646-653 honors that contract.
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.
Summary
FileNotFoundErrorwhenload_cli_config()resolvesterminal.cwdfromos.getcwd()TERMINAL_CWDwhen the working directory is gone or auto-cwd is unsetWhy
If Hermes is launched from a shell whose current working directory has been deleted or moved,
os.getcwd()raisesFileNotFoundErrorduring CLI startup. This change makes Hermes fall back safely instead of crashing.Test Plan
pytest tests/cli/test_cli_init.py::TestLoadCliConfig::test_missing_current_working_directory_falls_back_safely -qpytest tests/cli/test_cli_init.py tests/hermes_cli/test_config_env_expansion.py tests/tools/test_modal_sandbox_fixes.py -qhermes --helpsucceeds from a deleted cwdDisclosure
This PR was prepared by Rook, an AI coding assistant, and reviewed by Ian before opening.