# NousResearch/hermes-agent · Update stash restore safety and git state accuracy

## Open now

- Nothing open on GitHub.

These issues and pull requests concern the update process incorrectly restoring invalid local Python from stash while reporting success, and separately misreporting git state during updates (false divergence, updates during rebase, incorrect completion status). Fixes focus on rejecting unsafe or unproven stash restores and ensuring honest git state reporting.

## TL;DR

- 7 member(s): 0 open issue(s), 1 closed issue(s), 0 open PR(s), 2 merged PR(s), 4 PR(s) closed without merging.
- A fix was merged to main in PR #99555. Verify it addresses your case.
- **Recommended:** read PR #99555 (and any competing PRs below) before filing. Confirm the merged change covers your symptom.

## Maintainer resolution verdict

- Internal-tracker verdict over this cluster's issue members: `resolved` · deciding PR(s): `pr-99555`. This is distinct from the fix status above. Weigh it yourself.

## How this cluster was grouped

- Link evidence (`STRUCTURAL_SPANNING`): every member is connected by structural evidence: shared changed files, or a closing/superseded reference.
- Pairwise link density `0.29`: the share of member pairs that carry a link, counting a structural link in full and a relevance-only link at 0.36. `1.00` means every pair is linked.

## Closed / duplicate issues

- #94264: Update can restore invalid local Python and report success while every agent turn fails

## Prior & competing PRs

- **#99555: fix(update): reject stash restores that re-apply invalid Python (salvage #94287)**. merged to main · fix tier `verified`
  - maintainer direction: category `merged`; implication `superseded`
  - files: `hermes_cli/update_cmd.py`, `tests/hermes_cli/test_update_autostash.py`, `tests/hermes_cli/test_update_import_guard.py`
- **#126166: hermes update tells the truth about git state: no false divergence, no update under a rebase, no 'complete' with a parked patch, works from a PM venv**. merged to main · fix tier `verified`
  - maintainer direction: category `merged`; implication `superseded`
  - files: `hermes_cli/_early_recovery.py`, `hermes_cli/update_cmd.py`, `hermes_cli/update_cmd_stash.py`, `hermes_cli/update_owning_install.py`, `tests/e2e/core/upgrade/git/test_foreign_state.py`, `tests/e2e/core/upgrade/git/test_local_modifications.py`, `tests/e2e/core/upgrade/git/test_truthful_outcome.py`, `tests/e2e/core/upgrade/pm/test_stamps_and_doctor.py`, `tests/hermes_cli/test_update_autostash.py`, `tests/hermes_cli/test_update_diverged_rescue_ref.py`, `tests/hermes_cli/test_update_owning_install.py`, `tests/hermes_cli/test_update_parked_branch_guard.py`
- **#94287: fix(update): reject unsafe stash restores**. closed without merge
  - maintainer direction: category `implemented_elsewhere`; implication `superseded`; refs `#99555`, `#99555`
- **#94303: fix(update): reject stash restores that re-apply invalid Python**. closed without merge
  - maintainer direction: category `superseded_by_pr`; implication `superseded`; refs `#94287`
- **#94344: fix(update): fail closed on unproven stash restore**. closed without merge
  - maintainer direction: category `implemented_elsewhere`; implication `superseded`; refs `ca12cbd68d8b85fc1f51c4a5db2dcb64e75604d1`, `#94264`, `#94344`, `#94264`, `#94287`, `#94303`
- **#122828: fix(update): name this run's unsettled autostash before any update outcome**. closed without merge
  - maintainer direction: category `implemented_elsewhere`; implication `superseded`; refs `#126166`

## Fix status

- Merged to main in PR #99555 (cited above). No release data is tracked. Verify downstream.
- Fix last verified (merged) `2026-09-28`.
