Skip to content

revert(windows): roll back terminal-popup PRs #53791 #53810 #53829 - #53853

Merged
teknium1 merged 3 commits into
mainfrom
revert/windows-terminal-fixes
Jun 27, 2026
Merged

revert(windows): roll back terminal-popup PRs #53791 #53810 #53829#53853
teknium1 merged 3 commits into
mainfrom
revert/windows-terminal-fixes

Conversation

@teknium1

Copy link
Copy Markdown
Contributor

Summary

Reverts the four Windows terminal-popup PRs. They never fixed the reported symptom (hermes update → gateway restart still flashes and flurries on Windows), so we're resetting to baseline and will fix from a real Windows reproduction instead of more Linux-reasoned guesses.

Why they failed: all four chased the wrong layer — subprocess.* call sites reasoned about on Linux — while the actual flash lives elsewhere in the spawn chain (e.g. the gateway-restart watcher launched via sys.executable, .bat/VBS launchers, the uv python.exe re-exec, or the Electron desktop relaunch). The AST footgun checker is a call-site denylist that structurally cannot see those, so CI went green while the popup persisted. None of the four were ever run on native Windows.

Reverts

Kept (unrelated, not popup work): dbbf102b8 (strip VIRTUAL_ENV/CONDA_PREFIX from terminal env), #53616 (route build output to update.log). The pre-existing check-windows-footguns.py rules (os.kill / signal / etc.) and its lint job are untouched — only the subprocess rule added in #53791 is removed.

Validation

Result
git revert x3 clean, no conflicts (sequential newest→oldest)
check-windows-footguns.py --all (original rules) ✓ 709 files clean
Affected suites (windows_native_support, gateway, hermes_bootstrap, mcp_catalog, mem0) 191 pass
_subprocess_compat.py back to pre-#53810 (pre-existing helpers intact, wrappers gone)
hermes_bootstrap.py FreeConsole/detach_orphan_console removed

Next (not in this PR)

Capture the flashing window's actual process on Windows (cmd.exe / conhost.exe / python.exe / powershell) during hermes update → restart, identify the exact spawn leg, fix that, and verify the flurry is gone on Windows before merging.

Infographic

revert-windows-terminal-fixes

@github-actions

Copy link
Copy Markdown
Contributor

⚠️ MCP catalog security review required

This PR changes the bundled MCP catalog or MCP catalog installer code. MCP entries can define local commands that users later install into mcp_servers, so this needs explicit maintainer review before merge.

A maintainer should verify:

  • any new/changed optional-mcps/**/manifest.yaml command and args are expected,
  • stdio transports do not use shell+egress/exfiltration payloads,
  • git install refs are pinned and bootstrap commands are minimal,
  • requested env vars/secrets match the upstream MCP's documented needs.

After review, add the mcp-catalog-reviewed label and re-run this check.

@github-actions

Copy link
Copy Markdown
Contributor

🔎 Lint report: revert/windows-terminal-fixes vs origin/main

ruff

Total: 0 on HEAD, 0 on base (➖ 0)

🆕 New issues: none

✅ Fixed issues: none

Unchanged: 0 pre-existing issues carried over.

ty (type checker)

Total: 11516 on HEAD, 11526 on base (✅ -10)

🆕 New issues (1):

Rule Count
unresolved-attribute 1
First entries
tools/environments/local.py:758: [unresolved-attribute] unresolved-attribute: Unresolved attribute `_hermes_pgid` on type `Popen[str]`

✅ Fixed issues (10):

Rule Count
unresolved-attribute 4
unresolved-import 3
unresolved-reference 2
invalid-argument-type 1
First entries
tests/test_no_visible_console_spawns.py:24: [unresolved-import] unresolved-import: Cannot resolve imported module `pytest`
plugins/memory/mem0/_setup.py:527: [unresolved-reference] unresolved-reference: Name `windows_hide_flags` used when not defined
tests/scripts/test_windows_footgun_subprocess_rule.py:30: [unresolved-attribute] unresolved-attribute: Attribute `exec_module` is not defined on `None` in union `Loader | None`
tests/scripts/test_windows_footgun_subprocess_rule.py:26: [invalid-argument-type] invalid-argument-type: Argument to function `module_from_spec` is incorrect: Expected `ModuleSpec`, found `ModuleSpec | None`
tests/scripts/test_windows_footgun_subprocess_rule.py:15: [unresolved-import] unresolved-import: Cannot resolve imported module `pytest`
tests/hermes_cli/test_gateway.py:892: [unresolved-import] unresolved-import: Cannot resolve imported module `psutil`
tests/test_hermes_bootstrap.py:248: [unresolved-attribute] unresolved-attribute: Unresolved attribute `_syscmd_ver` on type `<module 'platform'>`.
plugins/platforms/photon/cli.py:398: [unresolved-reference] unresolved-reference: Name `windows_hide_flags` used when not defined
tests/test_hermes_bootstrap.py:245: [unresolved-attribute] unresolved-attribute: Module `platform` has no member `_syscmd_ver`
tests/scripts/test_windows_footgun_subprocess_rule.py:30: [unresolved-attribute] unresolved-attribute: Attribute `loader` is not defined on `None` in union `ModuleSpec | None`

Unchanged: 6061 pre-existing issues carried over.

Diagnostics are surfaced as warnings — this check never fails the build.

@teknium1
teknium1 merged commit d3d621f into main Jun 27, 2026
33 of 35 checks passed
@teknium1
teknium1 deleted the revert/windows-terminal-fixes branch June 27, 2026 22:59
@alt-glitch alt-glitch added type/refactor Code restructuring, no behavior change P2 Medium — degraded but workaround exists comp/cli CLI entry point, hermes_cli/, setup wizard platform/windows Native Windows-specific behavior or breakage sweeper:risk-platform-windows Sweeper risk: may break or behave differently on native Windows sweeper:risk-automation Sweeper risk: may affect CI, automerge, label sync, or maintainer automation labels Jun 27, 2026
lpaiu-cs added a commit to lpaiu-cs/hermes-agent that referenced this pull request Jun 28, 2026
…ch#53853 revert

The first cut routed these probes through _subprocess_compat.run/popen (the
NousResearch#53810 chokepoint), but NousResearch#53853 reverted NousResearch#53791/NousResearch#53810/NousResearch#53829 — so those calls
would now AttributeError on main (the wrappers are gone; windows_hide_flags()
survived). Switch the two sites to pass creationflags=windows_hide_flags()
directly, the same surviving-helper approach NousResearch#53892 took post-revert.

Also drop the now-moot footgun changes: the console-spawn rule was reverted, so
adding tui_gateway to its --all roots no longer buys anything (and would only
surface unrelated, hasattr-guarded signal handlers in entry.py). Net change is
now just the two gateway probe sites + the test, which asserts the no-window
flag is passed.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
pai-scaffolde pushed a commit to pai-scaffolde/hermes-agent that referenced this pull request Jun 28, 2026
…Research#53810 NousResearch#53829 (NousResearch#53853)

* Revert "fix(windows): capture is not a no-window boundary; route flashing spawns through chokepoint (NousResearch#53829)"

This reverts commit 2ecca1e.

* Revert "fix(windows): stop terminal-window popups from background spawns (NousResearch#53810)"

This reverts commit 5db1430.

* Revert "fix(windows): stop subprocess console-window popups + add CI guard (NousResearch#53791)"

This reverts commit ef17cd2.
waefrebeorn pushed a commit to waefrebeorn/slermes that referenced this pull request Jul 2, 2026
…Research#53810 NousResearch#53829 (NousResearch#53853)

* Revert "fix(windows): capture is not a no-window boundary; route flashing spawns through chokepoint (NousResearch#53829)"

This reverts commit bc1c8f2.

* Revert "fix(windows): stop terminal-window popups from background spawns (NousResearch#53810)"

This reverts commit 40591a4.

* Revert "fix(windows): stop subprocess console-window popups + add CI guard (NousResearch#53791)"

This reverts commit c2eab69.
Jasper6439 pushed a commit to Jasper6439/hermes-agent that referenced this pull request Jul 5, 2026
…Research#53810 NousResearch#53829 (NousResearch#53853)

* Revert "fix(windows): capture is not a no-window boundary; route flashing spawns through chokepoint (NousResearch#53829)"

This reverts commit 2ecca1e.

* Revert "fix(windows): stop terminal-window popups from background spawns (NousResearch#53810)"

This reverts commit 5db1430.

* Revert "fix(windows): stop subprocess console-window popups + add CI guard (NousResearch#53791)"

This reverts commit ef17cd2.
habarmc1223-sudo pushed a commit to habarmc1223-sudo/hermes-agent-fluxmem that referenced this pull request Jul 8, 2026
…Research#53810 NousResearch#53829 (NousResearch#53853)

* Revert "fix(windows): capture is not a no-window boundary; route flashing spawns through chokepoint (NousResearch#53829)"

This reverts commit 710ac05.

* Revert "fix(windows): stop terminal-window popups from background spawns (NousResearch#53810)"

This reverts commit 3db485a.

* Revert "fix(windows): stop subprocess console-window popups + add CI guard (NousResearch#53791)"

This reverts commit 80b090d.
santhreal pushed a commit to santhreal/hermes-agent that referenced this pull request Jul 13, 2026
…Research#53810 NousResearch#53829 (NousResearch#53853)

* Revert "fix(windows): capture is not a no-window boundary; route flashing spawns through chokepoint (NousResearch#53829)"

This reverts commit 12aa1c3.

* Revert "fix(windows): stop terminal-window popups from background spawns (NousResearch#53810)"

This reverts commit ec5d0c1.

* Revert "fix(windows): stop subprocess console-window popups + add CI guard (NousResearch#53791)"

This reverts commit d0ffccd.
Gravezzz pushed a commit to Gravezzz/hermes-agent that referenced this pull request Jul 21, 2026
…Research#53810 NousResearch#53829 (NousResearch#53853)

* Revert "fix(windows): capture is not a no-window boundary; route flashing spawns through chokepoint (NousResearch#53829)"

This reverts commit 2ecca1e.

* Revert "fix(windows): stop terminal-window popups from background spawns (NousResearch#53810)"

This reverts commit 5db1430.

* Revert "fix(windows): stop subprocess console-window popups + add CI guard (NousResearch#53791)"

This reverts commit ef17cd2.
leewenjie pushed a commit to leewenjie/hermes-agent that referenced this pull request Aug 7, 2026
…Research#53810 NousResearch#53829 (NousResearch#53853)

* Revert "fix(windows): capture is not a no-window boundary; route flashing spawns through chokepoint (NousResearch#53829)"

This reverts commit 2ecca1e.

* Revert "fix(windows): stop terminal-window popups from background spawns (NousResearch#53810)"

This reverts commit 5db1430.

* Revert "fix(windows): stop subprocess console-window popups + add CI guard (NousResearch#53791)"

This reverts commit ef17cd2.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

comp/cli CLI entry point, hermes_cli/, setup wizard mcp-catalog-reviewed P2 Medium — degraded but workaround exists platform/windows Native Windows-specific behavior or breakage sweeper:risk-automation Sweeper risk: may affect CI, automerge, label sync, or maintainer automation sweeper:risk-platform-windows Sweeper risk: may break or behave differently on native Windows type/refactor Code restructuring, no behavior change

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants