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
296commits · 30 days
701commits · 60 days
1641commits · 180 days
2707commits · 365 days
Backfill bands
Aug 5 → Feb 61298 seen115 candidatesComplete
Feb 6 → Jun 6775 seen58 candidatesComplete
Jun 6 → Jul 6217 seen13 candidatesComplete
Jul 6 → Aug 5360 seen54 candidatesComplete
Commit communication

Does the history explain itself?

Message quality measures whether a commit identifies its scope, purpose, rationale, testing, and supporting references. It does not change the security-severity score.

67/100 average clarity
635Strong · 80–100
1551Adequate · 60–79
1036Thin · 40–59
7Opaque · 0–39
1security candidate with opaque commit messaging
Read the scoring rubric →
Developer activity

Who is changing the project?

Public Git author strings; identities are not independently verified.

DeveloperCommitsCandidatesAnalyzedHigh riskMessage avg.
tychovrahe343134322564
Roman Zeyde675214620372
obrusvit25395235364
PrisionMike10866106272
Andrew Kozlik833481268
Petr Susil202299
Jakub Janků591838180
Martin Pastyřík26823173
cepetr264106222059
M1nd3r24689227071
Ioan Bizău23076230059
Lukas Bielesch856784067
Analysis record

Published AI watches

Last scanned 45 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.

AI review queuedfix(core/bitcoin): Fix external input misidentification.by Andrew Kozlik · 675fa659 · Jul 23, 2026 · 5 filesMessage 77 · AdequateHigh 72Details
Commit message · Andrew Kozlik

fix(core/bitcoin): Fix external input misidentification.

(cherry picked from commit 23bbf680071f7ede286dc3eda2f4baa7193288b2)

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

This update fixes a bug in the Trezor hardware wallet's Bitcoin transaction signing. When a transaction included an external input (someone else's coin) with empty placeholder fields, the device could mistake it for an already-signed input. That would let it skip both signature verification and the warning that tells the user the input is unverified. The fix makes the device treat empty bytes the same as missing fields and rejects ownership proofs on internal or already-signed inputs.

AI review queuedfix(core/bitcoin): Reject new external outputs in bitcoin replacement transactions.by Andrew Kozlik · 62891383 · Jul 23, 2026 · 3 filesMessage 77 · AdequateHigh 72Details
Commit message · Andrew Kozlik

fix(core/bitcoin): Reject new external outputs in bitcoin replacement transactions.

(cherry picked from commit a06d11ea82dcc796106a289084c958cbe76a5caf)

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

This update fixes a security gap in how Trezor handles Bitcoin 'replacement transactions' (used to speed up or adjust a pending payment). Before the fix, a non-payjoin replacement could silently add a brand-new external recipient output, potentially redirecting some of the user's funds without asking for on-device confirmation. The patch now rejects any new external output in non-payjoin replacement transactions, so the device will block such changes and show an error instead of signing.

AI review queuedchore(core): simplify EIP-712 domain confirmation flowby Roman Zeyde · b408aa0a · Jul 23, 2026 · 3 filesMessage 85 · StrongInformational 18Details
Commit message · Roman Zeyde

chore(core): simplify EIP-712 domain confirmation flow

`EIP712Domain` contains up to 5 fields, so it would be much simpler to
always confirm all of them, instead of caching and re-streaming.

[no changelog]

(cherry picked from commit e9f5ebdd496098f07f8c62698b2ecf17615feccd)

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

This commit simplifies how a Trezor hardware wallet asks the user to confirm details when signing Ethereum typed-data messages (EIP-712). Previously, the device first showed only the domain name and version and asked the user to press 'show more' to see the rest; now it always shows all domain fields. The change removes about 50 lines of caching and preview logic. There is no direct evidence in the commit that this fixes a security vulnerability; it reads as a user-interface simplification.

AI review queuedfeat(core): group EIP-712 domain confirmationsby Roman Zeyde · 09e3f9cb · Jul 23, 2026 · 8 filesMessage 88 · StrongInformational 18Details
Commit message · Roman Zeyde

feat(core): group EIP-712 domain confirmations

It should require less confirmations on Bolt, Delizia and Eckhart,
since `EIP712Domain` doesn't contain nested members [1].

Also, show a warning if `EIP712Domain` is empty.

[1] https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator

[no changelog]

(cherry picked from commit b4af7c01db0b0352d81d4db47ec0ec767e559e8d)

88/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 18/100

This commit changes how Trezor devices ask the user to confirm details for EIP-712 typed Ethereum signatures. Instead of showing each piece of the 'EIP712Domain' section one by one, it groups them into a single screen on newer devices. It also adds a warning when the dApp provides an empty EIP712Domain, which means the app did not identify itself. The change is a user-experience improvement with a small defensive-security side effect, not a fix for an active vulnerability.

AI review queuedfix(solana): show `source_account` when approving a delegateby Jakub Janků · 13abf4de · Jul 23, 2026 · 3 filesMessage 97 · StrongLow 49Details
Commit message · Jakub Janků

fix(solana): show `source_account` when approving a delegate

The Solana Token programs provide two instructions for approving a
delegate for an account: `Approve` and `ApproveChecked`. The former
is shown on trezor as deprecated because it doesn't contain any
information about the token mint and decimals. However, it is still
important to show the source account for which we are approving the
delegate --- otherwise, if the user has multiple token accounts,
they may unknowingly approve the delegate for a different account
than they intended. Note that the `source_account` IS shown when
confirming the latter, checked, instructions.

[no changelog]

(cherry picked from commit c881bfedc5c556cce5884fd975b1b3993a34dbfe)

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

This update fixes a display issue in Trezor's Solana token support. When a user approves a delegate (someone who can spend tokens on their behalf) using the older 'Approve' instruction, the device screen previously did not show which token account was being delegated. If a user owns several token accounts, they could accidentally approve the wrong one. The fix adds the source account to the on-screen confirmation, matching what the newer 'ApproveChecked' instruction already shows.

AI review queueddocs(core,prodtest): changelog update core v2.12.2 prodtest v0.3.8by PrisionMike · f7bd2917 · Jul 23, 2026 · 24 filesMessage 77 · AdequateHigh 70Details
Commit message · PrisionMike

docs(core,prodtest): changelog update core v2.12.2 prodtest v0.3.8

(cherry picked from commit 2549fb7f8ff7e758e63036a349284927bd55e4f2)

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
second-pass: unusually broad change
AI analysis · High 70/100

This commit is a documentation-only changelog update for the Trezor firmware release 2.12.2 and prodtest 0.3.8. It does not change any code, but it lists several security fixes that are part of this release. The most important ones affect Bitcoin and Solana transactions: Bitcoin signing could misidentify external inputs, and replacement transactions (RBF) could silently add new external outputs. Solana token transfers could display the wrong recipient address when using address lookup tables, and some Solana instruction parameters were not shown to the user for confirmation. Because the actual code changes are not in this commit, the risk assessment is based on the vendor's own changelog descriptions.

AI review queuedchore(python): make merkle tree balancedby M1nd3r · 6c40c944 · Jul 23, 2026 · 4 filesMessage 57 · ThinInformational 19Details
Commit message · M1nd3r

chore(python): make merkle tree balanced

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

This commit changes how Trezor's Python library builds Merkle trees so that the trees are balanced. Previously, leftover odd nodes were pushed upward, which could make some membership proofs much longer than others. The change is described as a routine improvement ('chore') with no security claim by the vendor. There is no direct evidence in the commit that this fixes an active vulnerability, but unbalanced Merkle trees can theoretically leak information about which item is being proved or create subtle correctness/performance issues in protocols that assume balanced trees.

AI review queuedtest(core): fix Stellar payment request tests.by Jun Luo · e9bd96f3 · Jul 22, 2026 · 2 filesMessage 67 · AdequateInformational 15Details
Commit message · Jun Luo

test(core): fix Stellar payment request tests.

[no changelog]

67/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Mentions testing or verification! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit only updates test data and a test assertion for Stellar payment request tests. It does not change any production firmware code, so it has no direct security impact on users.

AI review queuedfix(l10n): updated generated files [no changelog]by Michal Kazda · 6ee734ad · Jul 21, 2026 · 5 filesMessage 72 · AdequateInformational 15Details
Commit message · Michal Kazda

fix(l10n): updated generated files
[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 or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit is a routine refresh of automatically generated translation files. It updates user-facing text strings (for example, changing punctuation or wording of on-screen messages) and adds one new string used during PIN setup. There is no change to security logic, cryptography, or how the device protects funds.

AI review queuedchore(core): add ETH calldata digest translated stringby Roman Zeyde · a4097f69 · Jul 21, 2026 · 6 filesMessage 62 · AdequateInformational 15Details
Commit message · Roman Zeyde

chore(core): add ETH calldata digest translated string

[no changelog]

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

This commit only adds a new user-facing text label, 'ERC-8213 digest', used when a Trezor device displays Ethereum transaction details. There is no code that processes transaction data, cryptography, or user authorization. It is a translation/string asset change with no security relevance on its own.

AI review queuedrefactor(core/ethereum): make `ConfirmDataFn` a classby Roman Zeyde · f560b6f0 · Jul 21, 2026 · 2 filesMessage 85 · StrongInformational 15Details
Commit message · Roman Zeyde

refactor(core/ethereum): make `ConfirmDataFn` a class

It can be created inside `_confirm_data_chunks()`.
Also, make `get_progress_indicator` private and return a non-async callback.

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

This commit is a straightforward internal code cleanup in the Ethereum transaction signing flow. It turns a callback-creating helper function into a class and moves where that object is created. There is no change to user-visible behavior, security checks, or cryptographic handling.

AI review queuedtest(core/ethereum): check invalid calldata responsesby Roman Zeyde · 3db63dfe · Jul 19, 2026 · 2 filesMessage 72 · AdequateInformational 12Details
Commit message · Roman Zeyde

test(core/ethereum): check invalid calldata responses

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

This commit only adds new automated tests for the Trezor hardware wallet's Ethereum transaction signing. It checks that the device correctly rejects malformed transaction data sent during signing. There are no changes to the actual firmware code that users run, so this commit does not fix or introduce a security issue by itself.

AI review queuedrefactor(core/ethereum): simplify empty calldata handlingby Roman Zeyde · 1580e435 · Jul 19, 2026 · 2 filesMessage 85 · StrongInformational 18Details
Commit message · Roman Zeyde

refactor(core/ethereum): simplify empty calldata handling

No need to call `get_progress_indicator()` if there is not calldata.
We don't need to confirm/hash it as well.

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

This is a small code cleanup in Trezor's Ethereum transaction signing. When an Ethereum transaction has no extra data (calldata), the device no longer runs a now-unnecessary progress-indicator step. This only changes the user-interface flow for no-data transactions; it does not change what is signed or how the signature is computed. The large diff is mostly updated test screenshot fingerprints (hashes) reflecting the changed on-screen sequence.

AI review queuedrefactor(core/ethereum): simplify `request_initial_data()` loadingby Roman Zeyde · b2959408 · Jul 19, 2026 · 1 fileMessage 77 · AdequateInformational 12Details
Commit message · Roman Zeyde

refactor(core/ethereum): simplify `request_initial_data()` loading

Also, deduplicate RLP header and initial data hashing.

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

This commit is a code cleanup in the Ethereum transaction signing module. It replaces a manual byte-copying loop with a simpler buffer extension approach and removes duplicate code that wrote the RLP header and hashed the data in two different places. There is no indication of a security bug being fixed.

AI review queuedrefactor(core/ethereum): simplify and rename `_send_request_chunk()`by Roman Zeyde · 730ea609 · Jul 19, 2026 · 1 fileMessage 77 · AdequateLow 47Details
Commit message · Roman Zeyde

refactor(core/ethereum): simplify and rename `_send_request_chunk()`

Also, check `EthereumTxAck.data_chunk` size, similar to `apps.common.chunked.get_data_chunk()`.

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

This commit refactors how a Trezor hardware wallet asks for pieces of an Ethereum transaction's data from the host computer. It renames an internal helper and, importantly, adds a size check so the host cannot return a chunk larger than the device requested. That oversized-chunk condition could previously lead to memory corruption or unexpected behavior during transaction signing.

AI review queuedrefactor(core/ethereum): import `HashWriter` only for type-checkingby Roman Zeyde · ad23bda4 · Jul 19, 2026 · 1 fileMessage 62 · AdequateInformational 15Details
Commit message · Roman Zeyde

refactor(core/ethereum): import `HashWriter` only for type-checking

[no changelog]

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

This is a minor code cleanup in the Ethereum transaction signing module. It moves an import statement so that a helper class (`HashWriter`) is only imported during type-checking, not at runtime. There is no functional change, no bug fix, and no security relevance.

AI review queuedchore(core): add new strings for EIP-7702by Roman Zeyde · 18f1770c · Jul 17, 2026 · 6 filesMessage 80 · StrongInformational 15Details
Commit message · Roman Zeyde

chore(core): add new strings for EIP-7702

https://www.figma.com/design/3wF1eh3Ftj0XGX7wFmev8t/EIP-7702

[no changelog]

80/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body✓ Links an issue, advisory, or supporting reference
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit only adds and updates user-facing text strings (labels, warnings, and confirmation messages) for a new Ethereum feature called EIP-7702. It does not change any code that handles private keys, signing logic, transaction parsing, or security checks. There is no direct security issue visible in this change.

AI review queuedfix(tests): make `verify_cert_chain()` accept longer certificate chainsby Ondřej Vejpustek · c3d46193 · Jul 17, 2026 · 1 fileMessage 72 · AdequateInformational 12Details
Commit message · Ondřej Vejpustek

fix(tests): make `verify_cert_chain()` accept longer certificate chains

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

This commit changes only a test helper function in the Trezor firmware test suite. It moves a common-name check to the beginning of certificate-chain verification so the function can handle chains longer than before. There is no change to the actual device firmware or to any security-critical runtime code.

AI review queuedrefactor(core/ethereum): simplify calldata streaming flowby Roman Zeyde · ca9c3caf · Jul 16, 2026 · 4 filesMessage 85 · StrongLow 31Details
Commit message · Roman Zeyde

refactor(core/ethereum): simplify calldata streaming flow

There is no need for calling `confirm_tx_data` and then `confirm_data_and_summary`,
since we can do calldata streaming (while hashing and confirming) in `confirm_tx_data`.

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

This is a code cleanup (refactor) in Trezor's Ethereum transaction signing. It merges two internal steps into one so that transaction data is streamed, hashed, and shown to the user in a single pass instead of two. The commit message says there is no functional change, and the visible code preserves the same hashing and confirmation behavior. UI test snapshots changed, which is expected because the on-screen flow order changed, but no security bug is evident from the diff alone.

AI review queuedfeat(nordic): add support for different NCS sdk versionsby tychovrahe · 253c4f87 · Jul 16, 2026 · 10 filesMessage 62 · AdequateInformational 19Details
Commit message · tychovrahe

feat(nordic): add support for different NCS sdk versions

[no changelog]

62/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 19/100

This commit updates Trezor's Bluetooth firmware build system so it can compile against two different Nordic SDK versions (an older 2.9 and a newer 3.3). It adds version checks, pins the correct compiler toolchain, and renames a few Bluetooth and SPI constants so the same source code works with both SDKs. There is no obvious security bug being fixed; it is primarily a compatibility and build-reliability change.

AI review queuedrefactor(core/ethereum): handle staking/yielding in `confirm_tx_data()`by Roman Zeyde · 6c158b50 · Jul 15, 2026 · 4 filesMessage 85 · StrongLow 27Details
Commit message · Roman Zeyde

refactor(core/ethereum): handle staking/yielding in `confirm_tx_data()`

This way, we don't need to call `get_progress_indicator()`,
since all the data has been already loaded and hashed.

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

This is an internal code cleanup in Trezor's Ethereum transaction signing. It changes how staking and yield-farming transactions hand off their user-confirmation step so the confirmation happens inside the same routine instead of being returned as a separate progress indicator. The commit message says the goal is to avoid needing a progress indicator because all transaction data is already loaded and hashed. There is no direct evidence in the commit of a security bug being fixed, but the change touches the code that decides what users see before they approve high-value operations like staking and vault deposits/withdrawals. The large set of updated UI test hashes shows the on-screen flow changed, which is expected for a refactor of this kind.

AI review queuedfix(stellar): properly bound string lengthby Jakub Janků · 888aa308 · Jul 15, 2026 · 3 filesMessage 88 · StrongModerate 60Details
Commit message · Jakub Janků

fix(stellar): properly bound string length

Currently, the length of all bounded strings is checked using
len(str). This returns the number of Unicode code points. However,
the XDR spec defines string object<m> as a sequence of at most m
bytes, see https://datatracker.ietf.org/doc/html/rfc4506#section-4.11.
A single Unicode code point can consist of multiple bytes.

[no changelog]

88/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Moderate 60/100

This commit fixes a length-check bug in Trezor's Stellar cryptocurrency support. The device was measuring string length in characters (Unicode code points) instead of bytes. Because some characters use multiple bytes, a string could pass the old check yet be too long for the Stellar protocol, potentially causing malformed transaction data or unexpected device behavior when signing.

AI review queuedrefactor(core/rust): don't panic if Rust layout is unavailableby Roman Zeyde · 3c4c5ae1 · Jul 15, 2026 · 1 fileMessage 93 · StrongInformational 20Details
Commit message · Roman Zeyde

refactor(core/rust): don't panic if Rust layout is unavailable

Following https://github.com/trezor/trezor-firmware/pull/7282,
let's raise `RuntimeError` if the layout has been dropped too early
(instead of panicking).

[no changelog]

93/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
Why it was queued
second-pass: broader security terminology
AI analysis · Informational 20/100

This commit changes how a hardware wallet's screen-layout code handles the case where a user-interface layout has been closed or dropped earlier than expected. Previously the code would panic (crash). Now it returns a controlled RuntimeError instead. It is a defensive hardening change, not a fix for an active exploit, and it follows an earlier related pull request.

AI review queuedrefactor(core/ethereum): rename and move keccak-related helper functionsby Roman Zeyde · dc2aadf6 · Jul 15, 2026 · 7 filesMessage 62 · AdequateInformational 15Details
Commit message · Roman Zeyde

refactor(core/ethereum): rename and move keccak-related helper 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
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This is a clean internal code cleanup in the Ethereum app of the Trezor firmware. It moves the Keccak hashing helper to a shared location and updates callers to use it. There is no user-facing behavior change and no security fix.

AI review queuedrefactor(core/ethereum): simplify `confirm_data_and_summary()`by Roman Zeyde · 814203e1 · Jul 14, 2026 · 2 filesMessage 77 · AdequateInformational 15Details
Commit message · Roman Zeyde

refactor(core/ethereum): simplify `confirm_data_and_summary()`

Note that `(confirm_data_chunk is None) == (confirm_summary is None)`.

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

This is a small internal code cleanup in Trezor's Ethereum transaction signing. It replaces two separate return values with a single tuple, because they are always either both present or both absent. There is no user-visible behavior change and no indication of a security fix.