{"repo":"NousResearch/hermes-agent","public_id":"13870","display_label":"CLI terminal escape sequence leaks and corruption","summary":"Multiple bug reports and fixes addressing escape sequence leakage (particularly CPR/DSR cursor position queries), garbled terminal input, and terminal state corruption after interrupting agent runs. Issues span SSH/tunnel environments, local TTYs, and various platform conditions.","subsystem":"hermes_cli","counts":{"members":8,"open_issues":0,"open_issues_distinct":0,"open_prs":0,"closed_issues":3,"merged_prs":3,"attempt_prs":2},"landed_fix":{"status":"merged_to_main","basis":"structural","pr":53576},"resolution":{"state":"partially_resolved","by":"pr-53576,pr-54058"},"freshness":{"state":"verified","last_verified_at":"2026-07-21T05:48:29+00:00","is_stale":false},"grouping":{"backbone":"STRUCTURAL_PARTIAL","link_density":0.21714285714285714},"fix_edges":[{"issue_number":13870,"pr_number":53576,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true},{"issue_number":13870,"pr_number":68418,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true},{"issue_number":33271,"pr_number":54058,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true}],"members":[{"kind":"issue","number":13870,"title":"[Bug]: CPR Leak on UI CLI","url":null,"state":"closed"},{"kind":"issue","number":14692,"title":"[Bug]: CLI input field leaks terminal control sequences (cursor positioning / DSR responses) causing garbled input","url":null,"state":"closed"},{"kind":"issue","number":33271,"title":"[Bug]: Terminal becomes unresponsive with raw control sequences (e.g., ^[[19;1R) after interrupting a running agent with a new message  Version: Hermes CLI (latest)  Platform: macOS / Linux (observed on both)","url":null,"state":"closed"},{"kind":"pr","number":13910,"title":"fix(cli): disable CPR queries to prevent escape sequence leak over SSH/tunnels","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"b34771fc0","number":0},{"kind":"pr","value":"#53576","number":53576},{"kind":"pr","value":"#53576","number":53576}],"category":"superseded_by_pr","implication":"superseded"},"merged":false},{"kind":"pr","number":34064,"title":"fix(cli): recover terminal state after interrupt to prevent raw control sequence freeze","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"f3aaba7f8","number":0},{"kind":"pr","value":"#54058","number":54058}],"category":"merged_via","implication":"superseded"},"merged":false},{"kind":"pr","number":53576,"title":"fix(cli): disable prompt_toolkit CPR queries to stop escape-sequence leak (#13870)","url":null,"state":"merged","close_reason":{"category":"merged","implication":"superseded"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["cli.py","tests/cli/test_cli_init.py"]},{"kind":"pr","number":54058,"title":"fix(cli): recover terminal state after interrupting a running turn (#33271)","url":null,"state":"merged","close_reason":{"category":"merged","implication":"superseded"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["cli.py","tests/cli/test_terminal_interrupt_recovery.py"]},{"kind":"pr","number":68418,"title":"fix(cli): suppress CPR on POSIX local TTYs under load","url":null,"state":"merged","close_reason":{"category":"merged","implication":"superseded"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["cli.py","tests/cli/test_cli_init.py","tests/cli/test_cpr_local_leak.py"]}],"trust":{"default_tier":"verified","includes_suggested":false}}