hermes-agent/scripts
Teknium 4c677698ff fix(windows): stop persistent gateway console after update + close checker variable-argv blind spot
Two distinct Windows console bugs that survived #53791/#53810/#53829:

1. Persistent console after update that kills the gateway when closed.
   _spawn_gateway_restart_watcher rewrote the respawned gateway argv to
   windowless pythonw, but launched the WATCHER process itself with
   sys.executable — the venv console python.exe during `hermes update`.
   uv's venv launcher re-execs the base console interpreter, allocating a
   conhost that DETACHED_PROCESS/CREATE_NO_WINDOW can't suppress; the
   respawned gateway inherits it. Resolve the watcher interpreter to
   pythonw too (no-op on POSIX).

2. The AST footgun checker only resolved a flashing program when argv[0]
   was a string literal, so the update path's `git_cmd = ["git", ...]`
   then `subprocess.run(git_cmd + [...], capture_output=True)` calls were
   invisible and shipped unflagged — one console flash per call. Teach
   _argv_head to resolve variable and concat (BinOp Add) argv via a
   module-wide name->program map. Route the 39 newly-visible calls in
   main.py + 23 across 12 other files through the _subprocess_compat
   chokepoint (or creationflags=windows_hide_flags()).

Also fixes a latent NameError: main.py called _subprocess_compat.run with
no module import in scope — the update path would have crashed on Windows.

Tests: checker 32/32, watcher/restart/detach 5/5. Update suite failures
drop 29->7 (remaining 7 are pre-existing baseline failures).
2026-06-27 15:39:17 -07:00
..
ci fix(ci): only run supplychain checks in pr 2026-06-23 09:46:25 -07:00
lib fix(hermes): heal broken managed Node tree instead of PATH fallback 2026-06-26 20:10:20 +05:30
tests test(install): add ConvertTo-LongPath helper for 8.3 short paths 2026-06-20 16:24:52 -07:00
whatsapp-bridge fix(whatsapp): restart stale bridge processes instead of silently reusing them (#44205) 2026-06-11 03:47:29 -07:00
analyze_livetest.py test(tool-search): add live A/B harness, drop checked-in transcripts 2026-05-29 02:04:12 -07:00
benchmark_browser_eval.py perf(browser): route browser_console eval through supervisor's persistent CDP WS (180x faster) (#23226) 2026-05-10 07:37:55 -07:00
build_model_catalog.py codebase: add encoding='utf-8' to all bare open() calls (PLW1514) 2026-05-08 14:27:40 -07:00
build_skills_index.py fix(skills): let ClawHub index build walk past the 12s browse budget (#44500) 2026-06-11 18:03:11 -04:00
check-windows-footguns.py fix(windows): stop persistent gateway console after update + close checker variable-argv blind spot 2026-06-27 15:39:17 -07:00
check_subprocess_stdin.py fix: keep interactive OAuth setup-token inheriting stdin 2026-06-08 22:46:57 -07:00
contributor_audit.py fix(windows): stop persistent gateway console after update + close checker variable-argv blind spot 2026-06-27 15:39:17 -07:00
discord-voice-doctor.py codebase: add encoding='utf-8' to all bare open() calls (PLW1514) 2026-05-08 14:27:40 -07:00
docker_config_migrate.py fix(docker): restore config backups after failed boot migration 2026-06-24 15:23:23 +10:00
hermes-gateway fix: prevent systemd restart storm on gateway connection failure 2026-03-21 09:26:39 -07:00
install.cmd fix(docs): update all install instructions everywhere 2026-06-04 21:07:45 -04:00
install.ps1 fix(install): discard managed lockfile churn before stashing 2026-06-25 23:49:11 -07:00
install.sh fix(install): discard managed lockfile churn before stashing 2026-06-25 23:49:11 -07:00
install_psutil_android.py fix(windows): stop subprocess console-window popups + add CI guard (#53791) 2026-06-27 13:03:51 -07:00
keystroke_diagnostic.py docs: add Windows-Specific Quirks section to hermes-agent skill + keystroke diagnostic 2026-05-08 14:27:40 -07:00
kill_modal.sh refactor: replace swe-rex with native Modal SDK for Modal backend (#3538) 2026-03-28 11:21:44 -07:00
lint_diff.py feat(ci): add typecheck (warnings only in CI) 2026-05-06 10:58:12 -04:00
LIVETEST_README.md test(tool-search): add live A/B harness, drop checked-in transcripts 2026-05-29 02:04:12 -07:00
profile-tui.py fix(windows): capture is not a no-window boundary; route flashing spawns through chokepoint (#53829) 2026-06-27 14:49:41 -07:00
release.py fix(windows): stop persistent gateway console after update + close checker variable-argv blind spot 2026-06-27 15:39:17 -07:00
run_tests.sh test(pets): make slow pet generation suite opt-in 2026-06-25 00:44:53 -05:00
run_tests_parallel.py fix(windows): stop persistent gateway console after update + close checker variable-argv blind spot 2026-06-27 15:39:17 -07:00
sample_and_compress.py refactor: codebase-wide lint cleanup — unused imports, dead code, and inefficient patterns (#5821) 2026-04-07 10:25:31 -07:00
setup_open_webui.sh fix(install): use resolved python variable in setup_open_webui.sh 2026-05-16 22:54:22 -07:00
tool_search_livetest.py test(tool-search): redact secrets from harness transcripts + console 2026-05-29 02:04:12 -07:00