[GH-ISSUE #3578] [Bug] Hopper 6.6.0 Fedora feed main_exe_hash disagrees with the signed RPM launcher #1327

Closed
opened 2026-10-16 21:04:20 +00:00 by bsakaguchi · 5 comments
Owner

Originally created by @N0zoM1z0 on GitHub (Oct 14, 2026).
Original GitHub issue: https://github.com/morluto/rea/issues/3578

Area

Setup, packaging, or upgrade / external Hopper release metadata.

Observed behavior

The official public Hopper release API reports main_exe_hash=b2271008fb82bf14cfae5c3644cdde2b11fc6804bd7c99d67032ec1b1942d53c for Fedora's 6.6.0 RPM. The RPM's authenticated file header and actual launcher payload instead have SHA-256 4d6c23b6ab4f50b811bb454956f56871737976d6655a44098ba1978baad12947.

Reproduction / evidence

Executed on 2026-10-14:

  1. Download the RPM and detached base64 signature selected by the official feed. The complete package verifies with GnuPG and OpenPGP.js under stable primary 7C2D73BAFAF5B9A710A69DA1A26DF815099B1BCD.
  2. In an official Fedora 44 container, query rpm -qp --nosignature --nodigest --qf '%{FILEDIGESTALGO}\n[%{FILENAMES} %{FILEDIGESTS}\n]' package.rpm: digest algorithm 8; /opt/hopper/bin/Hopper has 4d6c….
  3. Run rpm --root /tmp/installed --initdb, then rpm --root /tmp/installed --nodeps --noscripts --nosignature -i package.rpm. sha256sum /tmp/installed/opt/hopper/bin/Hopper gives the same 4d6c…. rpm -qp --scripts reports no scriptlets.
  4. REA's production package-verification probe with the actual feed row rejects it as integrity. A diagnostic copy of that row using 4d6c… passes the same signature and signed-header checks. The copied row is not a live-feed or full Fedora installer result.

Expected behavior / impact

The vendor's per-platform main_exe_hash should identify that platform's installed launcher. Until this RPM field is corrected, feed-based Fedora installation should fail before the package manager runs. Do not weaken the check or hardcode the discrepancy in REA. Ubuntu deb and Arch launcher hashes match the current field.

Environment / limitations

Linux x86_64; official Fedora 44 container; Hopper demo 6.6.0 RPM. Earliest stage: setup/provider admission. REA probe is an unmerged worktree based on ca1b2f8, not an existing release regression. No full Fedora GUI/analysis claim; this is verified external feed/package inconsistency. Relevant evidence is retained locally under /tmp/rea-linux-hopper-release-feed-20261014.

Originally created by @N0zoM1z0 on GitHub (Oct 14, 2026). Original GitHub issue: https://github.com/morluto/rea/issues/3578 ### Area Setup, packaging, or upgrade / external Hopper release metadata. ### Observed behavior The official [public Hopper release API](https://www.hopperapp.com/include/files-api.php?request=releases&public=true) reports `main_exe_hash=b2271008fb82bf14cfae5c3644cdde2b11fc6804bd7c99d67032ec1b1942d53c` for Fedora's 6.6.0 RPM. The RPM's authenticated file header and actual launcher payload instead have SHA-256 `4d6c23b6ab4f50b811bb454956f56871737976d6655a44098ba1978baad12947`. ### Reproduction / evidence Executed on 2026-10-14: 1. Download the RPM and detached base64 signature selected by the official feed. The complete package verifies with GnuPG and OpenPGP.js under stable primary `7C2D73BAFAF5B9A710A69DA1A26DF815099B1BCD`. 2. In an official Fedora 44 container, query `rpm -qp --nosignature --nodigest --qf '%{FILEDIGESTALGO}\n[%{FILENAMES} %{FILEDIGESTS}\n]' package.rpm`: digest algorithm `8`; `/opt/hopper/bin/Hopper` has `4d6c…`. 3. Run `rpm --root /tmp/installed --initdb`, then `rpm --root /tmp/installed --nodeps --noscripts --nosignature -i package.rpm`. `sha256sum /tmp/installed/opt/hopper/bin/Hopper` gives the same `4d6c…`. `rpm -qp --scripts` reports no scriptlets. 4. REA's production package-verification probe with the actual feed row rejects it as `integrity`. A diagnostic copy of that row using `4d6c…` passes the same signature and signed-header checks. The copied row is not a live-feed or full Fedora installer result. ### Expected behavior / impact The vendor's per-platform `main_exe_hash` should identify that platform's installed launcher. Until this RPM field is corrected, feed-based Fedora installation should fail before the package manager runs. Do not weaken the check or hardcode the discrepancy in REA. Ubuntu deb and Arch launcher hashes match the current field. ### Environment / limitations Linux x86_64; official Fedora 44 container; Hopper demo 6.6.0 RPM. Earliest stage: setup/provider admission. REA probe is an unmerged worktree based on ca1b2f8, not an existing release regression. No full Fedora GUI/analysis claim; this is verified external feed/package inconsistency. Relevant evidence is retained locally under `/tmp/rea-linux-hopper-release-feed-20261014`.
Author
Owner

@g9robot commented on GitHub (Oct 16, 2026):

Independent Fedora reproduction (REA 6.5.0, Fedora 44, official current feed — no workaround applied):

  • rea setup --yes --install-hopper fails fail-closed before the package manager (integrity_mismatch, appliedActions: 0). The downloaded RPM is otherwise authentic: SHA-1 933aa2502550923a865f79e837ba403494c4b4b3 matches the Fedora feed row, and publisher verification (detached PGP against pinned key 7C2D73BAFAF5B9A710A69DA1A26DF815099B1BCD) passes — the failure is exactly the launcher-digest comparison.
  • Launcher digest confirmed two ways from that same signed RPM: the RPM header %{FILEDIGESTS} for /opt/hopper/bin/Hopper and a cpio extraction both give SHA-256 4d6c23b6ab4f50b811bb454956f56871737976d6655a44098ba1978baad12947, while the feed main_exe_hash is b2271008fb82bf14cfae5c3644cdde2b11fc6804bd7c99d67032ec1b1942d53c (also the launcher inside the official Arch package).
  • Both launchers share ELF Build ID 26308a094faabd038860592912f6d6ae2785dd32 and differ only from byte 41 (e_shoff) onward — a 152-byte section-layout difference, consistent with a packaging-time relayout rather than a different build.
  • This also blocks the manual route: after installing the official signed Fedora RPM directly, the provider is still refused at runtime — rea analyze <binary> --provider hopper → provider_unavailable, launch_rejection: {boundary: "publisher_verification", reason: "unsupported_hopper_build"} — and rea doctor reports hopper-version: config_drift / unsupported_hopper_build.

Net effect: Fedora users cannot use the Hopper provider at all until the feed row or the RPM is corrected. I did not weaken the check or retain modified feed metadata.

<!-- gh-comment-id:6205227293 --> @g9robot commented on GitHub (Oct 16, 2026): Independent Fedora reproduction (REA 6.5.0, Fedora 44, official current feed — no workaround applied): - `rea setup --yes --install-hopper` fails fail-closed before the package manager (`integrity_mismatch`, `appliedActions: 0`). The downloaded RPM is otherwise authentic: SHA-1 `933aa2502550923a865f79e837ba403494c4b4b3` matches the Fedora feed row, and publisher verification (detached PGP against pinned key `7C2D73BAFAF5B9A710A69DA1A26DF815099B1BCD`) passes — the failure is exactly the launcher-digest comparison. - Launcher digest confirmed two ways from that same signed RPM: the RPM header `%{FILEDIGESTS}` for `/opt/hopper/bin/Hopper` and a `cpio` extraction both give SHA-256 `4d6c23b6ab4f50b811bb454956f56871737976d6655a44098ba1978baad12947`, while the feed `main_exe_hash` is `b2271008fb82bf14cfae5c3644cdde2b11fc6804bd7c99d67032ec1b1942d53c` (also the launcher inside the official Arch package). - Both launchers share ELF Build ID `26308a094faabd038860592912f6d6ae2785dd32` and differ only from byte 41 (`e_shoff`) onward — a 152-byte section-layout difference, consistent with a packaging-time relayout rather than a different build. - This also blocks the manual route: after installing the official signed Fedora RPM directly, the provider is still refused at runtime — `rea analyze <binary> --provider hopper` → `provider_unavailable`, `launch_rejection: {boundary: "publisher_verification", reason: "unsupported_hopper_build"}` — and `rea doctor` reports `hopper-version: config_drift` / `unsupported_hopper_build`. Net effect: Fedora users cannot use the Hopper provider at all until the feed row or the RPM is corrected. I did not weaken the check or retain modified feed metadata.
Author
Owner

@singhaditya73 commented on GitHub (Oct 18, 2026):

Corroborating on the released package (not a worktree): rea-agents 6.7.0 on Fedora 44 x86_64 (Node 24.22.0).

rea setup --yes --client opencode --install-hopper → status: needs_human, appliedActions: [], exit 1:

code: integrity_mismatch
remediation: "The signed rpm package launcher SHA-256 4d6c23b6ab4f50b811bb454956f56871737976d6655a44098ba1978baad12947 differs from the release main_exe_hash b2271008fb82bf14cfae5c3644cdde2b11fc6804bd7c99d67032ec1b1942d53c. The Hopper download failed integrity verification. Retry setup; if it repeats, update REA before installing."

Independent checks agree with the report:

  • RPM SHA-1 933aa2502550923a865f79e837ba403494c4b4b3 == feed file_hash (authentic bytes); RPM opt/hopper/bin/Hopper == 4d6c23b6….
  • .deb opt/hopper/bin/Hopper == b2271008… (feed main_exe_hash).
  • Extra datapoint for "same launcher": the RPM and deb launchers report the same ELF BuildID (26308a094faabd038860592912f6d6ae2785dd32) — consistent with one build re-signed (6.6.0 changelog: "Packages are now signed") while the feed carries a single main_exe_hash shared by Ubuntu/Fedora/Arch.

Confirming there is no launcher-path workaround on Fedora either: pointing HOPPER_LAUNCHER_PATH at the hash-matching .deb launcher still fails rea doctor's hopper-version with reason integrity (the same RPM hashes), because inspectLauncher re-verifies the Fedora family package. So the block is precisely as described, and the minimal fix is the vendor's per-platform field (or per-family fields), not relaxing the check.

Not weakening the check / not hardcoding the discrepancy is the right call. Minor note: 6.7.0 still surfaces the top-level remediation "update REA", which is not actionable when 6.7.0 is already the latest release.

<!-- gh-comment-id:6248326882 --> @singhaditya73 commented on GitHub (Oct 18, 2026): Corroborating on the **released** package (not a worktree): `rea-agents` **6.7.0** on **Fedora 44 x86_64** (Node 24.22.0). `rea setup --yes --client opencode --install-hopper` → `status: needs_human`, `appliedActions: []`, exit 1: ``` code: integrity_mismatch remediation: "The signed rpm package launcher SHA-256 4d6c23b6ab4f50b811bb454956f56871737976d6655a44098ba1978baad12947 differs from the release main_exe_hash b2271008fb82bf14cfae5c3644cdde2b11fc6804bd7c99d67032ec1b1942d53c. The Hopper download failed integrity verification. Retry setup; if it repeats, update REA before installing." ``` Independent checks agree with the report: - RPM SHA-1 `933aa2502550923a865f79e837ba403494c4b4b3` == feed `file_hash` (authentic bytes); RPM `opt/hopper/bin/Hopper` == `4d6c23b6…`. - `.deb` `opt/hopper/bin/Hopper` == `b2271008…` (feed `main_exe_hash`). - Extra datapoint for "same launcher": the RPM and deb launchers report the **same ELF BuildID** (`26308a094faabd038860592912f6d6ae2785dd32`) — consistent with one build re-signed (6.6.0 changelog: "Packages are now signed") while the feed carries a single `main_exe_hash` shared by Ubuntu/Fedora/Arch. Confirming there is **no launcher-path workaround** on Fedora either: pointing `HOPPER_LAUNCHER_PATH` at the hash-matching `.deb` launcher still fails `rea doctor`'s `hopper-version` with reason `integrity` (the same RPM hashes), because `inspectLauncher` re-verifies the Fedora family package. So the block is precisely as described, and the minimal fix is the vendor's per-platform field (or per-family fields), not relaxing the check. Not weakening the check / not hardcoding the discrepancy is the right call. Minor note: 6.7.0 still surfaces the top-level remediation "update REA", which is not actionable when 6.7.0 is already the latest release.
Author
Owner

@ghost commented on GitHub (Oct 19, 2026):

Third independent reproduction — Fedora 45, REA 6.7.0 (released)

Adding a datapoint on a newer Fedora release: same failure, same digests, deterministic across retries, no workaround applied. Observed 2026-10-19.

Environment

  • Fedora 45 (kernel 7.2.10-300.fc45.x86_64, x86_64)
  • Node v24.21.0, npm 11.19.0
  • rea-agents 6.7.0 (current npm latest — the remediation's "update REA" path is not actionable)
  • Client: OpenCode — rea setup --client opencode --install-hopper --yes

Reproduction (run twice; identical outcome both times)

npx -y rea-agents@latest setup --client opencode --install-hopper --yes

Result

  • Exit code 1, status: "needs_human", code: "integrity_mismatch", appliedActions: [] — fail-closed before anything is installed or written.
  • Remediation, verbatim:

The signed rpm package launcher SHA-256 4d6c23b6ab4f50b811bb454956f56871737976d6655a44098ba1978baad12947 differs from the release main_exe_hash b2271008fb82bf14cfae5c3644cdde2b11fc6804bd7c99d67032ec1b1942d53c. The Hopper download failed integrity verification. Retry setup; if it repeats, update REA before installing.

Both digests match the report and the earlier corroborations exactly (4d6c… launcher from the signed RPM vs b227… feed main_exe_hash).

Additional observations

  • xorg-x11-server-Xvfb 21.1.25-1.fc45 is already installed and the doctor's demo-runtime probe reports healthy (strategy=direct, ready); the only blocker is the launcher-digest mismatch.
  • The pre-existing, unverified /opt/hopper/bin/Hopper installation (reported by rea doctor as unsupported_hopper_build) was left untouched; the failed run changed nothing.
  • No ~/.cache/rea artifacts were retained after the failure, so there is nothing to attach from this host.

Happy to run further diagnostics if that helps.

<!-- gh-comment-id:6260190210 --> @ghost commented on GitHub (Oct 19, 2026): **Third independent reproduction — Fedora 45, REA 6.7.0 (released)** Adding a datapoint on a newer Fedora release: same failure, same digests, deterministic across retries, no workaround applied. Observed 2026-10-19. **Environment** - Fedora 45 (kernel `7.2.10-300.fc45.x86_64`, x86_64) - Node `v24.21.0`, npm `11.19.0` - `rea-agents` `6.7.0` (current npm `latest` — the remediation's "update REA" path is not actionable) - Client: OpenCode — `rea setup --client opencode --install-hopper --yes` **Reproduction** (run twice; identical outcome both times) ``` npx -y rea-agents@latest setup --client opencode --install-hopper --yes ``` **Result** - Exit code `1`, `status: "needs_human"`, `code: "integrity_mismatch"`, `appliedActions: []` — fail-closed before anything is installed or written. - Remediation, verbatim: > The signed rpm package launcher SHA-256 4d6c23b6ab4f50b811bb454956f56871737976d6655a44098ba1978baad12947 differs from the release main_exe_hash b2271008fb82bf14cfae5c3644cdde2b11fc6804bd7c99d67032ec1b1942d53c. The Hopper download failed integrity verification. Retry setup; if it repeats, update REA before installing. Both digests match the report and the earlier corroborations exactly (`4d6c…` launcher from the signed RPM vs `b227…` feed `main_exe_hash`). **Additional observations** - `xorg-x11-server-Xvfb` 21.1.25-1.fc45 is already installed and the doctor's demo-runtime probe reports healthy (`strategy=direct`, ready); the only blocker is the launcher-digest mismatch. - The pre-existing, unverified `/opt/hopper/bin/Hopper` installation (reported by `rea doctor` as `unsupported_hopper_build`) was left untouched; the failed run changed nothing. - No `~/.cache/rea` artifacts were retained after the failure, so there is nothing to attach from this host. Happy to run further diagnostics if that helps.
Author
Owner

@neuroben commented on GitHub (Oct 23, 2026):

Hopper RPM integrity mismatch — Fedora 44, REA 6.7.0, OpenCode

Additional independent reproduction — Fedora 44, REA 6.7.0 (released)

Confirming the same Hopper installation failure on Fedora 44. Both SHA-256 digests match the previously reported values exactly. Observed 2026-10-23.

Environment

  • Fedora 44 (Linux x86_64)
  • Node.js v22.22.2, npm 10.9.7
  • rea-agents 6.7.0
  • Client: OpenCode
  • Ghidra 12.1.4, Java 25.0.4.1
  • REA skill v42

Reproduction

npx -y rea-agents@latest setup --client opencode

Approved the proposed changes, including the Hopper deep-analysis provider installation.

Result

Hopper installation failed during integrity verification:

The signed rpm package launcher SHA-256 4d6c23b6ab4f50b811bb454956f56871737976d6655a44098ba1978baad12947 differs from the release main_exe_hash b2271008fb82bf14cfae5c3644cdde2b11fc6804bd7c99d67032ec1b1942d53c. The Hopper download failed integrity verification. Retry setup; if it repeats, update REA before installing.

Both digests match the earlier reports:

  • RPM launcher SHA-256: 4d6c23b6ab4f50b811bb454956f56871737976d6655a44098ba1978baad12947
  • Release main_exe_hash: b2271008fb82bf14cfae5c3644cdde2b11fc6804bd7c99d67032ec1b1942d53c

Additional observations

  • Ghidra 12.1.4 passes all REA provider checks, including headless analysis, native decompiler, and Java compatibility.
  • Re-running setup without the Hopper installation successfully configured OpenCode and installed the REA skill.
  • The subsequent diagnostic reports healthy: true, with the OpenCode MCP registration and REA skill v42 both aligned.
  • Hopper remains unavailable (missing_analysis_engine).
  • REA 6.7.0 is already installed, so the suggested remediation to update REA does not provide an actionable fix for this version.

This appears consistent with the previously reported RPM launcher hash mismatch rather than a Fedora-specific configuration issue.

Happy to provide additional diagnostic output if needed.

<!-- gh-comment-id:6364650600 --> @neuroben commented on GitHub (Oct 23, 2026): ## Hopper RPM integrity mismatch — Fedora 44, REA 6.7.0, OpenCode **Additional independent reproduction — Fedora 44, REA 6.7.0 (released)** Confirming the same Hopper installation failure on Fedora 44. Both SHA-256 digests match the previously reported values exactly. Observed 2026-10-23. ### Environment - Fedora 44 (Linux x86_64) - Node.js `v22.22.2`, npm `10.9.7` - `rea-agents` `6.7.0` - Client: OpenCode - Ghidra `12.1.4`, Java `25.0.4.1` - REA skill v42 ### Reproduction ```bash npx -y rea-agents@latest setup --client opencode ``` Approved the proposed changes, including the Hopper deep-analysis provider installation. ### Result Hopper installation failed during integrity verification: > The signed rpm package launcher SHA-256 4d6c23b6ab4f50b811bb454956f56871737976d6655a44098ba1978baad12947 differs from the release main_exe_hash b2271008fb82bf14cfae5c3644cdde2b11fc6804bd7c99d67032ec1b1942d53c. The Hopper download failed integrity verification. Retry setup; if it repeats, update REA before installing. Both digests match the earlier reports: - **RPM launcher SHA-256:** `4d6c23b6ab4f50b811bb454956f56871737976d6655a44098ba1978baad12947` - **Release `main_exe_hash`:** `b2271008fb82bf14cfae5c3644cdde2b11fc6804bd7c99d67032ec1b1942d53c` ### Additional observations - Ghidra 12.1.4 passes all REA provider checks, including headless analysis, native decompiler, and Java compatibility. - Re-running setup without the Hopper installation successfully configured OpenCode and installed the REA skill. - The subsequent diagnostic reports `healthy: true`, with the OpenCode MCP registration and REA skill v42 both aligned. - Hopper remains unavailable (`missing_analysis_engine`). - REA 6.7.0 is already installed, so the suggested remediation to update REA does not provide an actionable fix for this version. This appears consistent with the previously reported RPM launcher hash mismatch rather than a Fedora-specific configuration issue. Happy to provide additional diagnostic output if needed.
Author
Owner

@morluto commented on GitHub (Oct 26, 2026):

Thank you for the careful signature, RPM-header, and installed-payload checks. The same Fedora 6.6.0 feed/hash mismatch is now also tracked alongside the download problem in #7077, so I am consolidating discussion there. Your evidence and the original report remain linked, including the observation that the Ubuntu and Arch launcher hashes matched in this check. This closure does not mean the vendor metadata has been corrected or that package verification should be weakened; please reopen if there is a distinct remaining Fedora-specific issue.

<!-- gh-comment-id:6428590389 --> @morluto commented on GitHub (Oct 26, 2026): Thank you for the careful signature, RPM-header, and installed-payload checks. The same Fedora 6.6.0 feed/hash mismatch is now also tracked alongside the download problem in #7077, so I am consolidating discussion there. Your evidence and the original report remain linked, including the observation that the Ubuntu and Arch launcher hashes matched in this check. This closure does not mean the vendor metadata has been corrected or that package verification should be weakened; please reopen if there is a distinct remaining Fedora-specific issue.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
morluto/rea#1327
No description provided.