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 32 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.

AI review queuedfix the verifying ps hang on wrong password in btc only multi-sigby aaron · 2037a16a · Jul 17, 2026 · 2 filesMessage 50 · ThinLow 30Details
Commit message · aaron

fix the verifying ps hang on wrong password in btc only multi-sig

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: broader security terminologysecond-pass: security-sensitive path
AI analysis · Low 30/100

This commit fixes a user-interface bug in the Bitcoin-only multi-sig wallet screens of the Keystone 3 hardware wallet firmware. If a user entered the wrong device-unlock password while the lock screen was shown over these multi-sig views, the lock screen would get stuck showing 'Verifying' instead of returning to the password entry and showing the failed-attempt count. The fix makes the wrong-password result update the lock screen, matching the correct-password path. It is a denial-of-usability issue, not a theft-of-funds vulnerability.

AI review queuedupdate the font charactarby aaron · 1efd952c · Jul 17, 2026 · 9 filesMessage 35 · OpaqueInformational 15Details
Commit message · aaron

update the font charactar

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 is a routine font update for the Keystone 3 hardware wallet firmware. It adds, removes, and reorders Chinese, Japanese, and Korean font glyphs (for example adding characters meaning 'weak' and 'rights') and updates the corresponding translation data file. There is no code logic change and no security-relevant behavior.

AI review queuedupdate the mutiple language fontby aaron · 003beb9c · Jul 17, 2026 · 24 filesMessage 45 · ThinInformational 15Details
Commit message · aaron

update the mutiple language font

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
second-pass: unusually broad change
AI analysis · Informational 15/100

This commit is a routine update of the on-device font files for multiple languages (Chinese, German, Spanish, Japanese, Korean, Russian). It adds a few new characters, tweaks some glyph bitmaps, and adjusts the generated font metadata to match newer LVGL version conventions. There is nothing in the changes that affects security, cryptography, wallet logic, or user data handling.

AI review queuedfeat: modify Lace Walletby soralit · 468209b6 · Jul 16, 2026 · 1 fileMessage 40 · ThinInformational 15Details
Commit message · soralit

feat: modify Lace Wallet

40/100 · ThinMessage clarity
✓ Subject identifies a change✓ 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 15/100

This commit is a routine user-interface update for the Lace wallet integration. It moves the Lace wallet icon into the 'Bitcoin Wallets' submenu, removes a separate Lace entry that previously showed both Bitcoin and Cardano support, and now lists Lace only under Cardano. There is no security-relevant change in the diff.

AI review queuedchore: add lace walletby soralit · 1a46dcad · Jul 15, 2026 · 9 filesMessage 40 · ThinInformational 15Details
Commit message · soralit

chore: add lace wallet

40/100 · ThinMessage clarity
✓ Subject identifies a change✓ 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 15/100

This commit adds support for a new cryptocurrency wallet called 'Lace' to the Keystone hardware wallet firmware. It includes a new icon, a new entry in the wallet list, and logic to recognize Lace as a Cardano (ADA) and Bitcoin (BTC) wallet. There is no indication of a security fix or vulnerability.

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.

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.

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.

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.

AI review queuedfeat(zcash): aggregate migration reviewby Adam Tucker · 7770a70a · Jul 11, 2026 · 8 filesMessage 57 · ThinLow 33Details
Commit message · Adam Tucker

feat(zcash): aggregate migration review

57/100 · ThinMessage clarity
✓ 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 · Low 33/100

This commit adds a new compact review screen for batches of Zcash 'migration' transactions (moving funds from the Orchard pool to the newer Ironwood pool). It also fixes a small user-experience issue: the device will no longer auto-lock while a long batch of transactions is loading or being signed. The change is a feature addition with defensive checks, not a fix for an active security bug.

AI review queuedfix(zcash): scrub cached spend authorizing keysby Adam Tucker · e05af65a · Jul 11, 2026 · 3 filesMessage 57 · ThinModerate 60Details
Commit message · Adam Tucker

fix(zcash): scrub cached spend authorizing keys

57/100 · ThinMessage clarity
✓ 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 · Moderate 60/100

This commit fixes a security hygiene issue in the Keystone hardware wallet's Zcash signing code. Previously, secret 'spend authorizing keys' were cached in ordinary memory and could remain there after use. The patch adds explicit memory scrubbing (zeroization) when keys are replaced or no longer needed, reducing the chance that an attacker with physical or debug access could recover leftover secret key material.

AI review queuedRemove obsolete NU6.3 cfgby Adam Tucker · a99e518e · Jul 10, 2026 · 9 filesMessage 45 · ThinLow 28Details
Commit message · Adam Tucker

Remove obsolete NU6.3 cfg

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

This commit removes a compile-time feature flag called NU6.3 from the Zcash code in the Keystone hardware wallet firmware. Previously, Ironwood (a newer Zcash shielded pool) and v6 transaction support were only compiled when the 'zcash_unstable="nu6.3"' flag was set. The change makes that code always compile and run, effectively enabling Ironwood/v6 support by default. There is no direct evidence in the commit that this fixes a security vulnerability; it appears to be a cleanup that promotes experimental code to stable. However, enabling new consensus code paths always carries some risk that previously-unreachable bugs or parsing differences could now affect real transactions.

AI review queuedFormat Zcash PCZT codeby Adam Tucker · a759792c · Jul 10, 2026 · 3 filesMessage 28 · OpaqueInformational 15Details
Commit message · Adam Tucker

Format Zcash PCZT code

28/100 · OpaqueMessage clarity
✓ Subject identifies a change! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: opaque commit messagesecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit only reformats existing Zcash PCZT code—adjusting line breaks, indentation, and whitespace. No logic, behavior, or security checks were changed.

AI review queuedtest(zcash): trim legacy v6 rejection commentsby Adam Tucker · feba63ed · Jul 9, 2026 · 3 filesMessage 67 · AdequateInformational 15Details
Commit message · Adam Tucker

test(zcash): trim legacy v6 rejection comments

67/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Mentions testing or verification! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit only removes explanatory comments from three Zcash test files. No code behavior, logic, or security checks were changed. It is a documentation cleanup inside test code and has no security relevance.

AI review queueddocs(zcash): say the anchor-clearing test mirrors the wallet's batch redactionby Adam Tucker · fd1a8f08 · Jul 9, 2026 · 1 fileMessage 95 · StrongInformational 15Details
Commit message · Adam Tucker

docs(zcash): say the anchor-clearing test mirrors the wallet's batch redaction

Reword the comment above the clear_anchor call in test_sign_pczt_ironwood_spend
so it reads like its lib.rs siblings: the redaction rebuilds the anchor-elided
request the wallet transmits for batch children, with the full-anchor PCZT as
its own oracle. Keeps both facts: the v6 Ironwood sighash does not commit the
anchor, and a client-provided anchor may equally stay on the wire.

95/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Mentions testing or verification
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit only rewords a code comment in a Zcash test file. No program logic, behavior, or security properties changed. It is a documentation-only edit.

AI review queueddocs(zcash): fix stale anchor-redaction rationale in the Ironwood sign testby Adam Tucker · 5c8da744 · Jul 9, 2026 · 1 fileMessage 95 · StrongInformational 15Details
Commit message · Adam Tucker

docs(zcash): fix stale anchor-redaction rationale in the Ironwood sign test

The comment predates the upstream-main repin: the pczt updater has
post-parse anchor setters again (set_ironwood_anchor and friends), and
parse no longer substitutes a placeholder for a missing anchor - the
field is simply optional. State the actual invariant: the v6 sighash
does not commit the anchor, so the elided form signs identically, and a
client-provided anchor is equally valid left on the wire.

95/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Mentions testing or verification
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit only updates a code comment in a Zcash test file. It corrects an outdated explanation about why an anchor value can be removed during signing. No code behavior was changed, and there is no security issue present in the diff.

AI review queuedchore(zcash): repin pczt stack to the upstream 2557 teststackby Adam Tucker · a4fe0d5a · Jul 8, 2026 · 10 filesMessage 62 · AdequateLow 29Details
Commit message · Adam Tucker

chore(zcash): repin pczt stack to the upstream 2557 teststack

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 · Low 29/100

This commit updates the Zcash PCZT (Partially Created Zcash Transaction) library stack to a newer upstream test revision. It is a maintenance/dependency bump that adapts the firmware's code to new library APIs, adds error handling around serialization, and adjusts how Orchard/Ironwood transaction fields are handled for transaction signing. There is no direct evidence in the commit that this fixes a known security vulnerability; it appears to be a routine dependency repin to keep up with an upstream test stack.

AI review queuedfeat(zcash): sign checked PCZTs with a single parse and in-memory postflightby Adam Tucker · 5354d2cf · Jul 7, 2026 · 2 filesMessage 62 · AdequateLow 29Details
Commit message · Adam Tucker

feat(zcash): sign checked PCZTs with a single parse and in-memory postflight

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 · Low 29/100

This commit adds a new, more efficient way to sign Zcash shielded transactions on Keystone hardware wallets. Instead of parsing and serializing the transaction multiple times, it parses once, signs in memory, and verifies signatures before returning the result. The change also preserves the checked/verified transaction data through the signing process rather than discarding it. There is no clear security bug being fixed; it appears to be a hardening and performance improvement for the Zcash cypherpunk feature.

AI review queuedadd 2.5.0 changelogby bianminyan · 281163f3 · Jun 26, 2026 · 2 filesMessage 38 · OpaqueInformational 15Details
Commit message · bianminyan

add 2.5.0 changelog

38/100 · OpaqueMessage clarity
✓ Subject identifies a change✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
documentation-only discountsecond-pass: opaque commit message
AI analysis · Informational 15/100

This commit only adds text to two changelog files describing a new firmware version (2.5.0). It does not change any executable code, configuration, or security controls. The changelog mentions improvements to dice-roll entropy validation and unlock passcode verification, but no actual code changes are present in this commit, so it cannot introduce or fix a vulnerability on its own.

AI review queuedfix: reject all shielded PCZTs in the legacy transparent-only pathby Adam Tucker · c0faa647 · Jun 23, 2026 · 4 filesMessage 85 · StrongHigh 72Details
Commit message · Adam Tucker

fix: reject all shielded PCZTs in the legacy transparent-only path

The legacy multi_coins check/parse/sign path only handles transparent
data, but pczt_requires_cypherpunk_support only rejected V6/Ironwood PCZTs.
A v5 PCZT carrying an Orchard or Sapling bundle slipped through: its
transparent part was validated and signed while the shielded bundle was
silently ignored. Extend the guard to also reject Orchard actions and
Sapling spends/outputs so the boundary is strictly transparent-only.

85/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context
Why it was queued
defensive validationsigning or wallet pathsecond-pass: near security thresholdsecond-pass: security-sensitive path
AI analysis · High 72/100

This commit fixes a security gap in the Keystone hardware wallet's Zcash transaction handling. The older 'legacy' code path was only designed to inspect and sign transparent (non-private) Zcash transactions, but its safety check only blocked the newest V6 and Ironwood transaction types. A version 5 transaction containing hidden Sapling or Orchard transfers could slip past the check. The wallet would then validate and sign only the visible transparent portion, while silently ignoring the shielded part. That could let a malicious or buggy app trick a user into approving a transaction that also moves funds privately. The patch now rejects any transaction containing Sapling or Orchard shielded data in the legacy path, forcing it to use the newer 'cypherpunk' path that understands those formats.

AI review queuedrefactor: thread ShieldedPool enum instead of stringly pool labelsby Adam Tucker · 28380dac · Jun 23, 2026 · 4 filesMessage 85 · StrongInformational 14Details
Commit message · Adam Tucker

refactor: thread ShieldedPool enum instead of stringly pool labels

Replace the `pool_label: &str` threaded through the Orchard/Ironwood check,
parse, and sign helpers with the existing `ShieldedPool` enum, lifted into
`pczt/mod.rs` as its shared home. Rename `check_orchard` to the pool-agnostic
`check_shielded_bundle`. Each helper derives the label from the enum
internally, so all error messages are unchanged.

Addresses review feedback that the customizable string pool label was
confusing next to the always-Orchard bundle type, and that an Orchard-named
helper was being used for the Ironwood pool.

85/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 14/100

This is a code cleanup change with no security impact. It replaces free-form text labels like "Orchard" and "Ironwood" with a fixed enum type when checking, parsing, and signing Zcash shielded transaction bundles. The actual behavior and error messages stay the same; only the internal code structure is improved.

AI review queuedAdd Ironwood PCZT supportby Adam Tucker · c28575be · Jun 23, 2026 · 9 filesMessage 68 · AdequateModerate 59Details
Commit message · Adam Tucker

Add Ironwood PCZT support

Add cypherpunk Zcash PCZT parse/check/sign support for v6/Ironwood while
preserving existing Orchard and transparent behavior. Legacy multi_coins
paths reject v6/Ironwood PCZTs instead of mis-handling them. Signed
responses stamp the firmware version and redact optional PCZT fields
(including Ironwood bundle data) before returning QR-sized results.

Restores, against the new builder API, the runtime-constructed regression
tests dropped during the dependency bump:
- internal-OVK change-spoofing rejection (parse + check)
- empty Sapling bundle with non-zero value sum rejection
- Orchard spend/output value + ownership decode (parse + check)

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Provides detailed explanatory context✓ Mentions testing or verification
Why it was queued
signing or wallet pathsecond-pass: broader security terminologysecond-pass: security-sensitive path
AI analysis · Moderate 59/100

This commit adds support for a new Zcash transaction format called Ironwood PCZT to the Keystone hardware wallet firmware. It also hardens the wallet against several real attack scenarios: legacy code paths now refuse to handle the new format (instead of mis-processing it), a bug where an attacker could make a payment to themselves look like the user's own change is now blocked, and malformed transaction bundles with contradictory value sums are rejected. The changes are mostly defensive and include many new regression tests.