TZ
← All projectsTrezor

Trezor firmware

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

BitcoinHardware walletsNormal
Repository coverage

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

1125security candidates372second-pass queue2925AI analyses
295commits · 30 days
701commits · 60 days
1641commits · 180 days
2707commits · 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
635Strong · 80–100
1551Adequate · 60–79
1036Thin · 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 Zeyde675214620372
obrusvit25395235364
PrisionMike10866106272
Andrew Kozlik833481268
Petr Susil202299
Jakub Janků591838180
Martin Pastyřík26823173
cepetr264106222059
M1nd3r24689227071
Ioan Bizău23076230059
Lukas Bielesch856784067
Analysis record

Published AI watches

Last scanned 46 minutes ago

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
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
Informational 15 AI analysisMessage 62 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

refactor(core): move the multisig XPUB title into a translation template

This commit is a straightforward code cleanup: it moves the on-screen title for multisig XPUB screens from hard-coded English text into the device's translation system. The visible text remains essentially the same, and there is no securit…

6d69df16by Michal Kazda+20279−2023911 files
No security note in commit
Informational 15 AI analysisMessage 77 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

refactor(core): render translated strings verbatim in layouts

This is a cosmetic code cleanup. It moves punctuation and capitalization out of the Python code and into the translation files so translated strings are shown exactly as written. There is no security-relevant change.

162ed3a2by Michal Kazda+12−125 files
No security note in commit
Informational 15 AI analysisMessage 62 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

chore(core/bolt): remove unneeded `use` statements

This commit simply removes two unused Rust import statements (called `use` statements). It does not change any actual code behavior, logic, or security properties of the Trezor firmware.

a56f8c3dby Roman Zeyde+0−22 files
No security note in commit
Informational 18 AI analysisMessage 57 · Thin
TZ TrezorTrezor firmware BitcoinHardware wallets

fix(core): add missing colon in Tron

This commit fixes a UI formatting bug in the Tron cryptocurrency flow on Trezor hardware wallets. A missing colon was added to account information labels shown on the device screen. The change is cosmetic and does not appear to affect cryp…

UI label formatting fix onlyNo changes to signature verification, key handling, or transaction authorizationNo buffer size, memory allocation, or input validation changes observed
739c2968by Michal Kazda+19332−193364 files
No security note in commit
Informational 15 AI analysisMessage 57 · Thin
TZ TrezorTrezor firmware BitcoinHardware wallets

fix(core): combine path/account with labels

This commit is a straightforward user-interface refactoring. It bundles an account/path label together with its corresponding value into a single tuple, instead of passing them as four separate arguments. There is no security-relevant chan…

c66f6f4dby Michal Kazda+51−7413 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-priorityfix(rust/micropython): drop as_mut_sliceby matejcik · 236939ac · Sep 9, 2026 · 1 fileMessage 84 · StrongTriage 0Details
Commit message · matejcik

fix(rust/micropython): drop as_mut_slice

because slices aren't supposed to be mutable

84/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body✓ Explains rationale or failure mode
Security candidatefeat(core): defs MIN_DATA_VERSION based on versionby obrusvit · 1e0da134 · Sep 8, 2026 · 8 filesMessage 62 · AdequateInformational 19Details
Commit message · obrusvit

feat(core): defs MIN_DATA_VERSION based on version

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

This change updates how Trezor devices decide whether downloaded Ethereum token/chain definition files are too old to trust. Previously there was one global cutoff date; now each definition format version has its own cutoff. This is a maintenance and correctness improvement, not a fix for an active security bug. It reduces the chance that a future format version could accidentally accept stale or incompatible definition data.

Security candidatefeat(legacy): support definitions v2by obrusvit · 804371fd · Sep 8, 2026 · 6 filesMessage 57 · ThinLow 31Details
Commit message · obrusvit

feat(legacy): support definitions v2

[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
boot or update path
AI analysis · Low 31/100

This commit updates the Trezor One (legacy firmware) to use version 2 of the external Ethereum token/network definition format. The key change is that legacy firmware now requires only one valid signature instead of two, and explicitly rejects the older version 1 format. This is a feature update to align legacy devices with the newer definition format, not a fix for an active security bug. The change is documented and includes tests verifying that version 1 definitions are rejected on legacy firmware.

Security candidaterefactor(core/sec): make the boot header portable and lift it out of stm32by tychovrahe · edf70f4b · Sep 8, 2026 · 4 filesMessage 100 · StrongInformational 13Details
Commit message · tychovrahe

refactor(core/sec): make the boot header portable and lift it out of stm32

`boot_header.c` is parsing, hashing and signature verification over a
caller-supplied buffer. No flash, no MPU, nothing per-MCU -- yet it sat under
`image/stm32/`, so it was compiled only for the device and any host build of
code that touches a boot header failed to link on the whole layer. That blocks
two things: a bootloader emulator (it IS the boot chain, so it cannot emulate
anything without this) and host-side test harnesses over the same structures.

Only three lines were actually non-portable, all casting a `uint32_t` flash
address to a pointer. So the API takes pointers:

boot_header_auth_get(uint32_t address) -> (const void* header)
boot_header_calc_merkle_root(hdr, uint32_t, root) -> (hdr, const void*, root)
bootloader_area_needs_update(hdr, uint32_t) -> (hdr, const void*)

The callers are unaffected in substance: each already had the address of
something it was about to read, and on the device a pointer into flash IS that
address. `boot_ucb_read` still hands out `uint32_t` fields, because the UCB is a
flash structure the boardloader parses -- an address there is data, not a
pointer, and it stays that way.

`boot_ucb.c` and `boot_image.c` stay under stm32/: they touch flash.

Also in `boot_header_auth_get`, one early return was `return secfalse` in a
function returning a pointer. `secfalse` is 0x00000000U so this was correct by
accident; it now returns NULL. No behaviour change.

Pure refactor -- no functional change on any device. Built T3W1
boardloader/bootloader/firmware/prodtest, T3T1 boardloader and bootloader
--production (spare unchanged), T2T1 to cover an MCU without the scheme, and the
T3W1 firmware / T3T1 bootloader emulators.

[no changelog]

Co-Authored-By: Claude Opus 5 (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✓ Mentions testing or verification✓ Names security-relevant behavior explicitly
Why it was queued
signing boundaryupdate trustdefensive validation
AI analysis · Informational 13/100

This commit is a code cleanup that moves a small piece of boot-header parsing code out of an STM32-specific folder so it can also be used in emulator and test builds. It changes function arguments from raw flash addresses (uint32_t numbers) to generic pointers, and fixes one accidental use of a security-boolean value where a null pointer was intended. The commit message and diff show no intended behavior change on real devices.

Lower-priorityfeat(core): add a dummy `nfc_get_event()` implementation for emulatorby Roman Zeyde · bfd4366c · Sep 8, 2026 · 2 filesMessage 62 · AdequateTriage 0Details
Commit message · Roman Zeyde

feat(core): add a dummy `nfc_get_event()` implementation for emulator

[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
Security candidatebuild(core): fix NFC feature propagation at emulatorby Roman Zeyde · 1be155c0 · Sep 8, 2026 · 3 filesMessage 97 · StrongInformational 15Details
Commit message · Roman Zeyde

build(core): fix NFC feature propagation at emulator

Otherwise, <io/nfc.h> fails to be included - and emulator build breaks.

Also, remove top-level `nfc` feature, and keep it only in `upymod` crate.

[no changelog]

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

This is a build-system-only change that moves where the NFC feature flag is defined so the emulator compiles correctly. It does not change any runtime behavior, user-facing functionality, or security logic.

Lower-priorityfeat(core): spawn NFC event handling UI taskby Roman Zeyde · d75a57f6 · Sep 8, 2026 · 1 fileMessage 57 · ThinTriage 0Details
Commit message · Roman Zeyde

feat(core): spawn NFC event handling UI task

[no changelog]

57/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Security candidatechore(core): fix a small comment typoby Roman Zeyde · 578e011b · Sep 8, 2026 · 2 filesMessage 57 · ThinInformational 15Details
Commit message · Roman Zeyde

chore(core): fix a small comment typo

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

This commit fixes a grammar typo in two code comments/docstrings, changing 'Receive a BLE events' to 'Receive a BLE event'. It does not change any executable code, behavior, or security properties.

Security candidatefeat(trezorlib): improve terse headertool output (secmon)by cepetr · 8a4e0dfb · Sep 8, 2026 · 1 fileMessage 62 · AdequateInformational 15Details
Commit message · cepetr

feat(trezorlib): improve terse headertool output (secmon)

[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 only changes how a command-line tool prints information about secure-monitor firmware headers. In non-verbose mode it now shows the device model and version instead of dumping every header field. There is no change to security checks, cryptography, or firmware behavior.

Security candidatefeat(ui): assert property list is never empty.by PrisionMike · fc09afce · Sep 7, 2026 · 6 filesMessage 72 · AdequateInformational 17Details
Commit message · PrisionMike

feat(ui): assert property list is never empty.

Will not affect the production builds.
[no changelog]

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

This commit adds a runtime check (assert) that ensures a UI function for confirming on-screen properties is never called with an empty list. It also changes the expected input type from a generic iterable to a sequence and converts a couple of generator expressions into lists. The commit message explicitly says it will not affect production builds, because assertions are typically stripped from production firmware. There is no direct evidence this fixes an active security bug; it appears to be a defensive hardening measure for development/debug builds.

Lower-priorityfeat(core/xtask): flash the combined imageby tychovrahe · 70e49edb · Sep 7, 2026 · 4 filesMessage 80 · StrongTriage 0Details
Commit message · tychovrahe

feat(core/xtask): flash the combined image

`xtask combine` produced an image nothing could then write. Add
`xtask flash <project> --combined`, which flashes it as-is from the
boardloader address -- the one command that takes a blank device to a
working state, boardloader included.

The project name only says WHICH combined image; the image always starts
at the bottom of the chain, so nothing about its contents is decided at
flash time. `Project::combinable()` says what can head such an image, so
flash does not have to restate combine's list, and
`combine::combined_artifact()` is the single place that decides where the
image lives, so its writer and reader cannot drift.

[no changelog]

80/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context
Security candidatefix(core/xtask): pad a combined image's erased regions as erasedby tychovrahe · 7d423838 · Sep 7, 2026 · 2 filesMessage 95 · StrongLow 25Details
Commit message · tychovrahe

fix(core/xtask): pad a combined image's erased regions as erased

A combined image pads the gaps between its sections with 0x00. That is
wrong for any region the boot chain ERASES on first boot: the bootloader
erases the UCB (`boot_ucb_erase`), so the device stops matching the
image it was flashed from the moment it boots, and a factory line that
verifies by reading flash back would fail.

Pad that region with 0xFF, the erased state, and the erase becomes a
no-op -- it checks `flash_area_is_erased` and skips -- leaving the image
byte-identical to what is on the device. The rule generalises: a region
the boot chain erases has to be combined in its erased state.

The region is located from the model's memory.ld, so a model without one
is untouched; both cases are covered by tests.

[no changelog]

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
update trust
AI analysis · Low 25/100

This commit fixes a build-time tooling bug in Trezor's firmware build helper. When creating a combined firmware image, the tool was filling unused gaps between sections with 0x00 bytes. One specific gap (the UCB region) is erased by the bootloader on first boot. Because erased flash reads as 0xFF, the device would no longer match the original image after its first boot, causing factory verification to fail. The fix makes the tool fill that gap with 0xFF instead, so the image stays identical after the device boots. This is a manufacturing/verification bug, not a security vulnerability that can be exploited by an attacker.

Security candidatechore(core): disable BIP39 cacheby M1nd3r · 59199f20 · Sep 7, 2026 · 1 fileMessage 57 · ThinLow 46Details
Commit message · M1nd3r

chore(core): disable BIP39 cache

[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
secret or key materialcryptography-sensitive path
AI analysis · Low 46/100

This commit turns off an internal performance cache for BIP39, the system that converts a recovery seed phrase into cryptographic keys on Trezor hardware wallets. Disabling a cache is usually a defensive change: it can prevent sensitive seed-derived data from lingering in device memory longer than necessary. However, the commit gives no explanation, changelog entry, or linked security report, so we cannot tell whether this fixes a known vulnerability or is just a precautionary hardening measure.

Security candidatefix(core/bootloader): report the actual error from a failed wipe stepby tychovrahe · 0a0d00aa · Sep 7, 2026 · 1 fileMessage 85 · StrongInformational 20Details
Commit message · tychovrahe

fix(core/bootloader): report the actual error from a failed wipe step

`send_error_conditionally` ignored its `msg` argument and always sent
"Could not read BLE status", so a host watching a WipeDevice was told the
wrong thing whenever anything but the BLE status read failed -- an
inability to issue a BLE command, to erase bonds, or to erase flash.

[no changelog]

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

This is a minor bug fix in the Trezor bootloader. When wiping the device, if a step failed, the bootloader always reported the same generic error message ('Could not read BLE status') even when the actual failure was something else, such as failing to erase stored data or issue a Bluetooth command. The fix makes the bootloader report the correct, specific error message. It does not change whether errors happen or how they are handled; it only corrects the message sent to the host computer.

Security candidaterefactor(core/rust): tweak MenuIntent's micropython dependencyby matejcik · 617e0383 · Sep 7, 2026 · 3 filesMessage 62 · AdequateInformational 12Details
Commit message · matejcik

refactor(core/rust): tweak MenuIntent's micropython dependency

and fix Error usage

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

This is a small internal code cleanup in the Trezor firmware's Rust UI layer. It moves some MicroPython-specific code into its own submodule and removes an unused import. There is no visible change to user-facing behavior or security-sensitive logic.

AI review queuedfix(tests): reorganize imports - style checkby Vojtěch Nevřela · c67cb289 · Sep 7, 2026 · 1 fileMessage 67 · AdequateInformational 15Details
Commit message · Vojtěch Nevřela

fix(tests): reorganize imports - style check

[no changelog]

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 is a minor code cleanup in a test file. It reorganizes Python import statements to follow style guidelines by importing Callable and Sequence from collections.abc instead of typing. There is no functional change and no security relevance.

Lower-prioritychore(core): update fixturesby Michal Kazda · fbf0ecf1 · Sep 7, 2026 · 1 fileMessage 47 · ThinTriage 0Details
Commit message · Michal Kazda

chore(core): update fixtures
[no changelog]

47/100 · ThinMessage clarity
✓ Descriptive subject✓ Uses a recognizable type or scope! No meaningful explanatory body
Lower-priorityfix(core): do not build "MP_QSTR_" patternby matejcik · 87e9dea4 · Sep 7, 2026 · 1 fileMessage 57 · ThinTriage 0Details
Commit message · matejcik

fix(core): do not build "MP_QSTR_" pattern

57/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Lower-priorityrefactor(core/rust): error handling in definitionsby matejcik · 450e9c38 · Sep 7, 2026 · 6 filesMessage 62 · AdequateTriage 0Details
Commit message · matejcik

refactor(core/rust): error handling in definitions

62/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Security candidatetest(clear_signing): benqi claim empty property listby PrisionMike · fb8a6ddd · Sep 7, 2026 · 3 filesMessage 72 · AdequateInformational 15Details
Commit message · PrisionMike

test(clear_signing): benqi claim empty property list

[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
Why it was queued
signing boundarysigning or wallet path
AI analysis · Informational 15/100

This commit only adds a new test case for the Benqi sAVAX redeem function. It includes test data, a small external definition file, and expected screen hashes for automated UI tests. There is no change to production firmware code, no bug fix, and no security patch.

Security candidatefix(clear_signing): skip empty property screenby PrisionMike · c7473b71 · Sep 7, 2026 · 4 filesMessage 57 · ThinInformational 19Details
Commit message · PrisionMike

fix(clear_signing): skip empty property screen

[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 boundarycryptography-sensitive path
AI analysis · Informational 19/100

This commit is a minor user-interface fix for Ethereum 'clear signing' flows on Trezor hardware wallets. It simply skips showing a contract-details screen when there are no details to display. There is no indication this is a security fix, and the change does not alter what users must approve before signing a transaction.

Security candidatechore(core/rust): remove unused `heapless::String` importby Roman Zeyde · 8acd6151 · Sep 7, 2026 · 1 fileMessage 85 · StrongInformational 15Details
Commit message · Roman Zeyde

chore(core/rust): remove unused `heapless::String` import

Should have been done in #7796.

[no changelog]

85/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body✓ Links an issue, advisory, or supporting reference
Why it was queued
boot or update pathauthentication path
AI analysis · Informational 15/100

This commit removes an unused import of a string type from a Rust source file. It is a routine code cleanup with no functional change and no security relevance.

Lower-priorityfeat(core/kernel): initialize NFC driverby Roman Zeyde · 7105338e · Sep 5, 2026 · 1 fileMessage 57 · ThinTriage 0Details
Commit message · Roman Zeyde

feat(core/kernel): initialize NFC driver

[no changelog]

57/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Lower-priorityfix(core): show RSOD in coreapp (not in the terminal)by cepetr · 1705053c · Sep 5, 2026 · 1 fileMessage 62 · AdequateTriage 0Details
Commit message · cepetr

fix(core): show RSOD in coreapp (not in the terminal)

[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
Security candidatefeat(trezorlib): improve terse firmware header outputby cepetr · ace402bd · Sep 4, 2026 · 1 fileMessage 62 · AdequateInformational 15Details
Commit message · cepetr

feat(trezorlib): improve terse firmware header output

[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 minor user-interface improvement for a developer/debugging tool. It adds a 'verbose' mode to the text output shown when inspecting a Trezor firmware file header. In non-verbose mode it now prints a shorter summary (device model, version, fingerprint, signature/hash status) instead of dumping every header field. There is no change to security checks, cryptography, firmware loading, or device behavior.