TZ
← All projectsTrezor

Trezor firmware

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

BitcoinHardware walletsNormal
Repository coverage

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

916security candidates311second-pass queue1354AI analyses
336commits · 30 days
588commits · 60 days
1363commits · 180 days
2652commits · 365 days
Backfill bands
Aug 5 → Feb 61298 seen115 candidatesComplete
Feb 6 → Jun 6775 seen58 candidatesComplete
Jun 6 → Jul 6217 seen13 candidatesComplete
Jul 6 → Aug 5360 seen54 candidatesComplete
Commit communication

Does the history explain itself?

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

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

Who is changing the project?

Public Git author strings; identities are not independently verified.

DeveloperCommitsCandidatesAnalyzedHigh riskMessage avg.
PrisionMike945982273
Andrew Kozlik712436265
Roman Zeyde572177253171
tychovrahe292104125161
Jakub Janků22917182
Martin Pastyřík23811173
cepetr19682103059
Ioan Bizău23076140059
obrusvit21376107064
M1nd3r20671105071
Lukas Bielesch846771067
Martin Milata1744677063
Analysis record

Published AI watches

Last scanned 6 minutes ago

Informational 18 AI analysisMessage 57 · Thin
TZ TrezorTrezor firmware BitcoinHardware wallets

chore(core): remove sha1 from regular FW

This commit removes the SHA-1 hashing function from the regular Trezor firmware. SHA-1 is an old, weak hash algorithm that is no longer considered secure for sensitive uses. The change deletes the code that exposes SHA-1 to apps running on…

Removal of a deprecated cryptographic primitive (SHA-1) from the firmware API surfaceReduction of attack surface and prevention of future misuse of a collision-vulnerable hashNo direct vulnerability patch or memory-safety bug is present in the diff
16d15774by M1nd3r+0−2006 files
No security note in commit
Low 27 AI analysisMessage 62 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

refactor(crypto): pass static public key to `noise_xxpsk3_*_init()`

This commit changes how a cryptographic library sets up secure connections. Previously, the code automatically calculated the public key from the private key. Now, the caller must provide the public key directly. This is a code-quality ref…

Cryptographic key handling changed: public key is now supplied rather than derivedPotential reduction of key-mismatch risk if caller provides correct public keyNew null-pointer check added for static_public_key
1b3128a4by Ondřej Vejpustek+20−92 files
No security note in commit
Informational 15 AI analysisMessage 57 · Thin
TZ TrezorTrezor firmware BitcoinHardware wallets

refactor(crypto): change order of parameters

This commit simply reorders the arguments of an internal function called dh() and updates every place that calls it. The actual math and security behavior are unchanged; it is a code cleanup with no security effect.

33a119eeby Ondřej Vejpustek+15−151 file
No security note in commit
Informational 15 AI analysisMessage 47 · Thin
TZ TrezorTrezor firmware BitcoinHardware wallets

refactor(crypto): prefix enums

This commit simply renames two groups of internal status labels (called enums) in the Trezor firmware's cryptographic code. The old names like WAITING_FOR_REQUEST1 were shared between two different parts of the code, so the developer gave …

f1c74046by Ondřej Vejpustek+26−222 files
No security note in commit
Low 37 AI analysisMessage 57 · Thin
TZ TrezorTrezor firmware BitcoinHardware wallets

fix(crypto): prevent calling `memzero(NULL, ...)`

This commit fixes three places in the Trezor firmware's cryptographic code where a memory-clearing function could be called with a NULL pointer. In practice, passing NULL to memzero is harmless on Trezor's platform (it does nothing), but i…

NULL pointer passed to memory-zeroing helper in cryptographic codeUndefined behavior in C standard library contractDefensive hardening in Noise protocol implementation
0394e934by Ondřej Vejpustek+11−51 file
No security note in commit
Informational 18 AI analysisMessage 62 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

refactor(crypto): return remote static key from `noise_xxpsk3_*_handle_*()`

This commit is a code cleanup (refactor) for the cryptographic handshake code used in Trezor devices. It changes how the other party's long-term public key is returned to the caller: instead of storing it inside an internal state structure…

Removal of long-term public key storage from internal handshake stateCaller-supplied output buffer for remote static public key reduces internal secret retentionError-path memzero of returned key material on failure
3ead1aa6by Ondřej Vejpustek+79−423 files
No security note in commit
Informational 15 AI analysisMessage 62 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

refactor(xtask): rename ProjectProfile to ProjectConfig

This commit is a simple rename from 'ProjectProfile' to 'ProjectConfig' in two Rust source files. It only changes variable names, struct names, and error messages. There is no change to program logic, security behavior, or how data is hand…

581b37bcby cepetr+18−182 files
No security note in commit
Informational 15 AI analysisMessage 47 · Thin
TZ TrezorTrezor firmware BitcoinHardware wallets

refactor(xtask): introduce ResolvedBuildArgs

This commit is a straightforward internal code refactor in Trezor's build tooling. It introduces a new ResolvedBuildArgs structure that centralizes default values for command-line build options before they are used. There is no change to u…

c24d1be8by cepetr+99−295 files
No security note in commit
Informational 15 AI analysisMessage 57 · Thin
TZ TrezorTrezor firmware BitcoinHardware wallets

refactor(xtask): make build args tristate

This commit is a straightforward internal refactor of the Trezor firmware build tool's command-line argument handling. It changes many on/off flags from plain booleans to optional booleans so they can explicitly be set to true, false, or l…

271e249aby cepetr+57−561 file
No security note in commit
Informational 15 AI analysisMessage 57 · Thin
TZ TrezorTrezor firmware BitcoinHardware wallets

refactor(xtask): introduce build options

This commit is a straightforward internal code reorganization in Trezor's build tooling. It moves build-option definitions from one Rust source file to a new module and adds the ability to load those options from a configuration file. Ther…

75085e2aby cepetr+275−2007 files
No security note in commit
Informational 15 AI analysisMessage 57 · Thin
TZ TrezorTrezor firmware BitcoinHardware wallets

feat(xtask): introduce build presets

This commit is a developer tooling change for the Trezor firmware build system. It introduces 'build presets'—named configuration bundles stored in TOML files—so developers can select common build settings with a single command-line flag i…

eefe8f7fby cepetr+397−419 files
No security note in commit
Informational 15 AI analysisMessage 62 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

feat(xtask): upgrade manifest.yaml for tf-tools 0.3.0

This commit is a routine update to a build-system manifest file used by Trezor's internal tooling. It reorganizes and re-labels feature flags (for example, moving options between 'Features', 'Debugging', and 'Signing' groups and simplifyin…

57b28b89by cepetr+86−1351 file
No security note in commit
Informational 15 AI analysisMessage 62 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

feat(core): add tf-tools 0.3.1+ configuration file

This commit adds a single configuration file for a Trezor developer tool (a VS Code extension). It only points the tool to existing folders in the repository and contains no executable code, no secrets, and no changes to firmware behavior.…

e554f618by cepetr+8−01 file
No security note in commit
Informational 15 AI analysisMessage 62 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

refactor(xtask): rename ResolvedBuild to ResolvedBuildFeatures

This commit is a simple internal code cleanup: it renames a Rust data structure called ResolvedBuild to ResolvedBuildFeatures and updates the places that use it. There are no functional changes, no security fixes, and no changes to how the…

aaa2780bby cepetr+5−52 files
No security note in commit
Informational 15 AI analysisMessage 57 · Thin
TZ TrezorTrezor firmware BitcoinHardware wallets

fix(core): fix up clippy warnings in storage.rs

This is a tiny code cleanup commit that replaces two calls to `ptr::null()` with Rust's `unwrap_or_default()` to silence automated Clippy lint warnings. It does not change what value is produced (still a null pointer when no salt is provid…

62354461by cepetr+2−21 file
No security note in commit
Informational 15 AI analysisMessage 47 · Thin
TZ TrezorTrezor firmware BitcoinHardware wallets

refactor(xtask): simplify dependencies

This commit is a straightforward internal code cleanup in Trezor's build tooling. It moves a data structure and two helper methods from one Rust source file to another and updates callers accordingly. There is no change to user-facing beha…

6268349fby cepetr+9−193 files
No security note in commit
Informational 15 AI analysisMessage 47 · Thin
TZ TrezorTrezor firmware BitcoinHardware wallets

docs: add xtask documentation

This commit only adds documentation. It updates the table of contents and adds a new markdown page plus a diagram explaining the project's 'xtask' build helper. No code, build scripts, or firmware logic was changed, so it cannot introduce …

4879dababy cepetr+296−03 files
No security note in commit
Informational 17 AI analysisMessage 57 · Thin
TZ TrezorTrezor firmware BitcoinHardware wallets

feat(xtask): introduce project-toml build-options

This commit is a build-system refactoring for Trezor firmware. It moves the mapping of command-line build options to Rust/cargo features out of hard-coded Rust logic and into per-project TOML files. It also adds a small change so debug bui…

Build-option mapping now lives in project.toml files, increasing the attack surface for supply-chain/build-configuration tamperingMakefile change automatically enables debug-link for PYOPT=0 debug buildsValidation added to reject storage_insecure_testing_mode in production builds
d44de007by cepetr+681−40817 files
No security note in commit
Informational 15 AI analysisMessage 57 · Thin
TZ TrezorTrezor firmware BitcoinHardware wallets

ci(core): fix nightly ARM emulator filename

This commit fixes a filename-renaming step in the project's automated nightly build pipeline. It ensures ARM64 emulator files get the correct name expected by another testing tool. There is no change to the actual Trezor firmware code, dev…

ab95f08fby Martin Milata+3−01 file
No security note in commit
Informational 12 AI analysisMessage 62 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

chore(vendor): avoid micropython submodule noise in git status

This is a routine housekeeping change to reduce clutter in Git's status output for a third-party component (the MicroPython submodule). There is no indication it changes any code that runs on the Trezor device or affects security.

06cab32bby Martin Milata+1−11 file
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 candidatefeat(tests): get Bolt FIDO account nameby Ioan Bizău · 6c55926b · Jan 14, 2026 · 4 filesMessage 67 · AdequateInformational 15Details
Commit message · Ioan Bizău

feat(tests): get Bolt FIDO account name

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

This commit is a test-infrastructure change only. It adds a way for automated tests to read the account name shown on a FIDO security-key confirmation screen, and renames some existing test helper methods from 'tt_' to 'bolt_' to better match the current product naming. There is no change to how user data is handled, no fix for a bug, and no security-related behavior change.

Security candidatefix(core): adjust T3W1 connect screen text position when no menu is shownby tychovrahe · de96dfd1 · Jan 13, 2026 · 2 filesMessage 62 · AdequateInformational 15Details
Commit message · tychovrahe

fix(core): adjust T3W1 connect screen text position when no menu is shown

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

This commit is a visual layout fix for the Trezor T3W1 hardware wallet bootloader. It adjusts where the 'waiting for host' text appears on screen when no menu header is shown. There is no security-relevant change.

Security candidatechore(core): rename screen_connect parameters to better reflect functionalityby tychovrahe · a6daaec5 · Jan 13, 2026 · 8 filesMessage 62 · AdequateInformational 15Details
Commit message · tychovrahe

chore(core): rename screen_connect parameters to better reflect functionality

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

This is a simple code cleanup change that renames a parameter from 'auto_update' to 'show_menu' across several files. The functionality remains exactly the same; only the variable name has been changed to better describe what it actually controls (whether a menu button is shown on the bootloader connection screen). There is no security impact.

Security candidaterefactor(core): move board_capabilities to sec layerby cepetr · 8d4546a8 · Jan 13, 2026 · 15 filesMessage 62 · AdequateInformational 15Details
Commit message · cepetr

refactor(core): move board_capabilities to sec layer

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

This commit is a pure code reorganization: it moves the board_capabilities module from the util directory to the sec directory and updates all include paths and build files accordingly. No functionality, logic, or security behavior changes. It is a refactoring with no user-visible or security-relevant effect.

Security candidaterefactor(core): remove circular deps between rtl and sysby cepetr · 1a37ddf1 · Jan 13, 2026 · 26 filesMessage 62 · AdequateInformational 15Details
Commit message · cepetr

refactor(core): remove circular deps between rtl and sys

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

This commit is a routine internal code cleanup. It moves the logging header file from one directory to another and splits out a system-exit declaration to remove circular dependencies between two low-level software layers. No security vulnerability is introduced or fixed; the functionality of the code remains the same.

Security candidaterefactor(core): move unit_properties to sec layerby cepetr · 5df2ecdf · Jan 13, 2026 · 22 filesMessage 57 · ThinInformational 15Details
Commit message · cepetr

refactor(core): move unit_properties to sec layer

[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 is a pure code reorganization: it moves the unit_properties module from the util directory to the sec (security) directory and updates all include paths and build files accordingly. The actual logic for reading device properties from one-time-programmable memory, serial numbers, and SD hotswap settings is copied unchanged. There is no functional change and no security fix or vulnerability introduced.

Security candidaterefactor(core): move backup_ram driver from sys to secby cepetr · cb1b9cc4 · Jan 13, 2026 · 23 filesMessage 62 · AdequateInformational 13Details
Commit message · cepetr

refactor(core): move backup_ram driver from sys to sec

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

This commit is a pure code reorganization: it moves the backup RAM driver from the 'sys' directory to the 'sec' directory and updates all include paths accordingly. The actual C source code for the driver is identical before and after the move. There is no functional change, no bug fix, and no security patch visible in the diff.

Security candidaterefactor(core): move gfx to io/gfxby cepetr · 47a7ba72 · Jan 13, 2026 · 51 filesMessage 57 · ThinInformational 15Details
Commit message · cepetr

refactor(core): move gfx to io/gfx

[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 is a pure code reorganization: it moves the graphics (gfx) subsystem from the `embed/gfx/` directory into `embed/io/gfx/`, updates all build scripts and include paths accordingly, and renames some internal subdirectories (for example, `fonts/` becomes `terminal/`). The actual graphics logic, functions, and behavior appear unchanged. There is no indication this fixes or introduces a security issue.

Security candidaterefactor(core): split rng module into sys/rng and sec/rng_strongby cepetr · 2761e69f · Jan 13, 2026 · 45 filesMessage 62 · AdequateInformational 14Details
Commit message · cepetr

refactor(core): split rng module into sys/rng and sec/rng_strong

[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
entropy or randomnesscryptography-sensitive pathseed or entropy pathboot or update path
AI analysis · Informational 14/100

This commit is a code reorganization: it splits the random-number generator (RNG) module into two parts. The basic hardware RNG moves from the security subsystem to the system subsystem, while the stronger multi-source RNG stays in the security subsystem under a new name. All call sites are updated to include the correct new header. The actual logic of how random numbers are generated does not change.

Security candidaterefactor(core): move translatations module to io layerby cepetr · cd8b7b62 · Jan 13, 2026 · 15 filesMessage 62 · AdequateInformational 15Details
Commit message · cepetr

refactor(core): move translatations module to io layer

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

This commit is a pure code reorganization: it moves the 'translations' module from one directory location to another without changing what the code does. The functions that read, write, and erase translation data in device flash remain identical. There is no visible security bug or fix in the change.

Security candidaterefactor(core): move flash driver to sys layerby cepetr · 79dd851f · Jan 13, 2026 · 65 filesMessage 57 · ThinInformational 15Details
Commit message · cepetr

refactor(core): move flash driver to sys layer

[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 is a pure code reorganization: it moves the flash memory driver files from one directory (embed/util/flash) to another (embed/sys/flash) and updates all include paths and build scripts accordingly. The actual flash programming, erasing, and one-time-programmable (OTP) logic is copied verbatim, with no functional changes. There is no indication this fixes or introduces a security vulnerability.

Security candidaterefactor(core): move scm_revision to rtl layerby cepetr · 0fb65da6 · Jan 13, 2026 · 12 filesMessage 57 · ThinInformational 15Details
Commit message · cepetr

refactor(core): move scm_revision to rtl layer

[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 is a simple internal code reorganization: it moves the source-code-management revision identifier (a build-time constant that records which Git commit the firmware was built from) from one internal directory to another. No behavior changes, no security fixes, and no new vulnerabilities are visible in the diff.

Security candidaterefactor(core): move notify module to io layerby cepetr · 5b63706d · Jan 13, 2026 · 15 filesMessage 57 · ThinInformational 15Details
Commit message · cepetr

refactor(core): move notify module to io layer

[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 is a pure code reorganization: it moves the 'notify' module from one directory to another and updates all references. No functionality was changed, no bugs were fixed, and no security behavior was altered.

Security candidaterefactor(core): move image module to sec layerby cepetr · 2cc46b0f · Jan 13, 2026 · 55 filesMessage 57 · ThinInformational 15Details
Commit message · cepetr

refactor(core): move image module to sec layer

[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 is a large but straightforward code reorganization: it moves the firmware image handling module from a general utility directory (embed/util/image) into a security-focused directory (embed/sec/image) and updates all include paths and build scripts accordingly. The actual code logic appears unchanged except for the path/namespace adjustments. There is no indication this fixes or introduces a security vulnerability.

Security candidaterefactor(core): move rsod to io/gfx and sec/rsodby cepetr · f0d12275 · Jan 13, 2026 · 28 filesMessage 57 · ThinInformational 15Details
Commit message · cepetr

refactor(core): move rsod to io/gfx and sec/rsod

[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 is a pure code reorganization (refactor) that moves the 'Red Screen of Death' (RSOD) error-display code from one directory to another and updates the build files and #include paths accordingly. No security vulnerability is introduced or fixed; the visible behavior of the device is unchanged.

Security candidaterefactor(core): move power_manager from sys to ioby cepetr · 638f0cb4 · Jan 13, 2026 · 48 filesMessage 57 · ThinInformational 15Details
Commit message · cepetr

refactor(core): move power_manager from sys to io

[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 is a large code refactor that moves the power management subsystem from one internal directory (`sys`) to another (`io`) in the Trezor firmware. It renames include paths, reorganizes files, and adds new battery fuel-gauge and PMIC driver code, but the commit message explicitly labels it as a refactor with '[no changelog]'. There is no indication of a security fix or vulnerability being addressed.

Security candidaterefactor(core): move tamper driver from sys to secby cepetr · 3e3ce55d · Jan 13, 2026 · 9 filesMessage 62 · AdequateInformational 15Details
Commit message · cepetr

refactor(core): move tamper driver from sys to sec

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

This commit is a pure code reorganization: it moves the tamper-detection driver files from one directory (sys) to another (sec) and updates all include paths accordingly. The actual tamper-detection logic is unchanged, so this does not fix or introduce a security vulnerability on its own.

Security candidatefix(tests): fix Evolu tests on HW devicesby Martin Pastyřík · d1d28b86 · Jan 13, 2026 · 7 filesMessage 100 · StrongInformational 15Details
Commit message · Martin Pastyřík

fix(tests): fix Evolu tests on HW devices

Evolu tests now do not depend on hardocded values but compute the expected value from the `delegated_idenetity_key` of the tested device. Therefore enabling testing on HW devices where the master key is not initialized to all zeroes.

A check function was added to the `sign_registration` tests to determine if the device has Optiga available. If not, the test will mark itself as `xfail` - we expect Optiga signing to fail if there is no Optiga.

All the Evolu test have been simplified so that the logic is the same for THP and non-THP devices.

Lastly, the verification of certificate chain and Optiga and Tropic signatures and certificates has been refactored from `test_authenticate_device.py` as it is now used in other tests.

[no changelog]

100/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Explains rationale or failure mode✓ Mentions testing or verification
Why it was queued
signing boundarydefensive validationsigning or wallet pathauthentication path
AI analysis · Informational 15/100

This commit only changes test code for the Trezor hardware wallet. It refactors how tests compute expected cryptographic values so they can run on real hardware devices instead of only on emulators, and moves certificate-verification helper code into a shared test utility. There is no change to the actual firmware or wallet behavior, and no security vulnerability is introduced or fixed.

Security candidatefeat(core): introduce telemetryby tychovrahe · 5d5358da · Jan 13, 2026 · 13 filesMessage 47 · ThinInformational 23Details
Commit message · tychovrahe

feat(core): introduce telemetry

[no changelog]

47/100 · ThinMessage clarity
✓ Descriptive subject✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
boot or update path
AI analysis · Informational 23/100

This commit adds a new internal telemetry feature to the Trezor firmware that records the minimum and maximum battery temperature in a small, protected memory area (backup RAM). It only stores a float value for the coldest and hottest battery readings and does not send data anywhere. There is no obvious security bug in the code, but it is a new subsystem that touches low-level firmware components and could become relevant if future changes connect it to untrusted inputs or expose it externally.

Security candidatefeat(core): introduce secmon downgrade protectionby tychovrahe · e2bfa908 · Jan 13, 2026 · 15 filesMessage 57 · ThinLow 26Details
Commit message · tychovrahe

feat(core): introduce secmon downgrade protection

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
update trustboot or update path
AI analysis · Low 26/100

This commit adds downgrade protection for the Secure Monitor (secmon), a small privileged security component that runs alongside the main firmware on Trezor hardware wallets. Previously, only the bootloader and firmware had downgrade protection via monotonic counters stored in secure flash. This change reserves a third monotonic counter, records the secmon version in the image header, and makes the bootloader reject older or rolled-back secmon images during firmware updates and boot. It is a defensive hardening feature, not a fix for an active vulnerability, and the initial secmon monotonic version starts at 0 so existing images remain compatible.

Security candidatechore(core): bump T3W1 monotonic versions for downgrade protectionsby tychovrahe · 4e133f18 · Jan 13, 2026 · 1 fileMessage 62 · AdequateInformational 18Details
Commit message · tychovrahe

chore(core): bump T3W1 monotonic versions for downgrade protections

[no changelog]

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

This commit simply increases three internal version counters for the Trezor T3W1 hardware wallet from 1 to 2 (or 0 to 1). These counters are used to prevent downgrading to older, potentially less secure firmware, bootloader, or security monitor software. The change itself does not fix a bug or add a feature; it is a routine housekeeping step to keep downgrade protection working after a release. There is no direct security vulnerability shown in the diff.

Security candidatefeat(tron): add TriggerSmartContract support.by PrisionMike · fa412687 · Jan 12, 2026 · 28 filesMessage 90 · StrongModerate 51Details
Commit message · PrisionMike

feat(tron): add TriggerSmartContract support.

- Blind signing TRON smart contracts.
- Only contract address shown to user.
- USDT,USDD transfer tested.
- Fee layout imperfect. To be fixed later.

[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 boundarycryptography-sensitive pathsigning or wallet path
AI analysis · Moderate 51/100

This commit adds support for signing TRON smart-contract calls (like USDT/USDD transfers) on Trezor hardware wallets. Because the device cannot yet decode the actual token-transfer details, users are shown only the smart-contract address and raw data, meaning they are 'blind signing' the transaction. The commit message explicitly calls this out. There is also a fee-limit check to cap how much TRX can be burned, and a fix changing some timestamp/expiration fields from signed to unsigned integers.

Security candidatefeat(eckhart): back button on confirm_valueby Ioan Bizău · aa857fa3 · Jan 12, 2026 · 7 filesMessage 57 · ThinInformational 15Details
Commit message · Ioan Bizău

feat(eckhart): back button on confirm_value

[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 adds a new optional 'back button' to a Trezor screen type called confirm_value. It is a user-interface feature for the upcoming Eckhart hardware model and does not fix or introduce any security vulnerability. The change simply lets callers request a back arrow instead of a cancel cross, and wires that through the Rust UI layer for all supported device layouts.

Security candidaterefactor: drop `ConfirmOutputWithAmount`by Ioan Bizău · d14eeca9 · Jan 12, 2026 · 14 filesMessage 47 · ThinInformational 19Details
Commit message · Ioan Bizău

refactor: drop `ConfirmOutputWithAmount`

[no changelog]

47/100 · ThinMessage clarity
✓ Descriptive subject✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
cryptography-sensitive pathsigning or wallet pathboot or update path
AI analysis · Informational 19/100

This commit removes a dedicated two-page 'confirm output with amount' screen and replaces it with two separate confirmation prompts for the address and the amount. It is a user-interface refactor, not a fix for a security vulnerability. The change does not introduce obvious security flaws, but it slightly alters how users review transaction details on newer Trezor layouts.

Security candidatefeat: title and subtitle on property pagesby Ioan Bizău · 31026a0d · Jan 12, 2026 · 10 filesMessage 57 · ThinInformational 15Details
Commit message · Ioan Bizău

feat: title and subtitle on property pages

[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 user-interface feature addition. It lets certain 'property' display screens show an optional subtitle and gives callers a way to override the page title. There is no security-relevant change in the diff.