TZ
← All projectsTrezor

Trezor firmware

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

BitcoinHardware walletsNormal
Repository coverage

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

915security candidates307second-pass queue287AI analyses
338commits · 30 days
577commits · 60 days
1352commits · 180 days
2649commits · 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.

66/100 average clarity
470Strong · 80–100
1316Adequate · 60–79
859Thin · 40–59
5Opaque · 0–39
Read the scoring rubric →
Developer activity

Who is changing the project?

Public Git author strings; identities are not independently verified.

DeveloperCommitsCandidatesAnalyzedHigh riskMessage avg.
Jakub Janků1997184
Martin Pastyřík2384173
Roman Zeyde56617652071
tychovrahe29210440061
cepetr1968215059
Ioan Bizău2307622059
obrusvit2137614064
M1nd3r2067121071
Lukas Bielesch846719067
PrisionMike945941073
Martin Milata1744612063
Ondřej Vejpustek95342060
Analysis record

Published AI watches

Last scanned 0 minutes ago

Low 33 AI analysisMessage 67 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

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

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…

Enables a previously disabled security/validation feature (entropy check) for a specific device modelAdds version-gated behavior to avoid errors on older firmwareDefensive hardening of wallet setup randomness verification
a4af9107by Andrew Kozlik+10−42 files
No security note in commit
Informational 15 AI analysisMessage 57 · Thin
TZ TrezorTrezor firmware BitcoinHardware wallets

chore(core): remove scons related files

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, cr…

a4b25c31by cepetr+5−927554 files
No security note in commit
Informational 22 AI analysisMessage 80 · Strong
TZ TrezorTrezor firmware BitcoinHardware wallets

refactor(core): assorted micropython-1.28.0 fixes

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 A…

Synchronizes upstream MicroPython fixes that include buffer-size and stack-safety hardeningPrevents Ctrl+C interruption of frozen boot code, reducing denial-of-service/control-flow risk during bootFixes sys.stdout.buffer.write() return value, which could affect code relying on correct I/O semantics
7ba7879dby Martin Milata+36−4012 files
No security note in commit
Informational 15 AI analysisMessage 80 · Strong
TZ TrezorTrezor firmware BitcoinHardware wallets

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

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 remov…

44aa469eby Martin Milata+1334−1383120 files
No security note in commit
Informational 17 AI analysisMessage 70 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

refactor(core): use mp_obj_new_str_from_vstr

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 t…

Refactor only: helper function renames with equivalent semanticsNew str helper adds UTF-8 validation; bytes helper does not validateNo input validation, length, or error-handling changes observed
7ea11191by Martin Milata+72−7433 files
No security note in commit
Informational 15 AI analysisMessage 80 · Strong
TZ TrezorTrezor firmware BitcoinHardware wallets

refactor(core): get rid of the STATIC macro

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

053def4cby Martin Milata+789−79757 files
No security note in commit
Informational 15 AI analysisMessage 80 · Strong
TZ TrezorTrezor firmware BitcoinHardware wallets

refactor(core): fix renamed micropython modules

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, …

e1edbee0by Martin Milata+86−11727 files
No security note in commit
Informational 15 AI analysisMessage 62 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

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

This commit is a large but straightforward internal refactoring: the cryptographic code is moved from one Rust crate (`rtl`) into a new dedicated crate (`crypto`), and all project dependencies are updated to point to the new crate. The act…

No security-relevant code changes detectedRefactoring only: moving existing crypto wrappers and build logic into a new crateFeature flags and C source lists preserved from the original `rtl` crate
836142c7by matejcik+2213−195139 files
No security note in commit
Informational 17 AI analysisMessage 90 · Strong
TZ TrezorTrezor firmware BitcoinHardware wallets

refactor(core/embed): reorganize error handling

This commit is a code cleanup that moves how Trezor firmware handles fatal errors and shutdowns between its internal software layers. It does not add new user-facing features or change security protections. The main risk is that reorganizi…

Refactor of fatal-error and shutdown code pathsNew noreturn annotations on systask_exit, systask_exit_error, systask_exit_fatal, systask_killRemoval of duplicated test-only system_exit_error/system_exit_fatal implementations
a9dbab53by matejcik+408−32227 files
No security note in commit
Informational 15 AI analysisMessage 62 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

fix(core/bootloader): correct "Change FW vendor" title

This commit changes a single on-screen label in the Trezor bootloader from lowercase 'Change fw vendor' to uppercase 'Change FW vendor'. It is purely a cosmetic wording fix with no security relevance.

5f756282by Roman Zeyde+1−11 file
No security note in commit
Low 30 AI analysisMessage 57 · Thin
TZ TrezorTrezor firmware BitcoinHardware wallets

feat(clear_signing): calldata array support

This commit adds support in Trezor's Ethereum clear-signing feature for transactions that contain multiple embedded subcalls (like a multicall). Previously, only a single embedded call could be clearly displayed. The change lets the device…

New input validation added: callee array length must match subcall array lengthType validation enforced: each subcall blob must be bytes, each callee must be a 20-byte addressGraceful degradation preserved: unparseable subcalls fall back to raw hex display rather than failing the whole transaction
0feb0b96by PrisionMike+186−162 files
No security note in commit
Informational 15 AI analysisMessage 67 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

test(clear signing): multiple calldata

This commit only adds new automated tests for Trezor's Ethereum 'clear signing' feature. It includes a test case for an Aave multi-call transaction, a matching test data blob, and expected screen snapshots for different device models and l…

0de94b8aby PrisionMike+46−64 files
No security note in commit
Informational 19 AI analysisMessage 82 · Strong
TZ TrezorTrezor firmware BitcoinHardware wallets

fix(clear_signing): double display of amount.

This commit fixes a user-interface bug in Trezor's Ethereum 'clear signing' flow where the transaction's native ETH amount could be shown twice on the device screen. The old code tried to avoid duplication by checking whether an 'AmountFor…

No cryptographic, authorization, memory-safety, or input-validation changesChange is limited to on-screen display deduplication logicNo changelog entry requested by the vendor ('[no changelog]')
ce2282bdby PrisionMike+14−172 files
No security note in commit
Informational 21 AI analysisMessage 57 · Thin
TZ TrezorTrezor firmware BitcoinHardware wallets

feat(clear_signing): Add enum formatter - core

This commit adds a new display formatter for Ethereum clear signing. It lets a transaction descriptor map numeric enum values (like 1 or 2) to human-readable labels (like 'stable' or 'variable') on the Trezor screen. The change is purely a…

New formatter raises InvalidFormatDefinition on unexpected/missing enum values, causing fallback to blind signing rather than displaying an untrusted labelDuplicate enum keys are rejected at descriptor decode timeNon-integer enum values are rejected at format time
4b25321cby PrisionMike+131−42 files
No security note in commit
Informational 15 AI analysisMessage 72 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

test(clear_signing): add device test for calldata formatter.

This commit only adds a new automated test case for an existing Ethereum transaction display feature. It does not change any production firmware code, so it cannot introduce a security vulnerability or fix one. It is purely a test-data add…

701624d3by PrisionMike+21−02 files
No security note in commit
Low 39 AI analysisMessage 62 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

feat(clear_signing): support for calldata formatter. - core changes

This commit adds a new Trezor firmware feature called 'clear signing' for nested Ethereum calls. It lets the device understand when a transaction wraps another contract call (like a router or multicall) and tries to show the user readable …

New nested calldata parsing path with explicit depth cap of 1@.to override to callee to prevent token resolution from pointing at the wrapper contract@.from and @.value rejected in nested parse to avoid displaying confidently wrong sender/value
570eb868by PrisionMike+627−503 files
No security note in commit
Informational 23 AI analysisMessage 72 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

test(clear_signing): add enum formatter device test.

This commit is a test-only addition for Trezor's Ethereum 'clear signing' feature. It adds new test cases and makes a small production-code tweak so that enum display-formatters can accept byte values (converted to integers). The change is…

Production code change is a type-handling relaxation in display formatting onlyNo changelog entry; commit is explicitly test-focusedNo vendor security disclosure or advisory referenced
b2d82435by PrisionMike+103−217 files
No security note in commit
Low 34 AI analysisMessage 77 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

chore(crypto): replace `int` by `size_t` for nonnegative parameters

This commit is a code-quality cleanup that changes many function parameters from signed integers (`int`) to unsigned size types (`size_t`) where only non-negative lengths or sizes make sense. It also removes some now-unnecessary negative-v…

Defensive type narrowing from signed `int` to unsigned `size_t` for buffer lengths and sizesRemoval of negative-length checks that become logically unnecessary with `size_t`Assertion added in `bn_format` to guard pointer/length arithmetic
78f83c9aby M1nd3r+159−14825 files
No security note in commit
Low 36 AI analysisMessage 100 · Strong
TZ TrezorTrezor firmware BitcoinHardware wallets

feat(common,core,python,tests): support signing Stellar Soroban authorization entries.

This commit adds a new Trezor feature that lets users sign Stellar Soroban smart-contract authorization entries. The device now supports a new message type where it derives the user's Stellar address, shows confirmation screens, and produc…

New signing surface added for Stellar Soroban authorization entriesUser confirmation flow implemented before signingAuthorization payload binds signature to network, nonce, expiration ledger, address, and invocation tree
6008cc25by Jun Luo+1641−30325 files
No security note in commit
Informational 15 AI analysisMessage 77 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

test(stellar): add Soroban authorization signing tests.

This commit only adds new automated tests for signing Stellar Soroban authorizations. It does not change any production firmware, wallet logic, or cryptographic code. There is no security vulnerability here.

72511927by Jun Luo+538−04 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(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 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): 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): 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): 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): 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): 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 candidatefeat(core/rust): separate trezor-crypto to its own Rust crateby matejcik · 836142c7 · Jul 31, 2026 · 39 filesMessage 62 · AdequateInformational 15Details
Commit message · matejcik

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

62/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
cryptography-sensitive pathboot or update path
AI analysis · Informational 15/100

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

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

refactor(core/embed): reorganize error handling

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

in crypto:
* implement tc_fault_handler by delegating to error_shutdown

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

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

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

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

Security candidatefix(core/bootloader): correct "Change FW vendor" titleby Roman Zeyde · 5f756282 · Jul 29, 2026 · 1 fileMessage 62 · AdequateInformational 15Details
Commit message · Roman Zeyde

fix(core/bootloader): correct "Change FW vendor" title

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

This commit changes a single on-screen label in the Trezor bootloader from lowercase 'Change fw vendor' to uppercase 'Change FW vendor'. It is purely a cosmetic wording fix with no security relevance.

Security candidatefeat(clear_signing): calldata array supportby PrisionMike · 0feb0b96 · Jul 29, 2026 · 2 filesMessage 57 · ThinLow 30Details
Commit message · PrisionMike

feat(clear_signing): calldata array support

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 boundarysigning or wallet path
AI analysis · Low 30/100

This commit adds support in Trezor's Ethereum clear-signing feature for transactions that contain multiple embedded subcalls (like a multicall). Previously, only a single embedded call could be clearly displayed. The change lets the device show each subcall separately with labels like "(Subcall #1)" and handles both a single shared recipient address or a parallel list of recipients. It is a feature addition, not a fix for a known vulnerability.

Security candidatetest(clear signing): multiple calldataby PrisionMike · 0de94b8a · Jul 29, 2026 · 4 filesMessage 67 · AdequateInformational 15Details
Commit message · PrisionMike

test(clear signing): multiple calldata

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

This commit only adds new automated tests for Trezor's Ethereum 'clear signing' feature. It includes a test case for an Aave multi-call transaction, a matching test data blob, and expected screen snapshots for different device models and languages. There are no changes to the actual firmware code that runs on the device, so this commit does not introduce or fix a security vulnerability.

Security candidatefix(clear_signing): double display of amount.by PrisionMike · ce2282bd · Jul 28, 2026 · 2 filesMessage 82 · StrongInformational 19Details
Commit message · PrisionMike

fix(clear_signing): double display of amount.

- compare rendered strings now.
- small typo in a test fixture name.

[no changelog]

82/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body✓ Mentions testing or verification
Why it was queued
signing boundarysigning or wallet path
AI analysis · Informational 19/100

This commit fixes a user-interface bug in Trezor's Ethereum 'clear signing' flow where the transaction's native ETH amount could be shown twice on the device screen. The old code tried to avoid duplication by checking whether an 'AmountFormatter' field was present, but that check missed cases where the same amount was rendered by other field types. The new code compares the actual rendered strings and suppresses the summary amount only when it exactly matches a field already displayed. There is no security vulnerability here; it is purely a display-quality fix.

Security candidatefeat(clear_signing): Add enum formatter - coreby PrisionMike · 4b25321c · Jul 28, 2026 · 2 filesMessage 57 · ThinInformational 21Details
Commit message · PrisionMike

feat(clear_signing): Add enum formatter - core

[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 boundarysigning or wallet path
AI analysis · Informational 21/100

This commit adds a new display formatter for Ethereum clear signing. It lets a transaction descriptor map numeric enum values (like 1 or 2) to human-readable labels (like 'stable' or 'variable') on the Trezor screen. The change is purely additive and includes tests. There is no indication it fixes a security bug or introduces a vulnerability; it is a feature implementation.

Security candidatetest(clear_signing): add device test for calldata formatter.by PrisionMike · 701624d3 · Jul 28, 2026 · 2 filesMessage 72 · AdequateInformational 15Details
Commit message · PrisionMike

test(clear_signing): add device test for calldata formatter.

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 automated test case for an existing Ethereum transaction display feature. It does not change any production firmware code, so it cannot introduce a security vulnerability or fix one. It is purely a test-data addition.

Security candidatefeat(clear_signing): support for calldata formatter. - core changesby PrisionMike · 570eb868 · Jul 28, 2026 · 3 filesMessage 62 · AdequateLow 39Details
Commit message · PrisionMike

feat(clear_signing): support for calldata formatter. - core changes

[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 boundarysigning or wallet path
AI analysis · Low 39/100

This commit adds a new Trezor firmware feature called 'clear signing' for nested Ethereum calls. It lets the device understand when a transaction wraps another contract call (like a router or multicall) and tries to show the user readable details about the inner call instead of just a blob of hex. The change is a feature addition with built-in safeguards: nested parsing is limited to one level, ambiguous fields like sender and value are blocked inside nested calls, and failures fall back to showing raw hex rather than aborting the whole transaction. There is no indication in the commit that this fixes a known security bug; it reads as a defensive new capability.

Security candidatetest(clear_signing): add enum formatter device test.by PrisionMike · b2d82435 · Jul 28, 2026 · 7 filesMessage 72 · AdequateInformational 23Details
Commit message · PrisionMike

test(clear_signing): add enum formatter device test.

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

This commit is a test-only addition for Trezor's Ethereum 'clear signing' feature. It adds new test cases and makes a small production-code tweak so that enum display-formatters can accept byte values (converted to integers). The change is not described as a security fix, and the production change is minor and defensive: it broadens accepted input types rather than fixing a crash or bypass. There is no evidence of a disclosed vulnerability or exploit.

Security candidatechore(crypto): replace `int` by `size_t` for nonnegative parametersby M1nd3r · 78f83c9a · Jul 28, 2026 · 25 filesMessage 77 · AdequateLow 34Details
Commit message · M1nd3r

chore(crypto): replace `int` by `size_t` for nonnegative parameters

Assisted-by: Claude, Opus 5

[no changelog]

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

This commit is a code-quality cleanup that changes many function parameters from signed integers (`int`) to unsigned size types (`size_t`) where only non-negative lengths or sizes make sense. It also removes some now-unnecessary negative-value checks and adjusts callers/tests accordingly. The change is defensive: using `size_t` prevents accidental negative lengths from being interpreted as huge positive values, which can cause memory corruption or information leaks. The commit itself does not claim to fix a specific vulnerability, and no external security advisory is supplied.

Security candidatefeat(common,core,python,tests): support signing Stellar Soroban authorization entries.by Jun Luo · 6008cc25 · Jul 28, 2026 · 25 filesMessage 100 · StrongLow 36Details
Commit message · Jun Luo

feat(common,core,python,tests): support signing Stellar Soroban authorization entries.

Fixes: https://github.com/trezor/trezor-firmware/issues/7312

100/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference✓ Names security-relevant behavior explicitly
Why it was queued
signing boundaryaccess controlsigning or wallet pathboot or update pathauthentication path
AI analysis · Low 36/100

This commit adds a new Trezor feature that lets users sign Stellar Soroban smart-contract authorization entries. The device now supports a new message type where it derives the user's Stellar address, shows confirmation screens, and produces an Ed25519 signature over a protocol-defined authorization payload. The change is a feature addition rather than a bug fix, and the signing flow includes user confirmation steps.

Security candidatetest(stellar): add Soroban authorization signing tests.by Jun Luo · 72511927 · Jul 28, 2026 · 4 filesMessage 77 · AdequateInformational 15Details
Commit message · Jun Luo

test(stellar): add Soroban authorization signing tests.

[no changelog]

77/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Mentions testing or verification✓ Names security-relevant behavior explicitly! No meaningful explanatory body
Why it was queued
signing boundaryaccess controlsigning or wallet pathauthentication path
AI analysis · Informational 15/100

This commit only adds new automated tests for signing Stellar Soroban authorizations. It does not change any production firmware, wallet logic, or cryptographic code. There is no security vulnerability here.

Security candidaterefactor(core/stellar): move generic Soroban writers to writers.py.by Jun Luo · 5f24e157 · Jul 28, 2026 · 5 filesMessage 90 · StrongInformational 15Details
Commit message · Jun Luo

refactor(core/stellar): move generic Soroban writers to writers.py.

SCVal, SCAddress and authorized-invocation writers are used by both the
transaction flow and the standalone authorization signing flow, so they
are no longer operation-specific.

[no changelog]

90/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Names security-relevant behavior explicitly
Why it was queued
signing boundaryaccess controlsigning or wallet pathauthentication path
AI analysis · Informational 15/100

This commit is a straightforward code cleanup: it moves several Stellar Soroban serialization helper functions from an operation-specific file into a shared writers module so both transaction signing and standalone authorization signing can use the same code. No behavior changes, bug fixes, or security fixes are visible in the diff.

Security candidaterefactor(core/stellar): move generic Soroban layout helpers to layout.py.by Jun Luo · 9ce451bd · Jul 28, 2026 · 4 filesMessage 90 · StrongInformational 15Details
Commit message · Jun Luo

refactor(core/stellar): move generic Soroban layout helpers to layout.py.

SCVal formatting and invocation confirmation helpers are used by both
the transaction flow and the standalone authorization signing flow, so
they are no longer operation-specific.

[no changelog]

90/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Names security-relevant behavior explicitly
Why it was queued
signing boundaryaccess controlsigning or wallet pathauthentication path
AI analysis · Informational 15/100

This commit is a straightforward code cleanup: it moves helper functions for formatting Stellar Soroban smart-contract values and showing confirmation screens from one file to another shared file. No security behavior changes are visible in the diff. The only functional tweak is narrowing an exception handler from a broad 'except Exception' to 'except OverflowError' when formatting timestamps, which is a minor hardening improvement, not a vulnerability.

Security candidatefeat(common,core,python,tests): migrate Soroban authorization to SOROBAN_CREDENTIALS_ADDRESS_V2.by Jun Luo · 0d2cc2ac · Jul 28, 2026 · 13 filesMessage 77 · AdequateLow 29Details
Commit message · Jun Luo

feat(common,core,python,tests): migrate Soroban authorization to SOROBAN_CREDENTIALS_ADDRESS_V2.

[no changelog]

77/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Mentions testing or verification✓ Names security-relevant behavior explicitly! No meaningful explanatory body
Why it was queued
access controlcredential or privilege statesigning or wallet path
AI analysis · Low 29/100

This commit updates Trezor's Stellar/Soroban smart-contract support to match a newer Stellar protocol version (Protocol 27). It renames the credential type from the older SOROBAN_CREDENTIALS_ADDRESS to SOROBAN_CREDENTIALS_ADDRESS_V2 and updates the related field name from address to address_v2 across the firmware, Python library, Rust client, and tests. The older credential type is intentionally no longer supported. There is no direct evidence in the commit of a security vulnerability being fixed; it reads as a routine protocol compatibility update.

Security candidatefeat(clear_signing): support sliced paths.by PrisionMike · 017cf136 · Jul 27, 2026 · 6 filesMessage 72 · AdequateLow 31Details
Commit message · PrisionMike

feat(clear_signing): support sliced paths.

- This should enable deleting 1inch builtin addresses. (QA)
[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
signing boundarysigning or wallet path
AI analysis · Low 31/100

This commit adds a new feature to Trezor's Ethereum 'clear signing' system that lets wallet definitions extract a slice of bytes from a numeric parameter. For example, a 32-byte number that secretly packs an address into its last 20 bytes can now be sliced so the device shows only the real address. The change is described as a feature, not a bug fix, and there is no vendor statement that it fixes a security vulnerability. It does reduce one real risk: users could otherwise be tricked into approving transactions where hidden extra bits in a number change the meaning of what they see on screen.

Security candidatefeat(core): confirm ERC-8213 calldata digest if all data is shownby Roman Zeyde · 10c82edd · Jul 27, 2026 · 22 filesMessage 62 · AdequateLow 35Details
Commit message · Roman Zeyde

feat(core): confirm ERC-8213 calldata digest if all data is shown

62/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
cryptography-sensitive pathsigning or wallet pathboot or update path
AI analysis · Low 35/100

This commit adds a new user-facing safety feature for Trezor hardware wallets when signing Ethereum transactions. If the user chooses to view all the raw transaction data (calldata), the device will now also show a final cryptographic hash (digest) of that data, based on a community standard called ERC-8213. This helps users verify that what they saw on screen matches what is actually being signed, reducing the risk of hidden malicious changes in very long data fields. It is a defensive improvement, not a fix for an active bug or vulnerability.