TZ
← All projectsTrezor

Trezor firmware

Firmware monorepo for Trezor One, Model T, and Safe devices.

BitcoinHardware walletsNormal
Repository coverage

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

1137security candidates374second-pass queue2939AI analyses
278commits · 30 days
710commits · 60 days
1666commits · 180 days
2692commits · 365 days
Backfill bands
Aug 5 → Feb 61298 seen115 candidatesComplete
Feb 6 → Jun 6775 seen58 candidatesComplete
Jun 6 → Jul 6217 seen13 candidatesComplete
Jul 6 → Aug 5360 seen54 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.

67/100 average clarity
650Strong · 80–100
1558Adequate · 60–79
1040Thin · 40–59
7Opaque · 0–39
1security candidate 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.
tychovrahe343134322564
Roman Zeyde679216622372
obrusvit25896236364
PrisionMike11169109272
Andrew Kozlik833481268
Petr Susil1048287
Jakub Janků591838180
Martin Pastyřík26823173
cepetr264106222059
M1nd3r24689227071
Ioan Bizău23076230059
Lukas Bielesch856784067
Analysis record

Published AI watches

Last scanned 59 minutes ago

Informational 15 AI analysisMessage 77 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

fix(core): add new line on Eckhart address mismatch screen

This commit is a cosmetic UI fix for the Trezor hardware wallet's Eckhart layout. It adds a line break so that a support URL appears on its own line when the device shows an address mismatch warning. There is no security-relevant change to…

99cb0ffdby Michal Kazda+1−01 file
No security note in commit
Informational 18 AI analysisMessage 85 · Strong
TZ TrezorTrezor firmware BitcoinHardware wallets

fix(core): use buttons__cancel in Delizia menu to cancel PIN setup

This is a tiny user-interface wording fix in the Trezor hardware wallet firmware. It changes the label on one menu button from a long translated phrase ('cancel setup') to a shorter generic word ('Cancel') so that translations fit on scree…

UI wording change onlyNo logic or cryptographic changeNo changelog entry (suggests minor fix)
7a1b8121by Michal Kazda+1−11 file
No security note in commit
Informational 15 AI analysisMessage 85 · Strong
TZ TrezorTrezor firmware BitcoinHardware wallets

build(crypto): update `crypto/Makefile` to use `-std=gnu11`

This commit simply changes the C language standard version used to compile the crypto library from GNU C99 to GNU C11. It is a routine build-system update with no security-relevant code change and no functional impact on its own.

fafc7d72by Roman Zeyde+1−11 file
No security note in commit
Low 46 AI analysisMessage 93 · Strong
TZ TrezorTrezor firmware BitcoinHardware wallets

chore(crypto): ensure `secp256k1_context` alignment

This commit fixes how a memory buffer used by the secp256k1 cryptographic library is aligned in memory. The library requires the buffer to be aligned for any data type, but the previous code used a plain byte array, which could be misalign…

Memory alignment hardening for cryptographic context bufferUndefined behavior mitigation in secp256k1-zkp preallocated context creationPotential platform-dependent misalignment risk removed
93860f05by Roman Zeyde+7−11 file
No security note in commit
Informational 15 AI analysisMessage 57 · Thin
TZ TrezorTrezor firmware BitcoinHardware wallets

chore(core): improvements to English copy

This commit is a routine text cleanup for the Trezor hardware wallet's on-screen English messages. It fixes punctuation, removes unnecessary line breaks, and makes small wording tweaks (for example, changing 'PIN will be required' to 'A PI…

1dbc2c3cby Michal Kazda+22−422 files
No security note in commit
Moderate 59 AI analysisMessage 57 · Thin
TZ TrezorTrezor firmware BitcoinHardware wallets

feat(core): app root packet downgrade protection

This commit adds downgrade protection for a new 'app root packet' system in Trezor firmware. Previously, the code had a TODO note saying downgrade protection needed to be considered. The change makes the device remember the timestamps of p…

Replaces a TODO comment ('!@# TODO: Consider downgrade protection') with concrete timestamp-based anti-downgrade checksAdds per-ring timestamp state to prevent rollback of root-of-trust packetsAdds chain_timestamp field and 90-day drift bound to root packet format
4a9cf168by cepetr+335−3112 files
No security note in commit
Moderate 67 AI analysisMessage 62 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

fix(core/rust): discard low-order keys in THP handshake

This commit fixes a cryptographic edge case in Trezor's THP (Trezor Host Protocol) handshake. It now rejects Curve25519 public keys that are all zeros or that produce an all-zero shared secret. A zero public key can cause the Diffie-Hellma…

Curve25519 zero/low-order public key rejection added to DHZero shared-secret output rejected after scalar multiplicationHandshake state machine now transitions to Failed on initiation-response error
429a283dby M1nd3r+45−74 files
No security note in commit
Informational 11 AI analysisMessage 57 · Thin
TZ TrezorTrezor firmware BitcoinHardware wallets

feat(core): enable `ward` with `miniscript`

This commit changes one line in a build configuration file for the Trezor hardware wallet firmware. It adds the 'ward' feature to the existing 'miniscript' feature set. There is no direct evidence in the commit that this is a security fix;…

Single-line Cargo.toml feature flag changeNo code logic modificationNo changelog or security note in commit message
d434a636by Jakub Janků+1−11 file
No security note in commit
Informational 15 AI analysisMessage 80 · Strong
TZ TrezorTrezor firmware BitcoinHardware wallets

feat(core): add `ward` feature flag

This commit adds a new disabled-by-default feature flag called 'ward' to the Trezor firmware build system. It does not change any production firmware behavior; it only wires up a placeholder MicroPython module and build options so that fut…

New feature flag is disabled by default and gated behind optional Cargo featuresCommit message explicitly states intent to exclude WARD from production firmware buildsNew MicroPython module is a stub with no exported functions beyond __name__
7b58e75aby Jakub Janků+55−018 files
No security note in commit
Low 27 AI analysisMessage 57 · Thin
TZ TrezorTrezor firmware BitcoinHardware wallets

feat(core): enable -Wsign-compare

This commit turns on a compiler warning (-Wsign-compare) that catches places where signed and unsigned numbers are compared, and fixes the resulting warnings across the Trezor firmware. Most changes are clean-up casts and loop-index type c…

Compiler warning -Wsign-compare enabled, indicating prior signed/unsigned comparison issuesI/O return-value checks hardened against negative ssize_t values being treated as successPython binding offset/length validation tightened in Monero crypto module
1cc940a4by cepetr+162−15247 files
No security note in commit
Informational 15 AI analysisMessage 62 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

refactor(core): merge passphrase__access_hidden_wallet into passphrase__access_wallet

This commit is a simple user-interface cleanup. It removes one duplicate translation label ('Access hidden wallet') and makes the device use a single, consistent label ('Access wallet') when asking the user to confirm opening a passphrase-…

65402aecby Michal Kazda+2−103 files
No security note in commit
Informational 15 AI analysisMessage 62 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

refactor(core): merge passphrase__hidden_wallet into passphrase__wallet

This commit is a simple user-interface cleanup. It merges two translation labels that both meant 'Passphrase wallet' into a single label, and updates the screens that used the old duplicate label. There is no security-relevant behavior cha…

7ce6887fby Michal Kazda+5−184 files
No security note in commit
Informational 11 AI analysisMessage 72 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

chore(core): update UI fixtures

This commit only updates the expected screenshots (UI fixtures) used in automated tests. The change reflects that multisig account names are now shown on screen during signing for Bitcoin, Bitcoin Cash and Zcash. There is no code change, n…

247390cbby Petr Susil+1873−5891 file
No security note in commit
Low 45 AI analysisMessage 85 · Strong
TZ TrezorTrezor firmware BitcoinHardware wallets

fix(core/bootloader): keep the full block length for block-0 retries

This commit fixes a bug in the Trezor bootloader's firmware-update code. When updating firmware, the first block of data is fetched in two pieces: a small initial 'header prefetch,' then the rest. If a communication error happened and the …

Firmware update reliability bug in bootloaderBlock-0 retry path truncated data before hash verificationHash mismatch caused by buffer offset/size mismatch, not by attacker
dc937ba2by tychovrahe+81−711 file
No security note in commit
Informational 12 AI analysisMessage 62 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

refactor(core/bootloader): separate image upload and image checks

This commit is a code cleanup in the Trezor bootloader. It moves the generic, image-type-agnostic parts of firmware upload (chunk receiving, retry logic, flash erasing/writing, timeouts) into a new reusable module called wf_image_upload.c,…

Refactor only: logic moved, not changed in security-relevant waysSame signature/version/model/downgrade checks remain in firmware-specific handlerSame flash erase/write sequence preserved in generic engine
caab7d9eby tychovrahe+772−4834 files
No security note in commit
Informational 15 AI analysisMessage 57 · Thin
TZ TrezorTrezor firmware BitcoinHardware wallets

chore(core): remove unused trezor_lib/ui feature

This commit removes an unused Rust Cargo feature flag called 'ui' from the Trezor firmware build configuration. It is a cleanup change: the feature was always enabled in practice, so the code now compiles unconditionally. There is no secur…

1436fbc6by cepetr+2−158 files
No security note in commit
Low 27 AI analysisMessage 57 · Thin
TZ TrezorTrezor firmware BitcoinHardware wallets

fix(core/caesar): change confirm middle button

This commit changes how users confirm an Ethereum authorization screen on Trezor's 'Caesar' layout. Previously, the user had to hold down a button to approve; now a simple tap is enough. The change only affects the user-interface interacti…

UI confirmation gesture changed from hold-to-confirm to tap-to-confirmOnly affects EIP-7702 authorization flow on Caesar (T3B1) layoutTest fixture hashes updated for all supported languages
e231cc94by obrusvit+50−502 files
No security note in commit
Informational 15 AI analysisMessage 62 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

refactor(core): merge firmware and unix cargo packages

This commit is a routine internal cleanup that merges two separate build packages (one for real hardware firmware and one for the desktop emulator) into a single package. It moves source files into subdirectories and updates build scripts …

6be32440by cepetr+48−32025 files
No security note in commit
Informational 15 AI analysisMessage 67 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

chore(core): test aes gcm only if enabled

This commit is a minor build/test maintenance change. It adds a feature flag (USE_AES_GCM) so that AES-GCM tests are only run when the feature is actually enabled in a particular firmware build. There is no security fix or vulnerability be…

890aca93by cepetr+13−14 files
No security note in commit
Informational 15 AI analysisMessage 95 · Strong
TZ TrezorTrezor firmware BitcoinHardware wallets

chore(python, tests): add and update GNU licence headers

This commit only adds or updates copyright and GNU license header comments in Python test and tooling files. It makes no changes to executable code, so it cannot introduce a security vulnerability or fix one.

6dc781c2by M1nd3r+1202−203250 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-priorityfeat(core/rust): coerce empty slices to null FatPtrsby matejcik · c0d53744 · Aug 3, 2026 · 1 fileMessage 89 · StrongLow 44Details
Commit message · matejcik

feat(core/rust): coerce empty slices to null FatPtrs

to avoid problems with C interop checking pointer validity separately
from len

89/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body✓ Explains rationale or failure mode
AI analysis · Low 44/100

This commit changes how Trezor firmware passes empty data buffers from Rust code to C code. Previously, an empty Rust slice could produce a pointer that looks like a memory address but points to nothing valid. The patch forces such empty slices to become a standard NULL pointer, which C code is more likely to treat safely. The change is defensive and appears aimed at preventing future bugs or crashes during Rust-to-C communication, rather than fixing an active exploit.

Security candidatefeat: sanity-check seed entropyby Andrew Kozlik · 14aa0b6d · Aug 1, 2026 · 6 filesMessage 77 · AdequateModerate 61Details
Commit message · Andrew Kozlik

feat: sanity-check seed entropy

[no changelog]

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

77/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body✓ Names security-relevant behavior explicitly
Why it was queued
entropy or randomnesscryptography-sensitive pathboot or update path
AI analysis · Moderate 61/100

This commit adds safety checks during wallet creation to make sure the randomness used to generate the recovery seed is long enough and not obviously broken. It also aborts the setup process cleanly if something arrives at the wrong time. These are defensive hardening changes rather than a fix for a known active attack.

Security candidatefeat(common,core,python): improve UX for SEP-41 token invocations of Stellar Asset Contracts.by Jun Luo · 78f7c19e · Aug 1, 2026 · 30 filesMessage 62 · AdequateInformational 23Details
Commit message · Jun Luo

feat(common,core,python): improve UX for SEP-41 token invocations of Stellar Asset Contracts.

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 pathsigning or wallet pathauthentication path
AI analysis · Informational 23/100

This commit improves the on-screen display for certain Stellar smart-contract token operations. It lets a connected wallet tell the Trezor device that a contract call is actually a well-known token transfer or approval, so the user sees a friendlier 'Send' or 'Approve' screen instead of raw technical data. The device independently recalculates the token contract address from the hint and only uses the friendly screen if the address matches; a wrong hint falls back to the raw display. The change is a user-experience enhancement, not a fix for a known security flaw.

Security candidatefix(core/ui): stop dropping the subtitle of the Stellar amount screen on caesar.by Jun Luo · b864ed99 · Aug 1, 2026 · 1 fileMessage 62 · AdequateInformational 18Details
Commit message · Jun Luo

fix(core/ui): stop dropping the subtitle of the Stellar amount screen on caesar.

[no changelog]

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

This commit fixes a user-interface bug in Trezor hardware wallets where the subtitle line on the Stellar cryptocurrency transaction confirmation screen was accidentally dropped. The fix joins the title and subtitle into a single line so users see both pieces of context before signing. It is a UI clarity issue, not a cryptographic or code-execution vulnerability.

Lower-priorityfix(rust/trezor-thp): channel desync after incorrect ACKby Martin Milata · ded1c141 · Jul 31, 2026 · 2 filesMessage 62 · AdequateModerate 58Details
Commit message · Martin Milata

fix(rust/trezor-thp): channel desync after incorrect ACK

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 · Moderate 58/100

This commit fixes a bug in the Trezor hardware wallet's custom transport protocol (THP). Previously, when the device received an incorrect or out-of-order acknowledgment (ACK), it would not advance its internal send state but would still log a generic warning. The fix makes the protocol explicitly reject bad ACK bits and only mark a message as delivered when the ACK bit matches what the device expects. Without the fix, a malformed or replayed ACK could leave the sending side stuck or desynchronized, potentially disrupting communication between the wallet and a host computer.

Lower-priorityfix(rust/trezor-thp): do not retransmit before whole message is sentby Martin Milata · f4962a95 · Jul 31, 2026 · 1 fileMessage 62 · AdequateLow 42Details
Commit message · Martin Milata

fix(rust/trezor-thp): do not retransmit before whole message is sent

[no changelog]

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 fixes a bug in the Trezor hardware wallet's THP (Trezor Host Protocol) Rust code. Previously, the device could start retransmitting a message before it had finished sending all the fragments (pieces) of the current message. The fix makes the device wait until the whole message is sent before it retransmits. This could prevent protocol confusion or errors during communication between the Trezor device and a host computer, especially when retries happen due to network or transport issues.

Lower-priorityfix(core): THP write timeout for single packetby Martin Milata · cac8b637 · Jul 31, 2026 · 1 fileMessage 57 · ThinLow 42Details
Commit message · Martin Milata

fix(core): THP write timeout for single packet

[no changelog]

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

This commit fixes a bug in how the Trezor hardware wallet handles sending data over its USB-like wire protocol. Previously, a single outgoing packet could wait forever for the host to accept it, potentially freezing the device and preventing it from handling other communication channels. The fix adds a 5-second timeout so the device can recover and continue operating. This is a reliability and denial-of-service improvement rather than a fix for theft of funds or keys.

Lower-priorityfix(rust/trezor-thp): packet length edge casesby Martin Milata · d81f5684 · Jul 31, 2026 · 2 filesMessage 57 · ThinLow 46Details
Commit message · Martin Milata

fix(rust/trezor-thp): packet length edge cases

[no changelog]

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

This commit fixes how a Trezor hardware wallet's Rust code handles incoming USB-like packets. Previously, the code resized its receive buffer based on a size value returned after a packet was already accepted, which could lead to incorrect buffer sizing or missed edge cases around packet length. The new code parses the packet's control byte and channel length up front, and only resizes the buffer if the incoming data needs more space. The change is defensive and appears to prevent memory or protocol-handling bugs, but the commit message gives no explicit security claim and no external advisory is supplied.

Lower-prioritytest(rust/trezor-thp): do not retransmit before whole message is sentby Martin Milata · c822c5ac · Jul 31, 2026 · 1 fileMessage 72 · AdequateInformational 12Details
Commit message · Martin Milata

test(rust/trezor-thp): do not retransmit before whole message is sent

[no changelog]

72/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Mentions testing or verification! No meaningful explanatory body
AI analysis · Informational 12/100

This commit only adds a new automated test for the Trezor hardware protocol (THP) channel code. It checks that retransmitting a partially sent message does not cause duplicate or extra packets. There is no change to production code, no bug fix, and no security-relevant behavior change in the firmware itself.

Security candidatechore: guard against insecure PRNG in production buildby Andrew Kozlik · 16e23d34 · Jul 31, 2026 · 3 filesMessage 77 · AdequateLow 42Details
Commit message · Andrew Kozlik

chore: guard against insecure PRNG in production build

[no changelog]

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

77/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body
Why it was queued
entropy or randomnesscryptography-sensitive path
AI analysis · Low 42/100

This commit adds safety guards to prevent a deliberately weak random-number generator from being included in production firmware builds, and stops emulator builds from being labeled as production builds. It does not by itself fix a vulnerability in shipped code; it is a build-time hardening measure against accidental misconfiguration.

Security candidaterefactor(core/rust/crypto): prepare crypto crate for API bindingsby matejcik · eec84034 · Jul 31, 2026 · 14 filesMessage 97 · StrongInformational 20Details
Commit message · matejcik

refactor(core/rust/crypto): prepare crypto crate for API bindings

Introduces the concept of a "copy hazard" separate from unsafety,
replacing pinning. A "copy hazard" is the possibility of Rust
auto-copying owned structs containing sensitive data.

Replaces the "memory" module with "secret", introducing well documented
helper types specifically for copy hazard:
* SecretContext is a zeroizing wrapper over the raw memory. By itself,
not super useful, except that it implements Default for types tagged
with the unsafe marker type ZeroableMemory (ffi contexts).
* SecretContextLock holds a generic DerefMut "lock" over
a SecretContext, forcing the borrow checker to prevent copy hazards:
the compiler is not free to move around memory while a live DerefMut
pointer to it exists. Zeroizes on drop.

Introduces implementation separation on hasher-like structs (that is the
various SHAs plus HMAC):
* "hazardous" base methods are implemented on a SecretContext<ffi_type>,
delegating hazard responsibility to caller,
* non-hazardous methods are implemented on a wrapper struct
(Sha256, Sha3_256 in the followup PR) that takes a SecretContextLock,
which zeroizes on drop, so whenever the computation is either
(a) finished or (b) abandoned, the memory is zeroed before unlocking.

Trezor THP already takes advantage of this split by using hazard methods
directly (with the appropriate comment), without needing a separate
NoPinSha implementations.

This is also preparation for the SDK API bindings, which will introduce
their own secure wrapper for the hasher structs.

97/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
Why it was queued
memory safetycryptography-sensitive path
AI analysis · Informational 20/100

This is a large internal refactor of how Trezor's Rust crypto code handles sensitive memory. It replaces an older pinning-based mechanism with a new 'copy hazard' framework designed to prevent Rust from accidentally duplicating secret data in memory. The change itself is defensive and does not appear to introduce a new vulnerability; rather, it is a hardening measure. However, because it touches low-level cryptographic state handling across many files, any mistake in the new abstraction could theoretically affect how secrets are cleared from memory.

Security candidatefeat(nordic): add nrf/ble functionality to T3T2by tychovrahe · d8b4daa6 · Jul 31, 2026 · 22 filesMessage 57 · ThinInformational 15Details
Commit message · tychovrahe

feat(nordic): add nrf/ble functionality to T3T2

[no changelog]

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 pathauthentication path
AI analysis · Informational 15/100

This commit adds Bluetooth Low Energy (BLE) support for the Trezor T3T2 hardware model. It introduces new board configuration files, pin mappings, build scripts, and firmware binaries for the Nordic nRF54LS05A BLE radio used in T3T2. There is no indication in the commit that this fixes a security bug; it appears to be a feature addition enabling BLE functionality on a new device variant.

AI review queuedfix(nordic): select correct hash algorithm for fw validationby tychovrahe · 66205f1b · Jul 31, 2026 · 4 filesMessage 62 · AdequateLow 41Details
Commit message · tychovrahe

fix(nordic): select correct hash algorithm for fw validation

[no changelog]

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

This commit fixes the firmware build scripts for Trezor's Nordic Bluetooth chip variant so the correct cryptographic hash algorithm (SHA-256) is used when validating firmware images. Previously, the nRF54L-based boards could end up using SHA-512 for the image hash, which would not match the hash algorithm expected by the rest of the Trezor firmware validation chain. That mismatch could prevent the device from accepting legitimate firmware updates or, in a worst-case scenario, create a security inconsistency in how firmware authenticity is checked. The fix moves a hash-algorithm override into a board-specific configuration file and explicitly enables SHA-256 in the bootloader configuration.

Security candidatechore(core): reorganize Cargo.toml feature sectionsby cepetr · 40ce9494 · Jul 31, 2026 · 14 filesMessage 62 · AdequateInformational 15Details
Commit message · cepetr

chore(core): reorganize Cargo.toml feature sections

[no changelog]

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
boot or update path
AI analysis · Informational 15/100

This commit is a housekeeping change that reorganizes the feature sections inside 14 Cargo.toml build configuration files. It reorders, renames, and groups feature flags (such as MCU selection, privilege mode, build options, and selectable components) without changing the actual feature names, their meanings, or the underlying source code. There is no indication this affects device behavior or security.

Security candidatefeat(core/rust): separate trezor-crypto to its own Rust crateby matejcik · 836142c7 · Jul 31, 2026 · 39 filesMessage 62 · AdequateInformational 15Details
Commit message · matejcik

feat(core/rust): separate trezor-crypto to its own Rust crate

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 pathboot or update path
AI analysis · Informational 15/100

This commit is a large but straightforward internal refactoring: the cryptographic code is moved from one Rust crate (`rtl`) into a new dedicated crate (`crypto`), and all project dependencies are updated to point to the new crate. The actual cryptographic algorithms, build flags, and source files remain the same. There is no indication of a security bug fix or a vulnerability being introduced.

Security candidaterefactor(core/embed): reorganize error handlingby matejcik · a9dbab53 · Jul 31, 2026 · 27 filesMessage 90 · StrongInformational 17Details
Commit message · matejcik

refactor(core/embed): reorganize error handling

in rtl:
* provide headers for error_shutdown and __fatal_error (and variants)
* implement all except error_shutdown_ex_n and __fatal_error_n
* if feature error_shims is activated (dependency of test), also
error_shutdown_ex_n and __fatal_error_n are implemented via unix calls

in crypto:
* implement tc_fault_handler by delegating to error_shutdown

in sys:
* add error_handling.c, which provides global implementations of
error_shutdown_ex_n and __fatal_error_n by delegating to
system_exit_error/fatal

in conclusion: the error failure functions are forward-declared
in rtl, and waiting for _someone_ to provide an implementation at link
time

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
Why it was queued
cryptography-sensitive pathboot or update path
AI analysis · Informational 17/100

This commit is a code cleanup that moves how Trezor firmware handles fatal errors and shutdowns between its internal software layers. It does not add new user-facing features or change security protections. The main risk is that reorganizing low-level error paths could accidentally introduce a bug, but the diff itself does not show a vulnerability being fixed or introduced.

Lower-prioritybuild(xbuild): output Rust binding file even if no bindings were specifiedby matejcik · 3675b1da · Jul 31, 2026 · 1 fileMessage 62 · AdequateInformational 15Details
Commit message · matejcik

build(xbuild): output Rust binding file even if no bindings were specified

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

This is a build-system maintenance change. It ensures an empty Rust bindings file is created even when no bindings are requested, and refactors how generated files are compared and written. There is no user-facing or security-relevant behavior change.

AI review queuedfeat(core/sys): expose syslog as a Rust moduleby matejcik · bddf05ee · Jul 31, 2026 · 11 filesMessage 72 · AdequateInformational 15Details
Commit message · matejcik

feat(core/sys): expose syslog as a Rust module

and rewrite trezor_lib to use it as a dependency

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
second-pass: broader security terminology
AI analysis · Informational 15/100

This commit is a routine internal code reorganization. It moves the syslog (system logging) functionality from one Rust module into a new shared 'sys' crate and updates the callers to use the new location. There is no user-facing change, no bug fix, and no security-related behavior change visible in the diff.

Lower-prioritychore(core/rust): drop dbg_println macros from trezor_lib crateby matejcik · b0d40104 · Jul 31, 2026 · 3 filesMessage 77 · AdequateInformational 15Details
Commit message · matejcik

chore(core/rust): drop dbg_println macros from trezor_lib crate

to be re-introduced via sys::syslog when we figure out a good API

77/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body
AI analysis · Informational 15/100

This commit removes internal debug-only printing helpers from the Trezor firmware's Rust code. It is a cleanup change with no security relevance: the removed macros were only active when a special 'debug' build feature was enabled, and they were not used in production code paths.

Lower-priorityci!(core): run tests via xtaskby matejcik · e1699fae · Jul 31, 2026 · 2 filesMessage 70 · AdequateInformational 12Details
Commit message · matejcik

ci!(core): run tests via xtask

this disables unit tests for Rust code! will be re-enabled in a followup
PR but they don't run until then

70/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Mentions testing or verification
AI analysis · Informational 12/100

This change is purely about how automated tests are run in the project's build system. It switches Rust unit tests to run through a helper tool called xtask and, as noted by the developer, temporarily disables those Rust unit tests in CI until a later update. There is no change to the actual wallet firmware code that users rely on, and no security vulnerability is introduced by this commit itself.

Lower-prioritychore(python): add real minimum versions to selected modelsby tychovrahe · c452de40 · Jul 31, 2026 · 4 filesMessage 62 · AdequateInformational 24Details
Commit message · tychovrahe

chore(python): add real minimum versions to selected models

[no changelog]

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 · Informational 24/100

This commit updates the minimum supported firmware version numbers for four Trezor hardware wallet models in the Python client library. The old values were generic placeholders (2.3.0), and the new values reflect the actual earliest firmware version each device model shipped with. This is a housekeeping change that helps the software correctly identify and handle older or mismatched firmware, but it does not by itself fix a security flaw in the firmware.

Security candidaterefactor(python): extract model definition into single fileby tychovrahe · e16fbb27 · Jul 31, 2026 · 19 filesMessage 62 · AdequateInformational 15Details
Commit message · tychovrahe

refactor(python): extract model definition into single file

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
boot or update path
AI analysis · Informational 15/100

This is a code cleanup (refactor) in the Python trezorlib library. It moves Trezor hardware model definitions (names, USB IDs, firmware verification keys, hash settings, UI layout, BLE capability) from several scattered files into one shared module. The actual data values appear unchanged; only the organization of the code changed. There is no indication this fixes a security bug or introduces a vulnerability.

Lower-priorityfix(python): add proper date for stellar exclusionby M1nd3r · e435891e · Jul 31, 2026 · 1 fileMessage 62 · AdequateInformational 15Details
Commit message · M1nd3r

fix(python): add proper date for stellar exclusion

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

This commit fixes a simple typo in a Python project configuration file. The date for an exception allowing a newer Stellar SDK package had an extra '1' in the day ('2026-07-051'), which is not a valid date. The change corrects it to '2026-07-05'. There is no security issue here—just a formatting fix that lets the build dependency rule work as intended.

Lower-priorityfix(python): fix broken HID transportby matejcik · 7f075734 · Jul 31, 2026 · 2 filesMessage 57 · ThinInformational 18Details
Commit message · matejcik

fix(python): fix broken HID transport

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 missing constant in Trezor's Python library that talks to hardware wallets over USB HID. The change adds CHUNK_SIZE = 64, which likely restores normal communication with devices. There is no direct evidence in the commit that this is a security vulnerability, and no exploit path is visible from the diff alone.

Lower-prioritydocs(python): generate changelog for v0.20.2by M1nd3r · 2b88a63c · Jul 31, 2026 · 17 filesMessage 57 · ThinInformational 15Details
Commit message · M1nd3r

docs(python): generate changelog for v0.20.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 is purely a documentation update that generates the changelog for version 0.20.2 of the Trezor Python library. It deletes individual changelog fragment files and adds their contents to the main CHANGELOG.md file. No source code, firmware logic, or security behavior is changed.