{"repo":"NousResearch/hermes-agent","public_id":"3000","display_label":"Installer path-quoting bugs: spaces and special characters","summary":"These issues and fixes address installer failures caused by unquoted paths containing spaces (primarily on macOS) and Windows 8.3 short-path resolution problems when usernames contain dots or accented characters. The fixes span shell scripts, .env value handling, and Python/UV path references.","subsystem":"apps/bootstrap-installer","counts":{"members":40,"open_issues":2,"open_issues_distinct":2,"open_prs":5,"closed_issues":12,"merged_prs":6,"attempt_prs":20},"landed_fix":{"status":"merged_to_main","basis":"structural","pr":13001},"resolution":{"state":"partially_resolved","by":"pr-13001,pr-49838,pr-67192,pr-78682,pr-113919"},"freshness":{"state":"verified","last_verified_at":"2026-09-24T22:57:27+00:00","is_stale":false},"grouping":{"backbone":"STRUCTURAL_PARTIAL","link_density":0.045333333333333316},"fix_edges":[{"issue_number":10009,"pr_number":13001,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true},{"issue_number":39308,"pr_number":49838,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true},{"issue_number":40820,"pr_number":102765,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false},{"issue_number":52842,"pr_number":78682,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true},{"issue_number":60447,"pr_number":113919,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true},{"issue_number":66450,"pr_number":67192,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true},{"issue_number":66474,"pr_number":67192,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true},{"issue_number":66482,"pr_number":67192,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true},{"issue_number":66641,"pr_number":67192,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true},{"issue_number":70779,"pr_number":113919,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true}],"members":[{"kind":"issue","number":3000,"title":"[Bug]: install.sh silently aborts on macOS\n  when uv-managed Python path contains spaces","url":null,"state":"closed"},{"kind":"issue","number":10009,"title":"[Bug]: install.sh fails on macOS due to unquoted spaces in Python path (uv)","url":null,"state":"closed"},{"kind":"issue","number":38163,"title":"[Bug]:Desktop app installer fails on macOS when home directory path contains a space","url":null,"state":"closed"},{"kind":"issue","number":38773,"title":"Desktop installer fails on Windows with dot in username (8.3 path resolution bug in hermes_bootstrap_lib)","url":null,"state":"closed"},{"kind":"issue","number":39308,"title":"[Bug]: Windows desktop installer fails at Node/Electron stages — 8.3 short name not resolved for profile path with space","url":null,"state":"closed"},{"kind":"issue","number":40820,"title":"[Bug]: Desktop installer fails on macOS when home directory path contains spaces (external drive)","url":null,"state":"closed"},{"kind":"issue","number":43334,"title":"[Feature]: Hermes Desktop Installer, please add Navigation to custum installation folder","url":null,"state":"closed"},{"kind":"issue","number":47822,"title":"macOS install/bootstrap fails when HERMES_HOME path contains spaces","url":null,"state":"open"},{"kind":"issue","number":52842,"title":"[Bug]: Installer fails repeatedly with \"No existe ningún objeto en la ruta...\" (8.3 short-path resolution) when Windows username contains accented characters","url":null,"state":"closed"},{"kind":"issue","number":53086,"title":"Install fails on macOS when home directory path contains spaces","url":null,"state":"open"},{"kind":"issue","number":57247,"title":"Installer writes unquoted AGENT_BROWSER_EXECUTABLE_PATH override into .env — spaced paths break shell source","url":null,"state":"closed"},{"kind":"issue","number":60447,"title":"stage-native-deps.cjs cpSync fails on Windows when user path contains non-ASCII characters","url":null,"state":"closed"},{"kind":"issue","number":60740,"title":"[Bug]: Installation fails on Windows with non-ASCII (Cyrillic) usernames - Path resolution error \"C:\\Users\\3EC2~1 does not exist\"","url":null,"state":"closed"},{"kind":"issue","number":66482,"title":"save_env_value writes unquoted values with internal spaces - breaks shell-sourcing of .env (core-writer sibling of #57247)","url":null,"state":"closed"},{"kind":"pr","number":3021,"title":"fix(install): quote PYTHON_PATH to handle paths with spaces on macOS","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#8349","number":8349}],"category":"duplicate_of","implication":"duplicate"},"merged":false},{"kind":"pr","number":4680,"title":"Fix install.sh silently aborting on macOS when uv Python path contains spaces","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"00192d51f","number":0},{"kind":"commit","value":"00192d51f1213625b8b89a78d7e03efbaf1d78b6","number":0},{"kind":"pr","value":"#10009","number":10009}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false},{"kind":"pr","number":10010,"title":"fix(install): quote PYTHON_PATH in version checks to handle spaces on macOS","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#13001","number":13001}],"category":"superseded_by_pr","implication":"superseded"},"merged":false},{"kind":"pr","number":10018,"title":"fix: quote $PYTHON_PATH and $UV_CMD in install.sh for paths with spaces","url":null,"state":"closed","close_reason":{"category":"stale_abandoned","implication":"active"},"merged":false},{"kind":"pr","number":10019,"title":"fix(install): quote python path variables to handle spaces","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#13001","number":13001}],"category":"merged_via","implication":"superseded"},"merged":false},{"kind":"pr","number":13001,"title":"fix(install): quote PYTHON_PATH and UV_CMD for paths with spaces on macOS (#10009)","url":null,"state":"merged","close_reason":{"category":"merged","implication":"superseded"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["scripts/install.sh","scripts/release.py"]},{"kind":"pr","number":38171,"title":"fix(install): quote UV_CMD to handle spaces in home directory path (fixes #38163)","url":null,"state":"open","close_reason":{"refs":[{"kind":"commit","value":"00192d51f1213625b8b89a78d7e03efbaf1d78b6","number":0},{"kind":"commit","value":"4df280d5119ab3c96588be1290514ba78faec61b","number":0}],"category":"uncategorized","implication":"needs_llm"},"merged":false},{"kind":"pr","number":39420,"title":"fix(install): expand 8.3 short %TEMP% so Windows Node/Electron stages don't abort","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"e74033b39b","number":0},{"kind":"commit","value":"ac83365d96","number":0},{"kind":"pr","value":"#49838","number":49838}],"category":"merged_via","implication":"superseded"},"merged":false},{"kind":"pr","number":40923,"title":"fix(install): quote managed tool paths so install works under $HOME with spaces","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"1b91b8eaa5","number":0},{"kind":"commit","value":"34efc67b20","number":0},{"kind":"pr","value":"#102765","number":102765},{"kind":"pr","value":"#40820","number":40820}],"category":"superseded_by_pr","implication":"superseded"},"merged":false},{"kind":"pr","number":47832,"title":"fix(install): rewrite venv entrypoint shebangs when HERMES_HOME has spaces","url":null,"state":"open","close_reason":{"category":"uncategorized","implication":"needs_llm"},"merged":false},{"kind":"pr","number":47892,"title":"fix(install): reject HERMES_HOME paths with spaces early (#47822)","url":null,"state":"closed","close_reason":{"category":"uncategorized","implication":"needs_llm"},"merged":false},{"kind":"pr","number":49838,"title":"fix(install): expand 8.3 short %TEMP% so Windows Node/Electron stages don't abort","url":null,"state":"merged","close_reason":{"category":"merged","implication":"superseded"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["scripts/install.ps1","scripts/tests/test-install-ps1-longpath.ps1"],"fix_hunks":[{"file":"scripts/install.ps1","hunks":["@@ -88,6 +88,50 @@ try {\n     # Mojibake on output is then cosmetic-only, install still works.\n }\n \n+# ============================================================================\n+# 8.3 short-path normalization\n+# ============================================================================\n+# When the Windows user-profile folder name contains a space (e.g.\n+# \"First Last\"), Windows generates an 8.3 short alias for it (e.g. FIRST~1.LAS)\n+# and may expose %TEMP%/%TMP% in that short form:\n+#   C:\\Users\\FIRST~1.LAS\\AppData\\Local\\Temp\n+# PowerShell's FileSystem provider mishandles the \"~1.ext\" component when such a\n+# path is handed to a provider cmdlet like `Tee-Object -FilePath` /\n+# `Out-File -FilePath`, throwing:\n+#   \"An object at the specified path C:\\Users\\FIRST~1.LAS does not exist.\"\n+# Every Node/Electron build+install stage streams its log to %TEMP% via\n+# Tee-Object, so they all abort with that error, while the Python/uv stages --\n+# which never write a side log to %TEMP% through a provider cmdlet -- complete\n+# fine. Expanding %TEMP%/%TMP% back to their long form once, up front, lets\n+# every downstream cmdlet (and child process) see a path the provider can\n+# resolve. (GH: Windows desktop installer fails at Node/Electron stages.)\n+\n+function ConvertTo-LongPath {\n+    param([string]$Path)\n+    if ([string]::IsNullOrWhiteSpace($Path)) { return $Path }\n+    # Only 8.3 short names carry a tilde+digit (\"~1\"); skip the COM round-trip\n+    # for ordinary long paths.\n+    if ($Path -notmatch '~\\d') { return $Path }\n+    try {\n+        $fso = New-Object -ComObject Scripting.FileSystemObject\n+        if ($fso.FolderExists($Path)) { return $fso.GetFolder($Path).Path }\n+        if ($fso.FileExists($Path))   { return $fso.GetFile($Path).Path }\n+    } catch {\n+        # COM unavailable / locked-down host: fall back to the original path.\n+    }\n+    return $Path\n+}\n+\n+foreach ($tmpVar in @('TEMP', 'TMP')) {\n+    $current = [Environment]::GetEnvironmentVariable($tmpVar)\n+    if ($current) {\n+        $expanded = ConvertTo-LongPath $current\n+        if ($expanded -and $expanded -ne $current) {\n+            Set-Item -Path \"Env:$tmpVar\" -Value $expanded\n+        }\n+    }\n+}\n+\n # ============================================================================\n # Configuration\n # ============================================================================"]},{"file":"scripts/tests/test-install-ps1-longpath.ps1","hunks":["@@ -0,0 +1,86 @@\n+# Unit tests for install.ps1's ConvertTo-LongPath helper.\n+#\n+# Run from a PowerShell prompt:\n+#\n+#   powershell -NoProfile -ExecutionPolicy Bypass -File scripts/tests/test-install-ps1-longpath.ps1\n+#\n+# Background: on a Windows profile whose folder name contains a space (e.g.\n+# \"First Last\"), %TEMP%/%TMP% can be exposed as an 8.3 short path\n+# (C:\\Users\\FIRST~1.LAS\\...). PowerShell's FileSystem provider chokes on the\n+# \"~1.ext\" component when it reaches a provider cmdlet (Tee-Object -FilePath),\n+# aborting the Node/Electron install+build stages. install.ps1 expands such\n+# paths to their long form up front; this verifies the helper's contract.\n+#\n+# We extract just the function from install.ps1 via the AST so the installer's\n+# top-level body never runs (dot-sourcing would execute the whole script).\n+# The COM-backed expansion only fires for inputs containing \"~<digit>\"; the\n+# pass-through and graceful-fallback paths are assertable on any host (incl.\n+# non-Windows pwsh, where the COM object is simply unavailable).\n+\n+$ErrorActionPreference = \"Stop\"\n+$repoRoot = Split-Path -Parent (Split-Path -Parent (Split-Path -Parent $MyInvocation.MyCommand.Path))\n+$installScript = Join-Path $repoRoot \"scripts/install.ps1\"\n+\n+if (-not (Test-Path $installScript)) {\n+    throw \"Could not locate install.ps1 at $installScript\"\n+}\n+\n+$failures = 0\n+function Assert-Equal {\n+    param([Parameter(Mandatory = $true)] $Expected,\n+          [Parameter(Mandatory = $true)] $Actual,\n+          [Parameter(Mandatory = $true)] [string]$Label)\n+    if ($Expected -ne $Actual) {\n+        Write-Host \"FAIL: $Label\" -ForegroundColor Red\n+        Write-Host \"  expected: $Expected\"\n+        Write-Host \"  actual:   $Actual\"\n+        $script:failures++\n+    } else {\n+        Write-Host \"OK: $Label\" -ForegroundColor Green\n+    }\n+}\n+\n+# --- Load ConvertTo-LongPath from install.ps1 without executing the script ---\n+$tokens = $null\n+$errors = $null\n+$ast = [System.Management.Automation.Language.Parser]::ParseFile($installScript, [ref]$tokens, [ref]$errors)\n+$fnAst = $ast.FindAll(\n+    {\n+        param($node)\n+        $node -is [System.Management.Automation.Language.FunctionDefinitionAst] -and\n+        $node.Name -eq 'ConvertTo-LongPath'\n+    }, $true) | Select-Object -First 1\n+\n+if (-not $fnAst) {\n+    throw \"ConvertTo-LongPath not found in install.ps1 -- did the helper get renamed/removed?\"\n+}\n+. ([scriptblock]::Create($fnAst.Extent.Text))\n+\n+# --- Tests ---\n+Write-Host \"\"\n+Write-Host \"-- ConvertTo-LongPath --\"\n+\n+Assert-Equal -Expected \"\" -Actual (ConvertTo-LongPath \"\") -Label \"empty string returns empty\"\n+Assert-Equal -Expected $null -Actual (ConvertTo-LongPath $null) -Label \"null returns null\"\n+\n+# No 8.3 component -> returned verbatim (even with spaces).\n+$longish = \"C:\\Users\\First Last\\AppData\\Local\\Temp\"\n+Assert-Equal -Expected $longish -Actual (ConvertTo-LongPath $longish) -Label \"long path with spaces is unchanged\"\n+\n+$noTilde = \"/tmp/some/long/path\"\n+Assert-Equal -Expected $noTilde -Actual (ConvertTo-LongPath $noTilde) -Label \"tilde-free path is unchanged\"\n+\n+# Looks like an 8.3 name but does not exist -> graceful fallback to the input\n+# (FolderExists/FileExists both false, or COM unavailable on this host).\n+$fakeShort = \"C:\\Users\\FIRST~1.LAS\\does\\not\\exist\"\n+Assert-Equal -Expected $fakeShort -Actual (ConvertTo-LongPath $fakeShort) -Label \"nonexistent 8.3 path falls back to input\"\n+\n+# --- Summary ---\n+Write-Host \"\"\n+if ($failures -gt 0) {\n+    Write-Host \"FAILED: $failures assertion(s) failed\" -ForegroundColor Red\n+    exit 1\n+} else {\n+    Write-Host \"All ConvertTo-LongPath tests passed.\" -ForegroundColor Green\n+    exit 0\n+}\n"]}]},{"kind":"pr","number":53126,"title":"fix(installer): quote uv path invocations","url":null,"state":"open","close_reason":{"refs":[{"kind":"pr","value":"#38171","number":38171},{"kind":"pr","value":"#40923","number":40923},{"kind":"pr","value":"#47400","number":47400},{"kind":"pr","value":"#38171","number":38171}],"category":"duplicate_of","implication":"duplicate"},"merged":false},{"kind":"pr","number":54142,"title":"fix(install): normalize 8.3 short profile paths so Windows desktop stage doesn't abort (#43334)","url":null,"state":"closed","close_reason":{"category":"silent_close","implication":"active"},"merged":false},{"kind":"pr","number":57249,"title":"fix(install): quote AGENT_BROWSER_EXECUTABLE_PATH for spaced paths","url":null,"state":"open","close_reason":{"refs":[{"kind":"pr","value":"#57449","number":57449}],"category":"duplicate_of","implication":"duplicate"},"merged":false},{"kind":"pr","number":57449,"title":"fix(installer): quote browser env override paths","url":null,"state":"open","close_reason":{"refs":[{"kind":"pr","value":"#57249","number":57249}],"category":"uncategorized","implication":"needs_llm"},"merged":false},{"kind":"pr","number":60480,"title":"fix(desktop): replace cpSync with manual recursive copy for Windows non-ASCII path compatibility","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"97d9828bcfc87f19bece21f808768f871331ed3a","number":0},{"kind":"commit","value":"97d9828bcfc87f19bece21f808768f871331ed3a","number":0}],"category":"partial_fix","implication":"needs_llm"},"merged":false},{"kind":"pr","number":61833,"title":"fix(install): normalize accented-username 8.3 short paths (GH #52842)","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#78682","number":78682},{"kind":"pr","value":"#57526","number":57526}],"category":"superseded_by_pr","implication":"superseded"},"merged":false},{"kind":"pr","number":66483,"title":"fix(cli): quote .env values with internal whitespace in save_env_value","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#67192","number":67192}],"category":"uncategorized","implication":"needs_llm"},"merged":false,"is_fix_pr":true,"fix_tier":"suggested","fix_detail_withheld":true},{"kind":"pr","number":66583,"title":"fix(save_env_value): quote values with internal spaces to prevent shell-sourcing breakage (#66482)","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#67192","number":67192},{"kind":"pr","value":"#66482","number":66482},{"kind":"pr","value":"#66483","number":66483}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false},{"kind":"pr","number":66625,"title":"fix(config): quote .env values containing internal whitespace (#66482)","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#67192","number":67192},{"kind":"pr","value":"#66482","number":66482},{"kind":"pr","value":"#66483","number":66483}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false},{"kind":"pr","number":66711,"title":"fix(config): quote .env values with internal whitespace (#66482)","url":null,"state":"closed","close_reason":{"category":"duplicate_of","implication":"duplicate"},"merged":false},{"kind":"pr","number":67192,"title":"fix(config): P2 batch — .env quoting/UTF-16, aux key_env, profile-aware system prompt","url":null,"state":"merged","close_reason":{"category":"merged","implication":"superseded"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["agent/auxiliary_client.py","agent/system_prompt.py","hermes_cli/config.py","hermes_cli/env_loader.py","tests/hermes_cli/test_config.py","tests/hermes_cli/test_env_loader.py"],"fix_hunks":[{"file":"agent/auxiliary_client.py","hunks":["@@ -6253,6 +6253,13 @@ def _resolve_task_provider_model(\n         cfg_model = str(task_config.get(\"model\", \"\")).strip() or None\n         cfg_base_url = str(task_config.get(\"base_url\", \"\")).strip() or None\n         cfg_api_key = [redacted:secret-assignment]\"api_key\", \"\")).strip() or None\n+        # Resolve key_env → env var when api_key is not set directly\n+        if not cfg_api_key:\n+            cfg_key_env = str(\n+                task_config.get(\"key_env\") or task_config.get(\"api_key_env\") or \"\"\n+            ).strip()\n+            if cfg_key_env:\n+                cfg_api_key = [redacted:secret-assignment] \"\").strip() or None\n         cfg_api_mode = str(task_config.get(\"api_mode\", \"\")).strip() or None\n \n     # 'auto' is a sentinel meaning \"inherit from main runtime / auto-detect\", not"]},{"file":"agent/system_prompt.py","hunks":["@@ -46,6 +46,7 @@\n     drain_truncation_warnings,\n )\n from agent.runtime_cwd import resolve_context_cwd\n+from hermes_constants import get_hermes_home\n from utils import is_truthy_value\n \n ","@@ -395,7 +396,7 @@ def build_system_prompt_parts(agent: Any, system_message: Optional[str] = None)\n     if active_profile == \"default\":\n         stable_parts.append(\n             \"Active Hermes profile: default. Other profiles (if any) live \"\n-            \"under ~/.hermes/profiles/<name>/. Each profile has its own \"\n+            \"under \" + str(get_hermes_home()) + \"/profiles/<name>/. Each profile has its own \"\n             \"skills/, plugins/, cron/, and memories/ that affect a different \"\n             \"session than this one. Do not modify another profile's \"\n             \"skills/plugins/cron/memories unless the user explicitly directs \"","@@ -404,9 +405,9 @@ def build_system_prompt_parts(agent: Any, system_message: Optional[str] = None)\n     else:\n         stable_parts.append(\n             f\"Active Hermes profile: {active_profile}. This session reads \"\n-            f\"and writes ~/.hermes/profiles/{active_profile}/. The default \"\n-            f\"profile's data lives at ~/.hermes/skills/, ~/.hermes/plugins/, \"\n-            f\"~/.hermes/cron/, ~/.hermes/memories/ — those belong to a \"\n+            f\"and writes {get_hermes_home()}/profiles/{active_profile}/. The default \"\n+            f\"profile's data lives at {get_hermes_home()}/skills/, {get_hermes_home()}/plugins/, \"\n+            f\"{get_hermes_home()}/cron/, {get_hermes_home()}/memories/ — those belong to a \"\n             f\"different session run from a different shell. Do NOT modify \"\n             f\"another profile's skills/plugins/cron/memories unless the user \"\n             f\"explicitly directs you to. The cross-profile write guard will \""]},{"file":"hermes_cli/config.py","hunks":["@@ -7829,11 +7829,16 @@ def _quote_env_value(value: str) -> str:\n     \"\"\"Quote .env values containing characters with special dotenv meaning.\"\"\"\n     if value == \"\":\n         return value\n+    # Internal whitespace (space/tab/etc.) must be quoted so shell `set -a; . file`\n+    # word-splits don't break paths like macOS \"Application Support\". Leading/\n+    # trailing whitespace is already covered by the strip check; any() covers\n+    # internal runs that strip() would leave alone.\n     needs_quoting = (\n         \"#\" in value\n         or '\"' in value\n         or \"'\" in value\n         or value != value.strip()\n+        or any(c.isspace() for c in value)\n     )\n     if not needs_quoting:\n         return value"]},{"file":"hermes_cli/env_loader.py","hunks":["@@ -2,6 +2,8 @@\n \n from __future__ import annotations\n \n+import codecs\n+import io\n import os\n import sys\n from pathlib import Path","@@ -21,6 +23,12 @@\n # tests) don't spam the same warning multiple times.\n _WARNED_KEYS: set[str] = set()\n \n+# Paths we've already emitted a UTF-32 refuse-to-mangle warning for.\n+# load_hermes_dotenv can call _sanitize_env_file_if_needed multiple times\n+# for the same file (user env + project env + hot-reload); once per path\n+# is enough.\n+_WARNED_UTF32_PATHS: set[str] = set()\n+\n # Map of env-var name → source label (\"bitwarden\", etc.) for credentials\n # that were injected by an external secret source during load_hermes_dotenv().\n # Used by setup / `hermes model` flows to label detected credentials so","@@ -176,6 +184,12 @@ def _sanitize_env_file_if_needed(path: Path) -> None:\n     with ``ValueError: embedded null byte`` — typically introduced by\n     copy-pasting API keys from terminals or rich-text editors.\n \n+    Encoding: sniffs a leading BOM *before* any text decode. UTF-16\n+    (Notepad \"Unicode\") is decoded correctly and rewritten as clean\n+    UTF-8. UTF-32 is refused (left untouched) so we never fall through\n+    to the errors=replace corruption path. Order of BOM checks matters:\n+    UTF-32-LE's BOM starts with UTF-16-LE's FF FE.\n+\n     We delegate to ``hermes_cli.config._sanitize_env_lines`` which\n     already knows all valid Hermes env-var names and can split\n     concatenated lines correctly.","@@ -187,16 +201,70 @@ def _sanitize_env_file_if_needed(path: Path) -> None:\n     except ImportError:\n         return  # early bootstrap — config module not available yet\n \n-    read_kw = {\"encoding\": \"utf-8-sig\", \"errors\": \"replace\"}\n     try:\n-        with open(path, **read_kw) as f:\n-            original = f.readlines()\n+        raw = path.read_bytes()\n+    except Exception:\n+        return\n+\n+    # Sniff leading BOM bytes BEFORE decoding. ORDER MATTERS:\n+    # codecs.BOM_UTF32_LE is FF FE 00 00, which startswith\n+    # codecs.BOM_UTF16_LE (FF FE). Checking UTF-16 first would\n+    # misdetect UTF-32-LE as UTF-16-LE and mangle the file.\n+    force_utf8_rewrite = False\n+    if raw.startswith(codecs.BOM_UTF32_LE) or raw.startswith(codecs.BOM_UTF32_BE):\n+        # Lazy import keeps the module import block identical to #65124's\n+        # codecs/io additions so the two PRs auto-merge either order.\n+        path_key = str(path.resolve())\n+        if path_key not in _WARNED_UTF32_PATHS:\n+            _WARNED_UTF32_PATHS.add(path_key)\n+            import logging\n+\n+            logging.getLogger(__name__).warning(\n+                \"Skipping .env sanitize for %s: UTF-32 BOM detected; \"\n+                \"leaving file untouched to avoid corruption\",\n+                path,\n+            )\n+        return\n+    if raw.startswith(codecs.BOM_UTF16_LE) or raw.startswith(codecs.BOM_UTF16_BE):\n+        # \"utf-16\" uses the BOM to select endianness and strips it.\n+        # TextIOWrapper + newline=None matches open()'s universal-newlines\n+        # line splitting (\\\\n/\\\\r\\\\n/\\\\r only — not splitlines()'s extra\n+        # Unicode boundaries like U+2028), so sanitize sees the same lines\n+        # as the UTF-8 path.\n+        try:\n+            with io.TextIOWrapper(\n+                io.BytesIO(raw), encoding=\"utf-16\", newline=None\n+            ) as f:\n+                original = f.readlines()\n+        except UnicodeDecodeError:\n+            return\n+        # Source is UTF-16 on disk; always rewrite as clean UTF-8 so\n+        # the subsequent utf-8 dotenv load sees a canonical file.\n+        force_utf8_rewrite = True\n+    else:\n+        # Default path: utf-8-sig (strips UTF-8 BOM if present) with\n+        # errors=replace so embedded NULs can be stripped below.\n+        try:\n+            with open(path, encoding=\"utf-8-sig\", errors=\"replace\") as f:\n+                original = f.readlines()\n+        except Exception:\n+            return\n+        # Defense-in-depth: errors=replace turns undecodable leading\n+        # bytes into U+FFFD. Persisting that glues replacement chars\n+        # onto the first key name and rewrites the file permanently\n+        # (the UTF-16-with-BOM corruption path before BOM sniffing).\n+        # Leave the file untouched rather than write the mangling.\n+        if original and original[0].startswith(\"\\ufffd\"):\n+            return\n+\n+    try:\n         # Strip null bytes before _sanitize_env_lines so they never\n         # reach python-dotenv (which passes them to os.environ and\n-        # crashes with ValueError).\n+        # crashes with ValueError). Also intentionally repairs\n+        # BOM-less UTF-16 (NUL-padded ASCII) into clean UTF-8.\n         stripped = [line.replace(\"\\x00\", \"\") for line in original]\n         sanitized = _sanitize_env_lines(stripped)\n-        if sanitized != original:\n+        if sanitized != original or force_utf8_rewrite:\n             import tempfile\n             fd, tmp = tempfile.mkstemp(\n                 dir=str(path.parent), suffix=\".tmp\", prefix=\".env_\""]},{"file":"tests/hermes_cli/test_config.py","hunks":["@@ -607,6 +607,210 @@ def test_save_env_value_updates_hash_value_with_quotes(self, tmp_path):\n             assert parsed[\"ANTHROPIC_TOKEN\"] == token\n             assert load_env()[\"ANTHROPIC_TOKEN\"] == token\n \n+    def test_save_env_value_quotes_values_with_internal_spaces(self, tmp_path):\n+        \"\"\"Internal spaces must be quoted so shell-sourcing does not word-split.\n+\n+        Sibling of installer #57247: core writer left\n+        TERMINAL_SSH_KEY=/Users/.../Application Support/... unquoted.\n+        python-dotenv still parsed it; ``set -a; . file`` failed.\n+        \"\"\"\n+        import subprocess\n+        from dotenv import dotenv_values\n+\n+        path = \"/Users/paulo/Library/Application Support/hermes/keys/id_ed25519\"\n+        with patch.dict(os.environ, {\"HERMES_HOME\": str(tmp_path)}, clear=False):\n+            os.environ.pop(\"TERMINAL_SSH_KEY\", None)\n+            save_env_value(\"TERMINAL_SSH_KEY\", path)\n+\n+            env_path = tmp_path / \".env\"\n+            content = env_path.read_text(encoding=\"utf-8\")\n+            assert f'TERMINAL_SSH_KEY=\"{path}\"' in content\n+\n+            parsed = dotenv_values(str(env_path))\n+            assert parsed[\"TERMINAL_SSH_KEY\"] == path\n+            assert load_env()[\"TERMINAL_SSH_KEY\"] == path\n+\n+            # Shell source must round-trip (this is what the bug broke).\n+            r = subprocess.run(\n+                [\n+                    \"env\",\n+                    \"-i\",\n+                    \"sh\",\n+                    \"-c\",\n+                    f\"set -a; . '{env_path}'; set +a; \"\n+                    f'printf \"%s\" \"$TERMINAL_SSH_KEY\"',\n+                ],\n+                capture_output=True,\n+                text=True,\n+            )\n+            assert r.returncode == 0, r.stderr\n+            assert r.stderr == \"\"\n+            assert r.stdout == path\n+\n+    def test_save_env_value_quotes_values_with_tabs(self, tmp_path):\n+        \"\"\"Tabs trigger quoting; round-trip via dotenv and shell source.\"\"\"\n+        import subprocess\n+        from dotenv import dotenv_values\n+\n+        value = \"left\\tright\"\n+        with patch.dict(os.environ, {\"HERMES_HOME\": str(tmp_path)}, clear=False):\n+            os.environ.pop(\"TABBY_KEY\", None)\n+            save_env_value(\"TABBY_KEY\", value)\n+\n+            env_path = tmp_path / \".env\"\n+            content = env_path.read_text(encoding=\"utf-8\")\n+            assert f'TABBY_KEY=\"{value}\"' in content\n+\n+            parsed = dotenv_values(str(env_path))\n+            assert parsed[\"TABBY_KEY\"] == value\n+            assert load_env()[\"TABBY_KEY\"] == value\n+\n+            r = subprocess.run(\n+                [\n+                    \"env\",\n+                    \"-i\",\n+                    \"sh\",\n+                    \"-c\",\n+                    f\"set -a; . '{env_path}'; set +a; \"\n+                    f'printf \"%s\" \"$TABBY_KEY\"',\n+                ],\n+                capture_output=True,\n+                text=True,\n+            )\n+            assert r.returncode == 0, r.stderr\n+            assert r.stderr == \"\"\n+            assert r.stdout == value\n+\n+    def test_save_env_value_spaced_path_is_idempotent(self, tmp_path):\n+        \"\"\"Saving the same spaced value twice must not grow quotes.\"\"\"\n+        path = \"/Users/me/Application Support/key\"\n+        with patch.dict(os.environ, {\"HERMES_HOME\": str(tmp_path)}, clear=False):\n+            os.environ.pop(\"TERMINAL_SSH_KEY\", None)\n+            save_env_value(\"TERMINAL_SSH_KEY\", path)\n+            first = (tmp_path / \".env\").read_text(encoding=\"utf-8\")\n+            save_env_value(\"TERMINAL_SSH_KEY\", path)\n+            second = (tmp_path / \".env\").read_text(encoding=\"utf-8\")\n+\n+            assert first == second\n+            assert first.count('TERMINAL_SSH_KEY=\"') == 1\n+            assert '\"\"' not in first\n+            assert f'TERMINAL_SSH_KEY=\"{path}\"' in first\n+\n+    def test_save_env_value_readback_resave_is_idempotent(self, tmp_path):\n+        \"\"\"hermes setup path: dotenv unquotes, then re-save must not grow quotes.\"\"\"\n+        from dotenv import dotenv_values\n+\n+        path = \"/Users/me/Application Support/key\"\n+        with patch.dict(os.environ, {\"HERMES_HOME\": str(tmp_path)}, clear=False):\n+            os.environ.pop(\"TERMINAL_SSH_KEY\", None)\n+            save_env_value(\"TERMINAL_SSH_KEY\", path)\n+            first = (tmp_path / \".env\").read_text(encoding=\"utf-8\")\n+\n+            # Real read-back boundary (what setup uses via get_env_value/dotenv).\n+            read_back = dotenv_values(str(tmp_path / \".env\"))[\"TERMINAL_SSH_KEY\"]\n+            assert read_back == path\n+            save_env_value(\"TERMINAL_SSH_KEY\", read_back)\n+            second = (tmp_path / \".env\").read_text(encoding=\"utf-8\")\n+\n+            assert first == second\n+            assert f'TERMINAL_SSH_KEY=\"{path}\"' in second\n+\n+    def test_save_env_value_strips_newlines_before_quoting(self, tmp_path):\n+        \"\"\"save_env_value strips \\\\n/\\\\r before _quote_env_value; result is one line.\n+\n+        Pins the boundary so any(c.isspace()) never quotes multi-line dotenv\n+        values through this writer (newlines never reach the quoter).\n+        \"\"\"\n+        from dotenv import dotenv_values\n+\n+        raw = \"line1\\nline2\\rline3\"\n+        with patch.dict(os.environ, {\"HERMES_HOME\": str(tmp_path)}, clear=False):\n+            os.environ.pop(\"MULTI_KEY\", None)\n+            save_env_value(\"MULTI_KEY\", raw)\n+\n+            content = (tmp_path / \".env\").read_text(encoding=\"utf-8\")\n+            # Single KEY= line, no embedded raw newlines in the value payload.\n+            lines = [ln for ln in content.splitlines() if ln.startswith(\"MULTI_KEY=\")]\n+            assert len(lines) == 1\n+            assert \"\\n\" not in lines[0]\n+            assert \"\\r\" not in lines[0]\n+            # Newlines stripped -> \"line1line2line3\" has no whitespace -> unquoted.\n+            assert lines[0] == \"MULTI_KEY=line1line2line3\"\n+            parsed = dotenv_values(str(tmp_path / \".env\"))\n+            assert parsed[\"MULTI_KEY\"] == \"line1line2line3\"\n+\n+    def test_save_env_value_simple_values_stay_unquoted(self, tmp_path):\n+        \"\"\"No quoting churn: plain values remain bare; untouched lines unchanged.\"\"\"\n+        env_path = tmp_path / \".env\"\n+        # Pre-existing lines: one simple, one already correctly bare.\n+        env_path.write_text(\n+            \"KEEP_SIMPLE=plainvalue\\n\"\n+            \"OTHER_KEY=foo123\\n\",\n+            encoding=\"utf-8\",\n+        )\n+        with patch.dict(os.environ, {\"HERMES_HOME\": str(tmp_path)}, clear=False):\n+            os.environ.pop(\"NEW_KEY\", None)\n+            os.environ.pop(\"KEEP_SIMPLE\", None)\n+            save_env_value(\"NEW_KEY\", \"bar-simple\")\n+\n+            content = env_path.read_text(encoding=\"utf-8\")\n+            # Newly written simple value is unquoted.\n+            assert \"NEW_KEY=bar-simple\\n\" in content\n+            assert 'NEW_KEY=\"' not in content\n+            # Untouched pre-existing simple lines are not re-quoted.\n+            assert \"KEEP_SIMPLE=plainvalue\\n\" in content\n+            assert \"OTHER_KEY=foo123\\n\" in content\n+            assert 'KEEP_SIMPLE=\"' not in content\n+            assert 'OTHER_KEY=\"' not in content\n+\n+    def test_save_env_value_does_not_requote_untouched_spaced_lines(self, tmp_path):\n+        \"\"\"Mass-requote guard: rewriting another key leaves legacy spaced\n+        lines as-is (fix only applies when that key is saved again).\n+        \"\"\"\n+        env_path = tmp_path / \".env\"\n+        legacy = (\n+            \"TERMINAL_SSH_KEY=/Users/me/Application Support/key\\n\"\n+            \"PLAIN=ok\\n\"\n+        )\n+        env_path.write_text(legacy, encoding=\"utf-8\")\n+        with patch.dict(os.environ, {\"HERMES_HOME\": str(tmp_path)}, clear=False):\n+            os.environ.pop(\"PLAIN\", None)\n+            save_env_value(\"PLAIN\", \"ok2\")\n+\n+            content = env_path.read_text(encoding=\"utf-8\")\n+            # Legacy spaced line not re-serialized by this write.\n+            assert (\n+                \"TERMINAL_SSH_KEY=/Users/me/Application Support/key\\n\" in content\n+            )\n+            assert 'TERMINAL_SSH_KEY=\"' not in content\n+            assert \"PLAIN=ok2\\n\" in content\n+\n+    def test_save_env_value_already_quoted_input_is_not_double_wrapped_idempotently(\n+        self, tmp_path\n+    ):\n+        \"\"\"Callers pass raw values; if a value literally contains quote\n+        characters, escaping+wrap is the dialect (#57249). Re-saving the\n+        same raw value is stable (no quote growth). load_env round-trips.\n+        \"\"\"\n+        # User-typed value that already includes surrounding quotes as data.\n+        raw = '\"/Users/me/Application Support/key\"'\n+        with patch.dict(os.environ, {\"HERMES_HOME\": str(tmp_path)}, clear=False):\n+            os.environ.pop(\"TERMINAL_SSH_KEY\", None)\n+            save_env_value(\"TERMINAL_SSH_KEY\", raw)\n+            first = (tmp_path / \".env\").read_text(encoding=\"utf-8\")\n+            save_env_value(\"TERMINAL_SSH_KEY\", raw)\n+            second = (tmp_path / \".env\").read_text(encoding=\"utf-8\")\n+            assert first == second\n+            # One outer wrap layer only (escaped inner quotes, not nested wraps).\n+            line = [\n+                ln for ln in first.splitlines() if ln.startswith(\"TERMINAL_SSH_KEY=\")\n+            ][0]\n+            assert line.startswith('TERMINAL_SSH_KEY=\"')\n+            assert line.endswith('\"')\n+            assert line.count('TERMINAL_SSH_KEY=\"') == 1\n+            # Escaping dialect end-to-end: load sees the raw input, not stripped quotes.\n+            assert load_env()[\"TERMINAL_SSH_KEY\"] == raw\n+\n \n class TestRemoveEnvValue:\n     def test_removes_key_from_env_file(self, tmp_path):","@@ -726,7 +930,7 @@ def test_atomic_write_creates_valid_yaml(self, tmp_path):\n \n             # Read raw YAML to verify it's valid and correct\n             config_path = tmp_path / \"config.yaml\"\n-            with open(config_path) as f:\n+            with open(config_path, encoding=\"utf-8\") as f:\n                 raw = yaml.safe_load(f)\n             assert raw[\"model\"] == \"test/atomic-model\"\n             assert raw[\"agent\"][\"max_turns\"] == 77"]},{"file":"tests/hermes_cli/test_env_loader.py","hunks":["@@ -1,3 +1,4 @@\n+import codecs\n import importlib\n import os\n import sys","@@ -103,3 +104,268 @@ def test_main_import_applies_user_env_over_shell_values(tmp_path, monkeypatch):\n \n     assert os.getenv(\"OPENAI_BASE_URL\") == \"https://new.example/v1\"\n     assert os.getenv(\"HERMES_INFERENCE_PROVIDER\") == \"custom\"\n+\n+\n+# ---------------------------------------------------------------------------\n+# UTF-16 / UTF-32 .env sanitizer coverage\n+#\n+# Scope note: intentionally NO UTF-8-BOM assertions here. UTF-8 BOM handling\n+# for _load_dotenv_with_fallback is #65124's un-merged fix; a test here would\n+# couple the PRs. This suite covers only the sanitizer rewrite path for\n+# UTF-16/32 (and UTF-8 / cp1252 regression guards for that path).\n+# ---------------------------------------------------------------------------\n+\n+\n+def _assert_clean_utf8_env_on_disk(env_file, *, first_key: str) -> None:\n+    \"\"\"On-disk file must be clean UTF-8: no BOM, no U+FFFD, canonical key.\"\"\"\n+    after = env_file.read_bytes()\n+    assert not after.startswith(codecs.BOM_UTF8)\n+    assert not after.startswith(codecs.BOM_UTF16_LE)\n+    assert not after.startswith(codecs.BOM_UTF16_BE)\n+    text = after.decode(\"utf-8\")  # strict — raises if not clean UTF-8\n+    assert \"\\ufffd\" not in text\n+    assert text.startswith(f\"{first_key}=\") or f\"\\n{first_key}=\" in text\n+    assert first_key.encode(\"ascii\") in after\n+\n+\n+def test_utf16_le_bom_env_loads_and_rewrites_clean_utf8(tmp_path, monkeypatch):\n+    \"\"\"Notepad 'Unicode' (UTF-16-LE + BOM): first key loads; file rewritten UTF-8.\"\"\"\n+    home = tmp_path / \"hermes\"\n+    home.mkdir()\n+    env_file = home / \".env\"\n+    content = \"HERMES_TEST_KEY=hello_utf16\\nSECOND_KEY=world\\n\"\n+    env_file.write_bytes(codecs.BOM_UTF16_LE + content.encode(\"utf-16-le\"))\n+\n+    monkeypatch.delenv(\"HERMES_TEST_KEY\", raising=False)\n+    monkeypatch.delenv(\"SECOND_KEY\", raising=False)\n+    monkeypatch.delenv(\"\\ufffd\\ufffdHERMES_TEST_KEY\", raising=False)\n+\n+    loaded = load_hermes_dotenv(hermes_home=home)\n+\n+    assert loaded == [env_file]\n+    assert os.getenv(\"HERMES_TEST_KEY\") == \"hello_utf16\"\n+    assert os.getenv(\"SECOND_KEY\") == \"world\"\n+    assert os.environ.get(\"\\ufffd\\ufffdHERMES_TEST_KEY\") is None\n+    _assert_clean_utf8_env_on_disk(env_file, first_key=\"HERMES_TEST_KEY\")\n+\n+\n+def test_utf16_be_bom_env_loads_and_rewrites_clean_utf8(tmp_path, monkeypatch):\n+    \"\"\"UTF-16-BE + BOM: first key loads; file rewritten as clean UTF-8.\"\"\"\n+    home = tmp_path / \"hermes\"\n+    home.mkdir()\n+    env_file = home / \".env\"\n+    content = \"HERMES_TEST_KEY=hello_utf16\\nSECOND_KEY=world\\n\"\n+    env_file.write_bytes(codecs.BOM_UTF16_BE + content.encode(\"utf-16-be\"))\n+\n+    monkeypatch.delenv(\"HERMES_TEST_KEY\", raising=False)\n+    monkeypatch.delenv(\"SECOND_KEY\", raising=False)\n+\n+    loaded = load_hermes_dotenv(hermes_home=home)\n+\n+    assert loaded == [env_file]\n+    assert os.getenv(\"HERMES_TEST_KEY\") == \"hello_utf16\"\n+    assert os.getenv(\"SECOND_KEY\") == \"world\"\n+    _assert_clean_utf8_env_on_disk(env_file, first_key=\"HERMES_TEST_KEY\")\n+\n+\n+def test_utf16_le_no_bom_still_repairs_to_utf8(tmp_path, monkeypatch):\n+    \"\"\"BOM-less UTF-16-LE: NUL-strip repair is now intentional; rewrites UTF-8.\"\"\"\n+    home = tmp_path / \"hermes\"\n+    home.mkdir()\n+    env_file = home / \".env\"\n+    content = \"HERMES_TEST_KEY=hello_utf16\\nSECOND_KEY=world\\n\"\n+    env_file.write_bytes(content.encode(\"utf-16-le\"))  # no BOM\n+\n+    monkeypatch.delenv(\"HERMES_TEST_KEY\", raising=False)\n+    monkeypatch.delenv(\"SECOND_KEY\", raising=False)\n+\n+    loaded = load_hermes_dotenv(hermes_home=home)\n+\n+    assert loaded == [env_file]\n+    assert os.getenv(\"HERMES_TEST_KEY\") == \"hello_utf16\"\n+    assert os.getenv(\"SECOND_KEY\") == \"world\"\n+    _assert_clean_utf8_env_on_disk(env_file, first_key=\"HERMES_TEST_KEY\")\n+\n+\n+def test_utf16_be_no_bom_still_repairs_to_utf8(tmp_path, monkeypatch):\n+    \"\"\"BOM-less UTF-16-BE: NULs are on the opposite side; still repairs.\"\"\"\n+    home = tmp_path / \"hermes\"\n+    home.mkdir()\n+    env_file = home / \".env\"\n+    content = \"HERMES_TEST_KEY=hello_utf16\\nSECOND_KEY=world\\n\"\n+    env_file.write_bytes(content.encode(\"utf-16-be\"))  # no BOM\n+\n+    monkeypatch.delenv(\"HERMES_TEST_KEY\", raising=False)\n+    monkeypatch.delenv(\"SECOND_KEY\", raising=False)\n+\n+    loaded = load_hermes_dotenv(hermes_home=home)\n+\n+    assert loaded == [env_file]\n+    assert os.getenv(\"HERMES_TEST_KEY\") == \"hello_utf16\"\n+    assert os.getenv(\"SECOND_KEY\") == \"world\"\n+    _assert_clean_utf8_env_on_disk(env_file, first_key=\"HERMES_TEST_KEY\")\n+\n+\n+def test_utf16_le_bom_preserves_non_ascii_values(tmp_path, monkeypatch):\n+    \"\"\"UTF-16-LE+BOM rewrite must preserve non-ASCII values (not just ASCII keys).\n+\n+    Uses non-credential var names so _sanitize_loaded_credentials does not\n+    strip non-ASCII from values (that path only targets *_KEY/*_TOKEN/etc.).\n+    \"\"\"\n+    home = tmp_path / \"hermes\"\n+    home.mkdir()\n+    env_file = home / \".env\"\n+    content = \"GREETING=café\\nCJK_LABEL=日本語\\n\"\n+    env_file.write_bytes(codecs.BOM_UTF16_LE + content.encode(\"utf-16-le\"))\n+\n+    monkeypatch.delenv(\"GREETING\", raising=False)\n+    monkeypatch.delenv(\"CJK_LABEL\", raising=False)\n+\n+    loaded = load_hermes_dotenv(hermes_home=home)\n+\n+    assert loaded == [env_file]\n+    assert os.getenv(\"GREETING\") == \"café\"\n+    assert os.getenv(\"CJK_LABEL\") == \"日本語\"\n+    after = env_file.read_bytes()\n+    assert after.decode(\"utf-8\")  # strict\n+    assert \"café\".encode(\"utf-8\") in after\n+    assert \"日本語\".encode(\"utf-8\") in after\n+    assert b\"\\xef\\xbf\\xbd\" not in after\n+\n+\n+def test_utf32_le_bom_leaves_file_untouched(tmp_path, caplog):\n+    \"\"\"UTF-32-LE BOM: refuse-to-mangle (leave bytes untouched + warning).\n+\n+    UTF-32-LE's BOM starts with UTF-16-LE's FF FE; sniff order must check\n+    UTF-32 first so we never misdetect and corrupt.\n+\n+    Exercises ``_sanitize_env_file_if_needed`` only: the dotenv load path\n+    is out of scope here (#65124's surface) and still cannot ingest UTF-32.\n+    \"\"\"\n+    import logging\n+\n+    from hermes_cli.env_loader import _sanitize_env_file_if_needed\n+\n+    env_file = tmp_path / \".env\"\n+    content = \"HERMES_TEST_KEY=hello_utf32\\nSECOND_KEY=world\\n\"\n+    raw = codecs.BOM_UTF32_LE + content.encode(\"utf-32-le\")\n+    env_file.write_bytes(raw)\n+\n+    with caplog.at_level(logging.WARNING, logger=\"hermes_cli.env_loader\"):\n+        _sanitize_env_file_if_needed(env_file)\n+\n+    assert env_file.read_bytes() == raw  # untouched\n+    assert any(\"UTF-32\" in r.message for r in caplog.records)\n+\n+\n+def test_utf32_be_bom_leaves_file_untouched(tmp_path, caplog):\n+    \"\"\"UTF-32-BE BOM: same refuse-to-mangle path as LE (ordering independence).\"\"\"\n+    import logging\n+\n+    from hermes_cli.env_loader import _sanitize_env_file_if_needed\n+\n+    env_file = tmp_path / \".env\"\n+    content = \"HERMES_TEST_KEY=hello_utf32\\nSECOND_KEY=world\\n\"\n+    raw = codecs.BOM_UTF32_BE + content.encode(\"utf-32-be\")\n+    env_file.write_bytes(raw)\n+\n+    with caplog.at_level(logging.WARNING, logger=\"hermes_cli.env_loader\"):\n+        _sanitize_env_file_if_needed(env_file)\n+\n+    assert env_file.read_bytes() == raw\n+    assert any(\"UTF-32\" in r.message for r in caplog.records)\n+\n+\n+def test_utf32_warning_fires_once_per_path(tmp_path, caplog, monkeypatch):\n+    \"\"\"Three sanitize calls on the same UTF-32 file → exactly one warning.\n+\n+    Matches house style for warn-once (module-level seen-set, same class as\n+    ``_WARNED_KEYS``): hot-reload / multi-entry load must not spam logs.\n+    \"\"\"\n+    import logging\n+\n+    import hermes_cli.env_loader as env_loader\n+    from hermes_cli.env_loader import _sanitize_env_file_if_needed\n+\n+    # Isolate process-level seen-set so other tests' paths don't leak in.\n+    monkeypatch.setattr(env_loader, \"_WARNED_UTF32_PATHS\", set())\n+\n+    env_file = tmp_path / \".env\"\n+    content = \"HERMES_TEST_KEY=hello_utf32\\nSECOND_KEY=world\\n\"\n+    raw = codecs.BOM_UTF32_LE + content.encode(\"utf-32-le\")\n+    env_file.write_bytes(raw)\n+\n+    with caplog.at_level(logging.WARNING, logger=\"hermes_cli.env_loader\"):\n+        _sanitize_env_file_if_needed(env_file)\n+        _sanitize_env_file_if_needed(env_file)\n+        _sanitize_env_file_if_needed(env_file)\n+\n+    utf32_warnings = [r for r in caplog.records if \"UTF-32\" in r.message]\n+    assert len(utf32_warnings) == 1\n+    assert env_file.read_bytes() == raw\n+\n+\n+def test_leading_replacement_char_does_not_rewrite(tmp_path):\n+    \"\"\"errors=replace FFFD-on-first-line guard: do not persist mangling.\n+\n+    Leading 0xFF is not a UTF-16/32 BOM (those need the second BOM byte) but\n+    is undecodable as UTF-8, so the replace path would glue U+FFFD onto the\n+    key. The guard must leave the on-disk bytes untouched.\n+    \"\"\"\n+    from hermes_cli.env_loader import _sanitize_env_file_if_needed\n+\n+    env_file = tmp_path / \".env\"\n+    raw = b\"\\xffHERMES_TEST_KEY=should-not-rewrite\\nSECOND_KEY=ok\\n\"\n+    env_file.write_bytes(raw)\n+\n+    _sanitize_env_file_if_needed(env_file)\n+\n+    assert env_file.read_bytes() == raw\n+\n+\n+def test_plain_utf8_env_regression(tmp_path, monkeypatch):\n+    \"\"\"Plain UTF-8 .env must keep loading after the UTF-16 sanitize changes.\"\"\"\n+    home = tmp_path / \"hermes\"\n+    home.mkdir()\n+    env_file = home / \".env\"\n+    before = b\"OPENAI_API_KEY=[redacted:secret-assignment]\"\n+    env_file.write_bytes(before)\n+\n+    monkeypatch.delenv(\"OPENAI_API_KEY\", raising=False)\n+    monkeypatch.delenv(\"SECOND_KEY\", raising=False)\n+\n+    loaded = load_hermes_dotenv(hermes_home=home)\n+\n+    assert loaded == [env_file]\n+    assert os.getenv(\"OPENAI_API_KEY\") == \"sk-plain\"\n+    assert os.getenv(\"SECOND_KEY\") == \"ok\"\n+    # No spurious rewrite of an already-clean file.\n+    assert env_file.read_bytes() == before\n+\n+\n+def test_cp1252_env_regression_does_not_crash(tmp_path, monkeypatch):\n+    \"\"\"cp1252/latin-1 body must not crash sanitize; ASCII keys still usable.\n+\n+    0xE9 is 'é' in cp1252 and incomplete as UTF-8. First line does not begin\n+    with U+FFFD, so the FFFD guard must not refuse the whole file.\n+\n+    Sanitize leaves the file bytes alone when the only \"change\" is\n+    errors=replace on values (original already replace-decoded equals\n+    sanitized), so _load_dotenv_with_fallback's latin-1 path recovers café.\n+    \"\"\"\n+    home = tmp_path / \"hermes\"\n+    home.mkdir()\n+    env_file = home / \".env\"\n+    before = b\"ASCII_KEY=ok\\nLATIN1_VALUE=caf\\xe9\\n\"\n+    env_file.write_bytes(before)\n+\n+    monkeypatch.delenv(\"ASCII_KEY\", raising=False)\n+    monkeypatch.delenv(\"LATIN1_VALUE\", raising=False)\n+\n+    loaded = load_hermes_dotenv(hermes_home=home)\n+\n+    assert loaded == [env_file]\n+    assert os.getenv(\"ASCII_KEY\") == \"ok\"\n+    assert os.getenv(\"LATIN1_VALUE\") == \"café\"\n+    # Sanitize must not have rewritten (would have persisted U+FFFD).\n+    assert env_file.read_bytes() == before\n"]}]},{"kind":"pr","number":78682,"title":"fix(install): Windows install completes on profiles with a space, dot, or accent in the username","url":null,"state":"merged","close_reason":{"category":"merged","implication":"superseded"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":[".github/actions/detect-changes/action.yml",".github/workflows/ci.yml",".github/workflows/installer-tests.yml","scripts/ci/classify_changes.py","scripts/install.ps1","scripts/tests/test-install-ps1-longpath.ps1","tests/ci/test_classify_changes.py"]},{"kind":"pr","number":102765,"title":"bundles & unified package manager","url":null,"state":"merged","close_reason":{"category":"merged","implication":"superseded"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":[".dockerignore",".gitattributes",".github/actionlint.yaml",".github/actions/desktop-build-cache/action.yml",".github/actions/detect-changes/action.yml",".github/actions/e2e-screen-record/action.yml",".github/actions/plugin-validate/action.yml",".github/actions/save-pm-cache/README.md",".github/actions/save-pm-cache/action.yml",".github/actions/setup-pm/README.md",".github/actions/setup-pm/action.yml",".github/actions/setup-pm/prune/action.yml",".github/actions/setup-pm/prune/index.mjs",".github/actions/setup-windows-build-deps/action.yml",".github/workflows/archive-inputs.yml",".github/workflows/bootstrap-installer.yml",".github/workflows/canary-release.yml",".github/workflows/ci.yaml",".github/workflows/contributor-check.yml",".github/workflows/deploy-site.yml",".github/workflows/desktop-bundle-smoke.yml",".github/workflows/desktop-bundled-release.yml",".github/workflows/docker-lint.yml",".github/workflows/docker.yml",".github/workflows/docs-site-checks.yml",".github/workflows/e2e-desktop-core.yml",".github/workflows/e2e-desktop.yml",".github/workflows/icons-freshness-check.yml",".github/workflows/install-e2e-macos-run.yml",".github/workflows/install-e2e-run.yml",".github/workflows/install-e2e-windows-run.yml",".github/workflows/install-e2e.yml",".github/workflows/installer-tests.yml",".github/workflows/js-autofix.yml",".github/workflows/js-tests.yml",".github/workflows/lazy-deps-guard.yml",".github/workflows/lint.yml",".github/workflows/live-providers.yml",".github/workflows/nix.yml",".github/workflows/osv-scanner.yml",".github/workflows/plugin-catalog-ci.yml",".github/workflows/pm-bundle.yml",".github/workflows/rust-tests.yml",".github/workflows/skills-index.yml",".github/workflows/stable-release-publication.yml",".github/workflows/stable-release.yml",".github/workflows/termux-verify.yml",".github/workflows/tests-os.yml",".github/workflows/tests.yml",".github/workflows/uv-lockfile-check.yml",".github/workflows/windows-bundle-sdk.yml",".github/workflows/windows-venv-e2e.yml",".gitignore",".python-version","AGENTS.md","COMPAT_MANIFEST.md","CONTRIBUTING.es.md","CONTRIBUTING.md","Dockerfile","README.es.md","README.md","README.ur-pk.md","README.zh-CN.md","acp_adapter/commands.py","acp_adapter/content.py","acp_adapter/edit_approval.py","acp_adapter/entry.py","acp_adapter/server.py","activate","activate.ps1","agent/agent_init.py","agent/anthropic_adapter.py","agent/anthropic_credentials.py","agent/auxiliary_client.py","agent/azure_identity_adapter.py","agent/bedrock_adapter.py","agent/chat_completion_helpers.py","agent/client_lifecycle.py","agent/codex_headers.py","agent/coding_context.py","agent/context_references.py","agent/copilot_acp_client.py","agent/credential_pool.py","agent/credits_tracker.py","agent/curator.py","agent/curator_backup.py","agent/deadline.py","agent/display.py","agent/errors.py","agent/estop.py","agent/gemini_native_adapter.py","agent/i18n.py","agent/image_routing.py","agent/learning_graph.py","agent/learning_mutations.py","agent/lsp/client.py","agent/lsp/install.py","agent/lsp/servers.py","agent/moa_loop.py","agent/model_metadata.py","agent/model_metadata_http.py","agent/models_dev.py","agent/monitoring/gateway_health.py","agent/monitoring/gateway_health_export.py","agent/monitoring/otlp_exporter.py","agent/nous_rate_guard.py","agent/pet/store.py","agent/portal_tags.py","agent/prompt_builder.py","agent/provider_registry.py","agent/proxy_sources/iron_proxy.py","agent/review_idle_queue.py","agent/secret_sources/_cache.py","agent/secret_sources/bitwarden.py","agent/secret_sources/registry.py","agent/session_persistence.py","agent/shell_hooks.py","agent/skill_bundles.py","agent/skill_commands.py","agent/skill_utils.py","agent/ssl_guard.py","agent/ssl_verify.py","agent/subdirectory_hints.py","agent/trace_upload.py","agent/transcription_registry.py","agent/tts_registry.py","agent/turn_recovery.py","agent/verify/environment.py","agent/verify/recipes.py","agent/vertex_adapter.py","agent/video_gen_provider.py","agent/video_gen_registry.py","agent/web_search_provider.py","agent/web_search_registry.py","apps/bootstrap-installer/package.json","apps/bootstrap-installer/public/nous-girl.jpg","apps/bootstrap-installer/src-tauri/Cargo.toml","apps/bootstrap-installer/src-tauri/icons/128x128.png","apps/bootstrap-installer/src-tauri/icons/[redacted:email]","apps/bootstrap-installer/src-tauri/icons/32x32.png","apps/bootstrap-installer/src-tauri/icons/icon.icns","apps/bootstrap-installer/src-tauri/icons/icon.ico","apps/bootstrap-installer/src-tauri/src/install_script.rs","apps/bootstrap-installer/src-tauri/src/update.rs","apps/bootstrap-installer/src-tauri/tauri.conf.json","apps/bootstrap-installer/src/components/brand-mark.tsx","apps/desktop/BUILDING.md","apps/desktop/DESIGN.md","apps/desktop/README.md","apps/desktop/assets/icon.icns","apps/desktop/assets/icon.ico","apps/desktop/assets/icon.png","apps/desktop/assets/msix-manifest.xml","apps/desktop/e2e/bot-screen-stale-status-reply.spec.ts","apps/desktop/e2e/chat.spec.ts","apps/desktop/e2e/core/harness.ts","apps/desktop/e2e/core/packaged-smoke.spec.ts","apps/desktop/e2e/core/remote-helpers.ts","apps/desktop/e2e/fixtures.ts","apps/desktop/e2e/fleet-profile-rail.spec.ts","apps/desktop/e2e/hidden-history-messages.spec.ts","apps/desktop/e2e/image-attachment-resume.spec.ts","apps/desktop/e2e/large-session-resume.spec.ts","apps/desktop/e2e/peer-device-reset.spec.ts","apps/desktop/e2e/warm-resume-jitter.spec.ts","apps/desktop/electron-builder.config.cjs","apps/desktop/electron/active-runtime-state.ts","apps/desktop/electron/app-installer-file.test.ts","apps/desktop/electron/app-installer-file.ts","apps/desktop/electron/app-updater.ts","apps/desktop/electron/app-version.test.ts","apps/desktop/electron/app-version.ts","apps/desktop/electron/appinstaller-checker.test.ts","apps/desktop/electron/appinstaller-checker.ts","apps/desktop/electron/backend-child.ts","apps/desktop/electron/backend-connection-state.test.ts","apps/desktop/electron/backend-connection-state.ts","apps/desktop/electron/backend-env.test.ts","apps/desktop/electron/backend-env.ts","apps/desktop/electron/backend-exit.test.ts","apps/desktop/electron/backend-probes-runtime.test.ts","apps/desktop/electron/backend-probes.test.ts","apps/desktop/electron/backend-probes.ts","apps/desktop/electron/backend-release-gate.test.ts","apps/desktop/electron/backend-release-gate.ts","apps/desktop/electron/backend-stop-overlap.test.ts","apps/desktop/electron/bootstrap-platform.ts","apps/desktop/electron/bootstrap-quit.test.ts","apps/desktop/electron/bootstrap-runner.test.ts","apps/desktop/electron/bootstrap-runner.ts","apps/desktop/electron/bootstrap-state.test.ts","apps/desktop/electron/bootstrap-state.ts","apps/desktop/electron/bundle-swap.test.ts","apps/desktop/electron/bundle-swap.ts","apps/desktop/electron/channel-build-version.test.ts","apps/desktop/electron/cli-provision.test.ts","apps/desktop/electron/cli-provision.ts","apps/desktop/electron/connection-apply.test.ts","apps/desktop/electron/connection-apply.ts","apps/desktop/electron/connection-registry.ts","apps/desktop/electron/data-paths.d.mts","apps/desktop/electron/data-paths.mjs","apps/desktop/electron/data-paths.test.ts","apps/desktop/electron/data-paths.ts","apps/desktop/electron/desktop-boot-preference.test.ts","apps/desktop/electron/desktop-boot-preference.ts","apps/desktop/electron/desktop-electron-pin.test.ts","apps/desktop/electron/desktop-installation.test.ts","apps/desktop/electron/desktop-uninstall-ipc.test.ts","apps/desktop/electron/desktop-uninstall.test.ts","apps/desktop/electron/desktop-uninstall.ts","apps/desktop/electron/external-open.test.ts","apps/desktop/electron/external-open.ts","apps/desktop/electron/feature-flags.test.ts","apps/desktop/electron/feature-flags.ts","apps/desktop/electron/find-git-bash.test.ts","apps/desktop/electron/find-git-bash.ts","apps/desktop/electron/first-run-setup-gate.test.ts","apps/desktop/electron/first-run-setup-gate.ts","apps/desktop/electron/fixtures/source-backend.py","apps/desktop/electron/gateway-file-download-transport.test.ts","apps/desktop/electron/gateway-file-download-transport.ts","apps/desktop/electron/gateway-file-download.ts","apps/desktop/electron/gateway-stop-before-update.test.ts","apps/desktop/electron/gateway-stop-before-update.ts","apps/desktop/electron/gateway-version.test.ts","apps/desktop/electron/gateway-version.ts","apps/desktop/electron/git-repo-scan.test.ts","apps/desktop/electron/git-worktree-ops.ts","apps/desktop/electron/github-api-auth.test.ts","apps/desktop/electron/github-api-auth.ts","apps/desktop/electron/gitlock.test.ts","apps/desktop/electron/gitlock.ts","apps/desktop/electron/hardening.test.ts","apps/desktop/electron/install-stamp.ts","apps/desktop/electron/local-backend-lifecycle.ts","apps/desktop/electron/machine-profile.test.ts","apps/desktop/electron/machine-profile.ts","apps/desktop/electron/main.ts","apps/desktop/electron/managed-ssh-update.test.ts","apps/desktop/electron/package-process-reap.test.ts","apps/desktop/electron/package-process-reap.ts","apps/desktop/electron/payload-backend.test.ts","apps/desktop/electron/payload-backend.ts","apps/desktop/electron/pool-eviction.test.ts","apps/desktop/electron/pool-eviction.ts","apps/desktop/electron/pool-spawn-coordinator.ts","apps/desktop/electron/pool-stop.ts","apps/desktop/electron/pre-update-backup-config.ts","apps/desktop/electron/preload-flags.test.ts","apps/desktop/electron/preload.ts","apps/desktop/electron/product-identity.test.ts","apps/desktop/electron/product-identity.ts","apps/desktop/electron/profile-migration.ts","apps/desktop/electron/registry-primary-profile-scope.test.ts","apps/desktop/electron/remote-lifecycle-spawn.test.ts","apps/desktop/electron/remote-lifecycle.test.ts","apps/desktop/electron/remote-lifecycle.ts","apps/desktop/electron/semver.d.cts","apps/desktop/electron/source-backend.test.ts","apps/desktop/electron/source-backend.ts","apps/desktop/electron/ssh-config.test.ts","apps/desktop/electron/ssh-connection.test.ts","apps/desktop/electron/ssh-connection.ts","apps/desktop/electron/update-api-check.test.ts","apps/desktop/electron/update-api-check.ts","apps/desktop/electron/update-gate.test.ts","apps/desktop/electron/update-gate.ts","apps/desktop/electron/update-handoff-marker.test.ts","apps/desktop/electron/update-prerequisites.test.ts","apps/desktop/electron/update-remote.test.ts","apps/desktop/electron/update-remote.ts","apps/desktop/electron/updater-process.ts","apps/desktop/electron/updater/app-installer-recovery.test.ts","apps/desktop/electron/updater/app-installer-strategy.test.ts","apps/desktop/electron/updater/app-installer.ts","apps/desktop/electron/updater/artifact.ts","apps/desktop/electron/updater/channel-artifact-lifetime.test.ts","apps/desktop/electron/updater/channel-native.test.ts","apps/desktop/electron/updater/channel-native.ts","apps/desktop/electron/updater/channel-protocol.ts","apps/desktop/electron/updater/channel-strategy.ts","apps/desktop/electron/updater/channel-windows-host.ts","apps/desktop/electron/updater/channel.test.ts","apps/desktop/electron/updater/channel.ts","apps/desktop/electron/updater/checkout-handoff.test.ts","apps/desktop/electron/updater/checkout-legacy.test.ts","apps/desktop/electron/updater/checkout-ownership.test.ts","apps/desktop/electron/updater/checkout-source.test.ts","apps/desktop/electron/updater/checkout-source.ts","apps/desktop/electron/updater/checkout.ts","apps/desktop/electron/updater/commit-build.test.ts","apps/desktop/electron/updater/external.ts","apps/desktop/electron/updater/feed-config.test.ts","apps/desktop/electron/updater/feed-config.ts","apps/desktop/electron/updater/index.ts","apps/desktop/electron/updater/mac-client.test.ts","apps/desktop/electron/updater/mac-client.ts","apps/desktop/electron/updater/mac.test.ts","apps/desktop/electron/updater/mac.ts","apps/desktop/electron/updater/operation.test.ts","apps/desktop/electron/updater/operation.ts","apps/desktop/electron/updater/packaged-handoff.ts","apps/desktop/electron/updater/relaunch-isolation.test.ts","apps/desktop/electron/updater/relaunch-waiter-lifecycle.test.ts","apps/desktop/electron/updater/relaunch-waiter.ts","apps/desktop/electron/updater/relaunch-waiter.windows-live.test.ts","apps/desktop/electron/updater/relaunch.ts","apps/desktop/electron/updater/state-db-preflight.test.ts","apps/desktop/electron/updater/state-db-preflight.ts","apps/desktop/electron/updater/store-client.test.ts","apps/desktop/electron/updater/store-client.ts","apps/desktop/electron/updater/store.test.ts","apps/desktop/electron/updater/store.ts","apps/desktop/electron/updater/updater.test.ts","apps/desktop/electron/venv-blocker-scan.test.ts","apps/desktop/electron/venv-blocker-scan.ts","apps/desktop/electron/windows-child-options.test.ts","apps/desktop/electron/windows-hermes-path.test.ts","apps/desktop/electron/windows-hermes-path.ts","apps/desktop/package.json","apps/desktop/packaging/nous-dmg-2b.tiff","apps/desktop/product-identity.cjs","apps/desktop/product-identity.d.cts","apps/desktop/public/apple-touch-icon.png","apps/desktop/public/nous-girl.jpg","apps/desktop/scripts/after-extract.test.mjs","apps/desktop/scripts/after-pack-digests.test.mjs","apps/desktop/scripts/after-pack-toolchain.test.mjs","apps/desktop/scripts/after-pack.mjs","apps/desktop/scripts/after-pack.test.mjs","apps/desktop/scripts/audit-bundle-arch.mjs","apps/desktop/scripts/audit-bundle-arch.test.mjs","apps/desktop/scripts/batch-sign-binaries.mjs","apps/desktop/scripts/batch-sign-binaries.test.mjs","apps/desktop/scripts/before-build.mjs","apps/desktop/scripts/before-pack.mjs","apps/desktop/scripts/build-command-screenshot-monitor.mjs","apps/desktop/scripts/build-hud-modifier-monitor.mjs","apps/desktop/scripts/build.mjs","apps/desktop/scripts/bundle-electron-main.mjs","apps/desktop/scripts/bundle-env.d.mts","apps/desktop/scripts/bundle-env.mjs","apps/desktop/scripts/bundle-env.test.mjs","apps/desktop/scripts/check-appinstaller-update.py","apps/desktop/scripts/check-store-update.py","apps/desktop/scripts/cli-launchers.test.mjs","apps/desktop/scripts/commit-bundles.windows.test.mjs","apps/desktop/scripts/commit-stamp-identity.test.mjs","apps/desktop/scripts/dmgbuild-diagnostics.cjs","apps/desktop/scripts/dmgbuild-diagnostics.test.mjs","apps/desktop/scripts/ensure-rolldown-binding.mjs","apps/desktop/scripts/ensure-rolldown-binding.test.mjs","apps/desktop/scripts/gen-msix-manifest.mjs","apps/desktop/scripts/local-pack-publish.test.mjs","apps/desktop/scripts/mac-sign.mjs","apps/desktop/scripts/mac-sign.test.mjs","apps/desktop/scripts/msix-manifest-roundtrip.test.mjs","apps/desktop/scripts/msix-shared.test.mjs","apps/desktop/scripts/native-quad.test.mjs","apps/desktop/scripts/notarize.mjs","apps/desktop/scripts/osx-sign-inputs.test.mjs","apps/desktop/scripts/patch-electron-builder-mac-binary.mjs","apps/desktop/scripts/payload-digests.mjs","apps/desktop/scripts/payload-sign-cache.mjs","apps/desktop/scripts/payload-sign-cache.test.mjs","apps/desktop/scripts/prepare-dmgbuild.mjs","apps/desktop/scripts/prepare-dmgbuild.test.mjs","apps/desktop/scripts/prepare-packaging-tools.mjs","apps/desktop/scripts/prepare_dmgbuild.py","apps/desktop/scripts/prepared-native-deps.mjs","apps/desktop/scripts/prepared-native-deps.test.mjs","apps/desktop/scripts/prepared-packaging.mjs","apps/desktop/scripts/prepared-packaging.test.mjs","apps/desktop/scripts/prepared-windows-tools.test.mjs","apps/desktop/scripts/probe-prepared-native.mjs","apps/desktop/scripts/probe-prepared-native.test.mjs","apps/desktop/scripts/rebuild-native.mjs","apps/desktop/scripts/run-electron-builder.mjs","apps/desktop/scripts/run-electron-builder.test.mjs","apps/desktop/scripts/sanitize-pe-signatures.mjs","apps/desktop/scripts/sanitize-pe-signatures.test.mjs","apps/desktop/scripts/side-by-side-launchers.test.mjs","apps/desktop/scripts/side-by-side.windows.test.mjs","apps/desktop/scripts/sign-msix.mjs","apps/desktop/scripts/sign-msix.test.mjs","apps/desktop/scripts/sign-nested-chromium.mjs","apps/desktop/scripts/sign-nested-chromium.test.mjs","apps/desktop/scripts/sign-wheel-zips.mjs","apps/desktop/scripts/sign-wheel-zips.test.mjs","apps/desktop/scripts/signing-resources.test.mjs","apps/desktop/scripts/stage-native-deps.mjs","apps/desktop/scripts/stage-native-deps.test.mjs","apps/desktop/scripts/store-package-version.test.mjs","apps/desktop/scripts/test-desktop.mjs","apps/desktop/scripts/update-relaunch-waiter.ps1","apps/desktop/scripts/utils.mjs","apps/desktop/scripts/verify-side-by-side-macos.mjs","apps/desktop/scripts/verify-signed-payloads.ps1","apps/desktop/scripts/windows-bundle-tools.mjs","apps/desktop/scripts/windows-bundle-tools.test.mjs","apps/desktop/scripts/write-build-stamp.mjs","apps/desktop/scripts/write-build-stamp.test.mjs","apps/desktop/src/api/client.ts","apps/desktop/src/api/local-models-owner.test.ts","apps/desktop/src/api/local-models.ts","apps/desktop/src/api/sessions.test.ts","apps/desktop/src/api/sessions.ts","apps/desktop/src/app/chat/index.tsx","apps/desktop/src/app/chat/sidebar/section-states.tsx","apps/desktop/src/app/chat/sidebar/storage-corrupt-notice.test.tsx","apps/desktop/src/app/chat/transcript-backfill.test.ts","apps/desktop/src/app/contrib/onboarding-kickoff.test.ts","apps/desktop/src/app/contrib/onboarding-kickoff.ts","apps/desktop/src/app/contrib/surfaces.tsx","apps/desktop/src/app/contrib/wiring.tsx","apps/desktop/src/app/gateway/hooks/use-gateway-boot.test.tsx","apps/desktop/src/app/messaging/index.test.tsx","apps/desktop/src/app/retirement-view.test.tsx","apps/desktop/src/app/retirement-view.tsx","apps/desktop/src/app/session/hooks/use-prompt-actions/submit-view-binding.test.ts","apps/desktop/src/app/session/hooks/use-prompt-actions/submit-view-binding.test.tsx","apps/desktop/src/app/session/hooks/use-prompt-actions/submit.ts","apps/desktop/src/app/session/hooks/use-session-actions/transcript-provenance.ts","apps/desktop/src/app/settings/about-settings.test.tsx","apps/desktop/src/app/settings/about-settings.tsx","apps/desktop/src/app/settings/connections-registry.test.tsx","apps/desktop/src/app/settings/connections-registry.tsx","apps/desktop/src/app/settings/custom-endpoints-settings.test.tsx","apps/desktop/src/app/settings/gateway-settings.test.tsx","apps/desktop/src/app/settings/gateway-settings.tsx","apps/desktop/src/app/settings/local-model-download-progress.test.tsx","apps/desktop/src/app/settings/local-model-download-progress.tsx","apps/desktop/src/app/settings/local-models-actions.ts","apps/desktop/src/app/settings/local-models-browse.tsx","apps/desktop/src/app/settings/local-models-hardware-section.tsx","apps/desktop/src/app/settings/local-models-model-rows.tsx","apps/desktop/src/app/settings/local-models-models-section.tsx","apps/desktop/src/app/settings/local-models-owner.ts","apps/desktop/src/app/settings/local-models-quickstart.tsx","apps/desktop/src/app/settings/local-models-runtime-section.tsx","apps/desktop/src/app/settings/local-models-settings.test.tsx","apps/desktop/src/app/settings/local-models-settings.tsx","apps/desktop/src/app/settings/model-settings.test.tsx","apps/desktop/src/app/settings/settings-manifest.ts","apps/desktop/src/app/settings/subpages.test.ts","apps/desktop/src/app/settings/uninstall-section.test.tsx","apps/desktop/src/app/settings/uninstall-section.tsx","apps/desktop/src/app/shell/hooks/use-status-snapshot.test.ts","apps/desktop/src/app/shell/hooks/use-status-snapshot.ts","apps/desktop/src/app/shell/hooks/use-statusbar-items.tsx","apps/desktop/src/app/shell/model-catalog-menu.search-fold.test.tsx","apps/desktop/src/app/shell/model-catalog-menu.test.tsx","apps/desktop/src/app/shell/model-catalog-menu.tsx","apps/desktop/src/app/updates-overlay.blockers.test.tsx","apps/desktop/src/app/updates-overlay.manual.test.tsx","apps/desktop/src/app/updates-overlay.tsx","apps/desktop/src/components/assistant-ui/catalog-advanced-dialog.tsx","apps/desktop/src/components/assistant-ui/catalog-install-tool.tsx","apps/desktop/src/components/boot-failure-cause.ts","apps/desktop/src/components/boot-failure-overlay.test.tsx","apps/desktop/src/components/boot-failure-overlay.tsx","apps/desktop/src/components/brand-mark.tsx","apps/desktop/src/components/desktop-install-local-card.ts","apps/desktop/src/components/desktop-install-overlay.test.tsx","apps/desktop/src/components/desktop-install-overlay.tsx","apps/desktop/src/components/external-open-failed-dialog.test.tsx","apps/desktop/src/components/external-open-failed-dialog.tsx","apps/desktop/src/components/first-run-remote-form.tsx","apps/desktop/src/components/intro-reveal/index.tsx","apps/desktop/src/components/model-picker.test.tsx","apps/desktop/src/components/model-picker.tsx","apps/desktop/src/components/onboarding-chat/assembly.ts","apps/desktop/src/components/onboarding-chat/gate.test.tsx","apps/desktop/src/components/onboarding-chat/gate.tsx","apps/desktop/src/components/onboarding-chat/guide-loading.css","apps/desktop/src/components/onboarding-chat/guide-loading.test.tsx","apps/desktop/src/components/onboarding-chat/guide-loading.tsx","apps/desktop/src/components/onboarding-chat/persisted-handoff.ts","apps/desktop/src/components/pane-shell/tree/dock-enforce.test.ts","apps/desktop/src/components/remote-setup/fields.tsx","apps/desktop/src/components/remote-setup/first-run.tsx","apps/desktop/src/components/remote-setup/use-remote-connection-test.ts","apps/desktop/src/components/remote-setup/use-remote-oauth.ts","apps/desktop/src/components/remote-setup/use-remote-probe.ts","apps/desktop/src/components/remote-setup/use-remote-setup.test.tsx","apps/desktop/src/components/remote-setup/use-remote-setup.ts","apps/desktop/src/components/sync-status-card.test.tsx","apps/desktop/src/components/sync-status-card.tsx","apps/desktop/src/components/sync-status.ts","apps/desktop/src/components/tips/local-runtime-update-offer.test.tsx","apps/desktop/src/components/tips/local-runtime-update-offer.ts","apps/desktop/src/components/update-status.test.tsx","apps/desktop/src/components/update-status.tsx","apps/desktop/src/components/version-details.test.tsx","apps/desktop/src/components/version-details.tsx","apps/desktop/src/global.d.ts","apps/desktop/src/i18n/ar.ts","apps/desktop/src/i18n/catalog-completeness.test.ts","apps/desktop/src/i18n/de.ts","apps/desktop/src/i18n/en.ts","apps/desktop/src/i18n/es.ts","apps/desktop/src/i18n/fr.ts","apps/desktop/src/i18n/ja.ts","apps/desktop/src/i18n/ru.ts","apps/desktop/src/i18n/types.ts","apps/desktop/src/i18n/zh-hant.ts","apps/desktop/src/i18n/zh.ts","apps/desktop/src/lib/chat-messages/reconciliation.ts","apps/desktop/src/lib/distribution-label.ts","apps/desktop/src/lib/docs.ts","apps/desktop/src/lib/update-copy.test.ts","apps/desktop/src/lib/update-copy.ts","apps/desktop/src/lib/version-label.test.ts","apps/desktop/src/lib/version-label.ts","apps/desktop/src/lib/version-status.test.ts","apps/desktop/src/lib/version-status.ts","apps/desktop/src/store/guide-opening.test.ts","apps/desktop/src/store/layout-flipped-sides.test.ts","apps/desktop/src/store/local-models-flag.ts","apps/desktop/src/store/local-models-surfaces.test.tsx","apps/desktop/src/store/local-runtime-jobs.test.ts","apps/desktop/src/store/local-runtime-jobs.ts","apps/desktop/src/store/notifications.test.ts","apps/desktop/src/store/notifications.ts","apps/desktop/src/store/onboarding-gate.test.ts","apps/desktop/src/store/onboarding-gate.ts","apps/desktop/src/store/session-states.test.ts","apps/desktop/src/store/updates.test.ts","apps/desktop/src/store/updates.ts","apps/desktop/src/types/hermes.ts","apps/desktop/tsconfig.e2e.json","apps/desktop/tsconfig.electron.json","apps/desktop/tsconfig.json","apps/desktop/update-feed.cjs","apps/desktop/update-feed.d.cts","apps/desktop/vite.config.ts","assets/backgrounds/squircle-dark.svg","assets/backgrounds/squircle-light.svg","assets/backgrounds/squircle-mac-dark.svg","assets/backgrounds/squircle-mac-light.svg","assets/nous-girl-black.svg","assets/nous-girl-white.svg","batch_runner.py","cli.py","compat_manifest.json","constraints-termux.txt","contributors/README.md","contributors/emails/[redacted:email]","contributors/emails/[redacted:email]","cron/bot_chat_delivery.py","cron/jobs.py","cron/monitor.py","cron/scheduler.py","cron/scheduler_diagnostics.py","cron/scheduler_prompt.py","cron/scheduler_script.py","cron/scripts/classify_items.py","cron/suggestions.py","docker/build_agent.py","docker/main-wrapper.sh","docker/s6-rc.d/dashboard/run","docker/stage2-hook.sh","evals/browser_use/single_run.py","evals/cli_deferred_notice.py","evals/codebase_navigability/README.md","evals/codex_echo/fixture_server.py","evals/desktop_bug_campaign/async-report-live.mjs","evals/desktop_bug_campaign/hooks_live.py","evals/desktop_bug_campaign/linux_launcher_probe.py","evals/desktop_bug_campaign/navigation-markdown-live.mjs","evals/desktop_bug_campaign/persistence_live.py","evals/desktop_bug_campaign/thread-scroll/ownership-probe.mjs","evals/desktop_bug_campaign/thread-scroll/probe.mjs","evals/desktop_mcp_oauth/renderer_lifecycle.mjs","evals/gateway/session_time_persistence_controls.py","evals/postmortem/live_ab/nested_delegate_deadline.py","evals/postmortem/review_probes/context_cap_probe.py","evals/provider_fallback/probe_104360.py","evals/provider_wire/issue_104359.py","evals/tool_search/analyze_livetest.py","evals/tool_search/tool_search_livetest.py","evals/tool_search/tool_search_livetest_ue.py","evals/toolperf_abeval/ab_eval.py","evals/toolperf_abeval/run_all.sh","evals/update_check_ssh_pty.py","evals/update_pipeline/interrupted_pull_ab.sh","gateway/__init__.py","gateway/agent_cache_pressure.py","gateway/channel_directory.py","gateway/config.py","gateway/config_loader.py","gateway/control_socket.py","gateway/dead_targets.py","gateway/drain_control.py","gateway/hooks.py","gateway/host_rendezvous.py","gateway/kanban_watchers_common.py","gateway/lifecycle_ledger.py","gateway/mirror.py","gateway/pairing.py","gateway/platform_registry.py","gateway/platforms/api_server.py","gateway/platforms/api_server_runs.py","gateway/platforms/base.py","gateway/platforms/helpers.py","gateway/platforms/qqbot/adapter.py","gateway/platforms/qqbot/onboard.py","gateway/platforms/tcp_site.py","gateway/platforms/webhook.py","gateway/platforms/webhook_filters.py","gateway/platforms/weixin.py","gateway/platforms/whatsapp_cloud.py","gateway/platforms/yuanbao.py","gateway/profile_routing.py","gateway/relay/ws_transport.py","gateway/restart_loop_guard.py","gateway/rich_sent_store.py","gateway/run.py","gateway/run_busy.py","gateway/run_config_loaders.py","gateway/run_notifications.py","gateway/run_shutdown.py","gateway/run_startup.py","gateway/run_turn.py","gateway/run_voice.py","gateway/session.py","gateway/session_persistence.py","gateway/shutdown_flush.py","gateway/shutdown_forensics.py","gateway/slash_commands.py","gateway/status.py","gateway/status_phrases.py","gateway/sticker_cache.py","gateway/whatsapp_identity.py","hermes_bootstrap.py","hermes_cli/AGENTS.md","hermes_cli/__init__.py","hermes_cli/_early_recovery.py","hermes_cli/_install_repair.py","hermes_cli/_launchers.py","hermes_cli/_old_updater.py","hermes_cli/_parser.py","hermes_cli/_scan_venv_blockers.py","hermes_cli/_startup_fast.py","hermes_cli/_subprocess_compat.py","hermes_cli/_update_takeover.py","hermes_cli/active_sessions.py","hermes_cli/agent_import.py","hermes_cli/agent_import_sync.py","hermes_cli/agent_plugins.py","hermes_cli/auth.py","hermes_cli/auth_codex.py","hermes_cli/auth_commands.py","hermes_cli/auth_constants.py","hermes_cli/auth_oauth_grants.py","hermes_cli/backup.py","hermes_cli/backup_restore.py","hermes_cli/backup_sqlite.py","hermes_cli/banner.py","hermes_cli/boot_bootstrap.py","hermes_cli/browser_connect.py","hermes_cli/browser_runtime.py","hermes_cli/build_info.py","hermes_cli/bundled_app.py","hermes_cli/checkpoints.py","hermes_cli/cli_auto_maintenance.py","hermes_cli/cli_commands_mixin.py","hermes_cli/cli_config_load.py","hermes_cli/cli_info_mixin.py","hermes_cli/cli_render.py","hermes_cli/cli_stream_mixin.py","hermes_cli/cli_terminal_input.py","hermes_cli/cli_voice_mixin.py","hermes_cli/codex_models.py","hermes_cli/codex_runtime_plugin_migration.py","hermes_cli/config.py","hermes_cli/config_defaults.py","hermes_cli/config_effective.py","hermes_cli/config_migrations.py","hermes_cli/container_boot.py","hermes_cli/copilot_auth.py","hermes_cli/dashboard_auth/registry.py","hermes_cli/dashboard_procs.py","hermes_cli/data_cleanup.py","hermes_cli/data_cleanup_holders.py","hermes_cli/debug.py","hermes_cli/dep_ensure.py","hermes_cli/desktop_update_verify.py","hermes_cli/dingtalk_auth.py","hermes_cli/doctor.py","hermes_cli/doctor_config.py","hermes_cli/doctor_connectivity.py","hermes_cli/doctor_live.py","hermes_cli/doctor_platform.py","hermes_cli/doctor_state.py","hermes_cli/doctor_tools.py","hermes_cli/dump.py","hermes_cli/env_loader.py","hermes_cli/foreign_sessions.py","hermes_cli/fs_utils.py","hermes_cli/gateway.py","hermes_cli/gateway_launchd.py","hermes_cli/gateway_migrate.py","hermes_cli/gateway_service_unit.py","hermes_cli/gateway_windows.py","hermes_cli/gateway_windows_legacy.py","hermes_cli/github_api.py","hermes_cli/gitlock.py","hermes_cli/gui_uninstall.py","hermes_cli/home_data_layout.py","hermes_cli/hooks.py","hermes_cli/image_provenance.py","hermes_cli/init_command.py","hermes_cli/install_identity.py","hermes_cli/inventory.py","hermes_cli/journey.py","hermes_cli/kanban.py","hermes_cli/kanban_db.py","hermes_cli/kanban_transfer.py","hermes_cli/linux_desktop_entry.py","hermes_cli/local_runtime/__init__.py","hermes_cli/local_runtime/binaries.py","hermes_cli/local_runtime/bootstrap.py","hermes_cli/local_runtime/catalog.py","hermes_cli/local_runtime/endpoint.py","hermes_cli/local_runtime/growth.py","hermes_cli/local_runtime/hardware.py","hermes_cli/local_runtime/presets.py","hermes_cli/local_runtime/recovery.py","hermes_cli/local_runtime/supervisor.py","hermes_cli/logs.py","hermes_cli/macos_signing.py","hermes_cli/macos_tcc_anchor.py","hermes_cli/main.py","hermes_cli/main_agent_cmds.py","hermes_cli/main_dashboard.py","hermes_cli/main_dep_hints.py","hermes_cli/main_desktop.py","hermes_cli/main_install_repair.py","hermes_cli/main_platform_setup.py","hermes_cli/main_tui_launch.py","hermes_cli/main_web_build.py","hermes_cli/managed_scope.py","hermes_cli/managed_uv.py","hermes_cli/mcp_catalog.py","hermes_cli/memory_provider_migration.py","hermes_cli/memory_setup.py","hermes_cli/model_catalog.py","hermes_cli/model_setup_flows_azure.py","hermes_cli/model_setup_flows_bedrock.py","hermes_cli/model_switch_providers.py","hermes_cli/models.py","hermes_cli/nous_subscription.py","hermes_cli/npm_engine.py","hermes_cli/observability/relay_shared_metrics.py","hermes_cli/old_updater_deps.py","hermes_cli/old_updater_main.py","hermes_cli/plugin_catalog.py","hermes_cli/plugin_compat.py","hermes_cli/plugin_dev.py","hermes_cli/plugin_packs.py","hermes_cli/plugin_python_deps.py","hermes_cli/plugin_validate.py","hermes_cli/plugin_validate_desktop.py","hermes_cli/plugins.py","hermes_cli/plugins_admission.py","hermes_cli/plugins_cadence.py","hermes_cli/plugins_cmd.py","hermes_cli/plugins_cmd_capabilities.py","hermes_cli/plugins_cmd_catalog.py","hermes_cli/plugins_cmd_git.py","hermes_cli/plugins_cmd_install.py","hermes_cli/plugins_cmd_listing.py","hermes_cli/plugins_cmd_remove.py","hermes_cli/plugins_cmd_toggle.py","hermes_cli/plugins_cmd_update.py","hermes_cli/plugins_discovery.py","hermes_cli/plugins_loader.py","hermes_cli/plugins_manifest.py","hermes_cli/plugins_provenance.py","hermes_cli/plugins_settings.py","hermes_cli/plugins_state.py","hermes_cli/plugins_transaction.py","hermes_cli/plugins_updates.py","hermes_cli/post_update.py","hermes_cli/process_identity.py","hermes_cli/profile_distribution.py","hermes_cli/profiles.py","hermes_cli/prompt_size.py","hermes_cli/proxy_cli.py","hermes_cli/psutil_android.py","hermes_cli/pty_bridge.py","hermes_cli/quiet_single_query.py","hermes_cli/release_channels.py","hermes_cli/runtime_paths.py","hermes_cli/runtime_provider_backends.py","hermes_cli/runtime_state.py","hermes_cli/secrets_cli.py","hermes_cli/security_advisories.py","hermes_cli/security_audit.py","hermes_cli/security_audit_startup.py","hermes_cli/send_cmd.py","hermes_cli/service_manager.py","hermes_cli/session_export_md.py","hermes_cli/sessions_repair_profiles.py","hermes_cli/setup.py","hermes_cli/setup_summary.py","hermes_cli/setup_terminal.py","hermes_cli/setup_tts.py","hermes_cli/shared_profile_warning.py","hermes_cli/skills_hub.py","hermes_cli/skin_cmd.py","hermes_cli/skin_engine.py","hermes_cli/slack_cli.py","hermes_cli/source_build.py","hermes_cli/source_check.py","hermes_cli/source_completion.py","hermes_cli/source_releases.py","hermes_cli/source_stamp.py","hermes_cli/status.py","hermes_cli/status_bar_git.py","hermes_cli/stderr_timestamp.py","hermes_cli/steward.py","hermes_cli/subcommands/computer_use.py","hermes_cli/subcommands/gateway.py","hermes_cli/subcommands/plugins.py","hermes_cli/subcommands/uninstall.py","hermes_cli/subcommands/update.py","hermes_cli/telegram_managed_bot.py","hermes_cli/terminal_breadcrumbs.py","hermes_cli/tools_config.py","hermes_cli/tools_config_cua.py","hermes_cli/tools_config_post_setup.py","hermes_cli/uninstall.py","hermes_cli/update_channel.py","hermes_cli/update_cmd.py","hermes_cli/update_cmd_check.py","hermes_cli/update_cmd_config.py","hermes_cli/update_cmd_deps.py","hermes_cli/update_cmd_fleet.py","hermes_cli/update_cmd_git.py","hermes_cli/update_cmd_maint.py","hermes_cli/update_cmd_stash.py","hermes_cli/update_cmd_validation.py","hermes_cli/update_cmd_windows.py","hermes_cli/update_cmd_zip.py","hermes_cli/update_completion.py","hermes_cli/update_contract.py","hermes_cli/update_finish.py","hermes_cli/update_handoff.py","hermes_cli/update_host_obligation.py","hermes_cli/update_inventory.py","hermes_cli/update_lock.py","hermes_cli/update_receipt.py","hermes_cli/update_restart_recovery.py","hermes_cli/update_serve_obligations.py","hermes_cli/update_serve_resume.py","hermes_cli/update_stage.py","hermes_cli/urllib_security.py","hermes_cli/venv_sync.py","hermes_cli/version_info.py","hermes_cli/voice.py","hermes_cli/web_routers/actions.py","hermes_cli/web_routers/analytics.py","hermes_cli/web_routers/chat_ws.py","hermes_cli/web_routers/dashboard_ui.py","hermes_cli/web_routers/local_models.py","hermes_cli/web_routers/memory_providers.py","hermes_cli/web_routers/messaging.py","hermes_cli/web_routers/profiles.py","hermes_cli/web_routers/skills.py","hermes_cli/web_routers/status.py","hermes_cli/web_server.py","hermes_cli/web_server_config.py","hermes_cli/web_server_cron.py","hermes_cli/web_server_dashboard.py","hermes_cli/web_server_gateway.py","hermes_cli/web_server_memory.py","hermes_cli/web_server_messaging.py","hermes_cli/webhook.py","hermes_cli/win_pty_bridge.py","hermes_cli/windows_ssh_runtime.py","hermes_cli/worktree_ops.py","hermes_cli/xai_retirement.py","hermes_constants.py","hermes_logging.py","hermes_startup_watchdog.py","hermes_state.py","hermes_time.py","hermes_yaml.py","native/fts5_cjk/build.sh","nix/checks.nix","nix/configMergeScript.nix","nix/desktop.nix","nix/hermes-agent.nix","nix/icons.nix","nix/lib.nix","nix/moduleCommon.nix","nix/npm-12-0-2.nix","nix/npm-pinned.nix","nix/packages.nix","nix/pm-packages.nix","nix/pm-runtime.nix","nix/python.nix","nix/pythonLock.nix","nix/tests/agent-references.py","nix/tests/desktop-backend.py","nix/tui.nix","nix/web.nix","optional-skills/creative/comfyui/tests/README.md","optional-skills/creative/kanban-video-orchestrator/assets/setup.sh.tmpl","optional-skills/creative/kanban-video-orchestrator/references/kanban-setup.md","optional-skills/gaming/minecraft-modpack-server/SKILL.md","optional-skills/migration/openclaw-migration/SKILL.md","optional-skills/migration/openclaw-migration/scripts/openclaw_to_hermes.py","optional-skills/mlops/evaluation/evaluating-llms-harness/SKILL.md","optional-skills/mlops/evaluation/evaluating-llms-harness/references/distributed-eval.md","optional-skills/mlops/inference/serving-llms-vllm/references/server-deployment.md","optional-skills/mlops/lambda-labs/references/advanced-usage.md","optional-skills/mlops/llava/references/training.md","optional-skills/mlops/pytorch-lightning/references/distributed.md","optional-skills/mlops/torchtitan/SKILL.md","optional-skills/productivity/memento-flashcards/SKILL.md","optional-skills/productivity/memento-flashcards/scripts/youtube_quiz.py","optional-skills/productivity/telephony/scripts/telephony.py","optional-skills/research/duckduckgo-search/scripts/duckduckgo.sh","optional-skills/research/research-paper-writing/references/experiment-patterns.md","optional-skills/research/searxng-search/scripts/searxng.sh","optional-skills/security/godmode/SKILL.md","optional-skills/security/godmode/scripts/auto_jailbreak.py","optional-skills/web-development/har-derived-api-client/SKILL.md","optional-skills/web-development/har-derived-api-client/scripts/har_capture.py","package.json","plugin-catalog/hindsight.yaml","plugins/context_engine/__init__.py","plugins/cron_providers/__init__.py","plugins/disk-cleanup/__init__.py","plugins/disk-cleanup/disk_cleanup.py","plugins/google_meet/README.md","plugins/google_meet/SKILL.md","plugins/google_meet/_jsonfile.py","plugins/google_meet/cli.py","plugins/google_meet/meet_bot.py","plugins/google_meet/process_manager.py","plugins/google_meet/realtime/openai_client.py","plugins/google_meet/tools.py","plugins/hermes-achievements/dashboard/plugin_api.py","plugins/hermes-achievements/tests/test_achievement_engine.py","plugins/memory/__init__.py","plugins/memory/honcho/README.md","plugins/memory/honcho/cli.py","plugins/memory/honcho/client.py","plugins/memory/honcho/plugin.yaml","plugins/memory/honcho/session_migration.py","plugins/memory/mem0/README.md","plugins/memory/mem0/__init__.py","plugins/memory/mem0/_setup.py","plugins/memory/mem0/plugin.yaml","plugins/memory/openviking/__init__.py","plugins/memory/openviking/plugin.yaml","plugins/memory/retaindb/README.md","plugins/memory/retaindb/__init__.py","plugins/memory/retaindb/plugin.yaml","plugins/memory/supermemory/README.md","plugins/memory/supermemory/__init__.py","plugins/memory/supermemory/plugin.yaml","plugins/model-providers/fireworks/__init__.py","plugins/model-providers/gmi/__init__.py","plugins/model-providers/kimi-coding/__init__.py","plugins/model-providers/opencode-zen/__init__.py","plugins/model-providers/router/__init__.py","plugins/model-providers/xai/__init__.py","plugins/observability/langfuse/README.md","plugins/platforms/a2a/protocol.py","plugins/platforms/buzz/adapter.py","plugins/platforms/dingtalk/adapter.py","plugins/platforms/discord/adapter.py","plugins/platforms/email/adapter.py","plugins/platforms/feishu/adapter.py","plugins/platforms/feishu/feishu_comment_rules.py","plugins/platforms/google_chat/adapter.py","plugins/platforms/google_chat/oauth.py","plugins/platforms/matrix/adapter.py","plugins/platforms/photon/adapter.py","plugins/platforms/photon/auth.py","plugins/platforms/photon/cli.py","plugins/platforms/photon/plugin.yaml","plugins/platforms/slack/adapter.py","plugins/platforms/teams/adapter.py","plugins/platforms/telegram/adapter.py","plugins/platforms/telegram/update_admission.py","plugins/platforms/wecom/adapter.py","plugins/platforms/wecom/callback_adapter.py","plugins/platforms/whatsapp/adapter.py","plugins/teams_pipeline/store.py","plugins/video_gen/fal/__init__.py","plugins/web/_common.py","plugins/web/ddgs/provider.py","plugins/web/exa/provider.py","plugins/web/firecrawl/provider.py","plugins/web/parallel/provider.py","plugins/web/perplexity/provider.py","pm/__init__.py","pm/_marker_eval.py","pm/_uv.py","pm/artifact-mirror.json","pm/artifact_mirror.py","pm/build_env.py","pm/build_operations.py","pm/cli.py","pm/client.py","pm/defaults.py","pm/download_state.py","pm/downloader.py","pm/environment.py","pm/environments.py","pm/extras.py","pm/features.py","pm/filesystem.py","pm/index_config.py","pm/install.py","pm/launch.py","pm/lock.json","pm/lock.py","pm/native_build.py","pm/network.py","pm/operations.py","pm/package.py","pm/packages.py","pm/paths.py","pm/plugin_declarations.py","pm/plugin_inputs.py","pm/plugins_state.py","pm/progress.py","pm/publication.py","pm/pyproject.toml","pm/receipt.py","pm/recovery.py","pm/registry.py","pm/runtime.py","pm/runtime_stage.py","pm/security_packages.py","pm/shell.py","pm/store.py","pm/termux_libs.py","pm/termux_runtime_libs.json","pm/testenv.py","pm/update.py","pm/uv_cache_prune.py","pm/worker.py","pm/worker_operations.py","pm/workspace.py","providers/__init__.py","providers/base.py","pyproject.toml","run_agent.py","scripts/_activation.py","scripts/_activation.sh","scripts/_hermes-python","scripts/aa_quality_sync.py","scripts/add_contributor.py","scripts/audit-old-updater-imports.py","scripts/audit_pr_attribution.py","scripts/build/README.md","scripts/build/agent.py","scripts/build/desktop.mjs","scripts/build/freshness.mjs","scripts/build/frontend-common.mjs","scripts/build/icon_environment.py","scripts/build/inputs.py","scripts/build/launcher_wrapper.py","scripts/build/launchers.py","scripts/build/mint_launchers.py","scripts/build/node-deps.mjs","scripts/build/python.mjs","scripts/build/tui.mjs","scripts/build/web.mjs","scripts/build/windows-deps.ps1","scripts/build_model_catalog.py","scripts/build_skills_index.py","scripts/bundle-store-msixbundle.mjs","scripts/bundles/bytecode.py","scripts/bundles/channel_artifacts.py","scripts/bundles/desktop.py","scripts/bundles/desktop_inputs.py","scripts/bundles/desktop_prepare.py","scripts/bundles/desktop_toolchain.py","scripts/bundles/dmgbuild_diagnostics.py","scripts/bundles/native.py","scripts/bundles/native_build.py","scripts/bundles/native_prepared.py","scripts/bundles/payload.py","scripts/bundles/release_artifacts.py","scripts/bundles/stage.py","scripts/check-windows-footguns.py","scripts/check_bash_shebangs.py","scripts/check_compat_pointers.py","scripts/check_config_yaml_writers.py","scripts/check_no_tmp_literals.py","scripts/check_profile_scope_patterns.py","scripts/check_subprocess_stdin.py","scripts/ci/archive_inputs.py","scripts/ci/check_lazy_deps_imports.py","scripts/ci/check_os_marker_fakes.py","scripts/ci/classify_changes.py","scripts/ci/desktop_build_cache.py","scripts/ci/desktop_commands.py","scripts/ci/e2e_screenshot_status.py","scripts/ci/list_os_marked_tests.py","scripts/ci/live_comment.py","scripts/ci/publish_e2e_evidence.py","scripts/ci/python_packages.py","scripts/ci/required_results.py","scripts/ci/setup_toolchain.py","scripts/ci/test_install_ps1_cli_launchers.ps1","scripts/ci/test_install_ps1_path_migration.ps1","scripts/ci/timings_report.py","scripts/contributor_audit.py","scripts/desktop-update/posix.sh","scripts/desktop-update/repro.sh","scripts/desktop-update/retry-policy.ps1","scripts/desktop-update/runtime.ps1","scripts/desktop-update/update-panel.js","scripts/desktop-update/windows.ps1","scripts/dev-minimal-sandbox.sh","scripts/dev-sandbox.sh","scripts/discord-voice-doctor.py","scripts/docker_rebootstrap_nous_session.py","scripts/dump_desktop_slash_registry.py","scripts/e2e_shared_metrics_staging.py","scripts/gen-bootstrap-pins.py","scripts/gen_gateway_contracts.py","scripts/generate-icons.mjs","scripts/generate_icons.py","scripts/hermes-gateway","scripts/install.ps1","scripts/install.sh","scripts/install_psutil_android.py","scripts/iso-certify.py","scripts/kill_modal.sh","scripts/lib/node-bootstrap.sh","scripts/lint_diff.py","scripts/micro_compaction_report.py","scripts/msix-shared.mjs","scripts/observability/gateway_health_export_probe.py","scripts/probe_active_session_exclusivity.py","scripts/profile-tui.py","scripts/release-content-types.json","scripts/release.py","scripts/releases/authors.py","scripts/releases/authors_legacy.py","scripts/releases/bundle_env.py","scripts/releases/channel_build.py","scripts/releases/channel_disposable.py","scripts/releases/channel_publish.py","scripts/releases/channel_releases.py","scripts/releases/channels.py","scripts/releases/commit_build.py","scripts/releases/darwin.py","scripts/releases/dispatch_log.py","scripts/releases/distance.py","scripts/releases/docker.py","scripts/releases/draft_warning.py","scripts/releases/entrypoint.py","scripts/releases/handoff.py","scripts/releases/job_groups.py","scripts/releases/pick_tags.py","scripts/releases/r2.py","scripts/releases/r2_multipart.py","scripts/releases/r2_scope.py","scripts/releases/semver.py","scripts/releases/sequencer.py","scripts/releases/stable.py","scripts/releases/stamping.py","scripts/releases/store.py","scripts/releases/upload_summary.py","scripts/releases/versioning.py","scripts/render-builds-table.py","scripts/run_tests.sh","scripts/run_tests_parallel.py","scripts/sample_and_compress.py","scripts/sandbox/generate-e2e-matrix.mjs","scripts/smoke-payload.sh","scripts/smoke_nemo_relay_shared_metrics.py","scripts/stage-msixbundle.mjs","scripts/termux/assembly_permissions.sh","scripts/termux/build.py","scripts/termux/build_builder_image.sh","scripts/termux/build_config.sh","scripts/termux/build_cpython.sh","scripts/termux/build_deb.sh","scripts/termux/build_environment.py","scripts/termux/build_node.sh","scripts/termux/build_uv.sh","scripts/termux/build_wheels.py","scripts/termux/check_apt.sh","scripts/termux/check_deb.sh","scripts/termux/deb_version.py","scripts/termux/launchers.py","scripts/termux/payload_facts.py","scripts/termux/python_linkage.py","scripts/termux/retag_wheel.py","scripts/termux/stage_apt_repo.py","scripts/termux/stage_runtime_libs.py","scripts/termux/termux-builder.Dockerfile","scripts/termux/termux_build.sh","scripts/termux/termux_pkg_build.sh","scripts/termux/validate_installed.py","scripts/termux/wheelhouse_cache.py","scripts/tests/test-install-ps1-gitbash-compatibility.ps1","scripts/tests/test-install-ps1-node-compatibility.ps1","scripts/tests/test-install-ps1-stage-protocol.ps1","scripts/tests/test-install-ps1-uv-shim-validation.ps1","scripts/update-test/HANDOFF.md","scripts/update-test/hermes-update-rehearsal.ps1","scripts/update-test/hermes-update-rehearsal.sh","scripts/update-test/smoke-test.ps1","scripts/update-test/smoke-test.sh","scripts/validate_plugin_catalog.py","scripts/verify-bootstrap-version-stamp.py","scripts/windows-build-deps.ps1","scripts/write_install_stamp.py","setup-hermes.ps1","setup-hermes.sh","setup.py","skills/autonomous-ai-agents/hermes-agent/SKILL.md","skills/autonomous-ai-agents/hermes-agent/references/configuration.md","skills/autonomous-ai-agents/hermes-agent/references/contributor-guide.md","skills/autonomous-ai-agents/hermes-agent/references/native-mcp.md","skills/autonomous-ai-agents/hermes-agent/references/troubleshooting.md","skills/autonomous-ai-agents/hermes-agent/references/windows-quirks.md","skills/creative/p5js/scripts/render.sh","skills/creative/p5js/scripts/serve.sh","skills/creative/p5js/scripts/setup.sh","skills/media/youtube-content/SKILL.md","skills/media/youtube-content/scripts/fetch_transcript.py","skills/productivity/google-workspace/SKILL.md","skills/productivity/google-workspace/scripts/setup.py","skills/software-development/hermes-agent-skill-authoring/SKILL.md","skills/software-development/python-debugpy/SKILL.md","tests-js/bundle-inputs.test.mjs","tests-js/bundle-smoke-metadata.test.mjs","tests-js/desktop-builder.test.mjs","tests-js/desktop-mac-usage-descriptions.test.ts","tests-js/e2e-matrix-route.test.ts","tests-js/generate-icons.test.mjs","tests-js/install-known-failures.test.ts","tests-js/macos-bundled-helpers.test.mjs","tests-js/macos-publish-config.test.mjs","tests-js/node-deps.test.mjs","tests-js/node-engine-alignment.test.ts","tests-js/notarize.test.mjs","tests-js/package.json","tests-js/product-builders.test.mjs","tests-js/scripts/desktop-chat-smoke.ts","tests-js/scripts/desktop-smoke-process.ts","tests-js/scripts/desktop-smoke.test.ts","tests-js/scripts/desktop-transcript.test.ts","tests-js/scripts/launch-from-spec.test.ts","tests-js/scripts/mock-provider-config.ts","tests-js/scripts/mock-server.ts","tests-js/setup-pm-cache.test.mjs","tests-js/setup-pm-post.test.mjs","tests-js/source-update-observer.test.mjs","tests-js/tsconfig.json","tests-js/update-ui.test.mjs","tests-js/vitest.config.ts","tests-js/windows-bundled-helpers.test.mjs","tests/_fixtures/__init__.py","tests/_fixtures/env_filter.py","tests/_fixtures/live_system_guard.py","tests/_fixtures/platform_gating.py","tests/acp_adapter/test_acp_images.py","tests/acp_adapter/test_auth.py","tests/acp_adapter/test_detect_provider_entra.py","tests/acp_adapter/test_entry.py","tests/acp_adapter/test_ping_suppression.py","tests/acp_adapter/test_runtime_identity.py","tests/acp_adapter/test_session.py","tests/acp_adapter/test_session_reasoning_config.py","tests/agent/lsp/test_client_e2e.py","tests/agent/lsp/test_install_and_lint_fixes.py","tests/agent/lsp/test_protocol.py","tests/agent/lsp/test_python_discovery.py","tests/agent/lsp/test_windows_binary_resolution.py","tests/agent/lsp/test_workspace.py","tests/agent/metadata_transport.py","tests/agent/test_actual_auxiliary_routing.py","tests/agent/test_anthropic_adapter.py","tests/agent/test_anthropic_dead_grant_hints.py","tests/agent/test_anthropic_keychain.py","tests/agent/test_anthropic_kwargs_sanitize.py","tests/agent/test_anthropic_oauth_stress.py","tests/agent/test_anthropic_oauth_ua_prefix.py","tests/agent/test_anthropic_third_party_oauth_guard.py","tests/agent/test_anthropic_truncation_continuation.py","tests/agent/test_astra_baseline_runtime.py","tests/agent/test_async_httpx_del_neuter.py","tests/agent/test_auth_provider_failover.py","tests/agent/test_aux_progress_streaming.py","tests/agent/test_aux_stream_host_deadline.py","tests/agent/test_auxiliary_auth_rung_fallthrough.py","tests/agent/test_auxiliary_client.py","tests/agent/test_auxiliary_client_base_url_host_validation.py","tests/agent/test_auxiliary_client_resolve_dedup.py","tests/agent/test_auxiliary_main_first.py","tests/agent/test_auxiliary_named_custom_providers.py","tests/agent/test_auxiliary_title_timeout_bound.py","tests/agent/test_auxiliary_unavailable_nous_reason.py","tests/agent/test_auxiliary_user_default_headers.py","tests/agent/test_azure_identity_adapter.py","tests/agent/test_background_review_summary.py","tests/agent/test_background_review_usage.py","tests/agent/test_battery.py","tests/agent/test_bedrock_context_cache.py","tests/agent/test_billing_links.py","tests/agent/test_bitwarden_secrets.py","tests/agent/test_builtin_memory_disabled_surface.py","tests/agent/test_callable_api_key.py","tests/agent/test_claude_code_version_path.py","tests/agent/test_codex_app_server_event_bridge.py","tests/agent/test_codex_app_server_persist.py","tests/agent/test_codex_aux_timeout_fd_ownership.py","tests/agent/test_codex_cloudflare_headers.py","tests/agent/test_codex_gpt55_autoraise_notice.py","tests/agent/test_codex_no_tools_nonetype.py","tests/agent/test_codex_usage_attribution.py","tests/agent/test_coding_context.py","tests/agent/test_command_secret_source.py","tests/agent/test_compaction_anti_thrash.py","tests/agent/test_compaction_ops_notification_anchor.py","tests/agent/test_compression_attempt_lifecycle.py","tests/agent/test_compression_attempt_ownership.py","tests/agent/test_compression_boundary_hook.py","tests/agent/test_compression_closed_adoption.py","tests/agent/test_compression_concurrent_fork.py","tests/agent/test_compression_persistence.py","tests/agent/test_compression_stall_fallback.py","tests/agent/test_compression_worker_isolation.py","tests/agent/test_compressor_assistant_tail_anchor.py","tests/agent/test_context_breakdown.py","tests/agent/test_context_compressor_cross_session_guard.py","tests/agent/test_context_engine.py","tests/agent/test_context_refs_concurrent.py","tests/agent/test_conversation_loop_interpreter_shutdown.py","tests/agent/test_copilot_acp_client.py","tests/agent/test_copilot_initiator.py","tests/agent/test_create_openai_client_disables_sdk_retries.py","tests/agent/test_create_openai_client_ssl_verify.py","tests/agent/test_credential_pool.py","tests/agent/test_credential_pool_deferred_refresh.py","tests/agent/test_credential_pool_profile_oauth_fork.py","tests/agent/test_credential_pool_sole_cooldown.py","tests/agent/test_credits_cold_start.py","tests/agent/test_credits_notices_toggle.py","tests/agent/test_credits_view.py","tests/agent/test_crossloop_client_cache.py","tests/agent/test_ctx_halving_fix.py","tests/agent/test_custom_provider_ca_probes.py","tests/agent/test_deadline.py","tests/agent/test_deadline_fork_race.py","tests/agent/test_display_todo_progress.py","tests/agent/test_endpoint_blackhole.py","tests/agent/test_estimator_parity.py","tests/agent/test_fallback_429_after_timeout.py","tests/agent/test_fallback_credential_isolation.py","tests/agent/test_file_mutation_verifier.py","tests/agent/test_file_safety_sandbox_mirror.py","tests/agent/test_ghost_skill_pruning.py","tests/agent/test_hermetic_side_effect_guards.py","tests/agent/test_i18n.py","tests/agent/test_image_corrupt_recovery.py","tests/agent/test_image_gen_registry.py","tests/agent/test_image_routing.py","tests/agent/test_in_place_persist_marker.py","tests/agent/test_infinite_compaction_loop.py","tests/agent/test_insights.py","tests/agent/test_interpreter_shutdown_turn_exit.py","tests/agent/test_invalid_context_length_warning.py","tests/agent/test_iron_proxy.py","tests/agent/test_memory_user_id.py","tests/agent/test_message_sanitization_policy.py","tests/agent/test_missing_provider_credentials_hint.py","tests/agent/test_moa_context_max_tokens.py","tests/agent/test_moa_prepared_request_client_swap.py","tests/agent/test_moa_prepared_request_leak.py","tests/agent/test_moa_slot_api_mode.py","tests/agent/test_moa_slot_max_tokens.py","tests/agent/test_model_metadata.py","tests/agent/test_model_metadata_http.py","tests/agent/test_model_metadata_local_ctx.py","tests/agent/test_model_metadata_ssl.py","tests/agent/test_multimodal_interim.py","tests/agent/test_multimodal_tool_content_recovery.py","tests/agent/test_nous_rate_guard.py","tests/agent/test_onboarding.py","tests/agent/test_oneshot.py","tests/agent/test_openai_client_lifecycle.py","tests/agent/test_plan_prompt.py","tests/agent/test_platform_hint_desktop.py","tests/agent/test_plugin_context_references.py","tests/agent/test_plugin_llm.py","tests/agent/test_plugin_prompt_sections.py","tests/agent/test_portal_tags.py","tests/agent/test_private_credential_writers.py","tests/agent/test_proactive_prune_rearm_threshold.py","tests/agent/test_proactive_prune_restart_safety.py","tests/agent/test_probe_cache_followups.py","tests/agent/test_prompt_builder.py","tests/agent/test_provider_attribution_headers.py","tests/agent/test_provider_fallback.py","tests/agent/test_provider_reset_cooldown.py","tests/agent/test_provider_scope_keys.py","tests/agent/test_proxy_and_url_validation.py","tests/agent/test_rate_limit_tracker.py","tests/agent/test_relay_runtime_bounded_scope_ops.py","tests/agent/test_relay_runtime_plugins.py","tests/agent/test_review_engine.py","tests/agent/test_run_agent.py","tests/agent/test_run_budget.py","tests/agent/test_save_url_image.py","tests/agent/test_secret_scope_tier1_migration.py","tests/agent/test_send_path_history_isolation.py","tests/agent/test_sequential_deadline_delegate_exempt.py","tests/agent/test_sequential_tool_interrupt.py","tests/agent/test_session_activity.py","tests/agent/test_session_meta_filtering.py","tests/agent/test_shared_client_fd_corruption.py","tests/agent/test_shell_hooks.py","tests/agent/test_shell_hooks_consent.py","tests/agent/test_shell_hooks_tree_kill.py","tests/agent/test_skill_commands.py","tests/agent/test_skill_inline_bash_windows.py","tests/agent/test_skill_session_platform_gate.py","tests/agent/test_skill_utils.py","tests/agent/test_ssl_ca_guard.py","tests/agent/test_ssl_transport_contracts.py","tests/agent/test_ssl_verify.py","tests/agent/test_stream_interrupt_retry.py","tests/agent/test_strict_api_validation.py","tests/agent/test_subdirectory_hints.py","tests/agent/test_switch_model_rollback.py","tests/agent/test_thinking_timeout_guidance.py","tests/agent/test_token_persistence_non_cli.py","tests/agent/test_tool_activity_heartbeat.py","tests/agent/test_tool_batch_segmentation.py","tests/agent/test_tool_call_guardrail_runtime.py","tests/agent/test_treekill_consolidation.py","tests/agent/test_turn_base_display_anchor.py","tests/agent/test_turn_context_compaction.py","tests/agent/test_turn_liveness_watchdog.py","tests/agent/test_uncompressed_context_guardrail.py","tests/agent/test_vault_backends.py","tests/agent/test_verification_stop.py","tests/agent/test_video_gen_registry.py","tests/agent/test_vision_tool_messages.py","tests/agent/test_wait_state_visibility.py","tests/agent/test_warning_presentation.py","tests/agent/transports/test_chat_completions_empty_tool_calls.py","tests/agent/transports/test_codex_app_server_runtime.py","tests/ci/desktop_release_roles.py","tests/ci/test_channel_build_publication.py","tests/ci/test_check_os_marker_fakes.py","tests/ci/test_classify_changes.py","tests/ci/test_commit_build_staging.py","tests/ci/test_desktop_bundle_smoke.py","tests/ci/test_desktop_release_commit_admission.py","tests/ci/test_desktop_release_tag_admission.py","tests/ci/test_desktop_store_eligibility.py","tests/ci/test_list_os_marked_tests.py","tests/ci/test_live_comment.py","tests/ci/test_plugin_validate_action.py","tests/ci/test_protected_canary_publication.py","tests/ci/test_required_results.py","tests/ci/test_stable_release_graph.py","tests/ci/test_tag_builds_summary.py","tests/ci/test_termux_input_archive.py","tests/ci/test_workflow_job_graph.py","tests/compat/README.md","tests/compat/old_updater_dependencies.py","tests/compat/old_updater_support.py","tests/compat/old_updater_surface.json","tests/computer_use/driver_fixture.py","tests/computer_use/test_cua_no_overlay.py","tests/computer_use/test_cua_pm_selection.py","tests/computer_use/test_cua_spawn_env_sanitization.py","tests/computer_use/test_cua_wayland_env.py","tests/computer_use/test_doctor.py","tests/computer_use/test_permissions_resolution.py","tests/conformance/persistence/_harness.py","tests/conformance/persistence/test_cell1_prefix_durability.py","tests/conformance/persistence/test_cell3_rotation_atomicity.py","tests/conftest.py","tests/cron/test_codex_execution_paths.py","tests/cron/test_cron_bot_chat_delivery.py","tests/cron/test_cron_created_delivery.py","tests/cron/test_cron_direct_api_call_watchdog.py","tests/cron/test_cron_emfile_stall.py","tests/cron/test_cron_empty_payload.py","tests/cron/test_cron_import_error_skew_hint.py","tests/cron/test_cron_kanban_env_isolation.py","tests/cron/test_cron_mcp_toolset_empty_block.py","tests/cron/test_cron_memory_contract.py","tests/cron/test_cron_multiplex_profile_route_preflight.py","tests/cron/test_cron_multiplex_shared_route_delivery.py","tests/cron/test_cron_no_agent.py","tests/cron/test_cron_script.py","tests/cron/test_cron_workdir.py","tests/cron/test_cronjob_gateway_liveness.py","tests/cron/test_file_permissions.py","tests/cron/test_fire_claim_lost_after_delivery.py","tests/cron/test_jobs_file_ownership.py","tests/cron/test_jobs_shrink_merge.py","tests/cron/test_lifecycle_guard_budget.py","tests/cron/test_oneshot_dispatch_failure_run_claim.py","tests/cron/test_oneshot_guard_warning.py","tests/cron/test_parallel_pool.py","tests/cron/test_restart_safe_worker.py","tests/cron/test_scheduler.py","tests/cron/test_scheduler_shutdown_guard.py","tests/cron/test_script_claim_heartbeat.py","tests/cron/test_sessiondb_init_hang.py","tests/cron/test_stale_module_leaf_imports.py","tests/cron/test_suggestions.py","tests/cron/test_timezone.py","tests/cron/test_worktree_maintenance_isolation.py","tests/desktop/test_appinstaller_check_script.py","tests/desktop/test_check_store_update.py","tests/docker/test_dump_build_sha.py","tests/docker/test_image_payload.py","tests/docker/test_immutable_install.py","tests/docker/test_immutable_install_permissions.py","tests/docker/test_puid_pgid_remap.py","tests/docker/test_stage2_browser_discovery.py","tests/docker/test_tui_passthrough.py","tests/docker/test_tui_prebuilt_bundle.py","tests/e2e/core/_pm_dependencies.py","tests/e2e/core/dashboard/_helpers.py","tests/e2e/core/dashboard/test_dashboard_mcp_install.py","tests/e2e/core/dashboard/test_dashboard_profiles.py","tests/e2e/core/delivery/test_cron_virtual_clock_soak.py","tests/e2e/core/mcp_plugins/_helpers.py","tests/e2e/core/mcp_plugins/test_plugin_activation.py","tests/e2e/core/parity/_helpers.py","tests/e2e/core/providers/_anthropic_helpers.py","tests/e2e/core/providers/_catalog_helpers.py","tests/e2e/core/providers/_native_helpers.py","tests/e2e/core/providers/_oauth_helpers.py","tests/e2e/core/providers/_openai_helpers.py","tests/e2e/core/providers/test_native_copilot_acp.py","tests/e2e/core/tenancy/_helpers.py","tests/e2e/core/tenancy/_routing_helpers.py","tests/e2e/core/tenancy/test_routing_truth_table.py","tests/e2e/core/tenancy/test_two_tenant_gateway.py","tests/e2e/core/upgrade/_helpers.py","tests/e2e/core/upgrade/_install_helpers.py","tests/e2e/core/upgrade/test_config_roundtrip_properties.py","tests/e2e/core/upgrade/test_fresh_process_entrypoints.py","tests/e2e/core/upgrade/test_install_fresh.py","tests/e2e/core/upgrade/test_profile_update_cron.py","tests/e2e/core/upgrade/test_update_userstate_import.py","tests/e2e/core/upgrade/test_update_userstate_realistic.py","tests/e2e/core/upgrade/test_upgrade_path.py","tests/e2e/core/windows/_helpers.py","tests/e2e/core/windows/test_boot_lifecycle.py","tests/e2e/core/windows/test_cron_scripts.py","tests/e2e/core/windows/test_prompt_paths.py","tests/e2e/core/windows/test_state_db_guard.py","tests/e2e/core/windows/test_terminal_tool.py","tests/e2e/core/windows/test_unicode_input.py","tests/fixtures/resolution_allowlist.json","tests/fixtures/spark_failing_turn_shape.json","tests/gateway/_plugin_adapter_loader.py","tests/gateway/conftest.py","tests/gateway/relay/test_cold_opt_out.py","tests/gateway/relay/test_explicit_disable.py","tests/gateway/test_adapter_connect_classification.py","tests/gateway/test_agent_cache.py","tests/gateway/test_agent_cache_pressure.py","tests/gateway/test_agents_command_delegations.py","tests/gateway/test_api_server.py","tests/gateway/test_api_server_bind_guard.py","tests/gateway/test_api_server_room_grants.py","tests/gateway/test_api_server_runs.py","tests/gateway/test_api_server_toolset.py","tests/gateway/test_approvals_command.py","tests/gateway/test_approve_deny_commands.py","tests/gateway/test_background_command.py","tests/gateway/test_browser_control_api.py","tests/gateway/test_busy_session_ack.py","tests/gateway/test_busy_steer_subagent_fanout.py","tests/gateway/test_buzz_adapter.py","tests/gateway/test_cancel_background_drain.py","tests/gateway/test_checkpoint_prune_housekeeping.py","tests/gateway/test_cjk_fts_config_bridge.py","tests/gateway/test_clarify_delivery_fallback.py","tests/gateway/test_clarify_send_timeout_ambiguity.py","tests/gateway/test_complete_path_at_filter.py","tests/gateway/test_compress_command.py","tests/gateway/test_compress_focus.py","tests/gateway/test_compression_interrupt_demotion.py","tests/gateway/test_config.py","tests/gateway/test_config_env_bridge_authority.py","tests/gateway/test_control_socket.py","tests/gateway/test_control_socket_pause.py","tests/gateway/test_control_socket_windows_live.py","tests/gateway/test_cron_delivery_housekeeping.py","tests/gateway/test_cron_interrupt_notification.py","tests/gateway/test_diff_command.py","tests/gateway/test_dingtalk.py","tests/gateway/test_discord_channel_controls.py","tests/gateway/test_discord_model_picker.py","tests/gateway/test_discord_prompt_timeout_config.py","tests/gateway/test_discord_username_allowlist_env_reload.py","tests/gateway/test_discord_voice_mixer.py","tests/gateway/test_display_config.py","tests/gateway/test_dm_topics.py","tests/gateway/test_duplicate_reply_suppression.py","tests/gateway/test_empty_sentinel_rewrite_copy.py","tests/gateway/test_env_override_explicit_disable.py","tests/gateway/test_fast_command.py","tests/gateway/test_feishu.py","tests/gateway/test_feishu_lazy_import.py","tests/gateway/test_feishu_onboard.py","tests/gateway/test_finalize_session_off_loop.py","tests/gateway/test_free_tier_gateway_boot.py","tests/gateway/test_gateway_streaming_nested_config.py","tests/gateway/test_gateway_trust_env.py","tests/gateway/test_goal_resume_restart.py","tests/gateway/test_goal_verdict_send.py","tests/gateway/test_google_chat.py","tests/gateway/test_google_chat_oauth_dependencies.py","tests/gateway/test_history_media_current_turn.py","tests/gateway/test_homeassistant.py","tests/gateway/test_host_attach_lifecycle.py","tests/gateway/test_host_attach_standalone.py","tests/gateway/test_host_gateway_lock_refusal.py","tests/gateway/test_host_rendezvous.py","tests/gateway/test_host_rendezvous_windows.py","tests/gateway/test_hosted_room_links.py","tests/gateway/test_hosted_room_peer.py","tests/gateway/test_housekeeping_profile_scope.py","tests/gateway/test_interactive_prompt_base.py","tests/gateway/test_irc_adapter.py","tests/gateway/test_lifecycle_ledger.py","tests/gateway/test_line_plugin.py","tests/gateway/test_loop_exception_handler.py","tests/gateway/test_loop_liveness_watchdog.py","tests/gateway/test_matrix.py","tests/gateway/test_matrix_deps_rebind.py","tests/gateway/test_matrix_mention.py","tests/gateway/test_matrix_plugin_setup.py","tests/gateway/test_media_cache.py","tests/gateway/test_media_resend_dedup.py","tests/gateway/test_media_spaced_paths_and_history_dedupe.py","tests/gateway/test_model_command_context_offload.py","tests/gateway/test_model_command_custom_providers.py","tests/gateway/test_model_command_expensive_confirm.py","tests/gateway/test_model_command_flat_string_config.py","tests/gateway/test_model_picker_persist.py","tests/gateway/test_model_switch_persistence.py","tests/gateway/test_multiplex_hot_serve.py","tests/gateway/test_multiplex_mcp_discovery.py","tests/gateway/test_multiplex_phase0.py","tests/gateway/test_multiplex_process_memo_scope.py","tests/gateway/test_ntfy_plugin.py","tests/gateway/test_pairing.py","tests/gateway/test_peer_dm_hidden_e2e.py","tests/gateway/test_peer_dm_into_open_bot_chat.py","tests/gateway/test_pending_drain_no_recursion.py","tests/gateway/test_platform_base.py","tests/gateway/test_platform_http_client_limits.py","tests/gateway/test_platform_plugin_handlers.py","tests/gateway/test_plugin_check_housekeeping.py","tests/gateway/test_plugin_message_injection.py","tests/gateway/test_pm_activation.py","tests/gateway/test_post_stream_media_delivery.py","tests/gateway/test_profile_isolation_runtime.py","tests/gateway/test_profile_routing.py","tests/gateway/test_proxy_mode.py","tests/gateway/test_reconnect_attention_profile_scope.py","tests/gateway/test_replace_child_reap.py","tests/gateway/test_restart_drain.py","tests/gateway/test_restart_drain_recovery_dedup.py","tests/gateway/test_review_command.py","tests/gateway/test_run_progress_topics.py","tests/gateway/test_runtime_env_reload_config_authority.py","tests/gateway/test_scale_to_zero.py","tests/gateway/test_send_multiple_images.py","tests/gateway/test_session.py","tests/gateway/test_session_db_replaced_fallback.py","tests/gateway/test_session_load_bool.py","tests/gateway/test_session_stall_watchdog.py","tests/gateway/test_session_store_prune.py","tests/gateway/test_setup_feishu.py","tests/gateway/test_shutdown_executor_quiesce.py","tests/gateway/test_shutdown_forensics.py","tests/gateway/test_shutdown_memory_provider_messages.py","tests/gateway/test_shutdown_watchdog.py","tests/gateway/test_signal.py","tests/gateway/test_signal_format.py","tests/gateway/test_signal_rate_limit.py","tests/gateway/test_silent_partial_delivery.py","tests/gateway/test_simplex_plugin.py","tests/gateway/test_skip_context_files_wiring.py","tests/gateway/test_slack_channel_skills.py","tests/gateway/test_slack_cron_continuable_surface.py","tests/gateway/test_slack_model_picker.py","tests/gateway/test_slash_config_writes_routed_profile.py","tests/gateway/test_ssl_cert_detection.py","tests/gateway/test_stale_base_url_api_mode.py","tests/gateway/test_stale_finalize_suppression.py","tests/gateway/test_stale_platform_lock_retryable.py","tests/gateway/test_startup_agent_budget_log.py","tests/gateway/test_startup_restart_race.py","tests/gateway/test_status.py","tests/gateway/test_status_command.py","tests/gateway/test_status_free_tier_line.py","tests/gateway/test_sticker_cache.py","tests/gateway/test_stream_consumer_fresh_final.py","tests/gateway/test_stt_config.py","tests/gateway/test_systemd_notify.py","tests/gateway/test_systemd_stop_mark.py","tests/gateway/test_teams.py","tests/gateway/test_teams_dotenv_isolation.py","tests/gateway/test_telegram_closewait_windows_live.py","tests/gateway/test_telegram_inline_picker.py","tests/gateway/test_telegram_lazy_install_typehandler.py","tests/gateway/test_telegram_media_read_timeout.py","tests/gateway/test_telegram_network.py","tests/gateway/test_telegram_reactions.py","tests/gateway/test_title_command.py","tests/gateway/test_transcript_read_failure.py","tests/gateway/test_tts_media_routing.py","tests/gateway/test_tui_slash_worker_path.py","tests/gateway/test_update_command.py","tests/gateway/test_update_cron_drain.py","tests/gateway/test_update_streaming.py","tests/gateway/test_verbose_command.py","tests/gateway/test_voice_command.py","tests/gateway/test_webhook_cron_trigger.py","tests/gateway/test_webhook_filter_interpreter.py","tests/gateway/test_webhook_offloop_delivery.py","tests/gateway/test_weixin_typing.py","tests/gateway/test_whatsapp_connect.py","tests/gateway/test_whatsapp_formatting.py","tests/gateway/test_ws_auth_retry_verifier_probe.py","tests/git_safety.py","tests/hermes_cli/conftest.py","tests/hermes_cli/plugin_worker_support.py","tests/hermes_cli/test_active_session_exclusivity.py","tests/hermes_cli/test_actual_provider.py","tests/hermes_cli/test_agent_import.py","tests/hermes_cli/test_agent_plugins.py","tests/hermes_cli/test_anon_sign_in_flow.py","tests/hermes_cli/test_anthropic_model_flow_stale_oauth.py","tests/hermes_cli/test_api_key_providers.py","tests/hermes_cli/test_apply_profile_override.py","tests/hermes_cli/test_approval_transport.py","tests/hermes_cli/test_atomic_yaml_write.py","tests/hermes_cli/test_audio_playback_guard.py","tests/hermes_cli/test_auth_commands.py","tests/hermes_cli/test_auth_nous_provider.py","tests/hermes_cli/test_auth_provider_gate.py","tests/hermes_cli/test_auth_ssl_macos.py","tests/hermes_cli/test_auth_store_read_failure.py","tests/hermes_cli/test_auth_toctou_file_modes.py","tests/hermes_cli/test_aux_config.py","tests/hermes_cli/test_aux_picker_inventory.py","tests/hermes_cli/test_azure_foundry_entra.py","tests/hermes_cli/test_backup.py","tests/hermes_cli/test_backup_import_deleted_holder.py","tests/hermes_cli/test_backup_preflight.py","tests/hermes_cli/test_backup_stability.py","tests/hermes_cli/test_backup_zip_serialization.py","tests/hermes_cli/test_bang_shell_mode.py","tests/hermes_cli/test_banner.py","tests/hermes_cli/test_banner_distribution_label.py","tests/hermes_cli/test_banner_git_state.py","tests/hermes_cli/test_banner_release_channel.py","tests/hermes_cli/test_banner_skills.py","tests/hermes_cli/test_banner_skills_width.py","tests/hermes_cli/test_bedrock_mantle_key_env.py","tests/hermes_cli/test_bedrock_region_scoped_picker.py","tests/hermes_cli/test_boot_bootstrap.py","tests/hermes_cli/test_boot_convergence.py","tests/hermes_cli/test_boot_preset_staleness.py","tests/hermes_cli/test_boot_wiring.py","tests/hermes_cli/test_bot_desktop_screen_stop.py","tests/hermes_cli/test_bounded_probe_run.py","tests/hermes_cli/test_browser_connect_default_chromium.py","tests/hermes_cli/test_browser_runtime.py","tests/hermes_cli/test_build_info.py","tests/hermes_cli/test_bundled_desktop_launch.py","tests/hermes_cli/test_busy_input_mode_command.py","tests/hermes_cli/test_catalog_json.py","tests/hermes_cli/test_certifi_repair.py","tests/hermes_cli/test_chat_q_exit_clear.py","tests/hermes_cli/test_chat_query_file.py","tests/hermes_cli/test_checkout_mutation_guards.py","tests/hermes_cli/test_checkpoints_prune.py","tests/hermes_cli/test_claw.py","tests/hermes_cli/test_cli_command_messages.py","tests/hermes_cli/test_cli_extension_hooks.py","tests/hermes_cli/test_cli_file_drop.py","tests/hermes_cli/test_cli_goal_interrupt.py","tests/hermes_cli/test_cli_image_command.py","tests/hermes_cli/test_cli_init.py","tests/hermes_cli/test_cli_light_mode.py","tests/hermes_cli/test_cli_loading_indicator.py","tests/hermes_cli/test_cli_mcp_config_watch.py","tests/hermes_cli/test_cli_preloaded_skills.py","tests/hermes_cli/test_cli_provider_resolution.py","tests/hermes_cli/test_cli_quiet_stdout_leak.py","tests/hermes_cli/test_cli_save_config_value.py","tests/hermes_cli/test_cli_shift_enter_newline.py","tests/hermes_cli/test_cli_startup_model_cost_guard.py","tests/hermes_cli/test_cli_status_bar_goal.py","tests/hermes_cli/test_cli_tools_command.py","tests/hermes_cli/test_cli_user_message_preview.py","tests/hermes_cli/test_clipboard_text_write.py","tests/hermes_cli/test_cmd_uninstall.py","tests/hermes_cli/test_cmd_update.py","tests/hermes_cli/test_cmd_update_apt.py","tests/hermes_cli/test_cmd_update_docker.py","tests/hermes_cli/test_codex_models.py","tests/hermes_cli/test_commit_build_cli.py","tests/hermes_cli/test_commit_build_updates.py","tests/hermes_cli/test_completer_config_reads.py","tests/hermes_cli/test_computer_use_cli.py","tests/hermes_cli/test_config.py","tests/hermes_cli/test_config_dotted_key_names.py","tests/hermes_cli/test_config_effective.py","tests/hermes_cli/test_config_guard_surfaces.py","tests/hermes_cli/test_config_loader_e2e.py","tests/hermes_cli/test_config_migration_45_connections.py","tests/hermes_cli/test_config_migration_nested_guards.py","tests/hermes_cli/test_config_platform_env_routing.py","tests/hermes_cli/test_config_read_guard.py","tests/hermes_cli/test_config_rmw_lock.py","tests/hermes_cli/test_config_save_integrity.py","tests/hermes_cli/test_config_set_coercion.py","tests/hermes_cli/test_config_set_platforms_redirect.py","tests/hermes_cli/test_config_unversioned_migration.py","tests/hermes_cli/test_config_yaml_comment_preservation.py","tests/hermes_cli/test_console_engine.py","tests/hermes_cli/test_container_boot.py","tests/hermes_cli/test_cpr_local_leak.py","tests/hermes_cli/test_credential_pool_off_loop.py","tests/hermes_cli/test_cron_dispatch_visibility.py","tests/hermes_cli/test_cross_profile_kill_refusal.py","tests/hermes_cli/test_ctrl_enter_newline.py","tests/hermes_cli/test_curator_run.py","tests/hermes_cli/test_curator_usage.py","tests/hermes_cli/test_custom_provider_model_switch.py","tests/hermes_cli/test_dashboard_admin_endpoints.py","tests/hermes_cli/test_dashboard_auth_401_reauth.py","tests/hermes_cli/test_dashboard_auth_ws_tickets.py","tests/hermes_cli/test_dashboard_basic_auth_plugin_enable.py","tests/hermes_cli/test_dashboard_lifecycle_flags.py","tests/hermes_cli/test_dashboard_spawn_executable.py","tests/hermes_cli/test_dashboard_system_gateway_elevation.py","tests/hermes_cli/test_dashboard_unified_launch.py","tests/hermes_cli/test_data_dir_suffix.py","tests/hermes_cli/test_data_uninstall.py","tests/hermes_cli/test_data_uninstall_holders.py","tests/hermes_cli/test_debug.py","tests/hermes_cli/test_default_interface_resolution.py","tests/hermes_cli/test_deferred_platform_client_tools.py","tests/hermes_cli/test_dep_ensure.py","tests/hermes_cli/test_desktop_build_git_windows.py","tests/hermes_cli/test_desktop_console.py","tests/hermes_cli/test_desktop_cron_ticker_profiles.py","tests/hermes_cli/test_desktop_exe_integrity.py","tests/hermes_cli/test_desktop_half_installed_get_windows.py","tests/hermes_cli/test_desktop_lifecycle_windows_live.py","tests/hermes_cli/test_desktop_local_flag.py","tests/hermes_cli/test_desktop_native_deps_stale.py","tests/hermes_cli/test_desktop_slash_registry.py","tests/hermes_cli/test_desktop_source_build.py","tests/hermes_cli/test_desktop_startup_cost.py","tests/hermes_cli/test_desktop_update_verify.py","tests/hermes_cli/test_destructive_slash_confirm_gate.py","tests/hermes_cli/test_diff_command.py","tests/hermes_cli/test_dingtalk_auth.py","tests/hermes_cli/test_doctor.py","tests/hermes_cli/test_doctor_channel_hygiene.py","tests/hermes_cli/test_doctor_command_install.py","tests/hermes_cli/test_doctor_journal_modes.py","tests/hermes_cli/test_doctor_legacy_checkout.py","tests/hermes_cli/test_doctor_live.py","tests/hermes_cli/test_doctor_pm_store_probe.py","tests/hermes_cli/test_doctor_terminal_backends.py","tests/hermes_cli/test_doctor_update_provenance.py","tests/hermes_cli/test_dump_git_commit.py","tests/hermes_cli/test_early_recovery.py","tests/hermes_cli/test_enable_no_capabilities.py","tests/hermes_cli/test_ensure_acp_launcher.py","tests/hermes_cli/test_ensure_hermes_home_uid.py","tests/hermes_cli/test_ensure_windows_bin_launchers.py","tests/hermes_cli/test_env_custom_keys.py","tests/hermes_cli/test_exit_watchdog_signal_arm.py","tests/hermes_cli/test_external_process_auth_status.py","tests/hermes_cli/test_external_process_provider_seam.py","tests/hermes_cli/test_fallback_cmd.py","tests/hermes_cli/test_fast_command.py","tests/hermes_cli/test_fleet_config_migration_windows_live.py","tests/hermes_cli/test_fleet_matrix_down_state.py","tests/hermes_cli/test_fleet_matrix_self_restart_pending.py","tests/hermes_cli/test_gateway.py","tests/hermes_cli/test_gateway_foreign_xdg_runtime.py","tests/hermes_cli/test_gateway_job_teardown_live.py","tests/hermes_cli/test_gateway_linger.py","tests/hermes_cli/test_gateway_migrate_multiplex.py","tests/hermes_cli/test_gateway_multiplex_status.py","tests/hermes_cli/test_gateway_platform_gating.py","tests/hermes_cli/test_gateway_proc_fallback.py","tests/hermes_cli/test_gateway_restart_loop.py","tests/hermes_cli/test_gateway_restart_no_unit_linger.py","tests/hermes_cli/test_gateway_scm_feature_removed.py","tests/hermes_cli/test_gateway_service.py","tests/hermes_cli/test_gateway_user_bus_adoption.py","tests/hermes_cli/test_gateway_windows.py","tests/hermes_cli/test_gateway_wsl.py","tests/hermes_cli/test_gemini_free_tier_setup_block.py","tests/hermes_cli/test_git_probe_no_lazy_fetch.py","tests/hermes_cli/test_git_probe_tree_kill.py","tests/hermes_cli/test_git_trampoline_windows_live.py","tests/hermes_cli/test_gitlock_tmp_packs.py","tests/hermes_cli/test_gmi_provider.py","tests/hermes_cli/test_goal_gates.py","tests/hermes_cli/test_gpt6_tiers_registration.py","tests/hermes_cli/test_graphical_browser_detection.py","tests/hermes_cli/test_gui_command.py","tests/hermes_cli/test_gui_uninstall.py","tests/hermes_cli/test_hf_browse.py","tests/hermes_cli/test_home_directory_diagnostics.py","tests/hermes_cli/test_hooks_cli.py","tests/hermes_cli/test_ignore_user_config_flags.py","tests/hermes_cli/test_init_command.py","tests/hermes_cli/test_install_bucket_separation.py","tests/hermes_cli/test_install_cua_driver.py","tests/hermes_cli/test_install_identity.py","tests/hermes_cli/test_install_lock_timeout.py","tests/hermes_cli/test_install_progress_stream.py","tests/hermes_cli/test_inventory.py","tests/hermes_cli/test_kanban_boards.py","tests/hermes_cli/test_kanban_core_functionality.py","tests/hermes_cli/test_kanban_db.py","tests/hermes_cli/test_kanban_dispatch_tick_hook.py","tests/hermes_cli/test_kanban_gateway_restart_handoff.py","tests/hermes_cli/test_kanban_gc_retention.py","tests/hermes_cli/test_kanban_goal_mode_worker_log.py","tests/hermes_cli/test_kanban_notify.py","tests/hermes_cli/test_kanban_pr_acceptance.py","tests/hermes_cli/test_kanban_task_updated_hook.py","tests/hermes_cli/test_kanban_transfer.py","tests/hermes_cli/test_kanban_worker_exit_decode.py","tests/hermes_cli/test_kanban_worker_lifecycle_hooks.py","tests/hermes_cli/test_kanban_worktree_unicode_path.py","tests/hermes_cli/test_kanban_write_guard.py","tests/hermes_cli/test_keyed_provider_credential_pool.py","tests/hermes_cli/test_launchd_plist_guard.py","tests/hermes_cli/test_launchd_refresh_reporting.py","tests/hermes_cli/test_launchd_restart_refresh.py","tests/hermes_cli/test_launcher_runtime_selection.py","tests/hermes_cli/test_lazy_command_exports.py","tests/hermes_cli/test_lazy_refresh_venv_repair.py","tests/hermes_cli/test_legacy_launchers_windows_live.py","tests/hermes_cli/test_linux_desktop_entry.py","tests/hermes_cli/test_linux_launcher_management.py","tests/hermes_cli/test_linux_sandbox_fixup.py","tests/hermes_cli/test_local_abandoned_requests.py","tests/hermes_cli/test_local_component_jobs.py","tests/hermes_cli/test_local_download_jobs.py","tests/hermes_cli/test_local_job_registry.py","tests/hermes_cli/test_local_models_routes.py","tests/hermes_cli/test_local_preset_admission.py","tests/hermes_cli/test_local_quickstart.py","tests/hermes_cli/test_local_residency_admission.py","tests/hermes_cli/test_local_runtime.py","tests/hermes_cli/test_local_runtime_child_env.py","tests/hermes_cli/test_local_runtime_downloads.py","tests/hermes_cli/test_local_runtime_hip_assets.py","tests/hermes_cli/test_local_runtime_load_mode.py","tests/hermes_cli/test_local_runtime_pm.py","tests/hermes_cli/test_local_runtime_processes.py","tests/hermes_cli/test_local_runtime_recovery.py","tests/hermes_cli/test_local_runtime_updates.py","tests/hermes_cli/test_login_cli_command.py","tests/hermes_cli/test_logs.py","tests/hermes_cli/test_macos_fda_guidance.py","tests/hermes_cli/test_macos_tcc_anchor.py","tests/hermes_cli/test_managed_scope.py","tests/hermes_cli/test_managed_scope_loaders.py","tests/hermes_cli/test_managed_uv.py","tests/hermes_cli/test_managed_uv_windows_cutover.py","tests/hermes_cli/test_manual_serve_deferral.py","tests/hermes_cli/test_mcp_catalog.py","tests/hermes_cli/test_mcp_catalog_discovery.py","tests/hermes_cli/test_mcp_catalog_env_boundary.py","tests/hermes_cli/test_mcp_config.py","tests/hermes_cli/test_mcp_discovery_timing.py","tests/hermes_cli/test_mcp_helper_ledger.py","tests/hermes_cli/test_mcp_probe_redaction.py","tests/hermes_cli/test_mcp_security.py","tests/hermes_cli/test_mcp_tools_config.py","tests/hermes_cli/test_memory_dependency_admission.py","tests/hermes_cli/test_memory_provider_migration.py","tests/hermes_cli/test_memory_setup.py","tests/hermes_cli/test_memory_setup_env_denylist.py","tests/hermes_cli/test_memory_setup_provider_arg.py","tests/hermes_cli/test_meta_prompt_cache.py","tests/hermes_cli/test_migrate_xai.py","tests/hermes_cli/test_minimax_oauth.py","tests/hermes_cli/test_moa_command.py","tests/hermes_cli/test_moa_set_models_preserves_extra_keys.py","tests/hermes_cli/test_model_alias_credentials.py","tests/hermes_cli/test_model_assignment_env_key_mirror.py","tests/hermes_cli/test_model_cache_parallel_prefetch.py","tests/hermes_cli/test_model_persist_one_shape.py","tests/hermes_cli/test_model_picker_excluded_providers.py","tests/hermes_cli/test_model_provider_persistence.py","tests/hermes_cli/test_model_switch_custom_providers.py","tests/hermes_cli/test_model_switch_opencode_anthropic.py","tests/hermes_cli/test_model_validation.py","tests/hermes_cli/test_modify_other_keys_aliases.py","tests/hermes_cli/test_non_ascii_credential.py","tests/hermes_cli/test_noninteractive_config_guard.py","tests/hermes_cli/test_nous_auth_status_cache.py","tests/hermes_cli/test_nous_inference_url_validation.py","tests/hermes_cli/test_nous_policy_surfaces.py","tests/hermes_cli/test_nous_subscription.py","tests/hermes_cli/test_npm_engine.py","tests/hermes_cli/test_old_updater_additional_shims.py","tests/hermes_cli/test_old_updater_main_shims.py","tests/hermes_cli/test_old_updater_shims.py","tests/hermes_cli/test_old_updater_takeover.py","tests/hermes_cli/test_oneshot_resumed_session_persist.py","tests/hermes_cli/test_oneshot_skills.py","tests/hermes_cli/test_oneshot_surrogate.py","tests/hermes_cli/test_passive_update_opt_out.py","tests/hermes_cli/test_pending_supervisor_recovery.py","tests/hermes_cli/test_personality_none.py","tests/hermes_cli/test_personality_single_owner.py","tests/hermes_cli/test_pet_toggle.py","tests/hermes_cli/test_plan_reconciliation_windows_live.py","tests/hermes_cli/test_plugin_api_compat.py","tests/hermes_cli/test_plugin_capabilities.py","tests/hermes_cli/test_plugin_catalog.py","tests/hermes_cli/test_plugin_config_state_bridge.py","tests/hermes_cli/test_plugin_dependency_consent.py","tests/hermes_cli/test_plugin_event_bus.py","tests/hermes_cli/test_plugin_historic_compat.py","tests/hermes_cli/test_plugin_install_manifest_version.py","tests/hermes_cli/test_plugin_install_records_concurrent.py","tests/hermes_cli/test_plugin_install_ref.py","tests/hermes_cli/test_plugin_manifest_v2.py","tests/hermes_cli/test_plugin_message_injection.py","tests/hermes_cli/test_plugin_ownership_ledger.py","tests/hermes_cli/test_plugin_packs.py","tests/hermes_cli/test_plugin_private_repo_auth.py","tests/hermes_cli/test_plugin_python_deps.py","tests/hermes_cli/test_plugin_runtime_disable_gate.py","tests/hermes_cli/test_plugin_scanner_recursion.py","tests/hermes_cli/test_plugin_update_recovery.py","tests/hermes_cli/test_plugin_update_transaction.py","tests/hermes_cli/test_plugin_validate.py","tests/hermes_cli/test_plugin_version_order.py","tests/hermes_cli/test_plugin_worker_lifecycle.py","tests/hermes_cli/test_plugins.py","tests/hermes_cli/test_plugins_admission_setter.py","tests/hermes_cli/test_plugins_cadence.py","tests/hermes_cli/test_plugins_check_updates.py","tests/hermes_cli/test_plugins_cmd.py","tests/hermes_cli/test_plugins_cmd_activation_keys.py","tests/hermes_cli/test_plugins_cmd_catalog.py","tests/hermes_cli/test_plugins_cmd_category_discovery.py","tests/hermes_cli/test_plugins_cmd_enable_disable_nested.py","tests/hermes_cli/test_plugins_cmd_list.py","tests/hermes_cli/test_plugins_cmd_remove_bookkeeping.py","tests/hermes_cli/test_plugins_provenance.py","tests/hermes_cli/test_plugins_transcription_registration.py","tests/hermes_cli/test_plugins_tts_registration.py","tests/hermes_cli/test_plugins_update_sync.py","tests/hermes_cli/test_pool_missing_endpoint.py","tests/hermes_cli/test_post_update.py","tests/hermes_cli/test_post_update_adoption.py","tests/hermes_cli/test_post_update_expose_cli.py","tests/hermes_cli/test_process_identity.py","tests/hermes_cli/test_process_notification_display.py","tests/hermes_cli/test_profile_clone_channels.py","tests/hermes_cli/test_profile_delete_mcp_log.py","tests/hermes_cli/test_profile_delete_service_name.py","tests/hermes_cli/test_profile_display_name.py","tests/hermes_cli/test_profile_distribution.py","tests/hermes_cli/test_profile_export_credentials.py","tests/hermes_cli/test_profile_export_default_path.py","tests/hermes_cli/test_profile_export_special_files.py","tests/hermes_cli/test_profile_pm_portability.py","tests/hermes_cli/test_profile_rename_checkpoints.py","tests/hermes_cli/test_profiles.py","tests/hermes_cli/test_projects_db.py","tests/hermes_cli/test_prompt_compose_command.py","tests/hermes_cli/test_prompt_stash.py","tests/hermes_cli/test_prompt_stash_cli.py","tests/hermes_cli/test_provider_catalog.py","tests/hermes_cli/test_provider_live_curated_merge.py","tests/hermes_cli/test_provider_profile_identity.py","tests/hermes_cli/test_psutil_android_extract.py","tests/hermes_cli/test_pty_bridge.py","tests/hermes_cli/test_quarantine_noop_restore.py","tests/hermes_cli/test_quarantine_orphan_rescue.py","tests/hermes_cli/test_read_raw_config_readonly.py","tests/hermes_cli/test_real_home_tripwire.py","tests/hermes_cli/test_reasoning_full_command.py","tests/hermes_cli/test_refresh_singleflight.py","tests/hermes_cli/test_relaunch.py","tests/hermes_cli/test_relay_plugin_cutover.py","tests/hermes_cli/test_relay_shared_metrics.py","tests/hermes_cli/test_release_channels.py","tests/hermes_cli/test_resolve_ephemeral_system_prompt.py","tests/hermes_cli/test_resource_limits.py","tests/hermes_cli/test_restore_own_holder_guard.py","tests/hermes_cli/test_resume_latest_and_in_dir.py","tests/hermes_cli/test_resume_quiet_stderr.py","tests/hermes_cli/test_review_update_runtime.py","tests/hermes_cli/test_run_with_idle_timeout.py","tests/hermes_cli/test_runtime_install_progress.py","tests/hermes_cli/test_runtime_paths.py","tests/hermes_cli/test_runtime_repair_receipt.py","tests/hermes_cli/test_safe_mode.py","tests/hermes_cli/test_scan_venv_blockers.py","tests/hermes_cli/test_send_cmd.py","tests/hermes_cli/test_serve_parent_watchdog.py","tests/hermes_cli/test_serve_parent_watchdog_live_macos.py","tests/hermes_cli/test_serve_port_in_use.py","tests/hermes_cli/test_serve_runtime_inventory.py","tests/hermes_cli/test_serve_skill_maintenance.py","tests/hermes_cli/test_serve_windows_loop_factory.py","tests/hermes_cli/test_service_manager.py","tests/hermes_cli/test_session_browse.py","tests/hermes_cli/test_session_export_html_escape.py","tests/hermes_cli/test_session_filters.py","tests/hermes_cli/test_session_handoff.py","tests/hermes_cli/test_session_recovery_lost_and_found.py","tests/hermes_cli/test_session_save.py","tests/hermes_cli/test_sessions_delete.py","tests/hermes_cli/test_sessions_held_store_gate.py","tests/hermes_cli/test_sessions_pin.py","tests/hermes_cli/test_sessions_set_journal_mode.py","tests/hermes_cli/test_set_config_value.py","tests/hermes_cli/test_setup.py","tests/hermes_cli/test_setup_hermes_script.py","tests/hermes_cli/test_setup_model_provider.py","tests/hermes_cli/test_setup_openclaw_migration.py","tests/hermes_cli/test_setup_pin_values.py","tests/hermes_cli/test_setup_prompt_menus.py","tests/hermes_cli/test_setup_tts_xai_oauth.py","tests/hermes_cli/test_shallow_boundary_repair.py","tests/hermes_cli/test_shallow_graft_prune.py","tests/hermes_cli/test_shared_profile_warning.py","tests/hermes_cli/test_shim_fail_closed_windows_live.py","tests/hermes_cli/test_sibling_config_migration.py","tests/hermes_cli/test_signal_handler_kanban_worker.py","tests/hermes_cli/test_single_query_clarify.py","tests/hermes_cli/test_sizefmt.py","tests/hermes_cli/test_skin_cmd.py","tests/hermes_cli/test_skin_engine.py","tests/hermes_cli/test_slash_confirm_windows.py","tests/hermes_cli/test_source_build.py","tests/hermes_cli/test_source_channel_integration.py","tests/hermes_cli/test_source_check.py","tests/hermes_cli/test_source_completion_stamp.py","tests/hermes_cli/test_source_launcher_publication.py","tests/hermes_cli/test_source_release_channels.py","tests/hermes_cli/test_source_release_probe.py","tests/hermes_cli/test_source_stamp.py","tests/hermes_cli/test_sqlite3_cli_salvage_gate.py","tests/hermes_cli/test_sqlite_runtime.py","tests/hermes_cli/test_ssh_ownership_endpoint.py","tests/hermes_cli/test_ssh_session_token_parser.py","tests/hermes_cli/test_stale_pid_guard.py","tests/hermes_cli/test_startup_fast_guards.py","tests/hermes_cli/test_stderr_timestamp.py","tests/hermes_cli/test_steward_detection.py","tests/hermes_cli/test_stt_picker.py","tests/hermes_cli/test_taskkill_identity_windows_live.py","tests/hermes_cli/test_telegram_managed_bot.py","tests/hermes_cli/test_tencent_tokenhub_provider.py","tests/hermes_cli/test_terminal_breadcrumbs.py","tests/hermes_cli/test_terminal_interrupt_recovery.py","tests/hermes_cli/test_timestamps_command.py","tests/hermes_cli/test_tool_token_estimation.py","tests/hermes_cli/test_tools_config.py","tests/hermes_cli/test_tools_config_post_setup.py","tests/hermes_cli/test_tui_heap_sizing.py","tests/hermes_cli/test_tui_npm_install.py","tests/hermes_cli/test_tui_resume_flow.py","tests/hermes_cli/test_unified_pool_quirk.py","tests/hermes_cli/test_uninstall_dry_run.py","tests/hermes_cli/test_uninstall_gateway_service.py","tests/hermes_cli/test_uninstall_install_kind.py","tests/hermes_cli/test_uninstall_node_symlinks.py","tests/hermes_cli/test_uninstall_shell_configs.py","tests/hermes_cli/test_uninstall_windows_bin_launchers.py","tests/hermes_cli/test_update_apply_shallow_count.py","tests/hermes_cli/test_update_autostash.py","tests/hermes_cli/test_update_behind_count_recovery.py","tests/hermes_cli/test_update_channel.py","tests/hermes_cli/test_update_channel_stable.py","tests/hermes_cli/test_update_check.py","tests/hermes_cli/test_update_completion_process.py","tests/hermes_cli/test_update_completion_routing.py","tests/hermes_cli/test_update_concurrent_quarantine.py","tests/hermes_cli/test_update_config_clears_custom_fields.py","tests/hermes_cli/test_update_config_migration_on_current.py","tests/hermes_cli/test_update_config_migration_on_current_checkout.py","tests/hermes_cli/test_update_contract.py","tests/hermes_cli/test_update_cron_deadlock_guard.py","tests/hermes_cli/test_update_cua_pm.py","tests/hermes_cli/test_update_current_node_repair.py","tests/hermes_cli/test_update_desktop_stale_warning.py","tests/hermes_cli/test_update_diverged_rescue_ref.py","tests/hermes_cli/test_update_eol_churn.py","tests/hermes_cli/test_update_fetch_failure_classifier.py","tests/hermes_cli/test_update_finish.py","tests/hermes_cli/test_update_finish_stamp.py","tests/hermes_cli/test_update_flat_install_state_gitignore.py","tests/hermes_cli/test_update_fleet_check_fail_closed.py","tests/hermes_cli/test_update_fleet_completion.py","tests/hermes_cli/test_update_fleet_incomplete_warning.py","tests/hermes_cli/test_update_fleet_probe_resume_token.py","tests/hermes_cli/test_update_fleet_restart_pending.py","tests/hermes_cli/test_update_fleet_snapshot_settle.py","tests/hermes_cli/test_update_gateway_launcher_refresh.py","tests/hermes_cli/test_update_handoff_backend_reap.py","tests/hermes_cli/test_update_handoff_checkout_cwd.py","tests/hermes_cli/test_update_handoff_desktop_rebuild.py","tests/hermes_cli/test_update_handoff_exit.py","tests/hermes_cli/test_update_head_moved_gate.py","tests/hermes_cli/test_update_host_obligation.py","tests/hermes_cli/test_update_import_guard.py","tests/hermes_cli/test_update_interrupted_recovery.py","tests/hermes_cli/test_update_inventory.py","tests/hermes_cli/test_update_launch_completion.py","tests/hermes_cli/test_update_launchd_fleet_restart.py","tests/hermes_cli/test_update_launchd_restart_verification.py","tests/hermes_cli/test_update_launchd_unloaded_gateway.py","tests/hermes_cli/test_update_lock.py","tests/hermes_cli/test_update_messages.py","tests/hermes_cli/test_update_missing_configured_deps.py","tests/hermes_cli/test_update_modified_notice.py","tests/hermes_cli/test_update_no_gateway_restart.py","tests/hermes_cli/test_update_orphan_backend_reap.py","tests/hermes_cli/test_update_parked_branch_guard.py","tests/hermes_cli/test_update_post_pull_syntax_guard.py","tests/hermes_cli/test_update_post_swap_handoff.py","tests/hermes_cli/test_update_products.py","tests/hermes_cli/test_update_receipt.py","tests/hermes_cli/test_update_receipt_pm_embed.py","tests/hermes_cli/test_update_receipt_scope.py","tests/hermes_cli/test_update_receipt_truthfulness.py","tests/hermes_cli/test_update_scoped_reconciliation.py","tests/hermes_cli/test_update_secret_import_lock.py","tests/hermes_cli/test_update_self_lock.py","tests/hermes_cli/test_update_serve_generation_recovery.py","tests/hermes_cli/test_update_shim_fail_closed.py","tests/hermes_cli/test_update_shim_parent_wait.py","tests/hermes_cli/test_update_shim_self_lock.py","tests/hermes_cli/test_update_skip_unchanged_editable_install.py","tests/hermes_cli/test_update_sqlite_remediation.py","tests/hermes_cli/test_update_stage.py","tests/hermes_cli/test_update_stale_dashboard.py","tests/hermes_cli/test_update_stale_gateway_yield.py","tests/hermes_cli/test_update_stale_virtualenv.py","tests/hermes_cli/test_update_state_autorestore.py","tests/hermes_cli/test_update_target_identity.py","tests/hermes_cli/test_update_unit_client_budget.py","tests/hermes_cli/test_update_venv_health.py","tests/hermes_cli/test_update_venv_holder_retirement.py","tests/hermes_cli/test_update_venv_ownership_preflight.py","tests/hermes_cli/test_update_version_report.py","tests/hermes_cli/test_update_wedged_gateway.py","tests/hermes_cli/test_update_yes_flag.py","tests/hermes_cli/test_update_zip_atomic_replace.py","tests/hermes_cli/test_update_zip_completion.py","tests/hermes_cli/test_update_zip_fallback_guards.py","tests/hermes_cli/test_update_zip_symlink_reject.py","tests/hermes_cli/test_update_zip_sync_failure.py","tests/hermes_cli/test_update_zip_two_phase.py","tests/hermes_cli/test_upstage_provider.py","tests/hermes_cli/test_urllib_security.py","tests/hermes_cli/test_user_providers_model_switch.py","tests/hermes_cli/test_ux_messages_startup.py","tests/hermes_cli/test_vault_sources_shape.py","tests/hermes_cli/test_venv_holder_classifier.py","tests/hermes_cli/test_venv_holder_windows_live.py","tests/hermes_cli/test_venv_sync.py","tests/hermes_cli/test_venv_sync_currency.py","tests/hermes_cli/test_verify_console_scripts.py","tests/hermes_cli/test_verify_core_dependencies.py","tests/hermes_cli/test_version_info.py","tests/hermes_cli/test_wake_word_config_schema.py","tests/hermes_cli/test_warning_callback_conservation.py","tests/hermes_cli/test_web_memory_provider_setup_install.py","tests/hermes_cli/test_web_plugins_catalog.py","tests/hermes_cli/test_web_profile_soul_writes.py","tests/hermes_cli/test_web_profiles_off_loop.py","tests/hermes_cli/test_web_routers_destructive_profile_scope.py","tests/hermes_cli/test_web_server.py","tests/hermes_cli/test_web_server_auto_archive_gateway_lock.py","tests/hermes_cli/test_web_server_boot_handshake.py","tests/hermes_cli/test_web_server_chat_workspaces.py","tests/hermes_cli/test_web_server_idle_proof.py","tests/hermes_cli/test_web_server_messaging_profiles.py","tests/hermes_cli/test_web_server_profile_unification.py","tests/hermes_cli/test_web_server_pty_import.py","tests/hermes_cli/test_web_server_pty_reconnect.py","tests/hermes_cli/test_web_server_skills_profiles.py","tests/hermes_cli/test_web_server_tts_lease.py","tests/hermes_cli/test_web_server_ws_ping.py","tests/hermes_cli/test_web_ui_build.py","tests/hermes_cli/test_webhook_cli.py","tests/hermes_cli/test_whatsapp_missing_runtime.py","tests/hermes_cli/test_win_pty_bridge.py","tests/hermes_cli/test_windows_gateway_cold_start_desktop_lifecycle.py","tests/hermes_cli/test_windows_gateway_job_teardown.py","tests/hermes_cli/test_windows_update_restart_reconciliation.py","tests/hermes_cli/test_worktree.py","tests/hermes_cli/test_worktree_command.py","tests/hermes_cli/test_worktree_pushed_tier.py","tests/hermes_cli/test_worktree_selfheal.py","tests/hermes_cli/test_xai_retirement.py","tests/hermes_cli/test_xiaomi_provider.py","tests/hermes_platform/test_declaration.py","tests/hermes_platform/test_facts.py","tests/hermes_platform/test_resolver_core.py","tests/hermes_state/test_auto_vacuum_holder_gate.py","tests/hermes_state/test_delete_mode_read_busy_wait.py","tests/hermes_state/test_deleted_wal_checkpoint_guard.py","tests/hermes_state/test_deleted_wal_generation_guard.py","tests/hermes_state/test_fts_holder_instance_scope.py","tests/hermes_state/test_fts_runtime_rebuild.py","tests/hermes_state/test_fts_trigram_subagent_exclusion.py","tests/hermes_state/test_hermes_state_readonly_preflight.py","tests/hermes_state/test_hermes_state_wal_fallback.py","tests/hermes_state/test_journal_mode_config.py","tests/hermes_state/test_journal_mode_upgrade_warning.py","tests/hermes_state/test_live_db_isolation_guard.py","tests/hermes_state/test_lockguard_fcntl_tolerance.py","tests/hermes_state/test_retired_wal_generation_capture.py","tests/hermes_state/test_schema_read_probe.py","tests/hermes_state/test_shared_session_db_registry.py","tests/hermes_state/test_sqlite_wal_reset_gate.py","tests/hermes_state/test_state_db_corrupt_quarantine.py","tests/hermes_state/test_state_db_file_identity.py","tests/hermes_state/test_state_db_holders.py","tests/hermes_state/test_state_db_holders_windows_live.py","tests/hermes_state/test_state_db_lock_fail_closed.py","tests/hermes_state/test_state_db_malformed_repair.py","tests/hermes_state/test_state_db_repair_live_writer_guard.py","tests/hermes_state/test_state_db_second_process_maintenance.py","tests/hermes_state/test_state_db_stats.py","tests/hermes_state/test_state_db_write_durability.py","tests/hermes_state/test_state_synchronous_pragma.py","tests/hermes_state/test_tail_rewind_semantics.py","tests/hermes_state/test_wal_lock_guard.py","tests/hermes_state/test_wal_lock_guard_lifecycle.py","tests/hermes_state/test_write_lock_owner_attribution.py","tests/home_io_guard.py","tests/honcho_plugin/test_auth_recovery.py","tests/honcho_plugin/test_query_rewrite.py","tests/honcho_plugin/test_session.py","tests/install/BUNDLED_UPDATES.md","tests/install/README.md","tests/install/e2e-assets/bundle-inputs.mjs","tests/install/e2e-assets/bundle-manifest.cjs","tests/install/e2e-assets/bundle-plan.mjs","tests/install/e2e-assets/bundle-smoke-metadata.mjs","tests/install/e2e-assets/desktop-smoke-windows.ps1","tests/install/e2e-assets/desktop-smoke.ts","tests/install/e2e-assets/drive-dmg-install.sh","tests/install/e2e-assets/drive-update.cjs","tests/install/e2e-assets/installer-common.sh","tests/install/e2e-assets/known-failures.json","tests/install/e2e-assets/launch-capture/pm-launch.py","tests/install/e2e-assets/launch-capture/sitecustomize.py","tests/install/e2e-assets/launch-from-spec.mjs","tests/install/e2e-assets/mac-bundled-feed.mjs","tests/install/e2e-assets/mac-bundled-manifest.cjs","tests/install/e2e-assets/mac-bundled-relaunch-watch.cjs","tests/install/e2e-assets/mac-bundled-serve.mjs","tests/install/e2e-assets/mac-bundled-update-driver.mjs","tests/install/e2e-assets/mac-bundled-verify.mjs","tests/install/e2e-assets/mock-provider.mjs","tests/install/e2e-assets/mock-provider.sh","tests/install/e2e-assets/preserve-plugins.sh","tests/install/e2e-assets/preserve-user-state.sh","tests/install/e2e-assets/pty-run.py","tests/install/e2e-assets/smoke-env.d.mts","tests/install/e2e-assets/smoke-env.mjs","tests/install/e2e-assets/source-branch-probe.cjs","tests/install/e2e-assets/source-build-env.ps1","tests/install/e2e-assets/source-build-env.sh","tests/install/e2e-assets/source-desktop-smoke.mjs","tests/install/e2e-assets/source-driver.ps1","tests/install/e2e-assets/source-driver.sh","tests/install/e2e-assets/source-runtime-settle.d.mts","tests/install/e2e-assets/source-runtime-settle.mjs","tests/install/e2e-assets/source-update-command.sh","tests/install/e2e-assets/source-update-observer.mjs","tests/install/e2e-assets/source_driver.py","tests/install/e2e-assets/update-ui.cjs","tests/install/e2e-assets/update-window-chat.d.mts","tests/install/e2e-assets/update-window-chat.mjs","tests/install/e2e-assets/user-state-actions.sh","tests/install/e2e-assets/verify-plugin-preservation.py","tests/install/e2e-assets/verify-user-state.py","tests/install/e2e-assets/windows-bundle-metadata.ps1","tests/install/e2e-assets/windows-bundle-metadata.test.ps1","tests/install/e2e-assets/windows-bundled-drive-update.ps1","tests/install/e2e-assets/windows-bundled-helpers.mjs","tests/install/e2e-assets/windows-bundled-helpers.test.mjs","tests/install/installer-script-e2e.sh","tests/install/macos-bundle-smoke.sh","tests/install/macos-bundled-e2e.sh","tests/install/macos-desktop-e2e.sh","tests/install/windows-bundle-smoke.ps1","tests/install/windows-bundled-e2e.ps1","tests/install/windows-e2e.ps1","tests/install_ps1_fake_uv.py","tests/installation/__init__.py","tests/installation/test_installer_common.py","tests/installation_launcher_fixture.py","tests/integration/test_local_runtime_pm_download.py","tests/monitoring/test_cron_health_export.py","tests/monitoring/test_emitter.py","tests/monitoring/test_gateway_health_export.py","tests/openviking_plugin/test_openviking.py","tests/plugins/dashboard_auth/test_nous_provider.py","tests/plugins/image_gen/test_deepinfra_provider.py","tests/plugins/image_gen/test_krea_provider.py","tests/plugins/image_gen/test_meta_ai_provider.py","tests/plugins/image_gen/test_openai_provider.py","tests/plugins/image_gen/test_openrouter_compat_provider.py","tests/plugins/memory/test_disabled_provider_not_loaded.py","tests/plugins/memory/test_holographic_profile_db_path.py","tests/plugins/memory/test_holographic_retrieval.py","tests/plugins/memory/test_holographic_save_config.py","tests/plugins/memory/test_holographic_store.py","tests/plugins/memory/test_mem0_v3.py","tests/plugins/memory/test_memory_lazy_install.py","tests/plugins/memory/test_openviking_optional_peer.py","tests/plugins/memory/test_openviking_provider.py","tests/plugins/memory/test_supermemory_provider.py","tests/plugins/model_providers/test_fireworks_profile.py","tests/plugins/model_providers/test_kimi_profile.py","tests/plugins/model_providers/test_ollama_cloud_profile.py","tests/plugins/model_providers/test_upstage_profile.py","tests/plugins/platforms/photon/test_auth.py","tests/plugins/platforms/photon/test_inbound.py","tests/plugins/platforms/photon/test_npm_error_log_regression.py","tests/plugins/platforms/photon/test_presence_watchdog.py","tests/plugins/platforms/photon/test_runtime_record.py","tests/plugins/platforms/photon/test_sidecar_paths.py","tests/plugins/platforms/photon/test_zombie_stream_watchdog.py","tests/plugins/test_a2a_plugin.py","tests/plugins/test_achievements_plugin.py","tests/plugins/test_chronos_verify.py","tests/plugins/test_disk_cleanup_plugin.py","tests/plugins/test_google_meet_plugin.py","tests/plugins/test_honcho_client_config.py","tests/plugins/test_kanban_dashboard_plugin.py","tests/plugins/test_plugin_loader_unreadable.py","tests/plugins/test_retaindb_plugin.py","tests/plugins/test_security_guidance_plugin.py","tests/plugins/test_transform_tool_result_hook.py","tests/plugins/video_gen/test_deepinfra_provider.py","tests/pm/__init__.py","tests/pm/_fixtures.py","tests/pm/_range_server.py","tests/pm/conftest.py","tests/pm/test_activate_scripts.py","tests/pm/test_activation_runtime.py","tests/pm/test_activation_setup.py","tests/pm/test_archive_safety.py","tests/pm/test_artifact_mirror.py","tests/pm/test_bootstrap_import_closure.py","tests/pm/test_build_operations.py","tests/pm/test_chromium.py","tests/pm/test_cli_progress.py","tests/pm/test_cold_runtime_e2e.py","tests/pm/test_cua_driver_package.py","tests/pm/test_custom_root_union.py","tests/pm/test_darwin_build.py","tests/pm/test_deb_safety.py","tests/pm/test_dmgbuild_package.py","tests/pm/test_download_mirrors.py","tests/pm/test_download_progress.py","tests/pm/test_download_retry_limits.py","tests/pm/test_download_serial_fallback.py","tests/pm/test_download_state.py","tests/pm/test_downloader.py","tests/pm/test_downloader_integrity.py","tests/pm/test_environment_build.py","tests/pm/test_extras.py","tests/pm/test_feature_inventory.py","tests/pm/test_features.py","tests/pm/test_ffmpeg_resolution.py","tests/pm/test_generation_durability.py","tests/pm/test_index_bridging.py","tests/pm/test_install_default_closure.py","tests/pm/test_install_download_control.py","tests/pm/test_install_extra.py","tests/pm/test_installed_package.py","tests/pm/test_lazy_install_policy.py","tests/pm/test_lease_reselection.py","tests/pm/test_llamacpp_pins.py","tests/pm/test_lockfile_publication.py","tests/pm/test_member_selection.py","tests/pm/test_network.py","tests/pm/test_network_retries.py","tests/pm/test_no_lazy_deps.py","tests/pm/test_node_release_candidates.py","tests/pm/test_node_resolution.py","tests/pm/test_node_sidecar.py","tests/pm/test_npm_dist_tags.py","tests/pm/test_npm_self_install.py","tests/pm/test_plugin_declarations.py","tests/pm/test_plugin_inputs.py","tests/pm/test_plugin_survival_contract.py","tests/pm/test_plugins_state.py","tests/pm/test_pm_authority.py","tests/pm/test_pm_bionic.py","tests/pm/test_pm_core.py","tests/pm/test_progress.py","tests/pm/test_project_relock.py","tests/pm/test_python_release_identity.py","tests/pm/test_receipt.py","tests/pm/test_recovery.py","tests/pm/test_ripgrep_vc_runtime.py","tests/pm/test_runtime.py","tests/pm/test_runtime_boot_gc.py","tests/pm/test_runtime_bootstrap_tls.py","tests/pm/test_runtime_context_home.py","tests/pm/test_runtime_entrypoints.py","tests/pm/test_runtime_gc.py","tests/pm/test_runtime_journal_concurrent_edit.py","tests/pm/test_runtime_journal_safety.py","tests/pm/test_runtime_selection.py","tests/pm/test_runtime_wheelhouse.py","tests/pm/test_security_consumers.py","tests/pm/test_setup_lock_format.py","tests/pm/test_shell_candidates.py","tests/pm/test_shell_discovery.py","tests/pm/test_source_launcher_stages.py","tests/pm/test_source_update_launch.py","tests/pm/test_stage_only.py","tests/pm/test_startup_activation.py","tests/pm/test_startup_recovery.py","tests/pm/test_store_extensions.py","tests/pm/test_store_extract.py","tests/pm/test_store_lock_wait.py","tests/pm/test_store_resume.py","tests/pm/test_takeover_preparation.py","tests/pm/test_termux_libs.py","tests/pm/test_tree_digest_links.py","tests/pm/test_update.py","tests/pm/test_update_artifact_refresh.py","tests/pm/test_update_auth_scope.py","tests/pm/test_update_dependency_legs.py","tests/pm/test_update_failure_status.py","tests/pm/test_update_request_reuse.py","tests/pm/test_uv_cache.py","tests/pm/test_uv_cache_seed.py","tests/pm/test_uv_python.py","tests/pm/test_venv_sync_ambient_config.py","tests/pm/test_windows_build_deps.py","tests/pm/test_worker.py","tests/pm/test_worker_observers.py","tests/pm/test_worker_publication.py","tests/pm/test_worker_receipts.py","tests/pm/test_worker_registry.py","tests/pm/test_worker_stdio.py","tests/pm/test_workspace.py","tests/pm/test_workspace_build_inputs.py","tests/pm/test_workspace_output_encoding.py","tests/pm/test_zip_symlinks.py","tests/providers/test_e2e_wiring.py","tests/scripts/desktop_update/test_desktop_update_gateway_flag.py","tests/scripts/desktop_update/test_desktop_update_linux_gate.py","tests/scripts/desktop_update/test_desktop_update_macos_no_browser.py","tests/scripts/desktop_update/test_desktop_update_shim_profile_cleanup.py","tests/scripts/desktop_update/test_desktop_update_shim_progress.py","tests/scripts/desktop_update/test_desktop_update_tcc_heal.py","tests/scripts/desktop_update/test_desktop_update_windows_cwd.py","tests/scripts/desktop_update/test_desktop_update_windows_gateway_flag.py","tests/scripts/desktop_update/test_desktop_update_windows_pipe_drain.py","tests/scripts/desktop_update/test_desktop_update_windows_progress.py","tests/scripts/desktop_update/test_desktop_update_windows_python_handoff.py","tests/scripts/desktop_update/test_desktop_update_windows_retry_policy.py","tests/scripts/desktop_update/test_desktop_update_windows_timestamp.py","tests/scripts/desktop_update/test_desktop_update_windows_ui_delivery.py","tests/scripts/install/test_dmg_install_driver.py","tests/scripts/install/test_install_autostash_conflict_recovery.py","tests/scripts/install/test_install_clone_throttle_fallback.py","tests/scripts/install/test_install_commit_pin_rollback.py","tests/scripts/install/test_install_diverged_rescue_ref.py","tests/scripts/install/test_install_lockfile_churn.py","tests/scripts/install/test_install_macos_launcher.py","tests/scripts/install/test_install_no_initial_commit.py","tests/scripts/install/test_install_ps1_ascii_only.py","tests/scripts/install/test_install_ps1_execution_policy.py","tests/scripts/install/test_install_ps1_iex_failure.py","tests/scripts/install/test_install_ps1_json_failure_frame.py","tests/scripts/install/test_install_ps1_managed_python_provenance.py","tests/scripts/install/test_install_ps1_native_calls.py","tests/scripts/install/test_install_ps1_script_suites.py","tests/scripts/install/test_install_ps1_staged_git.py","tests/scripts/install/test_install_sh_acp_launcher.py","tests/scripts/install/test_install_sh_bootstrap_marker.py","tests/scripts/install/test_install_sh_browser_install.py","tests/scripts/install/test_install_sh_existing_destination.py","tests/scripts/install/test_install_sh_node_deps_failure.py","tests/scripts/install/test_install_sh_node_deps_workspaces.py","tests/scripts/install/test_install_sh_node_prerelease.py","tests/scripts/install/test_install_sh_node_probe.py","tests/scripts/install/test_install_sh_node_tarball_without_xz.py","tests/scripts/install/test_install_sh_output.py","tests/scripts/install/test_install_sh_repository_stage.py","tests/scripts/install/test_install_sh_reuse_supported_python.py","tests/scripts/install/test_install_sh_symlink_stomp.py","tests/scripts/install/test_install_sh_system_package_probe.py","tests/scripts/install/test_install_sh_termux_python_bounds.py","tests/scripts/install/test_install_sh_termux_refusal.py","tests/scripts/install/test_install_sh_uv_lock_config.py","tests/scripts/install/test_install_unmerged_index.py","tests/scripts/install/test_pm_desktop_launch_capture.py","tests/scripts/test_activation_guard.py","tests/scripts/test_agent_build.py","tests/scripts/test_appinstaller.py","tests/scripts/test_archive_inputs.py","tests/scripts/test_baked_bytecode.py","tests/scripts/test_bash_shebangs.py","tests/scripts/test_bootstrap_mirror.py","tests/scripts/test_bootstrap_pins_fragment.py","tests/scripts/test_bundle_native.py","tests/scripts/test_bundle_npm.py","tests/scripts/test_bundle_payload.py","tests/scripts/test_channel_build_versions.py","tests/scripts/test_check_compat_pointers.py","tests/scripts/test_check_no_tmp_literals.py","tests/scripts/test_commit_bundle_entrypoints.py","tests/scripts/test_commit_stamp_identity.py","tests/scripts/test_compat_inventory.py","tests/scripts/test_contributor_map.py","tests/scripts/test_desktop_build_cache.py","tests/scripts/test_desktop_cli_wrapper.py","tests/scripts/test_desktop_preparation.py","tests/scripts/test_desktop_toolchain.py","tests/scripts/test_desktop_update_target.py","tests/scripts/test_dev_sandbox.py","tests/scripts/test_dispatch_log.py","tests/scripts/test_dmgbuild_diagnostics.py","tests/scripts/test_footgun_encoding_direction.py","tests/scripts/test_fresh_source_install.py","tests/scripts/test_hermes_python_prologue.py","tests/scripts/test_icon_flavors.py","tests/scripts/test_icon_generation_exit.py","tests/scripts/test_install_ps1_desktop_stage.py","tests/scripts/test_install_sh_launch_handoff.py","tests/scripts/test_install_sh_python_pin_indent.py","tests/scripts/test_install_stage_frames.py","tests/scripts/test_install_stamp_distance.py","tests/scripts/test_job_groups.py","tests/scripts/test_mint_launchers.py","tests/scripts/test_native_build.py","tests/scripts/test_payload_digests.py","tests/scripts/test_pm_build_consumers.py","tests/scripts/test_pm_runtime_bundle.py","tests/scripts/test_powershell_script_syntax.py","tests/scripts/test_release_artifacts.py","tests/scripts/test_release_bootstrap_installer_version.py","tests/scripts/test_release_build_commit.py","tests/scripts/test_release_canary_git.py","tests/scripts/test_release_changelog.py","tests/scripts/test_release_channel_build.py","tests/scripts/test_release_channels.py","tests/scripts/test_release_darwin.py","tests/scripts/test_release_docker_cli.py","tests/scripts/test_release_entrypoint.py","tests/scripts/test_release_handoff.py","tests/scripts/test_release_r2.py","tests/scripts/test_release_revision_anchor.py","tests/scripts/test_release_sequencer.py","tests/scripts/test_release_store.py","tests/scripts/test_release_tag_sampling.py","tests/scripts/test_release_tags.py","tests/scripts/test_release_version_from_ref.py","tests/scripts/test_render_builds_binding.py","tests/scripts/test_render_builds_publication.py","tests/scripts/test_run_tests_parallel.py","tests/scripts/test_run_tests_parallel_stdio.py","tests/scripts/test_run_tests_shell.py","tests/scripts/test_setup_toolchain.py","tests/scripts/test_source_build_env.py","tests/scripts/test_source_driver.py","tests/scripts/test_source_update_command.py","tests/scripts/test_stable_admission.py","tests/scripts/test_stable_release.py","tests/scripts/test_stage_apt_repo.py","tests/scripts/test_termux_agent_assembly.py","tests/scripts/test_termux_assembly_permissions.py","tests/scripts/test_termux_build_driver.py","tests/scripts/test_termux_build_wheels.py","tests/scripts/test_termux_commit_identity.py","tests/scripts/test_termux_deb_version.py","tests/scripts/test_termux_launchers.py","tests/scripts/test_termux_python_linkage.py","tests/scripts/test_termux_retag_wheel.py","tests/scripts/test_termux_runtime_libs.py","tests/scripts/test_termux_update_refusal.py","tests/scripts/test_termux_wheelhouse_cache.py","tests/scripts/test_upload_summary.py","tests/scripts/test_validate_plugin_catalog.py","tests/scripts/test_verify_bootstrap_version_stamp.py","tests/scripts/test_verify_plugin_preservation.py","tests/scripts/test_verify_user_state.py","tests/scripts/test_version_stamping.py","tests/scripts/test_write_install_stamp.py","tests/security/test_gitspawn_config_injection.py","tests/skills/test_authoring_standards.py","tests/skills/test_fetch_transcript.py","tests/skills/test_google_workspace_setup.py","tests/skills/test_google_workspace_setup_deps.py","tests/skills/test_har_derived_api_client_skill.py","tests/skills/test_mcp_oauth_remote_gateway_skill.py","tests/skills/test_openclaw_migration.py","tests/skills/test_openclaw_migration_hardening.py","tests/skills/test_optional_skill_scripts.py","tests/skills/test_skill_blueprint_contracts.py","tests/skills/test_skill_document_contracts.py","tests/termux_fixtures.py","tests/test_atomic_json_writers_unified.py","tests/test_atomic_replace_symlinks.py","tests/test_atomic_write_text_metadata.py","tests/test_audit_old_updater_imports.py","tests/test_batch_runner_checkpoint.py","tests/test_credential_file_permissions.py","tests/test_dispatch_session_id.py","tests/test_engines_satisfiable.py","tests/test_fast_safe_load.py","tests/test_git_safety_boundary.py","tests/test_hermes_bootstrap.py","tests/test_hermes_constants.py","tests/test_hermes_home_profile_warning.py","tests/test_hermes_logging.py","tests/test_hermes_yaml.py","tests/test_live_system_guard.py","tests/test_live_system_guard_self_test.py","tests/test_managed_runtime_resolution.py","tests/test_mcp_serve.py","tests/test_mini_swe_runner.py","tests/test_model_tools_async_bridge.py","tests/test_node_bootstrap_bash.py","tests/test_old_updater_compat_surface.py","tests/test_os_marker_gating.py","tests/test_packaging_build_guard.py","tests/test_packaging_metadata.py","tests/test_platforms_marker.py","tests/test_project_metadata.py","tests/test_scratch_dir.py","tests/test_tests_tree_layout.py","tests/test_utils_atomic_roundtrip_yaml_save.py","tests/test_utils_rmtree_readonly.py","tests/test_wal_reset_repair_hint.py","tests/test_windows_subprocess_no_window_flags.py","tests/test_yaml_indent_consistency.py","tests/tools/_child_env_fixtures.py","tests/tools/conftest.py","tests/tools/environments/test_local_path_completion.py","tests/tools/test_a2a_reason_roundtrip.py","tests/tools/test_allowlist_legacy_config.py","tests/tools/test_annotate_preview_tool.py","tests/tools/test_apply_layout_tool.py","tests/tools/test_approval.py","tests/tools/test_approval_deny_rules.py","tests/tools/test_approval_mode_parity.py","tests/tools/test_approval_timeout_overflow.py","tests/tools/test_approved_command_clean_slate.py","tests/tools/test_async_delegation.py","tests/tools/test_base_environment.py","tests/tools/test_blocked_command_guidance.py","tests/tools/test_bot_desktop_browser.py","tests/tools/test_bot_desktop_idle.py","tests/tools/test_bot_desktop_install.py","tests/tools/test_bot_desktop_launcher_seed.py","tests/tools/test_bot_desktop_launcher_xvnc.py","tests/tools/test_bot_desktop_lease.py","tests/tools/test_bot_desktop_resources.py","tests/tools/test_bot_desktop_runtime.py","tests/tools/test_bot_live_owner_delivery.py","tests/tools/test_bot_mode_dm.py","tests/tools/test_bot_relay_windows_paths.py","tests/tools/test_bot_turn_lock.py","tests/tools/test_browser_camofox_state.py","tests/tools/test_browser_chromium_autoinstall.py","tests/tools/test_browser_chromium_check.py","tests/tools/test_browser_console.py","tests/tools/test_browser_hardening.py","tests/tools/test_browser_headed_mode.py","tests/tools/test_browser_homebrew_paths.py","tests/tools/test_browser_lightpanda.py","tests/tools/test_browser_lightpanda_serve.py","tests/tools/test_browser_npx_warmup.py","tests/tools/test_browser_open_timeout.py","tests/tools/test_browser_pm.py","tests/tools/test_browser_private_page_action_guard.py","tests/tools/test_browser_process_tree.py","tests/tools/test_browser_secret_exfil.py","tests/tools/test_browser_supervisor.py","tests/tools/test_browser_suspect_recycle.py","tests/tools/test_browser_use_cli.py","tests/tools/test_browser_use_pm.py","tests/tools/test_build_subprocess_env.py","tests/tools/test_checkpoint_footprint_notice.py","tests/tools/test_checkpoint_manager.py","tests/tools/test_checkpoint_path_roundtrip.py","tests/tools/test_checkpoint_size_cap.py","tests/tools/test_checkpoint_store_ownership.py","tests/tools/test_clipboard.py","tests/tools/test_code_execution_file_rpc.py","tests/tools/test_code_execution_modes.py","tests/tools/test_code_execution_windows_env.py","tests/tools/test_code_kernel.py","tests/tools/test_completed_process_results.py","tests/tools/test_computer_use.py","tests/tools/test_computer_use_cua_0_10_permissions.py","tests/tools/test_computer_use_cua_backend_linux.py","tests/tools/test_computer_use_cua_macos_identity.py","tests/tools/test_computer_use_doctor_stale_units.py","tests/tools/test_computer_use_input_target_guard.py","tests/tools/test_computer_use_native_platform.py","tests/tools/test_computer_use_zero_bounds.py","tests/tools/test_config_null_guard.py","tests/tools/test_connectors_contract.py","tests/tools/test_container_cwd_sanitize.py","tests/tools/test_credential_files.py","tests/tools/test_cron_prompt_injection.py","tests/tools/test_cronjob_run_background.py","tests/tools/test_cronjob_run_delivery_notice.py","tests/tools/test_cronjob_run_immediate.py","tests/tools/test_cross_profile_guard.py","tests/tools/test_daemon_pool.py","tests/tools/test_daytona_environment.py","tests/tools/test_delegate_fallback_matrix.py","tests/tools/test_delegate_liveness_timeout.py","tests/tools/test_delegate_timeout_cleanup.py","tests/tools/test_delegate_toolset_scope.py","tests/tools/test_discord_tool.py","tests/tools/test_docker_config_migrate.py","tests/tools/test_docker_environment.py","tests/tools/test_docker_teardown_drain.py","tests/tools/test_drain_fd_windows.py","tests/tools/test_env_passthrough.py","tests/tools/test_execute_code_approval_cluster.py","tests/tools/test_fal_common.py","tests/tools/test_fal_sdk.py","tests/tools/test_file_operations.py","tests/tools/test_file_operations_delete.py","tests/tools/test_file_ops_cwd_tracking.py","tests/tools/test_file_ops_single_roundtrip.py","tests/tools/test_file_read_guards.py","tests/tools/test_file_sync.py","tests/tools/test_file_sync_back.py","tests/tools/test_file_tools.py","tests/tools/test_file_tools_live.py","tests/tools/test_file_tools_tilde_profile.py","tests/tools/test_file_write_safety.py","tests/tools/test_find_shell.py","tests/tools/test_git_consumer_environment.py","tests/tools/test_gnu_long_option_abbreviation_bypass.py","tests/tools/test_hook_output_spill.py","tests/tools/test_image_generation_image_to_image.py","tests/tools/test_image_source.py","tests/tools/test_interrupt.py","tests/tools/test_interrupted_command_cwd.py","tests/tools/test_kill_verify_tree_death.py","tests/tools/test_lazy_deps.py","tests/tools/test_lazy_deps_durable_target.py","tests/tools/test_lazy_deps_managed.py","tests/tools/test_local_background_child_hang.py","tests/tools/test_local_cwd_permission_fallback.py","tests/tools/test_local_env_blocklist.py","tests/tools/test_local_env_cwd_recovery.py","tests/tools/test_local_env_relative_cwd.py","tests/tools/test_local_env_windows_msys.py","tests/tools/test_local_interrupt_cleanup.py","tests/tools/test_local_setsid_descendant_sweep.py","tests/tools/test_local_shell_init.py","tests/tools/test_local_temp_dir.py","tests/tools/test_macos_protected_search.py","tests/tools/test_mcp_cimd.py","tests/tools/test_mcp_circuit_breaker.py","tests/tools/test_mcp_death_supervisor.py","tests/tools/test_mcp_dynamic_discovery.py","tests/tools/test_mcp_identity_header.py","tests/tools/test_mcp_invalid_url.py","tests/tools/test_mcp_liveness.py","tests/tools/test_mcp_npx_cached_bin.py","tests/tools/test_mcp_oauth.py","tests/tools/test_mcp_oauth_cold_load_expiry.py","tests/tools/test_mcp_oauth_stdin_console.py","tests/tools/test_mcp_schema_cache.py","tests/tools/test_mcp_sse_transport.py","tests/tools/test_mcp_stdio_children_dead.py","tests/tools/test_mcp_stdio_encoding_handler.py","tests/tools/test_mcp_structured_content.py","tests/tools/test_mcp_tool.py","tests/tools/test_memory_tool_schema.py","tests/tools/test_modal_sandbox_fixes.py","tests/tools/test_modal_snapshot_isolation.py","tests/tools/test_multiplex_tool_cache_scope.py","tests/tools/test_multiplex_tool_memo_scope.py","tests/tools/test_multiplex_turn_parity.py","tests/tools/test_oneshot_completion_linger.py","tests/tools/test_osv_check.py","tests/tools/test_patch_multimatch_locations.py","tests/tools/test_plugin_compat_warning.py","tests/tools/test_plugin_guard.py","tests/tools/test_plugin_skills.py","tests/tools/test_pr_6656_regressions.py","tests/tools/test_pre_transcription_hook.py","tests/tools/test_process_heartbeat.py","tests/tools/test_process_registry.py","tests/tools/test_process_registry_list_exit.py","tests/tools/test_process_registry_windows_live.py","tests/tools/test_process_registry_write_stdin_surrogates.py","tests/tools/test_process_wait_clarity.py","tests/tools/test_pty_query_responder.py","tests/tools/test_read_binary_type_disclosure.py","tests/tools/test_read_extract.py","tests/tools/test_read_file_schema_gating.py","tests/tools/test_read_shell_line_clamp.py","tests/tools/test_read_special_file_guard.py","tests/tools/test_search_auto_multiline.py","tests/tools/test_search_files_cpu_windows.py","tests/tools/test_search_files_engine_selection.py","tests/tools/test_search_native_rg.py","tests/tools/test_self_repo_guard.py","tests/tools/test_shell_arg_transport.py","tests/tools/test_skill_bundle_provenance.py","tests/tools/test_skill_create_dir.py","tests/tools/test_skill_ledger.py","tests/tools/test_skill_manager_tool.py","tests/tools/test_skill_view_dedup.py","tests/tools/test_skill_view_traversal.py","tests/tools/test_skillevaluator_scan.py","tests/tools/test_skills_guard.py","tests/tools/test_skills_guard_agent_config.py","tests/tools/test_skills_hub.py","tests/tools/test_skills_sync_client.py","tests/tools/test_skills_tool.py","tests/tools/test_snapshot_multiline_session_env_injection.py","tests/tools/test_snapshot_session_id_leak.py","tests/tools/test_spill_safety.py","tests/tools/test_ssh_bulk_upload.py","tests/tools/test_stage2_hook_api_server_keygen.py","tests/tools/test_stage2_hook_symlink_chown.py","tests/tools/test_startup_latency_regressions.py","tests/tools/test_stt_cloud_trim.py","tests/tools/test_stt_resolution_passive.py","tests/tools/test_subagent_steer.py","tests/tools/test_subprocess_home_isolation.py","tests/tools/test_sync_back_backends.py","tests/tools/test_terminal_bounded_execute.py","tests/tools/test_terminal_cwd_echo.py","tests/tools/test_terminal_degraded_mode.py","tests/tools/test_terminal_foreground_timeout_cap.py","tests/tools/test_terminal_output_transform_hook.py","tests/tools/test_terminal_timeout_output.py","tests/tools/test_terminal_truncation_spill.py","tests/tools/test_terminal_yield_to_background.py","tests/tools/test_tirith_security.py","tests/tools/test_tirith_verdicts.py","tests/tools/test_todo_tool.py","tests/tools/test_tool_result_storage.py","tests/tools/test_toolsets.py","tests/tools/test_transcription_tools.py","tests/tools/test_tts_command_providers.py","tests/tools/test_tts_container_repair.py","tests/tools/test_tts_gemini.py","tests/tools/test_tts_importers.py","tests/tools/test_tts_instructions.py","tests/tools/test_tts_kittentts.py","tests/tools/test_tts_lifecycle_leases.py"]},{"kind":"pr","number":113919,"title":"fix(desktop): Windows install no longer fails on non-ASCII profile paths (#70779, salvage #66687)","url":null,"state":"merged","close_reason":{"category":"merged","implication":"superseded"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["apps/desktop/scripts/before-pack.mjs","apps/desktop/scripts/stage-native-deps.mjs","apps/desktop/scripts/stage-native-deps.test.mjs"]}],"trust":{"default_tier":"verified","includes_suggested":false}}