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

Does the history explain itself?

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

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

Who is changing the project?

Public Git author strings; identities are not independently verified.

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

Published AI watches

Last scanned 38 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 queuedrefactor(core): improve internal representation of protobuf definitionsby cepetr · 2b4214cc · Sep 14, 2026 · 5 filesMessage 62 · AdequateLow 30Details
Commit message · cepetr

refactor(core): improve internal representation of protobuf definitions

[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
parser or protocol pathsecond-pass: security-sensitive path
AI analysis · Low 30/100

This commit is a code cleanup that changes how Trezor firmware internally labels 32-bit versus 64-bit integer fields in its protobuf handling. It does not add or remove security checks by itself, but it makes the type system more precise so that future integer-overflow mistakes are harder to introduce. The change is described by the author as a refactor with no changelog entry.

AI review queuedfix(core): reject malformed protobuf field keysby cepetr · e05fcc98 · Sep 14, 2026 · 2 filesMessage 57 · ThinModerate 61Details
Commit message · cepetr

fix(core): reject malformed protobuf field keys

[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
parser or protocol pathsecond-pass: security-sensitive path
AI analysis · Moderate 61/100

This commit fixes the way a Trezor hardware wallet's Rust code reads protobuf message field keys. Previously, if reading a field key failed, the decoder silently stopped and treated the message as complete. Now it explicitly checks whether data remains and reports an error if a malformed or truncated field key is encountered. The change prevents an attacker from sneaking invalid or truncated protobuf data past the parser, which could lead to messages being accepted even though they contain garbage or hidden fields.

AI review queuedfeat(solana): confirm space when creating accountsby Jakub Janků · 04ed8330 · Sep 11, 2026 · 4 filesMessage 85 · StrongLow 37Details
Commit message · Jakub Janků

feat(solana): confirm space when creating accounts

We already let the user confirm the space parameter of the Allocate
(With Seed) instruction. For consistency, do the same for the Create
Account (With Seed) instruction.

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

This commit adds an on-screen confirmation step for the 'space' (data size) parameter when creating new Solana accounts on a Trezor device. Previously, this parameter was hidden from the user during Create Account instructions, even though it was already shown for a related 'Allocate' instruction. The change improves consistency and helps users spot transactions that request unexpectedly large storage allocations, which could be a sign of a malicious or misleading transaction.

AI review queuedfix(core): correct timestamp conversion in `time_gmtime2000()`by Roman Zeyde · d0f50b4d · Sep 9, 2026 · 4 filesMessage 95 · StrongLow 37Details
Commit message · Roman Zeyde

fix(core): correct timestamp conversion in `time_gmtime2000()`

It was working on the emulator (since `mp_int_t` is 64-bit)
but failing on HW devices.

Also, improve `test_lock_time_datetime` coverage.

Note: `2106-02-07 06:28:15` = 2**32-1 seconds from epoch.

95/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Mentions testing or verification
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Low 37/100

This commit fixes a date-handling bug in Trezor hardware wallets. The device converts Bitcoin transaction lock-time timestamps into human-readable dates on its screen. Before the fix, the code used a 32-bit signed integer on real hardware, so any date after the year 2038 (and in practice after about 2068 in this code) would be misread and the wrong date would be shown to the user. The fix switches to a 64-bit timestamp type and adds tests for far-future dates up to the year 2106. The main risk is that a user could be tricked into approving a transaction whose real lock-time date is different from what the device displays.

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

fix(tests): reorganize imports - style check

[no changelog]

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

This commit is a minor code cleanup in a test file. It reorganizes Python import statements to follow style guidelines by importing Callable and Sequence from collections.abc instead of typing. There is no functional change and no security relevance.

AI review queuedfix(l10n): Indonesian fixes for Bolt/Caesar/Deliziaby Michal Kazda · f408bceb · Sep 4, 2026 · 2 filesMessage 62 · AdequateInformational 15Details
Commit message · Michal Kazda

fix(l10n): Indonesian fixes for Bolt/Caesar/Delizia
[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 pathtranslation-only discountsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit updates Indonesian language translations for the Trezor hardware wallet. It adjusts wording and line breaks for different device models (Bolt, Caesar, Delizia, Eckhart) and updates the translation signature file. There are no code changes and no security implications.

AI review queuedchore(ci): add timeouts to all jobsby M1nd3r · 96de4ce3 · Sep 3, 2026 · 16 filesMessage 57 · ThinInformational 15Details
Commit message · M1nd3r

chore(ci): add timeouts to all jobs

[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 pathdocumentation-only discountsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit only adds time limits to automated GitHub Actions CI/CD jobs so they stop automatically if they run too long. It does not change any Trezor firmware code, wallet logic, cryptography, or user-facing behavior. There is no security vulnerability being fixed or introduced here.

AI review queuedchore(core): sign translationsby Roman Zeyde · 2763e22f · Sep 1, 2026 · 1 fileMessage 62 · AdequateInformational 15Details
Commit message · Roman Zeyde

chore(core): sign translations

[no changelog]

(cherry picked from commit b40aaefea2cfea8128370809107fb6c56aaba0ec)

62/100 · AdequateMessage clarity
✓ Descriptive subject✓ Uses a recognizable type or scope✓ Provides an explanatory body
Why it was queued
signing or wallet pathtranslation-only discountsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit simply adds a new digital signature entry to a JSON file that records approved translation bundles for the Trezor hardware wallet. It is a routine metadata update with no code changes and no apparent security relevance.

AI review queuedfeat(core): report `Ethereum_EIP7702` from `GetFeatures`by Roman Zeyde · e4a7d054 · Sep 1, 2026 · 2 filesMessage 85 · StrongInformational 15Details
Commit message · Roman Zeyde

feat(core): report `Ethereum_EIP7702` from `GetFeatures`

1st part of https://github.com/trezor/trezor-firmware/issues/7693.

[no changelog]

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

This commit simply advertises that Trezor Model T / Core devices support a new Ethereum feature called EIP-7702 when a host asks the device for its capabilities. It does not change how transactions are signed, authorized, or validated. There is no security-relevant behavior change.

AI review queuedfix(core): avoid panic on sentinel glyph lookupby obrusvit · 79d2aa73 · Aug 31, 2026 · 1 fileMessage 57 · ThinLow 37Details
Commit message · obrusvit

fix(core): avoid panic on sentinel glyph lookup

[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
translation-only discountsecond-pass: broader security terminology
AI analysis · Low 37/100

This commit fixes a bug in the Trezor firmware's translation system where looking up a special 'sentinel' (end-marker) value could cause the device to crash (panic). The fix changes the code to safely check whether the next entry exists before reading it, returning 'not found' instead of crashing. A test was added to confirm the sentinel lookup no longer panics.

AI review queuedrefactor(core): RIIR definitionsby obrusvit · c7dc4897 · Aug 29, 2026 · 13 filesMessage 47 · ThinLow 28Details
Commit message · obrusvit

refactor(core): RIIR definitions

[no changelog]

47/100 · ThinMessage clarity
✓ Descriptive subject✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
parser or protocol pathsecond-pass: security-sensitive path
AI analysis · Low 28/100

This commit rewrites the handling of externally downloaded coin/network definitions from Python into Rust. It moves parsing, signature verification, and protobuf decoding into a new Rust module. The change is described by the vendor as a non-security refactor ('RIIR' = 'Rewrite It In Rust') with no changelog entry. The diff itself does not introduce obvious new vulnerabilities, but it is a partial refactor: the Python side now delegates most validation to Rust, and some safety comments rely on assumptions about MicroPython not mutating buffers. There is no vendor statement that this is a security fix or that it addresses a reported vulnerability.

AI review queuedchore(l10n): change Eckhart send__cancel_sign to a questionby Michal Kazda · cb528ee0 · Aug 28, 2026 · 8 filesMessage 62 · AdequateInformational 15Details
Commit message · Michal Kazda

chore(l10n): change Eckhart send__cancel_sign to a question
[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 pathtranslation-only discountsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit only changes the wording of one on-screen message in the Trezor firmware. For the 'Eckhart' design theme, the text 'Cancel sign.' is changed to 'Cancel sign?' (and equivalent changes in Czech, German, Spanish, French, and Portuguese). It is a cosmetic localization tweak with no security effect.

AI review queuedchore(l10n): only add period to send__cancel_sign in Eckhartby Michal Kazda · d07557cd · Aug 27, 2026 · 9 filesMessage 77 · AdequateInformational 15Details
Commit message · Michal Kazda

chore(l10n): only add period to send__cancel_sign in Eckhart
- remove from Bolt and Caesar, which do not use send__cancel_sign
[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 commit is a minor localization cleanup. It removes a trailing period from the 'Cancel sign' translation string in older product layouts (Bolt, Caesar, Delizia) and keeps the period only in the newest layout (Eckhart). It also updates the translation signature file. There is no security relevance.

AI review queuedfix(l10n): update generated filesby Michal Kazda · 40add235 · Aug 27, 2026 · 5 filesMessage 57 · ThinInformational 15Details
Commit message · Michal Kazda

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

This commit is a routine localization update. It adds one new translated button label ('Cancel sign'), fixes a punctuation mark in another label, and refreshes the generated translation files and their cryptographic signatures. There is no indication of any security issue.

AI review queuedfix(l10n): update generated filesby Michal Kazda · fb9dccd4 · Aug 27, 2026 · 5 filesMessage 57 · ThinInformational 15Details
Commit message · Michal Kazda

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

This commit is a routine localization update. It adds one new user-facing button label, 'Review', to the Trezor hardware wallet's translation system and regenerates the files that store translated strings and their cryptographic signature. There is no change to security logic, no bug fix, and no vulnerability.

AI review queuedchore(core): remove last uses of `Optional`by M1nd3r · 169e1711 · Aug 26, 2026 · 4 filesMessage 57 · ThinInformational 15Details
Commit message · M1nd3r

chore(core): remove last uses of `Optional`

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

This is a routine code cleanup that replaces the older Optional[Type] style with the newer Type | None style in a few Python files. It also updates the project's automated style checker to enforce the newer style. There is no functional change to the code and no security impact.

AI review queuedchore(core): enforce PEP 585 style [UP006]by M1nd3r · 33b2c0e0 · Aug 26, 2026 · 11 filesMessage 72 · AdequateInformational 15Details
Commit message · M1nd3r

chore(core): enforce PEP 585 style [UP006]

- Removes non-pep585 annotations, e.g. `typing.Tuple` -> `tuple`.

[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 code cleanup that updates Python type annotations to a newer, recommended style. It does not change what the code actually does, only how type hints are written. There is no security issue here.

AI review queuedtest(solana): unit test tx header parserby Jakub Janků · fe3e91b5 · Aug 26, 2026 · 1 fileMessage 90 · StrongInformational 15Details
Commit message · Jakub Janků

test(solana): unit test tx header parser

For now, only the header parsing is tested, but the added serialization
code can be used in the future to unit test other parts of the Solana TX
parser as well.

[no changelog]

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

This commit only adds a new unit test file for the Solana transaction parser in the Trezor firmware. It does not change any production code, fix bugs, or alter behavior. It is purely a test/quality improvement with no security relevance.

AI review queuedfix(solana): properly sanitize account countsby Jakub Janků · 5c7fde0c · Aug 26, 2026 · 1 fileMessage 88 · StrongLow 40Details
Commit message · Jakub Janků

fix(solana): properly sanitize account counts

The parsed address counts were previously checked only using asserts
which are stripped out in release builds. As a result, the device could
misclassify the accounts in a TX and present a writable signer as
read-only. However, no funds were at risk, since a TX with invalid counts
is rejected by the network.

Moreover, one asserted bound was incorrect, at least one writable signer
must be present in each TX (the fee payer).

This commit replaces the asserts with proper if-raise checks that now
mirror the on-chain checks, see:

https://github.com/anza-xyz/solana-sdk/blob/06b8acf9dfc505da943e25274454a95a5bdaa42a/message/src/legacy.rs#L166-L178
https://github.com/anza-xyz/solana-sdk/blob/06b8acf9dfc505da943e25274454a95a5bdaa42a/message/src/versions/v0/mod.rs#L126-L138

[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
defensive validationsigning or wallet pathsecond-pass: near security thresholdsecond-pass: security-sensitive path
AI analysis · Low 40/100

This commit fixes a bug in how Trezor's Solana app counted account roles inside a transaction. In release builds, safety checks were removed, so a malformed transaction could trick the device into showing a signer account as read-only on screen. The device would not actually sign anything harmful, because the Solana network would reject the bad transaction anyway. The fix replaces the removed checks with proper error handling and corrects one rule: every transaction must have at least one writable signer to pay fees.

AI review queuedfix(tests): update .dat filesby PrisionMike · 5054fd71 · Aug 26, 2026 · 26 filesMessage 82 · StrongInformational 15Details
Commit message · PrisionMike

fix(tests): update .dat files

- updated timestamps on .dat files avoid CI failures when definition version is bumped during release.

[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
second-pass: unusually broad change
AI analysis · Informational 15/100

This commit only updates test data files (binary .dat fixtures and a UI test fixtures JSON file) to refresh timestamps. The change is explicitly described as avoiding CI test failures when a version number is bumped during release. There is no firmware code change, no user-facing behavior change, and no security relevance.

AI review queueddocs(core): changelog for 2.12.5by Roman Zeyde · 204ca3fd · Aug 26, 2026 · 21 filesMessage 72 · AdequateModerate 69Details
Commit message · Roman Zeyde

docs(core): changelog for 2.12.5

[no changelog]

(cherry picked from commit d2f3aee41be7360b2812fb3d833f6463bfc12dd4)

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: unusually broad changesecond-pass: security-sensitive path
AI analysis · Moderate 69/100

This commit is a documentation-only changelog update for the Trezor firmware release 2.12.5. It lists several security fixes that were already made in earlier code changes, including protections for Ethereum swaps and staking, Solana token display and stake lockup confirmation, and Stellar network and signer details. The commit itself does not change any firmware code, but it confirms that the vendor considers these items security-relevant for the release.

AI review queuedfix(core): correct Rust UI chunkification logic for non-ASCII textby Roman Zeyde · 958ce98a · Aug 25, 2026 · 1 fileMessage 89 · StrongLow 44Details
Commit message · Roman Zeyde

fix(core): correct Rust UI chunkification logic for non-ASCII text

Otherwise, `text[..final_index]` would panic.

[no changelog]

89/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body✓ Explains rationale or failure mode
Why it was queued
second-pass: broader security terminology
AI analysis · Low 44/100

This commit fixes a bug in the Trezor hardware wallet's Rust UI code that splits text into chunks for display. The old code used byte positions instead of character positions when handling non-ASCII text (like accented letters or non-Latin scripts). This could cause the device to crash with a panic when trying to display certain international characters, because Rust would reject a slice that cut through the middle of a multi-byte character. The fix makes the chunking logic respect character boundaries. There is no direct evidence in the commit that this is exploitable as a security attack, but any device panic during rendering of user-facing text is at minimum a denial-of-service concern.

AI review queued fix(monero): reject sweep change aliasing money-carrying outputsby Petr Susil · 18507cfc · Aug 25, 2026 · 2 filesMessage 97 · StrongHigh 71Details
Commit message · Petr Susil

fix(monero): reject sweep change aliasing money-carrying outputs

Prevent the sweep-shape exemption from accepting an unvalidated change
address that aliases a money-carrying output.

Honest sweeps remain valid because the fake output carries amount 0,
while the primary-address exception is preserved because step 6 derives
the same one-time key either way.

(cherry picked from commit 8e2e0b27ba0fdc0dd47cb94fc019405ea48b0a7e)

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
defensive validationsigning or wallet pathsecond-pass: near security thresholdsecond-pass: security-sensitive path
AI analysis · High 71/100

This update fixes a flaw in how Trezor handled certain Monero 'sweep' transactions. In a sweep, the device normally skips checking whether the change address truly belongs to the user, because the change output is supposed to carry zero coins and go to a random address. A malicious computer or wallet software could have reused that unvalidated change address for an output that actually holds money. The device would then treat that money as change and lock it with a key the user might not control, effectively freezing or misdirecting funds. The fix rejects such transactions unless the address is the user's own primary address, where the math happens to be safe either way.

AI review queuedfix(core): avoid race condition when collecting qstrsby Roman Zeyde · 083bc87f · Aug 24, 2026 · 2 filesMessage 62 · AdequateInformational 21Details
Commit message · Roman Zeyde

fix(core): avoid race condition when collecting qstrs

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

This commit fixes a build-time race condition in the script that generates a list of internal string identifiers (called 'qstrs') used by the Trezor firmware. Previously, the generator could read a generated translation file while it was being updated, potentially producing an inconsistent list. The fix makes the generator read translation string names directly from the source translation file instead of from a generated file, and also excludes generated files from the grep search. This is a build-system reliability fix, not a runtime security vulnerability in the device itself.

AI review queuedchore(translations): sync Crowdin translationsby Thalarion · c8626c70 · Aug 24, 2026 · 6 filesMessage 57 · ThinInformational 15Details
Commit message · Thalarion

chore(translations): sync Crowdin translations

[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 pathtranslation-only discountsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit is a routine synchronization of translated user-interface text for the Trezor hardware wallet. It only changes wording in Czech, German, Spanish, French, and Portuguese translation files, plus the corresponding translation signature metadata. There is no code change, no security fix, and no functional behavior change.