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 15 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-prioritydocs: update changelog for v2.4.4by bianminyan · 6e77f429 · May 25, 2026 · 3 filesMessage 57 · ThinInformational 15Details
Commit message · bianminyan

docs: update changelog for v2.4.4

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 15/100

This commit only updates the product changelog and bumps the firmware build version number from 2.4.2 to 2.4.4. It contains no code changes, no bug fixes, and no security-related modifications. The changelog mentions routine items such as removing a wallet connection entry, adding a Zcash backup feature, and fixing a loading issue, but these are just documentation notes for a release; the actual code changes are not present in this commit.

Security candidateleap sunsetby ww3512687 · 920e9830 · May 22, 2026 · 23 filesMessage 0 · OpaqueInformational 15Details
Commit message · ww3512687

leap sunset

0/100 · OpaqueMessage clarity
! Very short subject! Too few words to establish purpose! No meaningful explanatory body! Opaque security-relevant change
Why it was queued
cryptography-sensitive pathsigning or wallet pathparser or protocol path
AI analysis · Informational 15/100

This commit removes support for the 'Leap' wallet from the Keystone 3 firmware. It deletes the Leap wallet icon and asset, removes Leap-related text strings from Chinese, Japanese, and Korean font files, and updates the Rust dependency versions for the UR (Uniform Resources) parsing libraries used by the firmware. There is no indication of a security fix or vulnerability being patched.

AI review queuedfix(ton): update bitstream io usageby soralit · e49d48df · May 22, 2026 · 8 filesMessage 57 · ThinLow 30Details
Commit message · soralit

fix(ton): update bitstream io usage

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
parser or protocol pathsecond-pass: security-sensitive path
AI analysis · Low 30/100

This commit updates the TON (The Open Network) cell serialization code in the Keystone 3 firmware to use a newer version of the bitstream-io library. The changes are mostly mechanical renames of method calls (e.g., write/read becomes write_var/read_var) to match the new library's API. There is no explicit security fix described in the commit, and the diff alone does not show a patched vulnerability. It appears to be a dependency maintenance change.

Lower-priorityfix: ignore disabled assets in manage countby soralit · 14ac16f7 · May 22, 2026 · 2 filesMessage 57 · ThinInformational 18Details
Commit message · soralit

fix: ignore disabled assets in manage count

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 18/100

This commit fixes a UI counting bug in the Keystone hardware wallet's home screen. Previously, disabled cryptocurrency assets were still being counted when calculating how many wallets were shown in the asset management view. The fix ensures disabled assets are excluded from the count and their checkbox state is cleared. There is no direct evidence this is a security vulnerability—it's primarily a user-interface correctness fix.

Security candidatefix: regenerate missing zcash public infoby soralit · 91f2a356 · May 20, 2026 · 1 fileMessage 57 · ThinLow 42Details
Commit message · soralit

fix: regenerate missing zcash public info

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
cryptography-sensitive path
AI analysis · Low 42/100

This commit adds a safety check for the Keystone 3 hardware wallet's Zcash account setup. If the stored Zcash public key information is missing or not a valid hex string, the wallet now regenerates it. This prevents the wallet from trying to use corrupted or incomplete Zcash key data, which could cause errors or display wrong addresses. It is a defensive fix, not a clear exploit patch.

Security candidatefeat: defaultly use 20 words for web3 and bitcoin firmwareby soralit · 001c946b · May 20, 2026 · 1 fileMessage 62 · AdequateInformational 16Details
Commit message · soralit

feat: defaultly use 20 words for web3 and bitcoin firmware

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
cryptography-sensitive path
AI analysis · Informational 16/100

This commit changes the default backup seed phrase length for the standard firmware from 33 words to 20 words. SLIP39 seed phrases can use different word counts, and 20 words still provides substantial entropy. There is no direct evidence in the commit or supplied references that this change fixes a security vulnerability; it appears to be a product/usability change.

Lower-priorityfeat: modify zcash uiby soralit · bdee1049 · May 20, 2026 · 4 filesMessage 40 · ThinInformational 12Details
Commit message · soralit

feat: modify zcash ui

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

This commit is a user-interface cleanup for Zcash and Shamir backup flows. It removes some on-screen explanations about 20-word versus 33-word Shamir shares, reuses an existing notice window instead of a separate hint box, and makes Zcash support checks apply only to a special 'cypherpunk' build variant. There is no direct evidence of a security vulnerability being fixed.

Security candidatefix: update memory management in async tasks and GUI auth code handlingby ww3512687 · ec2eb2b8 · May 18, 2026 · 4 filesMessage 67 · AdequateModerate 59Details
Commit message · ww3512687

fix: update memory management in async tasks and GUI auth code handling

67/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Names security-relevant behavior explicitly! No meaningful explanatory body
Why it was queued
authentication path
AI analysis · Moderate 59/100

This firmware update fixes two categories of bugs in a cryptocurrency hardware wallet's background task system and web-authentication code display. First, it adds a flag so the background task knows whether it allocated a memory buffer itself (and must free it) or was given a pointer by the caller (which it must not free). Before this fix, the task could free memory it did not own, leading to crashes or corrupted memory. Second, it hardens the web-authentication code calculation by checking whether memory allocation succeeded, clearing the private RSA key from memory after use, and correctly freeing the generated auth code string. It also removes two lines that incorrectly set freed pointers to NULL inside a cleanup function. The changes are defensive and reduce the risk of memory corruption and sensitive key material lingering in RAM, but the commit message frames them as generic fixes rather than as a security advisory.

Lower-priorityfix(zcash): error handling in setup functionsby John Boyd · 8a4f48ed · Apr 25, 2026 · 1 fileMessage 80 · StrongModerate 59Details
Commit message · John Boyd

fix(zcash): error handling in setup functions

- Check return values of SetupZcashCache/SetupZcashSFP and
AccountPublicInfoSwitch in CreateNewAccount and VerifyPasswordAndLogin
- Fix seed buffer leaks in SetupZcashSFP and SetupZcashCache error paths
- Fix wrong variable (response -> responseSFP) in SetupZcashCache
SFP error path
- Free response objects before returning on error
- Clear UFVK buffer after use
- Check for NULL encrypted UFVK before decryption

Co-authored-by: Daira-Emma Hopwood <daira@jacaranda.org>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

80/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context
AI analysis · Moderate 59/100

This commit fixes several bugs in the Zcash wallet setup code for a hardware wallet. Previously, the code could ignore errors when setting up Zcash data, leak sensitive seed material in memory, use the wrong error variable, and try to decrypt a missing encrypted key. These are reliability and security hygiene issues rather than a single obvious remote exploit, but they could let a device finish account creation or login even though Zcash keys were not set up correctly, and could leave secret seed bytes in memory longer than intended.

Lower-priorityfix(gui): guard checkbox handlers against clicks on non-checkbox childrenby Daira-Emma Hopwood · 4fc2407e · Apr 25, 2026 · 2 filesMessage 85 · StrongLow 35Details
Commit message · Daira-Emma Hopwood

fix(gui): guard checkbox handlers against clicks on non-checkbox children

SelectCheckBoxHandler in gui_create_share_widgets.c and
gui_single_phrase_widgets.c could be called with a non-checkbox
target (e.g. a label or other child of the hint box). Add a type
check to return early if the clicked object is not a checkbox.

Co-authored-by: Daira-Emma Hopwood <daira@jacaranda.org>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

85/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context
AI analysis · Low 35/100

This commit fixes a user-interface bug in the Keystone 3 hardware wallet firmware. A screen that lets users pick options from checkboxes could crash or behave incorrectly if the user tapped on a label or other non-checkbox element inside the same area. The fix adds a simple safety check so the code only reacts when a real checkbox is tapped. It is a defensive hardening change rather than a clear exploit, but in a wallet firmware any UI crash during seed-phrase or share creation could be security-relevant because it might interrupt a sensitive backup workflow.

Security candidatefeat(shamir): default to 33-word shares with coin-support descriptionsby John Boyd · 744ef606 · Apr 25, 2026 · 3 filesMessage 85 · StrongInformational 20Details
Commit message · John Boyd

feat(shamir): default to 33-word shares with coin-support descriptions

Change the default Shamir share word count from 20 to 33 words
(SLIP39_DEFAULT_MNEMONIC_WORDS), since 33-word shares support all
coins including Zcash.

Add descriptions to the word-count picker explaining which coins each
option supports ("Supports most coins" vs "Also supports Zcash"), with
translations for en, de, es, ja, ko, ru, and zh_CN. The translations
were partially machine-assisted and need human review: @daira knows
German and some Spanish but no Russian, Japanese, Chinese, or Korean;
the Japanese, Korean, Russian, and Simplified Chinese translations
were by Claude. All translations were checked for consistency with
existing translations in their use of the technical terms 'wallet',
'coin', 'Shamir share', and 'word'.

Co-authored-by: Daira-Emma Hopwood <daira@jacaranda.org>
Co-authored-by: Claude Opus 4.6/4.7 (1M context) <noreply@anthropic.com>

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
cryptography-sensitive path
AI analysis · Informational 20/100

This commit changes the default Shamir backup share length from 20 words to 33 words and adds on-screen explanations about which cryptocurrencies each option supports. It is a usability and compatibility improvement, not a security fix or vulnerability. The code also tightens a few display routines so the word count is shown correctly regardless of the selected value.

Lower-priorityfix(zcash): AES tests must use non-trivial seedby John Boyd · db18fb88 · Apr 25, 2026 · 1 fileMessage 90 · StrongInformational 12Details
Commit message · John Boyd

fix(zcash): AES tests must use non-trivial seed

The ensure_non_trivial_seed check rejects all-zeros seeds, which broke
these tests. Use a valid seed and make the decrypt test a proper
round-trip instead of relying on hardcoded ciphertext.

90/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Mentions testing or verification
AI analysis · Informational 12/100

This commit updates automated test code for Zcash AES encryption so the tests use a realistic seed instead of an all-zeros seed. The all-zeros seed was recently rejected by a new safety check, causing the tests to fail. The change only affects unit tests and does not alter the actual wallet firmware behavior.

Security candidatefeat(zcash): enable Zcash for SLIP 39 wallets with 33-word sharesby John Boyd · 2729141b · Apr 25, 2026 · 9 filesMessage 100 · StrongLow 29Details
Commit message · John Boyd

feat(zcash): enable Zcash for SLIP 39 wallets with 33-word shares

Previously Zcash was disabled for all SLIP 39 wallets, due to an
incompatibility with the 20-word scheme. This commit relaxes that
restriction, allowing Zcash use on SLIP 39 wallets when using 33-word
shares.

Zcash requires 256-bit seed entropy to avoid the seed becoming a
security bottleneck, potentially enabling multi-target attacks below
2^125 operations. (The same argument applies to BIP 32-like hierarchical
key derivation in general —preserving full entropy in the chain code
and public key at any tree node requires 256 bits to start with— but
for other coins this has not been a specified requirement, or depended
on in their security analysis.)

SLIP 39 requires all implementations to support both 128-bit and 256-bit
master secrets, so compliant software should accept 33-word shares.

- Add IsZcashSupportedForCurrentMnemonic() to centralize entropy check
- Use conditional checks in both CYPHERPUNK_VERSION and WEB3_VERSION
(home widget, connect wallet coin list, public key derivation in
AccountPublicSavePublicInfo and TempAccountPublicInfo)
- Call SetupZcashCache and SetupZcashSFP in CreateNewSlip39Account for
supported wallets
- Update Rust error messages to describe the actual requirement
- Show notice in asset manager when 20-word shares lack Zcash support
- Fix bug in AccountPublicHomeCoinGet where the "manage" JSON key was
omitted (rather than set to false) for Zcash when the mnemonic type
was not BIP 39

Co-authored-by: Daira-Emma Hopwood <daira@jacaranda.org>
Co-authored-by: Claude Opus 4.6/4.7 (1M context) <noreply@anthropic.com>

100/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Explains rationale or failure mode✓ Names security-relevant behavior explicitly
Why it was queued
explicit security languageentropy or randomnesssecret or key materialcryptography-sensitive pathsigning or wallet path
AI analysis · Low 29/100

This commit changes how the Keystone hardware wallet enables Zcash for SLIP 39 wallets. Previously, Zcash was completely disabled for all SLIP 39 wallets. Now it is allowed when the SLIP 39 shares are 33 words long (256-bit entropy), but still disabled for 20-word shares (128-bit entropy). The change is driven by a cryptographic requirement: Zcash's security analysis assumes the wallet seed has at least 256 bits of entropy. The patch also fixes a small UI bug where the 'manage' option for Zcash was missing entirely for non-BIP39 mnemonics, instead of being shown as disabled.

Security candidatefix(monero): set 'manage' JSON key explicitly when mnemonic type is not BIP 39by Daira-Emma Hopwood · d03cab3e · Apr 25, 2026 · 3 filesMessage 85 · StrongLow 35Details
Commit message · Daira-Emma Hopwood

fix(monero): set 'manage' JSON key explicitly when mnemonic type is not BIP 39

In AccountPublicHomeCoinGet, the "manage" JSON key was omitted (rather
than set to false) for XMR when the mnemonic type was not BIP 39. Set
it explicitly via a new IsMoneroSupportedForCurrentMnemonic() helper,
which centralizes the Monero mnemonic-type check and matches the
pattern of IsZcashSupportedForCurrentMnemonic().

Co-authored-by: Daira-Emma Hopwood <daira@jacaranda.org>
Co-authored-by: Claude Opus 4.6/4.7 (1M context) <noreply@anthropic.com>

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
cryptography-sensitive path
AI analysis · Low 35/100

This commit fixes a small but meaningful bug in the Keystone 3 hardware wallet's account information output. Previously, when showing details for Monero (XMR), the 'manage' field was completely left out if the wallet's mnemonic type was not BIP 39. Now it is always included and set to false in that case. The change makes the JSON response predictable and consistent, which can help companion apps or users avoid misinterpreting whether the coin can be managed. It is a defensive fix rather than an obvious exploit, but omitting a boolean field could lead a connected app to make unsafe assumptions.

Security candidatefix buildby ww3512687 · 5c6b0014 · Apr 24, 2026 · 1 fileMessage 0 · OpaqueInformational 15Details
Commit message · ww3512687

fix build

0/100 · OpaqueMessage clarity
! Very short subject! Too few words to establish purpose! No meaningful explanatory body! Opaque security-relevant change
Why it was queued
boot or update path
AI analysis · Informational 15/100

This commit is a straightforward build fix for a firmware configuration file. It adds conditional preprocessor definitions so that different product build variants (Web3, BTC-only, Cypherpunk) each define a required constant, LEGACY_USB_PAD_LEN, with values of either 1 or 2. Without this change, some build configurations would fail because the constant was missing. There is no security-relevant change in behavior visible in the diff.

Lower-priorityfix: btc multisig styleby soralit · 3ae41290 · Apr 23, 2026 · 1 fileMessage 40 · ThinInformational 15Details
Commit message · soralit

fix: btc multisig style

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 is a visual layout fix for the Bitcoin multi-signature transaction screen. It changes how a 'signing status' box is positioned so it appears below the previous element instead of always starting at the top-left corner. There is no security-relevant change.

Security candidatefix buildby ww3512687 · 6917368e · Apr 23, 2026 · 1 fileMessage 0 · OpaqueInformational 15Details
Commit message · ww3512687

fix build

0/100 · OpaqueMessage clarity
! Very short subject! Too few words to establish purpose! No meaningful explanatory body! Opaque security-relevant change
Why it was queued
boot or update path
AI analysis · Informational 15/100

This is a one-line build fix that changes a default padding length constant from 1 to 2 in a legacy USB web-update feature. There is no indication of a security problem, and the change itself does not introduce or fix any vulnerability visible in the diff.

Lower-priorityfix avax from error message displayby ww3512687 · 13033fe4 · Apr 23, 2026 · 1 fileMessage 45 · ThinInformational 18Details
Commit message · ww3512687

fix avax from error message display

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

This commit fixes a simple UI bug in the Avalanche (AVAX) transaction review screen. The code was accidentally passing the recipient's address length where the sender's address length should go, which could cause the sender's address to be displayed incorrectly or truncated on the hardware wallet screen. It does not appear to affect transaction signing logic or funds security.

Lower-prioritydocs: update changelog for v2.4.2by bianminyan · 88104548 · Apr 21, 2026 · 2 filesMessage 57 · ThinInformational 15Details
Commit message · bianminyan

docs: update changelog for v2.4.2

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
documentation-only discount
AI analysis · Informational 15/100

This commit only updates the project's changelog documents (in English and Chinese) to describe features and improvements included in firmware version 2.4.2. No source code, configuration, or executable files were changed. There is no security-relevant code modification to review.

Lower-priorityfix: zcash checksby soralit · c619fa58 · Apr 21, 2026 · 2 filesMessage 40 · ThinModerate 67Details
Commit message · soralit

fix: zcash checks

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

This commit fixes a missing security check in the Zcash PCZT (Partially Created Zcash Transaction) verifier for the Keystone 3 hardware wallet. Previously, when a transaction output could be decrypted with an internal outgoing viewing key (a key meant for change/internal addresses), the code did not verify that the output actually belonged to the wallet. This could allow a maliciously crafted transaction to trick the wallet into accepting an external output as if it were internal/change. The patch now checks that any output recoverable with an internal OVK is actually a wallet-owned Orchard address, and also considers the transparent internal OVK. The commit message is just 'fix: zcash checks' and does not disclose this as a security issue.

Lower-prioritychore: bump version to 2.4.2by bianminyan · d7791c39 · Apr 21, 2026 · 1 fileMessage 57 · ThinInformational 15Details
Commit message · bianminyan

chore: bump version to 2.4.2

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 15/100

This commit only changes a single version number in a header file, bumping the firmware build version from 2.4.0 to 2.4.2. There are no code changes, no bug fixes, and no security-related content in the diff.

AI review queuedfeat(zcash): use raw firmware version in ZcashAccounts pairing QRby Adam Tucker · e9d96460 · Apr 16, 2026 · 1 fileMessage 85 · StrongInformational 19Details
Commit message · Adam Tucker

feat(zcash): use raw firmware version in ZcashAccounts pairing QR

Switch from GetSoftWareVersionNumber() (display major, flavor suffix) to
the raw [MAJOR, MINOR, BUILD] formatted inline, so the pairing string
matches the byte-level stamp produced by the PCZT signer. Wallets can
now use a single minimum-version constant for both checks.

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 19/100

This commit changes how the Keystone hardware wallet reports its firmware version when pairing with Zcash wallets. Previously it used a function that returned a display-formatted version string (with a flavor suffix). Now it formats the raw major/minor/build numbers directly. The goal is to make the pairing QR code's version string match the version bytes stamped by the PCZT signer, so wallets can use one consistent minimum-version check. There is no direct security vulnerability in the diff itself; it is a compatibility/consistency fix.

Lower-priorityfix: don't translate keywordby soralit · 44fd1676 · Apr 16, 2026 · 3 filesMessage 57 · ThinInformational 19Details
Commit message · soralit

fix: don't translate keyword

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 changes several Bitcoin-related user-interface labels from translated text to fixed English strings. It removes translation entries for technical terms like 'Outpoint', 'Input Reference', 'Unknown', 'Input Ref', and 'Sighash' so they always display in English regardless of the user's language setting. This is a localization/usability fix, not a security patch.

Lower-priorityfix: ui styleby soralit · a925605d · Apr 16, 2026 · 4 filesMessage 40 · ThinInformational 15Details
Commit message · soralit

fix: ui style

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 is a user-interface styling fix. It adds a more compact QR-code popup layout, switches one Bitcoin screen to use that compact layout, tweaks a label font style, and comments out a simulator-only macro. There is no indication of any security bug being fixed.

AI review queuedfix avax parseby ww3512687 · 576282c3 · Apr 16, 2026 · 3 filesMessage 28 · OpaqueLow 42Details
Commit message · ww3512687

fix avax parse

28/100 · OpaqueMessage clarity
✓ Subject identifies a change! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
AI analysis · Low 42/100

This commit fixes how Keystone 3 hardware wallets parse Avalanche (AVAX) transactions. Previously, the code only handled a single derivation path and a single sender address. The update supports multiple input addresses/paths, correctly matches displayed 'from' addresses to their derivation paths, and fixes a UI layout and memory cleanup issue. The main security risk is that a malformed or multi-input AVAX transaction could have been displayed misleadingly, potentially tricking a user into approving a transaction they did not intend to sign.