TZ
← All projectsTrezor

Trezor firmware

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

BitcoinHardware walletsNormal
Repository coverage

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

1126security candidates372second-pass queue2926AI analyses
284commits · 30 days
705commits · 60 days
1648commits · 180 days
2690commits · 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
639Strong · 80–100
1553Adequate · 60–79
1038Thin · 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 Zeyde676214620372
obrusvit25796236364
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 9 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 62 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

chore(core/bolt): remove unneeded `use` statements

This commit simply removes two unused Rust import statements (called `use` statements). It does not change any actual code behavior, logic, or security properties of the Trezor firmware.

a56f8c3dby Roman Zeyde+0−22 files
No security note in commit
Informational 18 AI analysisMessage 57 · Thin
TZ TrezorTrezor firmware BitcoinHardware wallets

fix(core): add missing colon in Tron

This commit fixes a UI formatting bug in the Tron cryptocurrency flow on Trezor hardware wallets. A missing colon was added to account information labels shown on the device screen. The change is cosmetic and does not appear to affect cryp…

UI label formatting fix onlyNo changes to signature verification, key handling, or transaction authorizationNo buffer size, memory allocation, or input validation changes observed
739c2968by Michal Kazda+19332−193364 files
No security note in commit
Informational 15 AI analysisMessage 57 · Thin
TZ TrezorTrezor firmware BitcoinHardware wallets

fix(core): combine path/account with labels

This commit is a straightforward user-interface refactoring. It bundles an account/path label together with its corresponding value into a single tuple, instead of passing them as four separate arguments. There is no security-relevant chan…

c66f6f4dby Michal Kazda+51−7413 files
No security note in commit
Repository ledger

Explore captured commits

Expand any commit for its author, full message, clarity score, changed files, triage signals, analysis, and source link.

Security candidatechore(translations): removed unused FR glyphby Michal Kazda · 3a25cecf · Aug 26, 2026 · 23 filesMessage 72 · AdequateInformational 15Details
Commit message · Michal Kazda

chore(translations): removed unused FR glyph
- this glyph was already gone from foreign_chars.py
[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
cryptography-sensitive pathtranslation-only discount
AI analysis · Informational 15/100

This commit is a routine cleanup of unused French font data. It removes the degree symbol (°) glyph and its spacing rules from 23 font files because that character is no longer needed for French translations. There is no code change, no security fix, and no user-facing behavior change beyond slightly smaller font files.

Security candidatefeat: Introduce dynamic parameter handling for device menu layouts and longer lifetimeby Vojtěch Nevřela · 8d01a0b1 · Aug 26, 2026 · 15 filesMessage 85 · StrongInformational 19Details
Commit message · Vojtěch Nevřela

feat: Introduce dynamic parameter handling for device menu layouts and longer lifetime

- Added `ParamsObj` struct to encapsulate fresh construction parameters for layouts.
- Implemented `request_params` method in `EventCtx` to signal the need for updated parameters.
- Updated `DeviceMenuScreen` to handle parameter updates without restarting the layout.
- Refactored `show_device_menu` method signatures across multiple firmware implementations to accept a single `DeviceMenuParams` struct.
- Enhanced the `DeviceMenuParams` struct to facilitate easier parameter management and parsing from MicroPython dictionaries.
- Removed obsolete `RefreshMenu` message from `DeviceMenuMsg` and related handling.
- Updated Python interface to support new parameter handling in device menu interactions.

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

This commit is a user-interface refactor for the Trezor hardware wallet's device menu. It changes how the menu receives updated information (like Bluetooth connection status) so the menu can refresh itself without closing and reopening. There is no direct evidence in the commit that this fixes a security vulnerability; it appears to be a code-quality and user-experience improvement.

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.

Security candidatechore(core): remove redundand declarationsby cepetr · b9220d07 · Aug 26, 2026 · 19 filesMessage 57 · ThinInformational 15Details
Commit message · cepetr

chore(core): remove redundand declarations

[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 duplicate or unnecessary function and variable declarations across many source files. It does not change how the device behaves, process secrets, or handle user data. There is no indication this is a security fix.

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.

Security candidatefix(core): reorder linker script sections for stm32f4 firmwareby cepetr · e75f5f9a · Aug 25, 2026 · 1 fileMessage 62 · AdequateLow 43Details
Commit message · cepetr

fix(core): reorder linker script sections for stm32f4 firmware

[no changelog]

62/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
boot or update path
AI analysis · Low 43/100

This commit moves a special memory section named '.bootloader' from one flash memory region to another in the firmware's build instructions (the linker script). The bootloader section likely contains data used to verify or locate the device's bootloader. Reordering linker sections can affect how the firmware is laid out in memory, which in rare cases can have security implications (for example, if it changes what code runs first, where secrets live, or how integrity checks are computed). However, the commit message gives no explanation of why the change was needed or whether it fixes a security problem, and the diff alone does not show a clear vulnerability.

Security candidatechore(clear_signing): delete inbuilt 1inch and uniswap definitions.by PrisionMike · 587bbba6 · Aug 25, 2026 · 6 filesMessage 87 · StrongLow 34Details
Commit message · PrisionMike

chore(clear_signing): delete inbuilt 1inch and uniswap definitions.

Needs full regression testing with Suite 1inch swaps.

[no changelog]

87/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
Why it was queued
signing boundaryfuzzing or regression evidencesigning or wallet path
AI analysis · Low 34/100

This commit removes built-in human-readable display definitions for 1inch and Uniswap swap transactions from Trezor's Ethereum clear-signing feature. Without these definitions, Trezor devices will likely fall back to showing raw contract call data for those transactions, making it harder for users to verify what they are signing. It is a feature-removal change, not a direct code vulnerability, but it weakens a security-relevant usability safeguard.

Security candidaterefactor(core/ui): build bootloader screens without duplicating the partsby tychovrahe · 1e57cc9d · Aug 25, 2026 · 1 fileMessage 85 · StrongInformational 15Details
Commit message · tychovrahe

refactor(core/ui): build bootloader screens without duplicating the parts

Two size-driven cleanups in the delizia bootloader screens, both
behaviour-identical.

screen_install_confirm built TWO complete button pairs -- one with text, one with
icons -- and picked between them. Both branches used the same styles and the same
alignment, so `Button::with_text`/`with_icon` plus their whole styling chain were
instantiated twice. Select the ButtonContent first, then build each button once.

screen_intro and screen_install_confirm assembled their strings with one `unwrap!`
per `push_str` -- ten panic sites between them, each carrying its own location
string, for strings that are either built whole or not at all. A `bld_string`
helper gives one shared site and reads better than the chain it replaces.

160 B on T3T1

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

This is a code cleanup that makes two bootloader screens slightly smaller and easier to read. It does not change what the device does or how it behaves, and it does not fix any security bug.

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.

Security candidatefix(core): fix build with --debug optionby cepetr · a38458c9 · Aug 25, 2026 · 5 filesMessage 57 · ThinInformational 15Details
Commit message · cepetr

fix(core): fix build with --debug option

[no changelog]

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

This commit fixes a build failure that occurred when compiling Trezor firmware with the --debug option. It adds explicit references to the 'sys' Rust module so the linker includes necessary symbols such as the panic handler. There is no indication this change addresses a security vulnerability or runtime behavior in release builds.

Security candidatefeat(common,core,python): support Stellar delegated authentication.by Jun Luo · e17e1141 · Aug 24, 2026 · 14 filesMessage 67 · AdequateLow 30Details
Commit message · Jun Luo

feat(common,core,python): support Stellar delegated authentication.

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

This commit adds support for a new Stellar blockchain feature called delegated authentication (CAP-71-01 / Protocol 27). It lets an account authorize a transaction through a chain of delegated signers. The device now recognizes and serializes these delegate chains, but when showing the transaction to the user it only displays the top-level authorizing address, not the individual delegates. This is a normal feature addition; there is no direct evidence in the commit of a security vulnerability, though any new signing path deserves careful review.

Security candidatefix(core): centralize rust panic handler in sys crateby cepetr · 20c6666a · Aug 24, 2026 · 6 filesMessage 62 · AdequateInformational 12Details
Commit message · cepetr

fix(core): centralize rust panic handler in sys crate

[no changelog]

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

This commit is a code cleanup: it moves the Rust panic handler from several individual firmware components into a single shared system crate. A panic handler is the code that runs when something goes seriously wrong inside the device software. The change does not add new functionality or fix a security bug; it just makes the panic handling code live in one place instead of many. The release builds of Trezor firmware do not even use this handler because they are configured to abort immediately on panic.

Security candidatefeat(core): enable menu to return arbitrary valuesby Vojtěch Nevřela · e9869dbf · Aug 24, 2026 · 15 filesMessage 85 · StrongInformational 19Details
Commit message · Vojtěch Nevřela

feat(core): enable menu to return arbitrary values

[no changelog]

Enables the Menu to return arbitrary values in preparation
for UI cleanup and modularisation.

This commit is only internal refactor, should have no
functional effect.

[no changelog]

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

This commit is an internal user-interface refactor for Trezor firmware. It changes how on-screen menus are built so that each menu entry can carry an 'intent' (standard or danger) and can return arbitrary values, instead of only supporting a fixed cancel button. The commit message and diff show no new user-facing behavior; existing cancel buttons are converted into a new 'cancel leaf' abstraction. There is no direct evidence this introduces a security vulnerability, but any refactor that touches workflow cancellation paths deserves a careful look to ensure users can still abort dangerous actions.

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.

Security candidatechore(core): export `USE_NFC` from `trezor.utils`by Roman Zeyde · 5d4fe90a · Aug 23, 2026 · 9 filesMessage 72 · AdequateInformational 15Details
Commit message · Roman Zeyde

chore(core): export `USE_NFC` from `trezor.utils`

Also, don't return NFC capability (until the driver is stable).

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

This is a routine feature-flag plumbing change for an upcoming NFC hardware feature. It exposes a new USE_NFC constant in Python code and disables advertising NFC capability to host software until the NFC driver is considered stable. There is no security bug or vulnerability in the diff.

Security candidatefeat(core/stellar): show trusted SEP-41 token contracts as token operations.by Jakub Janků · 177f3fe2 · Aug 23, 2026 · 6 filesMessage 100 · StrongLow 30Details
Commit message · Jakub Janků

feat(core/stellar): show trusted SEP-41 token contracts as token operations.

The token UI was reachable only for a Stellar Asset Contract, whose asset the
host can point out and the device can verify by re-deriving the contract
address. A token that is only a SEP-41 contract cannot be identified that way,
so its transfers showed up as an opaque contract call.

Add a hardcoded, network-bound list of vetted contracts, starting with SolvBTC
and xSolvBTC. Symbol and precision are what the contracts report, but both are
upgradeable, so this is a trust decision rather than a proof. A Stellar Asset
Contract still takes precedence, since its hint proves the contract's identity.

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

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

100/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference
Why it was queued
signing or wallet pathauthentication path
AI analysis · Low 30/100

This commit improves how the Trezor hardware wallet displays certain Stellar token transactions on its screen. Previously, some token transfers looked like confusing generic contract calls. Now, for two specific vetted tokens (SolvBTC and xSolvBTC), the device will show a friendly token transfer screen. This is a user-interface improvement based on a hardcoded trust list, not a fix for a code execution or theft vulnerability. The change does not alter what transactions the device will or won't sign.

Security candidaterefactor(core/stellar): describe amounts with StellarToken instead of StellarAsset.by Jakub Janků · 588f6f32 · Aug 23, 2026 · 9 filesMessage 85 · StrongInformational 12Details
Commit message · Jakub Janků

refactor(core/stellar): describe amounts with StellarToken instead of StellarAsset.

A SEP-41 token need not be backed by a classic asset, so StellarAsset cannot
describe one: it carries no precision, and a token that is not a Stellar Asset
Contract has no issuer. StellarToken holds just what the screens need -- symbol,
precision, optional issuer -- and formats amounts with its own precision,
replacing format_asset and the 7-decimal assumption in format_amount.

No behavior change: every token still resolves to seven decimals.

[no changelog]

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

85/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context
Why it was queued
cryptography-sensitive path
AI analysis · Informational 12/100

This is a code cleanup (refactor) in the Stellar cryptocurrency support. It replaces an older way of describing tokens on screen with a new internal data structure, but explicitly keeps the same user-visible behavior: every token is still shown with seven decimal places. The change also adds a test confirming that for the native Stellar asset (XLM), any code or issuer supplied by a host computer is ignored, preventing a host from mislabeling XLM as another asset. There is no indication this fixes an active security bug; it is preparation for future SEP-41 token support.

Security candidatefeat(core/prodtest): Update to new noise lib version + add card certificitate authenticity check.by kopecdav · 0d424c69 · Aug 22, 2026 · 2 filesMessage 62 · AdequateInformational 22Details
Commit message · kopecdav

feat(core/prodtest): Update to new noise lib version + add card certificitate authenticity check.

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

This commit updates a factory-testing tool (prodtest) used with Trezor hardware wallets. It swaps a randomly generated test key for a fixed, hard-coded test keypair and adds a check that the public key reported by an NFC backup card matches the public key in the card's certificate. The change is in a production-test utility, not normal user firmware, and the hard-coded key appears to be a test fixture rather than a live secret. The added certificate check is a security-hardening step, but the commit is partial: it references a new noise_xxpsk3.c source file and a new library API without showing the implementation.

AI review queuedfeat(core/ethereum): allow EIP-7702 delegation under strict safety checksby Roman Zeyde · 4f3ad296 · Aug 22, 2026 · 3 filesMessage 62 · AdequateLow 40Details
Commit message · Roman Zeyde

feat(core/ethereum): allow EIP-7702 delegation under strict safety checks

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

This commit changes how Trezor hardware wallets handle a new Ethereum feature called EIP-7702, which lets users temporarily delegate control of their account to another smart contract. Previously, Trezor only allowed this delegation if the user lowered their safety settings. Now, it allows delegation under the strictest safety settings, but only for a pre-approved list of delegate addresses. Revocation (removing a delegate) was already allowed under strict settings and remains allowed. The change is framed as adding 'strict safety checks' rather than removing protections entirely.

Security candidatefeat(core/ethereum): support EIP-7702 delegation for `Simple7702Account`by Roman Zeyde · 255787a9 · Aug 22, 2026 · 5 filesMessage 100 · StrongInformational 20Details
Commit message · Roman Zeyde

feat(core/ethereum): support EIP-7702 delegation for `Simple7702Account`

https://etherscan.io/address/0x4Cd241E8d1510e30b2076397afc7508Ae59C66c9#code
https://ethereum.org/roadmap/pectra/7702/#:~:text=0x4Cd241E8d1510e30b2076397afc7508Ae59C66c9

Also, update "unknown" test case.

[no changelog]

100/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference
Why it was queued
signing or wallet pathauthentication path
AI analysis · Informational 20/100

This commit adds support for recognizing one more Ethereum smart-contract account type (Simple7702Account) when signing EIP-7702 delegation authorizations on Trezor hardware wallets. It is a small feature addition that updates a known-address lookup table and adds matching test vectors. There is no indication it fixes a security bug or introduces a vulnerability.

AI review queuedfix(core/ethereum): disallow non-zero ETH value on SLIP-24 ERC-20 swapsby Roman Zeyde · eefd32c3 · Aug 21, 2026 · 3 filesMessage 77 · AdequateHigh 70Details
Commit message · Roman Zeyde

fix(core/ethereum): disallow non-zero ETH value on SLIP-24 ERC-20 swaps

(cherry picked from commit 2c769ec0f61026d3472f5d2d261bf0ed043ab5c9)

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

This update fixes a logic flaw in Trezor's Ethereum signing code. When a user was doing an ERC-20 token swap using a SLIP-24 payment request, the device could also be instructed to send native ETH at the same time. That combination is not expected in a normal token swap and could let an attacker trick the user into authorizing an unintended ETH transfer alongside the token swap. The fix now rejects such transactions outright.

AI review queuedtest(core/ethereum): fix SLIP-24 payment request for ERC-20 tokensby Roman Zeyde · 3d24462d · Aug 21, 2026 · 2 filesMessage 72 · AdequateInformational 12Details
Commit message · Roman Zeyde

test(core/ethereum): fix SLIP-24 payment request for ERC-20 tokens

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 a new automated test case for signing an Ethereum ERC-20 token transfer using a SLIP-24 payment request. It does not change any production firmware code, so it cannot introduce a security vulnerability or directly fix one in shipped software. The change is purely in the test suite and its recorded expected screen outputs.