TZ
← All projectsTrezor

Trezor firmware

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

BitcoinHardware walletsNormal
Repository coverage

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

1132security candidates374second-pass queue2934AI analyses
275commits · 30 days
707commits · 60 days
1660commits · 180 days
2691commits · 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
648Strong · 80–100
1555Adequate · 60–79
1039Thin · 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
PrisionMike10866106272
Andrew Kozlik833481268
Petr Susil1048287
Jakub Janků591838180
Martin Pastyřík26823173
cepetr264106222059
M1nd3r24689227071
Ioan Bizău23076230059
Lukas Bielesch856784067
Analysis record

Published AI watches

Last scanned 50 minutes ago

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
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
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): verify `chain_id` when matching EIP-7702 addressesby Roman Zeyde · afd4279c · Aug 5, 2026 · 6 filesMessage 100 · StrongModerate 60Details
Commit message · Roman Zeyde

fix(core/ethereum): verify `chain_id` when matching EIP-7702 addresses

Also:
- add Gnosis to supported chains (https://7702beat.eth.sh/)
- use Gnosis chain ID for testing definitions.
- unknown chains are now disallowed.

[no changelog]

100/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✓ Links an issue, advisory, or supporting reference
Why it was queued
signing or wallet pathauthentication path
AI analysis · Moderate 60/100

This commit tightens security for a new Ethereum feature (EIP-7702 account delegation) in Trezor hardware wallets. Previously, the wallet would recognize certain smart-contract delegate addresses on any chain, and would allow signing on unknown chains with only a generic warning. Now it checks that both the chain ID and the delegate address match an approved list, and it refuses to sign on unknown chains entirely. This prevents a malicious app or website from tricking a user into authorizing a delegate on an unexpected network.

Lower-priorityci(core): fix nightly ARM emulator filenameby Martin Milata · ab95f08f · Aug 4, 2026 · 1 fileMessage 57 · ThinInformational 15Details
Commit message · Martin Milata

ci(core): fix nightly ARM emulator filename

57/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
documentation-only discount
AI analysis · Informational 15/100

This commit fixes a filename-renaming step in the project's automated nightly build pipeline. It ensures ARM64 emulator files get the correct name expected by another testing tool. There is no change to the actual Trezor firmware code, device behavior, or security-sensitive logic.

Lower-prioritychore(vendor): avoid micropython submodule noise in git statusby Martin Milata · 06cab32b · Aug 4, 2026 · 1 fileMessage 62 · AdequateInformational 12Details
Commit message · Martin Milata

chore(vendor): avoid micropython submodule noise in git status

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

This is a routine housekeeping change to reduce clutter in Git's status output for a third-party component (the MicroPython submodule). There is no indication it changes any code that runs on the Trezor device or affects security.

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.

Lower-priorityfix(core): speed up tropic startupby Ondřej Vejpustek · 91046b78 · Aug 4, 2026 · 1 fileMessage 57 · ThinInformational 17Details
Commit message · Ondřej Vejpustek

fix(core): speed up tropic startup

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

This commit adds a 135 millisecond delay during startup of the Tropic secure chip inside Trezor hardware wallets. The delay works around a bug where the chip briefly reports it is in 'maintenance mode' right after power-on, which causes an unnecessary reboot and slows down startup. It is a performance fix, not a security vulnerability fix, and it only affects non-production-test firmware builds.

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.

AI review queuedrefactor(core/ethereum): simplify `sign_tx()` digest flowby Roman Zeyde · e07499da · Aug 4, 2026 · 1 fileMessage 85 · StrongInformational 12Details
Commit message · Roman Zeyde

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

De-duplicate RLP `fields` definition and better encapsulate RLP length
and digest computation - see `_start_digest` and `_finish_digest`.

[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
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 12/100

This commit is a straightforward internal code cleanup in the Ethereum transaction signing module. It moves existing digest-calculation logic into two new helper functions, _start_digest() and _finish_digest(), without changing what data is hashed or how the transaction is signed. There is no indication of a security fix or behavior change.

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.

AI review queuedrefactor(core/ethereum): simplify `sign_tx_eip1559()` digest flowby Roman Zeyde · 3d2b70cf · Aug 3, 2026 · 1 fileMessage 85 · StrongInformational 12Details
Commit message · Roman Zeyde

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

De-duplicate RLP `fields` definition and better encapsulate RLP length
and digest computation - see `_start_digest` and `_finish_digest`.

[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
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 12/100

This commit is a code cleanup (refactor) for how Trezor's Ethereum app builds the transaction hash for EIP-1559 transactions. It moves the existing hashing steps into two helper functions and removes a duplicated list of transaction fields. There is no change to what data is signed or how it is signed, and no security bug is introduced or fixed.

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): 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.

Lower-prioritychore(vendor): bump micropython to 1.28.0by Martin Milata · 834f4c30 · Aug 3, 2026 · 1 fileMessage 57 · ThinInformational 10Details
Commit message · Martin Milata

chore(vendor): bump micropython to 1.28.0

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

This commit updates the bundled MicroPython software component from one version to another (1.28.0). No code changes within the Trezor project itself are shown, and no security-related information is provided in the commit title or message.

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): 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): 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 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): 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/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.

Lower-priorityrefactor(core): update users of micropython uzlibby Martin Milata · 709075c1 · Aug 3, 2026 · 3 filesMessage 80 · StrongLow 29Details
Commit message · Martin Milata

refactor(core): update users of micropython uzlib

Relevant micropython changes:
c2b8e6e5d685ce0ef7cd7186f326cac8a39eb2a3 lib/uzlib: Clean up tinf -> uzlib rename.
e6c290c3d145de81e23f406c84359860c4d6e632 lib/uzlib: Add a source_read_data var to pass to source_read_cb.

Needs trezor-specific patch.

[no changelog]

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

This commit updates Trezor firmware code to match a renamed and slightly changed version of the micropython uzlib decompression library. It renames types (e.g., `uzlib_uncomp` to `uzlib_uncomp_t`), replaces old return-code constants (`TINF_OK` with `UZLIB_OK`), and adds a new `source_read_data` field used by the library's callback mechanism. The changes are a routine refactor to stay compatible with an upstream micropython update. There is no direct evidence in the commit that this fixes a security vulnerability, but any mismatch between firmware and its decompression library could in principle cause crashes or incorrect behavior during firmware updates.

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