# NousResearch/hermes-agent · Adding --check flag to hermes update command

## Open now

- Nothing open on GitHub.

These issues and pull requests concern a documented but missing --check flag for the hermes update command. The work involves reporting the bug and implementing the flag in the CLI.

## TL;DR

- 4 member(s): 0 open issue(s), 1 closed issue(s), 0 open PR(s), 1 merged PR(s), 2 PR(s) closed without merging.
- A fix was merged to main in PR #15841. Verify it addresses your case.
- **Recommended:** read PR #15841 (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-15841`. 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.50`: 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

- #10318: \[Bug\]: hermes update --check not recognized — documented but not implemented

## Prior & competing PRs

- **#15841: feat(cli): implement hermes update --check flag**. merged to main · fix tier `verified`
  - maintainer direction: category `merged`
  - files: `hermes_cli/main.py`, `scripts/release.py`
  - fix hunks:
  - `hermes_cli/main.py`

    ```diff
    @@ -5678,6 +5678,54 @@ def _finalize_update_output(state):
                 pass
     
     
    +def _cmd_update_check():
    +    """Implement ``hermes update --check``: fetch and report without installing."""
    +    git_dir = PROJECT_ROOT / ".git"
    +    if not git_dir.exists():
    +        print("✗ Not a git repository — cannot check for updates.")
    +        sys.exit(1)
    +
    +    git_cmd = ["git"]
    +    if sys.platform == "win32":
    +        git_cmd = ["git", "-c", "windows.appendAtomically=false"]
    +
    +    print("→ Fetching from origin...")
    +    fetch_result = subprocess.run(
    +        git_cmd + ["fetch", "origin"],
    +        cwd=PROJECT_ROOT,
    +        capture_output=True,
    +        text=True,
    +    )
    +    if fetch_result.returncode != 0:
    +        stderr = fetch_result.stderr.strip()
    +        if "Could not resolve host" in stderr or "unable to access" in stderr:
    +            print("✗ Network error — cannot reach the remote repository.")
    +        elif "Authentication failed" in stderr or "could not read Username" in stderr:
    +            print("✗ Authentication failed — check your git credentials or SSH key.")
    +        else:
    +            print("✗ Failed to fetch from origin.")
    +            if stderr:
    +                print(f"  {stderr.splitlines()[0]}")
    +        sys.exit(1)
    +
    +    rev_result = subprocess.run(
    +        git_cmd + ["rev-list", "HEAD..origin/main", "--count"],
    +        cwd=PROJECT_ROOT,
    +        capture_output=True,
    +        text=True,
    +        check=True,
    +    )
    +    behind = int(rev_result.stdout.strip())
    +
    +    if behind == 0:
    +        print("✓ Already up to date.")
    +    else:
    +        commits_word = "commit" if behind == 1 else "commits"
    +        print(f"⚕ Update available: {behind} {commits_word} behind origin/main.")
    +        from hermes_cli.config import recommended_update_command
    +        print(f"  Run '{recommended_update_command()}' to install.")
    +
    +
     def cmd_update(args):
         """Update Hermes Agent to the latest version.
     
    ```

    ```diff
    @@ -5691,6 +5739,10 @@ def cmd_update(args):
             managed_error("update Hermes Agent")
             return
     
    +    if getattr(args, "check", False):
    +        _cmd_update_check()
    +        return
    +
         gateway_mode = getattr(args, "gateway", False)
     
         # Protect against mid-update terminal disconnects (SIGHUP) and tolerate
    ```

    ```diff
    @@ -8965,6 +9017,12 @@ def cmd_claw(args):
             default=False,
             help="Gateway mode: use file-based IPC for prompts instead of stdin (used internally by /update)",
         )
    +    update_parser.add_argument(
    +        "--check",
    +        action="store_true",
    +        default=False,
    +        help="Check whether an update is available without installing anything",
    +    )
         update_parser.set_defaults(func=cmd_update)
     
         # =========================================================================
    ```
  - `scripts/release.py`

    ```diff
    @@ -413,6 +413,7 @@
         "105142614+VTRiot@users.noreply.github.com": "VTRiot",
         "[redacted:email]": "iamagenius00",
         "89228157+Feranmi10@users.noreply.github.com": "Feranmi10",
    +    "[redacted:email]": "Feranmi10",
         "[redacted:email]": "simon-gtcl",
         "[redacted:email]": "houko",
         "[redacted:email]": "cgarwood82",
    ```
- **#10627: fix: add --check flag to hermes update command**. closed without merge
  - maintainer direction: category `implemented_elsewhere`; implication `superseded`; refs `dc5e02ea7`, `#15589`, `#10318`
- **#15589: feat(cli): implement hermes update --check flag**. closed without merge
  - maintainer direction: category `merged_via`; implication `superseded`; refs `#15841`

## Fix status

- Merged to main in PR #15841 (cited above). No release data is tracked. Verify downstream.
- Fix last verified (merged) `2026-04-26`. This confirmation is old and may be out of date (a revert/reopen would not have invalidated it here); re-verify.
