Skip to content

[station][Agent&Skills] Hermes TUI spams "Permission denied: /sandbox/.hermes/.hermes_history" on every interaction, blocking /exit #2432

@zNeill

Description

@zNeill

Description

### [Environment]
OS:            station gb300
Architecture:  arm64
Node.js:       v22.x
npm:           10.x
Docker:        Docker Desktop
OpenShell CLI: openshell 0.0.32
NemoClaw:      v0.0.23
Hermes Agent:  v0.9.0 (2026.4.13)
Provider:      NVIDIA Endpoints (nvidia/nemotron-3-super-120b-a12b)
Brave Search:  enabled during onboard, preset applied, api.search.brave.com in egress
### [Steps to Reproduce]
  1. Run nemoclaw onboard --agent hermes (any provider)
  2. Complete onboard normally
  3. Run nemoclaw test1 connect
  4. Run hermes
  5. Send any message (e.g. "hello")
  6. Observe error traceback after the response
  7. Try typing /exit to leave the chat

[Expected Behavior]

  • TUI accepts input and displays responses without errors
  • /exit cleanly exits the Hermes chat

[Actual Behavior]

After every interaction, a full Python traceback is displayed:


Unhandled exception in event loop: File "/usr/local/lib/python3.11/dist-packages/prompt_toolkit/history.py", line 299, in store_string with open(self.filename, "ab") as f: ^^^^^^^^^^^^^^^^^^^^^^^^^ Exception [Errno 13] Permission denied: '/sandbox/.hermes/.hermes_history'

Followed by `Press ENTER to continue...` which must be dismissed before the next input prompt appears. This creates a loop where:
- User types `/exit` → error triggers → "Press ENTER" appears → user presses Enter → `/exit` gets concatenated to the next input line instead of being processed as a command
- Ctrl-C does not break the loop
- Exiting requires Ctrl-U to clear input, then carefully typing `/exit`

### [Logs]
Full traceback:

File "/usr/local/lib/python3.11/dist-packages/prompt_toolkit/buffer.py", line 311, in reset self.append_to_history() File "/usr/local/lib/python3.11/dist-packages/prompt_toolkit/buffer.py", line 1365, in append_to_history self.history.append_string(self.text) File "/usr/local/lib/python3.11/dist-packages/prompt_toolkit/history.py", line 76, in append_string self.store_string(string) File "/usr/local/lib/python3.11/dist-packages/prompt_toolkit/history.py", line 299, in store_string with open(self.filename, "ab") as f: Exception [Errno 13] Permission denied: '/sandbox/.hermes/.hermes_history'

### [Suspected Root Cause / Notes]
During sandbox image build (Dockerfile step 28), `/sandbox/.hermes` is set to `root:root` ownership:

RUN chown root:root /sandbox/.hermes

This makes the directory read-only for the `sandbox` user. However, Python's `prompt_toolkit` library attempts to write command history to `/sandbox/.hermes/.hermes_history` at runtime. Since the sandbox runs as the `sandbox` user, the write fails with EACCES.

Fix options:
- Make `/sandbox/.hermes/.hermes_history` writable by the sandbox user (e.g. `chown sandbox:sandbox`)
- Or redirect history to a writable path like `/sandbox/.hermes-data/.hermes_history`
- Or disable file-based history in the Hermes CLI configuration

### [Regression?]
Unknown — first time testing Hermes Agent TUI.

DevTest task: 489841

Bug Details

Field Value
Priority Unprioritized
Action Dev - Open - To fix
Disposition Open issue
Module Machine Learning - NemoClaw
Keyword NemoClaw, NemoClaw_Agent&Skills, NEMOCLAW_GH_SYNC_APPROVAL, NemoClaw_Inference

[NVB#6107559]

Metadata

Metadata

Assignees

No one assigned

    Labels

    NV QABugs found by the NVIDIA QA Teamarea: cliCommand line interface, flags, terminal UX, or outputintegration: hermesHermes integration behaviorplatform: arm64Affects ARM64 or aarch64 architecture

    Type

    No fields configured for Bug.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions