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
289commits · 30 days
701commits · 60 days
1641commits · 180 days
2705commits · 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 39 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.

Security candidatefix(core/ethereum): disallow EIP-7702 authorization with `chain_id = 0`by Roman Zeyde · 4c855c15 · Aug 4, 2026 · 5 filesMessage 90 · StrongModerate 60Details
Commit message · Roman Zeyde

fix(core/ethereum): disallow EIP-7702 authorization with `chain_id = 0`

https://satoshilabs.slack.com/archives/C08A0CQK8KH/p1785846955923599

[no changelog]

90/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✓ Names security-relevant behavior explicitly
Why it was queued
access controlsigning or wallet pathauthentication path
AI analysis · Moderate 60/100

This commit removes a feature in Trezor's Ethereum signing code that allowed users to sign EIP-7702 authorization messages with chain_id set to 0, which previously made the signature valid on all EVM networks. The change now rejects chain_id 0 with an explicit error. This is a defensive security hardening step: a universally valid authorization signature could let an attacker or malicious application reuse a single signed authorization across unexpected chains, potentially changing what account controls a user's address on another network. The commit itself does not describe a specific attack or credit an external reporter.

Security candidatechore: remove references to deprecated contentby vdovhanych · c7f99e47 · Aug 4, 2026 · 4 filesMessage 57 · ThinInformational 15Details
Commit message · vdovhanych

chore: remove references to deprecated content

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

This commit simply updates documentation and a code comment to remove outdated references to Travis CI and replace them with current CI references. It does not change any executable code, cryptographic logic, or security behavior.

Security candidatetest(ethereum): fix incorrect address checksumby Tomas Martykan · 2b1938cc · Aug 4, 2026 · 3 filesMessage 67 · AdequateInformational 15Details
Commit message · Tomas Martykan

test(ethereum): fix incorrect address checksum

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

This commit only updates test data. It corrects the capitalization (checksum) of Ethereum addresses used in automated tests and refreshes the expected screen-shot hashes those tests compare against. There are no changes to the actual Trezor firmware code that users run, so this cannot affect real devices or user funds.

Security candidatefix(python/trezorlib): enable entropy check on T1 by defaultby Andrew Kozlik · a4af9107 · Aug 4, 2026 · 2 filesMessage 67 · AdequateLow 33Details
Commit message · Andrew Kozlik

fix(python/trezorlib): enable entropy check on T1 by default

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
entropy or randomnessseed or entropy path
AI analysis · Low 33/100

This commit changes the Trezor Python library so that, when setting up a Trezor Model One (the original Trezor 1 device), it now performs an entropy check by default if the device runs firmware 1.13.1 or newer. Previously, the library only enabled this check on newer Trezor models and treated all Model One devices as not supporting it. An entropy check helps verify the device is generating randomness properly during wallet setup. The change is a defensive fix to enable a security feature on a previously excluded device line, not a patch for an active vulnerability.

Security candidatefeat: rsod upon failure to generate strong randomnessby Andrew Kozlik · 99b9edad · Aug 4, 2026 · 19 filesMessage 100 · StrongLow 45Details
Commit message · Andrew Kozlik

feat: rsod upon failure to generate strong randomness

If any entropy source fails when generating strong randomness, the device
halts to ensure that the error cannot be accidentally ignored.

[no changelog]

Co-Authored-By: Claude Fable 5 <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
entropy or randomnesscryptography-sensitive pathseed or entropy path
AI analysis · Low 45/100

This commit changes how a Trezor hardware wallet handles failures when generating strong random numbers. Previously, the function could return 'false' when an entropy source failed, and callers might ignore that failure. Now the device deliberately halts (shows a fatal Red Screen of Death) if any entropy source fails. This is a defensive hardening change, not an active bug fix for a known exploit, but it removes a class of safety issues where weak or predictable randomness could be used by mistake.

Security candidaterefactor(core/ethereum): simplify `sign_auth_eip7702()` digest flowby Roman Zeyde · 766216d2 · Aug 4, 2026 · 1 fileMessage 62 · AdequateInformational 12Details
Commit message · Roman Zeyde

refactor(core/ethereum): simplify `sign_auth_eip7702()` digest flow

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

This commit is a small code cleanup in the Ethereum signing module for Trezor hardware wallets. It replaces a manual, step-by-step RLP (a data-encoding format used by Ethereum) header-and-field writing process with a single helper call that does the same thing. There is no indication of a security bug being fixed.

Security candidatechore(core): remove scons related filesby cepetr · a4b25c31 · Aug 4, 2026 · 54 filesMessage 57 · ThinInformational 15Details
Commit message · cepetr

chore(core): remove scons related files

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

This commit is a routine cleanup that removes the old SCons build system files from the Trezor Core firmware repository. It deletes Makefiles, SConscripts, and related Python helper scripts, but does not change any firmware source code, cryptographic logic, or runtime behavior. The commit message explicitly says it is a chore with no changelog entry, indicating it is not a security fix.

Security candidaterefactor(core): micropython time moduleby Martin Milata · a812f2a9 · Aug 3, 2026 · 6 filesMessage 80 · StrongInformational 15Details
Commit message · Martin Milata

refactor(core): micropython time module

Relevant micropython commits:
995555300181b3385855f5a4ffb629441553d3ea extmod/modutime: Provide a generic time module.
df05caea6c6437a8b4756ec502a5e6210f4b6256 shared/timeutils: Standardize supported date range on all platforms.

[no changelog]

80/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context
Why it was queued
boot or update path
AI analysis · Informational 15/100

This is a routine code cleanup that swaps one internal MicroPython time module for another. It does not fix or introduce any security issue visible in the commit.

Security candidaterefactor(core): switch to slots-based mp_obj_type_tby Martin Milata · ab51798f · Aug 3, 2026 · 24 filesMessage 85 · StrongInformational 15Details
Commit message · Martin Milata

refactor(core): switch to slots-based mp_obj_type_t

Relevant micropython commits:
3ac8b5851e5f4dade465d52b91ed2ccc17851263 py/obj: Add slot-index mp_obj_type_t representation.
cb0ffdd2bf25dcac3c230bdc1168d492aabaf573 py/obj: Remove basic mp_obj_type_t sparse representation.

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

This commit is a routine internal cleanup that switches how Trezor's firmware defines built-in MicroPython object types. It replaces older, manually-written type structures with a newer macro provided by the upstream MicroPython project. There is no user-visible change, no bug fix, and no security patch in the diff.

Security candidaterefactor(core): get rid of the STATIC macroby Martin Milata · 053def4c · Aug 3, 2026 · 57 filesMessage 80 · StrongInformational 15Details
Commit message · Martin Milata

refactor(core): get rid of the STATIC macro

Relevant micropython changes:
decf8e6a8bb940d5829ca3296790631fcece7b21 all: Remove the "STATIC" macro and just use "static" instead.

[no changelog]

80/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context
Why it was queued
cryptography-sensitive pathseed or entropy path
AI analysis · Informational 15/100

This commit is a large but purely mechanical code cleanup: it replaces the custom STATIC macro with the standard C keyword static across many MicroPython module files. There is no change to program logic, security boundaries, or behavior. It also removes build-system workarounds that were only needed because the old macro was being abused to expose internal functions.

Security candidaterefactor(core): micropython-1.28.0 embedded fixupsby Martin Milata · e985132f · Aug 3, 2026 · 5 filesMessage 85 · StrongInformational 11Details
Commit message · Martin Milata

refactor(core): micropython-1.28.0 embedded fixups

Relevant micropython commits:
2c828a88153dfdbd767fc0d8f2124cfbefdcbc81 unix: Update port to use the new event functions.
2757acf6ed1fe165e4d8aa72ba8090fb9bc60c31 py/nlr: Implement jump callbacks.
3446d440f661cf3c052c08e5c6879b1e59a478bb shared/runtime/gchelper: Drop cpu directive from ARM asm helpers.

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

This commit updates the Trezor firmware's embedded MicroPython runtime to version 1.28.0. It swaps in newer ARM assembly helpers for garbage collection, removes some old event-polling macros, and adds support for a new exception-handling callback mechanism. There is no direct evidence in the commit or supplied references that this fixes a security vulnerability; it reads as a routine upstream synchronization/refactoring.

Security candidaterefactor(core): assorted micropython-1.28.0 fixesby Martin Milata · 7ba7879d · Aug 3, 2026 · 12 filesMessage 80 · StrongInformational 22Details
Commit message · Martin Milata

refactor(core): assorted micropython-1.28.0 fixes

Relevant micropython commits:
908ab1ceca15ee6fd0ef82ca4cba770a3ec41894 py/objint: Fix int.to_bytes() buffer size checks.
86f2c285eb222f30c24df187ac66d3e0c80caf61 py: Add new cstack API for stack checking, with limit margin macro.
c046b23ea29e0183c899a8dbe1da3bed3440a255 shared/runtime/pyexec: Don't allow Ctrl+C to interrupt frozen boot code.
3bca93b2d00dec37b3770c3e4fac15f07e0b9f15 ports: Fix sys.stdout.buffer.write() return value.
2c8dab7ab4ec0884c6428afc613d9dcc322d8c6d py/objarray: Detect bytearray(str) without an encoding.

[no changelog]

80/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context
Why it was queued
cryptography-sensitive pathboot or update path
AI analysis · Informational 22/100

This commit updates Trezor's embedded MicroPython interpreter from an older version to 1.28.0. It pulls in several upstream MicroPython bug fixes, including stricter buffer-size checks for converting integers to bytes, a new stack-safety API, preventing Ctrl+C from interrupting frozen boot code, fixing a stdout write return value, and blocking accidental creation of bytearrays from plain strings without an encoding. The changes are mostly defensive hardening and compatibility fixes rather than a single known exploit patch. There is no vendor statement that this is a security fix, no CVE, and no credited researcher.

Security candidaterefactor(core): sync projects/unix/main.c with micropythonby Martin Milata · d2938a67 · Aug 3, 2026 · 9 filesMessage 97 · StrongLow 27Details
Commit message · Martin Milata

refactor(core): sync projects/unix/main.c with micropython

The file is now be quite similar to the upstream one to make future
updates easier. Notable differences include:

- entry point is `coreapp_emu()` instead of `main()`
- different command line handling that loads `main` if no module or
command is provided
- no filesystem access for frozen emulator to prevent it from loading
live modules
- no default sys.path

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

This commit refactors the Trezor firmware's Unix emulator main file to more closely match the upstream MicroPython project. It enables a virtual file system (VFS) for the emulator, but explicitly blocks live filesystem access when running the frozen (production-like) emulator build. The changes are described as maintenance-only and carry a '[no changelog]' tag, meaning the vendor does not treat them as a security fix.

Security candidaterefactor(core): replace hexlify with bytes.hex()by Martin Milata · 44aa469e · Aug 3, 2026 · 120 filesMessage 80 · StrongInformational 15Details
Commit message · Martin Milata

refactor(core): replace hexlify with bytes.hex()

Relevant micropython commits:
28aaab95909aab092cc8c16188fec157142f18a9 py/objstr: Add hex/fromhex to bytes/memoryview/bytearray.

[no changelog]

80/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context
Why it was queued
cryptography-sensitive pathseed or entropy pathsigning or wallet pathboot or update pathauthentication path
AI analysis · Informational 15/100

This is a large but straightforward internal cleanup: the project switched from using the MicroPython `ubinascii` module's `hexlify`/`unhexlify` functions to the standard Python `bytes.hex()` and `bytes.fromhex()` methods. The change removes the `ubinascii` module from the firmware build and updates many source and test files to use the new built-in methods. There is no security fix or vulnerability being patched here.

Security candidaterefactor(core): bundle the utimeq moduleby Martin Milata · 617bc806 · Aug 3, 2026 · 11 filesMessage 80 · StrongInformational 15Details
Commit message · Martin Milata

refactor(core): bundle the utimeq module

It is no longer part of micropython.

Relevant micropython commits:
a1fbb1980cf90cc58186eac9cc405a97ebd41e64 extmod/modtimeq: Remove timeq module.

[no changelog]

80/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context
Why it was queued
boot or update path
AI analysis · Informational 15/100

This commit is a routine maintenance refactor. MicroPython removed its built-in 'utimeq' module, so Trezor copied the same code into its own firmware tree and renamed it to 'timeq'. There is no security bug being fixed and no new vulnerability being introduced that is visible in the diff.

Security candidatebuild(core): adjust mpy-cross pathsby Martin Milata · 2ef70e16 · Aug 3, 2026 · 4 filesMessage 80 · StrongInformational 15Details
Commit message · Martin Milata

build(core): adjust mpy-cross paths

Relevant micropython commits:
b2e82402688b53829f37475583231b067b9faea7 py/mkrules.mk: Keep all build artefacts inside $(BUILD) directory.
47c84286e8c8d9873e99f12711a683ecd6b9ca62 all: Fix paths to mpy-cross and micropython binaries.

[no changelog]

80/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context
Why it was queued
boot or update path
AI analysis · Informational 15/100

This commit is a routine build-system update for the Trezor firmware. It changes where the build process looks for the MicroPython cross-compiler binary (mpy-cross) and synchronizes a configuration header with newer MicroPython code. There is no indication this fixes or introduces a security vulnerability.

Security candidaterefactor(core/rust): bindgen wrapper for calling static micropython functionsby Martin Milata · d5121d92 · Aug 3, 2026 · 6 filesMessage 62 · AdequateInformational 15Details
Commit message · Martin Milata

refactor(core/rust): bindgen wrapper for calling static micropython functions

[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 straightforward internal code refactor. It adds a small C wrapper file so that Rust code can call two specific internal MicroPython functions that are declared as static/inline in headers. There is no user-facing change, no bug fix, and no security-relevant behavior change visible in the diff.

Security candidaterefactor(core): use mp_obj_new_str_from_vstrby Martin Milata · 7ea11191 · Aug 3, 2026 · 33 filesMessage 70 · AdequateInformational 17Details
Commit message · Martin Milata

refactor(core): use mp_obj_new_str_from_vstr

The str variant now also does UTF-8 validation which can be removed to
improve performance where justified.

Relevant micropython commits:
0b9ee86133a2a0524691c6cdac209dbfcb3bf116 py: Add mp_obj_new_str_from_vstr, and use it where relevant.
88864587f5af292d7f86aceb6bf40e8331e9a8d6 py/objstr: Always ensure mp_obj_str_from_vstr is unicode-safe.

[no changelog]

70/100 · AdequateMessage clarity
✓ Descriptive subject✓ Uses a recognizable type or scope✓ Provides detailed explanatory context
Why it was queued
cryptography-sensitive pathseed or entropy path
AI analysis · Informational 17/100

This is a code cleanup change in Trezor's firmware that swaps one MicroPython internal helper for another. It replaces calls that create byte or string objects from a vstr buffer with newer, purpose-built helpers. The commit message says the new string helper also does UTF-8 validation, which can be skipped where performance matters. The change itself does not introduce a known vulnerability; it is a refactor to match upstream MicroPython conventions.

Security candidaterefactor(core): use mp_obj_new_str_from_cstrby Martin Milata · 6a889e6a · Aug 3, 2026 · 3 filesMessage 70 · AdequateInformational 15Details
Commit message · Martin Milata

refactor(core): use mp_obj_new_str_from_cstr

Relevant micropython commits:
289b2dd87960a4cdf019013cecd489f0d0cabc26 py/objstr: Add new mp_obj_new_str_from_cstr() helper function.

[no changelog]

70/100 · AdequateMessage clarity
✓ Descriptive subject✓ Uses a recognizable type or scope✓ Provides detailed explanatory context
Why it was queued
cryptography-sensitive path
AI analysis · Informational 15/100

This commit is a simple code cleanup that replaces a common MicroPython string-creation pattern with a new helper function. It does not change what the code does, only how it is written. There is no security issue visible in the change.

Security candidaterefactor(core): replace m_new_obj_with_finaliserby Martin Milata · 142794ea · Aug 3, 2026 · 19 filesMessage 70 · AdequateInformational 18Details
Commit message · Martin Milata

refactor(core): replace m_new_obj_with_finaliser

Relevant micropython commits:
971617196644775905fd821c39c6a7771b63dbaf py/misc: Remove m_new_obj[_var]_with_finaliser macros.

[no changelog]

70/100 · AdequateMessage clarity
✓ Descriptive subject✓ Uses a recognizable type or scope✓ Provides detailed explanatory context
Why it was queued
cryptography-sensitive path
AI analysis · Informational 18/100

This commit is a routine code cleanup in the Trezor firmware's embedded MicroPython modules. It replaces an older, two-step object allocation pattern with a newer helper that allocates memory and sets the object type in one step. The change touches many cryptographic object constructors but does not alter security logic, input validation, or behavior. It is best understood as a maintenance refactor to stay compatible with upstream MicroPython, not a security fix.

Security candidaterefactor(core): disable sys.argv for firmwareby Martin Milata · 3a43e8b7 · Aug 3, 2026 · 3 filesMessage 57 · ThinLow 28Details
Commit message · Martin Milata

refactor(core): disable sys.argv for firmware

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

This commit removes support for sys.argv (command-line argument lists) from the Trezor firmware's embedded MicroPython interpreter. In a hardware wallet, there is no legitimate command line, so keeping sys.argv enabled only added unused code and a small potential attack surface. The change is a hardening/refactoring step rather than a fix for a known exploit.

Security candidaterefactor(core): fix renamed micropython modulesby Martin Milata · e1edbee0 · Aug 3, 2026 · 27 filesMessage 80 · StrongInformational 15Details
Commit message · Martin Milata

refactor(core): fix renamed micropython modules

E.g. uos was renamed to os, uerrno to errno.

Relevant micropython commits:
45ac651d1a2801bccbdc32fddaa9b029ed4ce879 all: Rename *umodule*.c to remove the "u" prefix.
f5f9edf6457624bf32e71b0c2fdcfbfa5d5753a6 all: Rename UMODULE to MODULE in preprocessor/Makefile vars.

[no changelog]

80/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context
Why it was queued
cryptography-sensitive pathsigning or wallet pathboot or update pathauthentication path
AI analysis · Informational 15/100

This commit is a routine code cleanup that updates Trezor firmware to match a newer MicroPython version where built-in module names dropped the 'u' prefix (for example, 'uos' became 'os' and 'ustruct' became 'struct'). It renames imports, configuration flags, and source file references, and removes old mock files. There is no security fix or vulnerability here.

Security candidatebuild(core): collect micropython GC root pointersby Martin Milata · fc128f3d · Aug 3, 2026 · 7 filesMessage 80 · StrongLow 30Details
Commit message · Martin Milata

build(core): collect micropython GC root pointers

Relevant micropython commits:
fc3d7ae11be11a7f05709ebfd439061fce9ee555 py/make_root_pointers: Add MP_REGISTER_ROOT_POINTER parser/generator.
7e4b205cb00013b272e4cf9fac128866bf0e1f21 py/mpstate: Drop MICROPY_PORT_ROOT_POINTERS from mp_state_vm_t.

[no changelog]

80/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context
Why it was queued
boot or update path
AI analysis · Low 30/100

This commit updates the Trezor firmware build system to use a newer MicroPython mechanism for tracking special memory pointers called 'root pointers.' It removes hard-coded lists of these pointers from configuration files and instead collects them automatically from source files during the build. The change itself is a build-system modernization and does not appear to fix an active security bug, but it helps prevent a class of future memory-management mistakes that could, in theory, lead to device instability or security issues.

Security candidatechore(core): bump version to 2.12.5by Martin Milata · 82c04645 · Aug 3, 2026 · 8 filesMessage 57 · ThinInformational 15Details
Commit message · Martin Milata

chore(core): bump version to 2.12.5

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

This commit only updates the firmware version number from 2.12.4 to 2.12.5 in the source code and translation files. It does not change any security-related logic, fix any bug, or alter any cryptographic behavior. It is a routine release bookkeeping change with no security relevance.

Security candidatechore(core): build trezor_lib with xbuildby cepetr · 9ba7ee1b · Aug 3, 2026 · 16 filesMessage 57 · ThinInformational 15Details
Commit message · cepetr

chore(core): build trezor_lib with xbuild

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

This is a routine build-system cleanup for the Trezor firmware. It switches the internal 'trezor_lib' Rust crate to be built with the project's own 'xbuild' tool, removes transitional feature flags, and reorganizes Cargo.toml files. There is no indication this change fixes or introduces a security vulnerability.