KS
← All projectsKeystone

Keystone 3 firmware

Open-source device firmware for Keystone 3 hardware wallets.

BitcoinHardware walletsNormal
Repository coverage

553 commits in the local evidence base

Every captured commit receives deterministic security triage and a separate communication-quality score. Security candidates and broader second-pass signals receive full-patch Ollama analysis.

119security candidates294second-pass queue551AI analyses
9commits · 30 days
37commits · 60 days
279commits · 180 days
504commits · 365 days
Backfill bands
Aug 5 → Feb 6260 seen14 candidatesComplete
Feb 6 → Jun 6117 seen7 candidatesComplete
Jun 6 → Jul 639 seen4 candidatesComplete
Jul 6 → Aug 5115 seen4 candidatesComplete
Commit communication

Does the history explain itself?

Message quality measures whether a commit identifies its scope, purpose, rationale, testing, and supporting references. It does not change the security-severity score.

42/100 average clarity
35Strong · 80–100
72Adequate · 60–79
211Thin · 40–59
235Opaque · 0–39
39security candidates with opaque commit messaging
Read the scoring rubric →
Developer activity

Who is changing the project?

Public Git author strings; identities are not independently verified.

DeveloperCommitsCandidatesAnalyzedHigh riskMessage avg.
soralit11634116248
Adam Tucker931193263
aaron30430248
Soralit959154
ww351268717652176026
willwang15215025
John Boyd626088
github-actions[bot]323076
Aaron Chen222068
Qkin-Keystone26126036
qkin12112050
Greg Pfeil414071
Analysis record

Published AI watches

Last scanned 50 minutes ago

Low 42 AI analysisMessage 58 · Thin
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

Merge pull request #2293 from KeystoneHQ/merge/v3.1.0

This is a large firmware release merge (v3.1.0) for the Keystone 3 hardware wallet. The visible changes are mostly a major FreeRTOS kernel upgrade (from v10.x to v11.3.0), build-system improvements, and user-facing feature tweaks such as b…

FreeRTOS kernel major version upgrade (10.x -> 11.3.0) with MPU hardeningSwitch from ARM_CM4F non-MPU port to ARM_CM4_MPU portNew MPU configuration flags: configTOTAL_MPU_REGIONS=8, configENFORCE_SYSTEM_CALLS_FROM_KERNEL_ONLY=1, configALLOW_UNPRIVILEGED_CRITICAL_SECTIONS=0
0c0ae467by stone+59616−26981300 files
Vendor flagged security relevance
Informational 15 AI analysisMessage 48 · Thin
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

chore: update ci (#2292)

This commit only updates a Git submodule pointer in a release-tracking file. The actual code change is a one-line pointer update from one commit hash to another in a file named 'keystone3-firmware-release'. There is no visible security-rel…

90d1c789by Soralit+1−11 file
No security note in commit
Informational 15 AI analysisMessage 40 · Thin
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

chore: update ci

This commit only updates a Git submodule pointer (keystone3-firmware-release) from one commit hash to another. No source code, build scripts, CI configuration, or security-related files are changed in the visible diff. There is no evidence…

a7f6db29by Soralit+1−11 file
No security note in commit
Moderate 58 AI analysisMessage 28 · Opaque
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

release 3.1.0

This is a large firmware release commit (version 3.1.0) for the Keystone 3 hardware wallet. The most significant change visible in the diff is a major upgrade of the FreeRTOS real-time operating system kernel from version 10.x to 11.3.0, c…

FreeRTOS major version upgrade (10.x → 11.3.0) with MPU port enabledNew MPU sandbox task/runtime/validator files addedconfigENFORCE_SYSTEM_CALLS_FROM_KERNEL_ONLY=1 and configALLOW_UNPRIVILEGED_CRITICAL_SECTIONS=0 set
2b007a29by Soralit+59615−26980300 files
Vendor flagged security relevance
Informational 15 AI analysisMessage 76 · Adequate
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

Merge release v3.0.8 (#2291)

This commit is a routine version-bump merge for release v3.0.8. It only updates changelogs, a Git submodule pointer, and a build version number. There is no code change visible in the diff and nothing that suggests a security fix or vulner…

b5e8f9fcby github-actions[bot]+18−24 files
No security note in commit
Low 47 AI analysisMessage 76 · Adequate
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

Merge release v3.0.6 (#2290)

This firmware update adds support for Solana's new V1 transaction format and changes how oversized or malformed transaction details are displayed. The code introduces a dedicated parser for V1 messages with strict size and structure checks…

New parser enforces hard limits on V1 message fields and rejects malformed 0x81-prefix payloads instead of falling back to message signingCompute-budget instructions in V1 are explicitly ignored to prevent fee-display spoofingUI pagination change for large transaction details reduces truncation risk
87b78ae1by github-actions[bot]+564−2812 files
No security note in commit
Informational 15 AI analysisMessage 68 · Adequate
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

pin to new release config (#2285)

This commit only updates a Git submodule pointer (keystone3-firmware-release) from one commit hash to another. There is no code change visible in the diff, no description of what the new release config contains, and no security-related inf…

bc01c889by Aaron Chen+1−11 file
No security note in commit
Informational 15 AI analysisMessage 68 · Adequate
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

update the release repo (#2282)

This commit simply updates a Git submodule pointer for the project's release repository. There is no visible code change, no description of any security issue, and no indication this is anything other than a routine release-tracking update.

3ac7e802by Aaron Chen+1−11 file
No security note in commit
Moderate 59 AI analysisMessage 76 · Adequate
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

Merge release v3.0.4 (#2279)

This is a routine firmware release merge (v3.0.4) for the Keystone 3 hardware wallet. The bulk of the changes are UI tweaks, new feature support (Solana CLI, Lace Wallet), and hardening fixes found during an internal 'regular AI review'. T…

NUL-byte rejection in EIP-712 typed data parsingC-string conversion hardening against NUL bytesNull-pointer and UTF-8 validation added to UR parsing entry points
6ab436a2by github-actions[bot]+4960−548845 files
No security note in commit
Informational 13 AI analysisMessage 59 · Thin
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

Build fix (#2273)

This commit is a routine build-system and code-formatting fix. It resets cached CMake build options so each build starts from known defaults, makes cbindgen header-generation failures visible instead of silently ignored, runs Rust formatti…

8568a657by stone wang+8−145 files
No security note in commit
Low 44 AI analysisMessage 36 · Opaque
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

limit file count (#2272)

This commit adds a hard cap on how many files the device will list from its SD card when loading multi-signature Bitcoin wallet data. It also tightens up null-pointer and length checks while scanning directories. The likely goal is to prev…

Unbounded directory listing now bounded by FATFS_MAX_FILE_NUMBERNull-pointer guards added for fileName, number, and path parametersLength checks added before copying filenames into caller buffers
de6879c3by stone wang+31−146 files
No security note in commit
Low 46 AI analysisMessage 73 · Adequate
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

Merge pull request #2268 from KeystoneHQ/regular-review-fix

This commit tightens which old-style Bitcoin-like transactions the Keystone hardware wallet will accept. It now rejects raw protobuf Bitcoin (BTC) and Dogecoin (DOGE) legacy UTXO transactions, allowing only Bitcoin Cash (BCH), Dash (DASH),…

Deprecation of raw-protobuf Bitcoin transaction handlingRejection of unsupported legacy UTXO variants at multiple entry pointsShift from coin_code string matching to protobuf variant matching for legacy path eligibility
1c70d3d4by Soralit+134−166 files
No security note in commit
Moderate 61 AI analysisMessage 62 · Adequate
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

fix: mark legacy utxo transaction as deprecated and disable btc legacy transactions

This commit disables the older, raw-protobuf signing path for Bitcoin and Dogecoin transactions in the Keystone 3 hardware wallet firmware. It keeps the legacy path active only for Bitcoin Cash (BCH), Dash (DASH), and Litecoin (LTC). The c…

Disables a legacy transaction parsing/signing code path for Bitcoin and DogecoinAdds explicit rejection checks before raw transaction parsing, checking, signing, and view routingSwitches discriminator from coin_code string to protobuf transaction variant to prevent spoofing
1fcd2346by Soralit+134−166 files
No security note in commit
Moderate 63 AI analysisMessage 58 · Thin
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

Merge pull request #2264 from KeystoneHQ/regular-review-fix

This firmware update is a routine 'regular review fix' that hardens how the Keystone 3 hardware wallet checks and displays several cryptocurrency transactions before signing. The most important security changes are: (1) the sign button is …

Sign slider disabled until parse success prevents premature approvalArweave DataItem tag-count mismatch now rejected in pre-checkAvalanche transaction re-validated by type in pre-check, tampered asset ID rejected
87c7e7e2by Soralit+623−20423 files
No security note in commit
Moderate 67 AI analysisMessage 58 · Thin
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

Merge pull request #2263 from KeystoneHQ/driver-optimize

This commit updates the hardware random number generator (TRNG) driver in a cryptocurrency hardware wallet firmware. It adds detection for a physical fault/attack signal from the TRNG and, if triggered, wipes the random data and aborts via…

Added TRNG fault/attack status detection (TRNG_IT_RNG0_ATTACK)Zeroization of sensitive local buffer and output buffer on TRNG failureAssertion abort on detected TRNG attack condition
a409efe0by Soralit+29−51 file
No security note in commit
Moderate 59 AI analysisMessage 18 · Opaque
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

driver optimzie

This commit updates the hardware random number generator (TRNG) driver in a cryptocurrency hardware wallet firmware. It adds detection for a physical tamper/attack signal from the TRNG chip and, if an attack is detected, wipes the random d…

New check of TRNG_IT_RNG0_ATTACK tamper/attack interrupt statusFailure path now zeroes output and local buffer before abortingAddition of ASSERT guards and secure memset_s usage
25f3d951by ww3512687+29−51 file
No security note in commit
Moderate 61 AI analysisMessage 57 · Thin
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

fix: regular ai review fix

This firmware update for the Keystone 3 hardware wallet fixes several security and safety issues found during an internal AI-assisted review. The most important changes are: (1) the signing slider is now disabled until a transaction is ful…

Signing slider disabled until parse success prevents approval of malformed transactionsArweave DataItem tag-count mismatch rejected in pre-check before confirmation pageAvalanche transaction re-validated by type during fingerprint check
edbeae79by soralit+623−20423 files
No security note in commit
High 76 AI analysisMessage 58 · Thin
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

Merge pull request #2262 from KeystoneHQ/regular-review-fix

This firmware update fixes several security and safety issues found during a regular AI-assisted code review. The most important changes are: (1) Zcash wallet data is now encrypted with a key derived from the wallet seed and a fresh random…

Zcash UFVK encryption key changed from sha256(password) to seed-derived BIP32 keyZcash UFVK IV changed from deterministic seed-derived value to fresh TRNG-generated IV per blobZcash UFVK storage format now uses magic-prefixed blob with embedded IV and rejects legacy blobs
04d942ffby Soralit+1852−52633 files
No security note in commit
High 80 AI analysisMessage 57 · Thin
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

fix: regular AI review and fix

This firmware update fixes several security and safety issues found during an internal AI-assisted review. The most important changes are: (1) Zcash wallet data was being encrypted with a key derived from the user's login password and a fi…

Zcash UFVK encryption key changed from sha256(login password) to seed-derived BIP32 keyZcash UFVK IV changed from deterministic seed-derived value to fresh TRNG-generated IV per encryptionNew 'z2' UFVK blob format stores IV with ciphertext; legacy blobs rejected/migrated
776d8832by soralit+1852−52633 files
Vendor flagged security relevance
Moderate 59 AI analysisMessage 58 · Thin
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

Merge pull request #2260 from KeystoneHQ/replace-lvgl-rand

This commit replaces the on-screen keyboard shuffle and a word-list randomizer so they use the device's true random-number generator (TRNG) instead of LVGL's weaker pseudo-random function. The change is defensive: it removes a source of pr…

Replaced pseudo-random generator with hardware TRNG in security-sensitive shuffle operationsRemoved fixed-range modulo reduction bias source (`lv_rand(0, 2048) % n`)Changed include from LVGL UI library to device TRNG driver in utility code
230abd77by Soralit+8−32 files
No security note in commit
Repository ledger

Explore captured commits

Expand any commit for its author, full message, clarity score, changed files, triage signals, analysis, and source link.

Lower-prioritychore: bump versionby soralit · 26df3782 · Jul 15, 2026 · 1 fileMessage 40 · ThinInformational 15Details
Commit message · soralit

chore: bump version

40/100 · ThinMessage clarity
✓ Subject identifies a change✓ Uses a recognizable type or scope! No meaningful explanatory body
AI analysis · Informational 15/100

This commit only changes two version numbers in a header file: the build number goes from 0 to 1, and the beta flag goes from 1 to 4. It does not modify any executable code, fix any behavior, or address any security issue. It is a routine release bookkeeping change.

Security candidateReject existing Zcash batch signaturesby Adam Tucker · a50410ac · Jul 14, 2026 · 3 filesMessage 45 · ThinModerate 56Details
Commit message · Adam Tucker

Reject existing Zcash batch signatures

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing boundary
AI analysis · Moderate 56/100

This firmware update changes how Keystone hardware wallets handle Zcash batch signing. Previously, the device might have accepted a transaction request that already contained spend authorization signatures. Now it rejects such requests. The concern is that an attacker could craft a Zcash batch transaction containing signatures from another source and trick the device into including them in its final response, potentially making the device vouch for transactions the user did not actually review and authorize. The patch adds an explicit check to block any incoming Orchard or Ironwood spend authorization signatures in batch mode.

Lower-priorityReject invalid Zcash display totalsby Adam Tucker · 28607f56 · Jul 14, 2026 · 3 filesMessage 45 · ThinModerate 60Details
Commit message · Adam Tucker

Reject invalid Zcash display totals

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
defensive validation
AI analysis · Moderate 60/100

This update fixes how a Keystone hardware wallet calculates the on-screen totals for Zcash transactions. Previously, the firmware used plain addition that could silently overflow or accept impossible totals (for example, showing more change than was sent, or more money leaving the wallet than entered it). Such a malformed transaction could make the user approve a transfer that does not match reality. The patch now rejects those cases before anything is shown for signing.

Lower-priorityadd the se wipe and reorder the ErasePublicInfo to fix the power lose issueby aaron · a366adde · Jul 14, 2026 · 1 fileMessage 50 · ThinModerate 57Details
Commit message · aaron

add the se wipe and reorder the ErasePublicInfo to fix the power lose issue

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
AI analysis · Moderate 57/100

This commit changes the factory-reset/wipe routine in a Keystone hardware wallet's startup self-check. It replaces one wipe step with a call to wipe the secure element (SE_WipeAll) and moves the 'ErasePublicInfo' step to occur after account destruction and flash erasure, right before the device reboots. The stated goal is to fix a problem where losing power during a wipe could leave sensitive data partially intact. The change is defensive, but because it is a partial patch and the commit message is terse, we cannot fully verify that the new ordering eliminates all power-loss recovery risks.

Lower-priorityupdate the string and fix the pages reusedby aaron · 11ed27b3 · Jul 14, 2026 · 3 filesMessage 45 · ThinLow 41Details
Commit message · aaron

update the string and fix the pages reused

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
AI analysis · Low 41/100

This commit fixes a page-number overlap in the secure-element storage layout and updates a user-facing help string. Previously, the RSA hash page was defined as page 36, which was also used for account status. The change gives the RSA hash its own dedicated pages (39-41) so the two purposes no longer share the same storage page. The string change makes it clearer that entering another wallet's PIN/password is part of resetting a forgotten passcode, and that failure wipes the device. The commit itself does not show an attack path, but it removes a condition that could have caused data corruption or misinterpretation of wallet state.

AI review queuedchore: resume Zcash firmware version changesby soralit · 4518972c · Jul 14, 2026 · 5 filesMessage 72 · AdequateInformational 17Details
Commit message · soralit

chore: resume Zcash firmware version changes

This reverts commit 718548072bc0929b34d9af7eb57061cc10b3b7cc.

72/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 17/100

This commit is a routine feature patch for the Keystone 3 hardware wallet. It resumes adding the device's firmware version into Zcash wallet connection data, and it fixes two simulator-only bugs: a keyboard crash when a text box is destroyed and a timing mismatch in how background tasks are run during desktop testing. There is no direct evidence in the commit that these changes fix an active security vulnerability, and the commit message describes them as ordinary development work.

Lower-priorityClarify cross-pool rk validationby Adam Tucker · e4ab2e4d · Jul 14, 2026 · 1 fileMessage 45 · ThinLow 40Details
Commit message · Adam Tucker

Clarify cross-pool rk validation

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
AI analysis · Low 40/100

This commit only rewrites a code comment in the Zcash PCZT validation logic. It clarifies why the code checks that certain cryptographic keys are not reused across Orchard and Ironwood 'pools.' The actual validation behavior does not change, but the new comment suggests the previous mental model—worrying about cross-pool signature copying—was slightly off. The change itself is documentation-only, so it does not fix or introduce a runtime vulnerability.

AI review queuedOptimize duplicate rk validationby Adam Tucker · 15709554 · Jul 14, 2026 · 1 fileMessage 35 · OpaqueLow 31Details
Commit message · Adam Tucker

Optimize duplicate rk validation

35/100 · OpaqueMessage clarity
✓ Descriptive subject! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
AI analysis · Low 31/100

This commit is a small code cleanup in the Zcash part of the Keystone hardware wallet firmware. It changes how the code checks for duplicate 'rk' values across Orchard and Ironwood shielded transaction actions. The old code used chained iterators and cloned them repeatedly; the new code collects the actions into a vector first and then uses nested loops. The behavior appears unchanged: it still rejects duplicate rk values with the same error message. There is no direct evidence in the commit that this fixes a security bug.

Lower-priorityfix: warn before prove ownership wipeby aaron · a7d6a931 · Jul 14, 2026 · 2 filesMessage 57 · ThinInformational 19Details
Commit message · aaron

fix: warn before prove ownership wipe

57/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
AI analysis · Informational 19/100

This commit only changes on-screen text shown during the 'Prove Device Ownership' step of a password reset. The new wording warns the user that entering the wrong PIN/password too many times will wipe the device. It does not change any security logic, attempt limits, or wipe behavior—only the user-facing warning message.

Lower-priorityReject duplicate Orchard and Ironwood action rk valuesby Adam Tucker · 5fa1ad23 · Jul 13, 2026 · 4 filesMessage 50 · ThinHigh 71Details
Commit message · Adam Tucker

Reject duplicate Orchard and Ironwood action rk values

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
AI analysis · High 71/100

This update fixes a flaw in how the Keystone hardware wallet checks Zcash private transaction proposals (PCZTs). If the same random verification key ('rk') appeared in two different spending actions—either two Orchard actions or one Orchard and one Ironwood action—the device would not notice. Because both action types sign the same overall transaction digest, a valid signature for one action could be copied and reused for the other, potentially letting an attacker authorize a spend they should not. The fix makes the wallet reject any PCZT that reuses such a key across actions.

Lower-priorityRemove unreleased batch changelog entriesby Adam Tucker · 86652d1d · Jul 13, 2026 · 1 fileMessage 45 · ThinInformational 15Details
Commit message · Adam Tucker

Remove unreleased batch changelog entries

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
documentation-only discount
AI analysis · Informational 15/100

This commit only removes two unreleased changelog entries from a markdown file. No source code, firmware logic, or security behavior was changed. It is a documentation cleanup and has no security relevance on its own.

Security candidateScope Zcash shielded signing to selected accountby Adam Tucker · 3d14c7dd · Jul 13, 2026 · 6 filesMessage 45 · ThinModerate 64Details
Commit message · Adam Tucker

Scope Zcash shielded signing to selected account

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing boundarysigning or wallet path
AI analysis · Moderate 64/100

This commit fixes a bug in the Keystone 3 hardware wallet's Zcash shielded transaction signing. Previously, when a user reviewed and approved a transaction for one account, the device could accidentally authorize a spend from a different account controlled by the same seed. The patch now checks that every shielded spend belongs to the account the user actually selected, and rejects the transaction if any spend comes from another account. This prevents an attacker or buggy wallet software from tricking the user into signing a spend from an account they did not review.

Lower-priorityfix(zcash): compact migrations alongside split transactionsby Adam Tucker · ead96096 · Jul 13, 2026 · 1 fileMessage 62 · AdequateLow 46Details
Commit message · Adam Tucker

fix(zcash): compact migrations alongside split transactions

62/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
AI analysis · Low 46/100

This commit changes how the Keystone hardware wallet summarizes Zcash batch transactions that include both ordinary payments and migration (Orchard-to-Ironwood) self-transfers. Previously, if a batch had more than one ordinary transaction alongside migrations, the wallet showed every transaction in full. Now, it still shows each ordinary transaction in full but compacts all migrations into a single summary page. The change is described as a fix for handling 'split transactions' alongside migrations, but the commit message and diff do not explain any security vulnerability.

Lower-priorityperf(zcash): reuse checked batch signabilityby Adam Tucker · 2ea86362 · Jul 13, 2026 · 4 filesMessage 57 · ThinLow 27Details
Commit message · Adam Tucker

perf(zcash): reuse checked batch signability

57/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
AI analysis · Low 27/100

This commit is a performance improvement for Zcash batch signing on the Keystone 3 hardware wallet. It avoids re-checking the same transaction data twice by caching a 'signability decision' from the review step and reusing it during signing. The change also adds integrity checks so the cached decision can only be used with the exact normalized transaction bytes and wallet context it was created for. The CHANGELOG frames it as an improvement and a bug fix for stalled signing when QR generation fails, not as a security fix.

Security candidatefix(zcash): skip finalized dummy spends during signingby Adam Tucker · 9792998a · Jul 13, 2026 · 3 filesMessage 62 · AdequateLow 43Details
Commit message · Adam Tucker

fix(zcash): skip finalized dummy spends during signing

62/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
signing boundarysigning or wallet path
AI analysis · Low 43/100

This commit fixes a bug in the Keystone hardware wallet's Zcash signing code. When signing a batch of Zcash transactions that include 'dummy' placeholder spends (zero-value decoy actions used for privacy), the signer could get stuck or fail because it tried to re-sign a dummy spend whose signature had already been finalized and then stripped for transport. The fix tells the signer to skip these finalized zero-value dummy spends, allowing the real spend to be signed normally. The changelog frames it as a fix for batch signing with finalized zero-value dummy spends.

Lower-priorityUse typed batch firmware version encodingby Adam Tucker · e4c1713c · Jul 13, 2026 · 3 filesMessage 45 · ThinInformational 15Details
Commit message · Adam Tucker

Use typed batch firmware version encoding

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
AI analysis · Informational 15/100

This commit updates the firmware's Zcash batch signing result to use a new typed encoding for the firmware version field. It is a routine dependency bump and code adjustment to match a changed SDK API. There is no direct evidence in the commit that this fixes a security vulnerability; it appears to be a correctness or compatibility change.

Lower-priorityClarify firmware version wire encodingby Adam Tucker · c531d791 · Jul 13, 2026 · 1 fileMessage 45 · ThinInformational 15Details
Commit message · Adam Tucker

Clarify firmware version wire encoding

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
AI analysis · Informational 15/100

This commit only changes a code comment to make it clearer where a particular 3-byte version format is used. No actual code behavior was changed, so it cannot introduce or fix a security issue on its own.

AI review queuedClarify firmware version sourceby Adam Tucker · e9b2548c · Jul 13, 2026 · 2 filesMessage 35 · OpaqueInformational 15Details
Commit message · Adam Tucker

Clarify firmware version source

35/100 · OpaqueMessage clarity
✓ Descriptive subject! No meaningful explanatory body
Why it was queued
parser or protocol pathsecond-pass: opaque commit messagesecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit only updates comments and documentation to make clear which firmware version number is sent over the wire for Zcash signing. It does not change any code behavior, so it is not a security fix and does not introduce a vulnerability.

AI review queuedReport firmware version in Zcash batch resultsby Adam Tucker · 38219fde · Jul 13, 2026 · 6 filesMessage 45 · ThinInformational 18Details
Commit message · Adam Tucker

Report firmware version in Zcash batch results

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
parser or protocol pathsecond-pass: security-sensitive path
AI analysis · Informational 18/100

This commit adds the firmware version number to Zcash batch signing responses. It is a feature/documentation change, not a security fix or vulnerability. The version was already included in single-transaction responses; now it is also included in batch responses so wallets can identify which firmware version produced the signatures.

AI review queuedPreserve master software versionby Adam Tucker · 177a1177 · Jul 13, 2026 · 1 fileMessage 35 · OpaqueInformational 15Details
Commit message · Adam Tucker

Preserve master software version

35/100 · OpaqueMessage clarity
✓ Descriptive subject! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
AI analysis · Informational 15/100

This commit only changes the firmware version numbers in a header file (from 12.4.9 beta 2 to 12.5.0 beta 1). It does not modify any executable code, fix any bug, or change any security behavior. There is no security relevance visible in the diff.

AI review queuedperf(zcash): speed up batch processing and show a loading hintby Adam Tucker · be657651 · Jul 13, 2026 · 12 filesMessage 62 · AdequateInformational 19Details
Commit message · Adam Tucker

perf(zcash): speed up batch processing and show a loading hint

62/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 19/100

This commit is a performance and user-experience improvement for Zcash batch transactions on the Keystone 3 hardware wallet. It speeds up processing of multiple Zcash PCZTs by caching decoded viewing keys and spend-authorization keys across the batch, instead of re-deriving them for every transaction. It also adds a loading hint telling users that batch processing may take a few minutes. There is no direct evidence in the commit of a security vulnerability being fixed; the changes appear to be a refactor with added tests and UI feedback.

Lower-priorityfix(zcash): bound batch count before parsingby Adam Tucker · c3c717c9 · Jul 12, 2026 · 3 filesMessage 57 · ThinModerate 61Details
Commit message · Adam Tucker

fix(zcash): bound batch count before parsing

57/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
AI analysis · Moderate 61/100

This commit adds a safety check for Zcash batch transactions on Keystone hardware wallets. Before fully parsing a batch of PCZT (Zcash transaction) data, the firmware now reads the declared number of items and rejects it if it exceeds 50. This prevents the parser from trying to allocate memory for an absurdly large number of items based solely on attacker-controlled input, which could cause memory exhaustion or a crash.

AI review queuedfeat(zcash): use bounded PCZT batches and compact responsesby Adam Tucker · 2a86bb62 · Jul 12, 2026 · 13 filesMessage 62 · AdequateLow 37Details
Commit message · Adam Tucker

feat(zcash): use bounded PCZT batches and compact responses

62/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
signing or wallet pathparser or protocol pathsecond-pass: security-sensitive path
AI analysis · Low 37/100

This commit refactors how Keystone's Zcash batch signing feature handles large batches. It replaces an older message envelope with a new format that uses the upstream Zcash PCZT batch signer, adds a 512 KiB total size cap, raises the maximum PCZT count from 35 to 50, and returns only compact signatures instead of full signed PCZT data. It also updates several Zcash Rust dependencies from a fork to upstream releases and tightens some digest helpers to handle missing optional fields safely. The changes are framed as a feature improvement and hardening, not as a fix for a known active vulnerability.

Lower-prioritydocs(zcash): clarify FFI memory ownershipby Adam Tucker · 94e77e73 · Jul 11, 2026 · 1 fileMessage 57 · ThinInformational 12Details
Commit message · Adam Tucker

docs(zcash): clarify FFI memory ownership

57/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
AI analysis · Informational 12/100

This commit only changes a code comment in a Zcash-related Rust file. It does not modify any actual program logic, function behavior, or memory-management code. The new comment explains more clearly that certain memory must be freed through a specific C-style free function rather than Rust's normal cleanup, and warns that leaving the function early after partial conversion would leak memory. There is no code change to fix or introduce a leak.

Lower-priorityfix(zcash): make migration review order independentby Adam Tucker · 44d6d428 · Jul 11, 2026 · 3 filesMessage 62 · AdequateLow 42Details
Commit message · Adam Tucker

fix(zcash): make migration review order independent

62/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
AI analysis · Low 42/100

This commit rewrites how a Zcash wallet's firmware summarizes batches of migration transactions on its screen. Previously, the code assumed the first message in a batch was an ordinary transaction and all later messages were migration-style transfers, then folded only those later messages into a compact summary. The new code inspects every message individually and decides by its actual contents whether it can be compacted. This makes the review order-independent and avoids mis-classifying a batch when the first message is actually a migration or when there are multiple ordinary transactions. The change is a defensive refactor rather than a clear-cut vulnerability patch, but the old design could have led to misleading on-device transaction summaries if a batch were presented in an unexpected order.