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
295commits · 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 49 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.

Security candidatechore(core): enforce PEP 585 style [UP035]by M1nd3r · 21e6e3f2 · Aug 26, 2026 · 109 filesMessage 72 · AdequateInformational 15Details
Commit message · M1nd3r

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

- Replaces deprecated imports, e.g. `typing.Sequence` -> `collections.abc.Sequence`.

[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 pathseed or entropy pathsigning or wallet pathauthentication pathparser or protocol path
AI analysis · Informational 15/100

This is a large but purely cosmetic code cleanup in the Trezor firmware repository. It replaces old-style Python type-hint imports (such as typing.Sequence) with their modern equivalents (collections.abc.Sequence) to follow the PEP 585 style guide. No program logic, security checks, cryptography, or user-facing behavior was changed. The commit explicitly says '[no changelog]' and labels itself as a 'chore'.

Security candidatefix(core): use with_colon instead of += ":" in for descriptionsby Michal Kazda · 77cde7c6 · Aug 26, 2026 · 2 filesMessage 77 · AdequateInformational 16Details
Commit message · Michal Kazda

fix(core): use with_colon instead of += ":" in for descriptions
- affects only Bolt and Caesar
[no changelog]

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

This commit is a small UI cleanup in Trezor's firmware. It replaces several places where a colon was manually added to on-screen text descriptions with a helper function called with_colon(). The change only affects two visual themes (Bolt and Caesar). It is not a security fix and does not change how funds, keys, or transactions are protected.

Security candidatechore(translations): updated translation signaturesby Michal Kazda · 15d3f914 · Aug 26, 2026 · 1 fileMessage 62 · AdequateInformational 15Details
Commit message · Michal Kazda

chore(translations): updated translation signatures
[no changelog]

62/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
signing boundarysigning or wallet pathtranslation-only discount
AI analysis · Informational 15/100

This commit simply refreshes the digital signature metadata for translation files in a JSON configuration. There is no code change, no new feature, and no apparent security fix. It appears to be routine maintenance.

Security candidatechore(translations): added missing PTBR glyph Éby Michal Kazda · e514f155 · Aug 26, 2026 · 24 filesMessage 57 · ThinInformational 15Details
Commit message · Michal Kazda

chore(translations): added missing PTBR glyph É
[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 path
AI analysis · Informational 15/100

This commit adds a single missing Portuguese-Brazilian character (É) to font files used by the Trezor hardware wallet. It is a routine translation/localization fix with no security relevance.

Security candidatechore(translations): removed unused PTBR glyphby Michal Kazda · 1383d456 · Aug 26, 2026 · 24 filesMessage 57 · ThinInformational 15Details
Commit message · Michal Kazda

chore(translations): removed unused PTBR glyph
[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 path
AI analysis · Informational 15/100

This commit is a routine cleanup: it removes the 'ª' (feminine ordinal indicator) character from font files and a code generator list because it is no longer used in the Portuguese-Brazil translation. There is no security relevance.

Security candidatechore(translations): removed unused ES glyphby Michal Kazda · 8d2264c8 · Aug 26, 2026 · 24 filesMessage 57 · ThinInformational 15Details
Commit message · Michal Kazda

chore(translations): removed unused ES glyph
[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 path
AI analysis · Informational 15/100

This commit removes the unused Spanish masculine ordinal indicator glyph (º) from font files and a code generator list. It is a routine cleanup with no security relevance.

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.

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.

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.

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.

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.

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.

Security candidaterefactor(core/ui): require the amount and the asset in confirm_stellar_output.by Jakub Janků · a8648775 · Aug 21, 2026 · 4 filesMessage 85 · StrongLow 27Details
Commit message · Jakub Janků

refactor(core/ui): require the amount and the asset in confirm_stellar_output.

Both have been optional since the function was introduced, but no caller ever
omitted them, and the guard would have silently shown a recipient with no
amount.

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

This change tightens a Stellar cryptocurrency confirmation screen so the amount and asset can no longer be left blank. Previously, the code allowed them to be optional and would silently skip showing the amount if either was missing, which could let a user approve a payment without seeing how much was being sent. The commit makes both values mandatory and always displays them. It is described as a defensive refactor, not a fix for an active bug or reported vulnerability.

Security candidatebuild(xbuild): introduce cargo_profile_dir()by matejcik · 1180bc12 · Aug 21, 2026 · 7 filesMessage 70 · AdequateInformational 15Details
Commit message · matejcik

build(xbuild): introduce cargo_profile_dir()

to reliably locate built artifacts, without relying on $OUT_DIR/../../..
(which is not guaranteed stable across cargo versions)
(neither is the current method but at least now we have a central place
to fix further breakage)

70/100 · AdequateMessage clarity
✓ Descriptive subject✓ Uses a recognizable type or scope✓ Provides detailed explanatory context
Why it was queued
boot or update path
AI analysis · Informational 15/100

This is a build-system maintenance change. It replaces hard-coded guesses about where Cargo places compiled files with a single helper function that walks the directory tree more reliably. There is no user-facing feature change and no security fix or vulnerability.

Security candidatechore: rename `N4W1` to `N1W1`by Roman Zeyde · 33b92f48 · Aug 20, 2026 · 51 filesMessage 80 · StrongInformational 15Details
Commit message · Roman Zeyde

chore: rename `N4W1` to `N1W1`

https://satoshilabs.slack.com/archives/C054XGU77QV/p1787223078842129

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

This commit is a simple bulk rename of an internal feature code name from 'N4W1' to 'N1W1' across the Trezor firmware codebase, build system, tests, and client libraries. It changes only identifiers, comments, strings, and generated protocol-buffer files. There is no functional change and no security relevance.

Security candidatefeat(core): introduce unlimited_syscall applet privilegeby cepetr · 01553dfe · Aug 20, 2026 · 4 filesMessage 62 · AdequateLow 46Details
Commit message · cepetr

feat(core): introduce unlimited_syscall applet privilege

[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
credential or privilege state
AI analysis · Low 46/100

This commit adds a new security gate inside the Trezor firmware's core operating system. Before this change, any installed mini-program ('applet') could call any internal system function ('syscall'). Now, by default, applets can only call a small, approved list of syscalls, unless they are explicitly granted a new 'unlimited_syscalls' privilege. The built-in 'coreapp' applet is granted this privilege, so it behaves as before. The change is a hardening measure that reduces the damage a compromised or malicious applet could do.