TZ
← All projectsTrezor

Trezor firmware

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

BitcoinHardware walletsNormal
Repository coverage

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

925security candidates314second-pass queue2667AI analyses
336commits · 30 days
552commits · 60 days
1347commits · 180 days
2617commits · 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
488Strong · 80–100
1330Adequate · 60–79
863Thin · 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.
tychovrahe292104292461
Roman Zeyde581183578272
PrisionMike945994273
Andrew Kozlik742572266
obrusvit21376213164
Jakub Janků22919182
Martin Pastyřík24823173
cepetr19682196059
Ioan Bizău23076230059
M1nd3r21072207071
Lukas Bielesch846784067
Martin Milata17946175063
Analysis record

Published AI watches

Last scanned 45 minutes ago

Low 37 AI analysisMessage 70 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

chore(core/embed): clear temporary buffer across Optiga/Tropic calls

This is a hardening change for the random number generator inside Trezor hardware wallets. It makes sure that temporary memory holding secret random values from the Optiga and Tropic security chips is wiped immediately after use, rather th…

Sensitive intermediate buffer not cleared promptlyPotential stale-buffer reuse across RNG source boundariesDefense-in-depth memory sanitization for secure-element entropy
01ebda93by Roman Zeyde+2−21 file
No security note in commit
Informational 15 AI analysisMessage 72 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

test(core/ethereum): EIP-7702 tuple nonce must be non-zero

This commit only changes test data and expected screen fingerprints for Trezor's Ethereum EIP-7702 signing tests. It replaces one test case that used a nonce of 0 with the same scenario using a nonce of 67, because the real-world protocol …

Test-only change with no production code modificationEIP-7702 tuple nonce constraint reflected in test dataExpected UI test hashes regenerated for renamed test vector
76cd2ed4by Roman Zeyde+28−282 files
No security note in commit
Informational 15 AI analysisMessage 72 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

test(core): drop an unused parameter of `make_payment_request()`

This commit only cleans up test code by removing an unused 'session' argument from a helper function used in automated tests. It does not change the actual Trezor firmware or any code that runs on the device, so it has no security impact f…

6dd19fdcby Roman Zeyde+0−188 files
No security note in commit
Informational 15 AI analysisMessage 85 · Strong
TZ TrezorTrezor firmware BitcoinHardware wallets

build(core): propagate emulator feature from projects

This commit is a build-system cleanup for the Trezor firmware's Rust code. It changes how the 'emulator' feature flag is passed between different software components. The firmware project no longer supports the emulator feature (which make…

5642074cby matejcik+5−44 files
No security note in commit
Informational 15 AI analysisMessage 85 · Strong
TZ TrezorTrezor firmware BitcoinHardware wallets

fix(build-docker): stop swallowing pub-bin copy errors

This change fixes a build script that was ignoring copy errors. Previously, the script would silently ignore any failure when copying public binary files, which could hide real problems. Now it only skips the copy when the file genuinely d…

Build script silently ignored copy failures before this fixFix removes unconditional `|| true` error suppressionKnown-benign missing files are now explicitly skipped with a file existence check
d829eda8by Andrew Kozlik+4−11 file
No security note in commit
Low 27 AI analysisMessage 93 · Strong
TZ TrezorTrezor firmware BitcoinHardware wallets

refactor(core): digest EIP-1559/EIP-7702 magic without RLP encoding

This commit is a small internal cleanup in Trezor's Ethereum signing code. It changes how two special 'magic' bytes (the transaction type markers for newer Ethereum transaction formats) are fed into the cryptographic hash. Previously the c…

Refactor of cryptographic hashing path for Ethereum transaction signingRemoval of implicit assumption that RLP encodes small integers as single bytesChange affects EIP-1559 and EIP-7702 transaction type markers
2362bc6fby Roman Zeyde+6−32 files
No security note in commit
Informational 15 AI analysisMessage 98 · Strong
TZ TrezorTrezor firmware BitcoinHardware wallets

test(core): test RLP self-encoding bytestrings

This commit only adds a new unit test to the Trezor firmware codebase. It verifies that very short Ethereum RLP-encoded byte strings and small positive integers encode to themselves, which is a known property of the RLP specification. No p…

41538733by Roman Zeyde+16−01 file
No security note in commit
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
Repository ledger

Explore captured commits

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

Lower-priorityfeat(core): add effect cycle limitation.by kopecdav · 8e4fe189 · Sep 2, 2025 · 4 filesMessage 57 · ThinInformational 18Details
Commit message · kopecdav

feat(core): add effect cycle limitation.

[no changelog]

57/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
AI analysis · Informational 18/100

This commit adds a cycle limit to the RGB LED animation effects on Trezor hardware wallets. Previously, LED effects like the charging or bootloader breathing animation would run indefinitely until explicitly stopped. Now, callers can request a specific number of cycles, and the effect will automatically stop after that many cycles. The change also slightly adjusts the blue LED color definition. There is no direct security vulnerability visible in the diff; it appears to be a feature or hardening improvement for LED behavior.

Lower-priorityfeat(core/prodtest): add rgb_led effect commands to prodtest.by kopecdav · 2da0477c · Sep 2, 2025 · 2 filesMessage 62 · AdequateInformational 21Details
Commit message · kopecdav

feat(core/prodtest): add rgb_led effect commands to prodtest.

[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
AI analysis · Informational 21/100

This commit adds two new factory-testing commands for controlling the RGB LED on Trezor devices during production testing. It is a feature addition to the prodtest (manufacturing diagnostic) firmware, not a fix for a security issue. There is no indication it addresses a vulnerability or was disclosed as security-relevant.

Lower-priorityfeat(core): Introduce led effects into rgb_led driver.by kopecdav · 78043876 · Sep 2, 2025 · 6 filesMessage 62 · AdequateInformational 15Details
Commit message · kopecdav

feat(core): Introduce led effects into rgb_led driver.

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

This commit adds new LED lighting effects (a slow blue 'breathing' light for the bootloader and a yellow pulsing light for charging) to the RGB LED driver used in some Trezor hardware wallets. It is a feature addition, not a security fix or vulnerability patch. There is no indication it addresses any security issue.

Lower-priorityfix(core): remove duplicit rgb_led_set_color function in unix implementation.by kopecdav · 73f23c4b · Sep 2, 2025 · 1 fileMessage 62 · AdequateInformational 15Details
Commit message · kopecdav

fix(core): remove duplicit rgb_led_set_color function in unix implementation.

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

This commit removes an accidental duplicate of a harmless LED color-setting function in the Unix (simulator/emulator) build of the Trezor firmware. It is a routine cleanup with no security relevance.

Lower-prioritychore(core): tidy up rgb_led effects variables and func names.by kopecdav · d4e00a94 · Sep 2, 2025 · 2 filesMessage 62 · AdequateInformational 15Details
Commit message · kopecdav

chore(core): tidy up rgb_led effects variables and func names.

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

This is a routine code cleanup in the RGB LED lighting driver for a Trezor hardware wallet. It renames variables and functions to be clearer (for example, 'bootloader_breathe' becomes 'pairing'), shortens a constant name, and adds clamping so color values stay within valid bounds. There is no security-relevant change and no indication this fixes a vulnerability.

Lower-priorityfeat(core): add rgb_led_effect_ongoing function to rgb led driver.by kopecdav · 02df9020 · Sep 2, 2025 · 9 filesMessage 62 · AdequateInformational 15Details
Commit message · kopecdav

feat(core): add rgb_led_effect_ongoing function to rgb led driver.

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

This commit adds a new function that lets the firmware ask whether an RGB LED lighting effect is currently running. It also renames some internal constants and removes unnecessary 'return' statements. There is no security-relevant change here; it is a routine feature addition to the LED driver.

Lower-priorityfeat(core): increase RGB LED effect collor resolution.by kopecdav · 6d62dccd · Sep 2, 2025 · 4 filesMessage 62 · AdequateInformational 15Details
Commit message · kopecdav

feat(core): increase RGB LED effect collor resolution.

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

This commit is a routine feature improvement for the RGB LED on Trezor hardware wallets. It increases the smoothness of LED color transitions (for example the breathing blue bootloader light and the yellow charging light) by switching from 8-bit integer color values to higher-resolution timer values and adding gamma correction. There is no indication this change fixes or introduces a security vulnerability.

Lower-priorityfeat(core): add rgb effect api placeholders into the unix implementation.by kopecdav · 10a46b9b · Sep 2, 2025 · 1 fileMessage 62 · AdequateInformational 15Details
Commit message · kopecdav

feat(core): add rgb effect api placeholders into the unix implementation.

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

This commit adds empty placeholder functions for RGB LED effects in the Unix (simulator/emulator) build of the Trezor firmware. The functions do nothing and simply return. There is no security-relevant change.

Lower-priorityfeat(core): update rgb_led syscall stubs.by kopecdav · 2987e524 · Sep 2, 2025 · 6 filesMessage 57 · ThinInformational 19Details
Commit message · kopecdav

feat(core): update rgb_led syscall stubs.

[no changelog]

57/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
AI analysis · Informational 19/100

This commit updates the Trezor firmware's RGB LED system-call interface. It adds two new kernel calls (effect_start and effect_stop), exposes them to Rust code, and removes a redundant negative-value check in the effect lookup. The change is a feature update with a minor hardening cleanup; there is no direct evidence it fixes an exploitable security bug.

Lower-prioritychore(core): clean rgb led driver comments.by kopecdav · 6bb61750 · Sep 2, 2025 · 4 filesMessage 57 · ThinInformational 15Details
Commit message · kopecdav

chore(core): clean rgb led driver comments.

[no changelog]

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

This commit only tidies up comments and documentation for the RGB LED driver in Trezor hardware firmware. It also makes two tiny, safe-looking code-order tweaks: moving a timer unset call earlier and reordering flag/timer operations when stopping an LED effect. There is no security-relevant change and no bug fix.

AI review queuedchore(core): sign translations 2.9.1by obrusvit · 4f5f45ea · Sep 1, 2025 · 1 fileMessage 57 · ThinInformational 15Details
Commit message · obrusvit

chore(core): sign translations 2.9.1

[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 simply adds a new approved digital signature for translation files used in Trezor firmware version 2.9.1. It is a routine maintenance task with no visible security-relevant code change.

Security candidatefix(core): wait 500ms before rebooting to bootloaderby Roman Zeyde · 5732d75d · Sep 1, 2025 · 1 fileMessage 93 · StrongLow 42Details
Commit message · Roman Zeyde

fix(core): wait 500ms before rebooting to bootloader

In general, Trezor should not wait for too long for a THP ACK after
sending the `Success` response (since the last ACK may be lost, similar
to [Two generals' agreement and TCP handshake](https://stackoverflow.com/q/36352236)).

[no changelog]

93/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
Why it was queued
update trustmemory safetyboot or update path
AI analysis · Low 42/100

This change adjusts how a Trezor hardware wallet hands off from its main app to its bootloader during a firmware upgrade. Previously, the device would wait until the host computer acknowledged the 'I am rebooting' message before rebooting. Now it waits at most 500 milliseconds and reboots anyway if the acknowledgment doesn't arrive in time. The goal is to avoid getting stuck if that final acknowledgment packet is lost in transit, similar to how a phone call can hang waiting for a goodbye that never comes. The patch is a partial fix for a reliability issue in the device-host communication protocol.

Lower-prioritydocs(core): add `ThpContext` docstringby Roman Zeyde · 05b3e47b · Sep 1, 2025 · 1 fileMessage 57 · ThinInformational 15Details
Commit message · Roman Zeyde

docs(core): add `ThpContext` docstring

[no changelog]

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

This commit only adds a plain-language comment (docstring) explaining what the ThpContext class does. No code behavior was changed, so it cannot introduce or fix a security issue on its own.

Lower-prioritychore(core): rename `BleInterface` to `BLEIF`by Roman Zeyde · 9fd0d21d · Sep 1, 2025 · 5 filesMessage 80 · StrongInformational 15Details
Commit message · Roman Zeyde

chore(core): rename `BleInterface` to `BLEIF`

Following `USBIF` introduction in 71d6052652, to make logs more consistent:
```
1.258 trezor.wire DEBUG Finished THP session: (<USBIF>, <BLEIF>)
```

[no changelog]

80/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context
AI analysis · Informational 15/100

This commit is a simple rename of a Bluetooth interface class from 'BleInterface' to 'BLEIF' to match the naming style of 'USBIF'. It only changes names in code comments, type stubs, and internal identifiers. No behavior changes, no security fixes, and no security risks are present.

Lower-priorityfix(core): correct BLE interface syshandleby Roman Zeyde · c855dbfb · Aug 29, 2025 · 1 fileMessage 57 · ThinLow 28Details
Commit message · Roman Zeyde

fix(core): correct BLE interface syshandle

[no changelog]

57/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
AI analysis · Low 28/100

This commit fixes a hard-coded Bluetooth Low Energy (BLE) interface identifier in the Trezor hardware wallet firmware. The old code used a fixed number (8) with a comment saying it should be replaced by the proper system handle. The fix now uses the correct generated constant. Using the wrong identifier could cause the BLE communication interface to be misidentified, which might lead to communication errors or, in a worst-case security scenario, allow an attacker to confuse the device about which channel data is arriving on. The change is small and defensive, but the commit message gives no details about any actual security issue.

Lower-prioritytest(core): reimplement some THP transport-related testsby Roman Zeyde · 32488b8b · Aug 29, 2025 · 2 filesMessage 72 · AdequateInformational 15Details
Commit message · Roman Zeyde

test(core): reimplement some THP transport-related tests

[no changelog]

72/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Mentions testing or verification! No meaningful explanatory body
AI analysis · Informational 15/100

This commit only adds new automated tests for the Trezor hardware wallet's THP (Trezor Host Protocol) transport layer. It checks that the device correctly rejects old protocol v1 packets and unallocated channel messages. No production firmware code is changed, so this commit does not introduce or fix a security vulnerability by itself.

Lower-priorityfeat(core): allow preempting stale THP channels on all interfacesby Roman Zeyde · 50b57d6c · Aug 29, 2025 · 8 filesMessage 100 · StrongLow 34Details
Commit message · Roman Zeyde

feat(core): allow preempting stale THP channels on all interfaces

Instead of running 2 separate THP session handling tasks
(on USB & BLE interfaces), this PR uses a single task, which
will handle both - in order to allow preempting the event loop
in case there is an unresponsive channel.

`ThpContext` is split into interface-specific class (`InterfaceContext`)
and a "global" THP receiver (`ThpContext`).

Also, removing `core/tests/test_trezor.wire.thp.py` - to be reimplemented in a following PR.

[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✓ Explains rationale or failure mode✓ Mentions testing or verification
AI analysis · Low 34/100

This commit rewrites how the Trezor firmware handles the new Trezor Host Protocol (THP) across USB and Bluetooth. Instead of running one independent session handler for each interface, it merges them into a single task that can switch attention between interfaces. The main goal is to let the device abandon ('preempt') a stuck or unresponsive THP channel so that another interface can still make progress. The change is described as a feature/refactor, not as a security fix, and one THP test file is removed to be rewritten later.

AI review queuedfeat(core/prodtest): Check MCU device certificate chain.by Andrew Kozlik · bb3eb7cc · Aug 29, 2025 · 1 fileMessage 62 · AdequateLow 32Details
Commit message · Andrew Kozlik

feat(core/prodtest): Check MCU device certificate chain.

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

This commit adds a verification step in the Trezor hardware wallet's factory production-test tool before writing a device certificate to secure storage. It now checks that the supplied certificate chain is cryptographically valid and matches the device's own MCU authentication key, preventing a malformed or mismatched certificate from being permanently written during manufacturing.

Security candidatefeat(core/prodtest): Check for device S/N in device certificates.by Andrew Kozlik · 57d462d8 · Aug 29, 2025 · 7 filesMessage 62 · AdequateLow 26Details
Commit message · Andrew Kozlik

feat(core/prodtest): Check for device S/N in device certificates.

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

This commit adds a production-line safety check in Trezor's internal 'prodtest' firmware. Before writing a device-unique X.509 certificate to the device, the firmware now verifies that the certificate's subject serial number matches the device's own serial number stored in OTP. It also centralizes serial-number reading into a helper function. This is a hardening/validation improvement rather than a fix for an active user-facing vulnerability.

Lower-prioritychore(core): don't return BLE address type to MicroPythonby Roman Zeyde · 66c39e21 · Aug 29, 2025 · 2 filesMessage 62 · AdequateInformational 18Details
Commit message · Roman Zeyde

chore(core): don't return BLE address type to MicroPython

[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
AI analysis · Informational 18/100

This commit removes extra Bluetooth address-type information from two Python-facing functions in the Trezor firmware. Previously, these functions returned both a 6-byte Bluetooth address and an integer indicating whether the address was public or random. Now they return only the 6-byte address. The change is described as a routine cleanup ('chore') with no changelog entry. There is no direct evidence in the commit that this fixes a security vulnerability; it appears to be an API simplification.

Lower-priorityfeat(core): use MAC addresses in BLE menuby Roman Zeyde · 5ce59ac3 · Aug 29, 2025 · 1 fileMessage 57 · ThinInformational 15Details
Commit message · Roman Zeyde

feat(core): use MAC addresses in BLE menu

[no changelog]

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

This commit updates the Bluetooth device menu on Trezor hardware wallets to display real paired-device MAC addresses instead of a hardcoded placeholder name ('Trezor Suite'). It is a UI feature change with no apparent security relevance.

Security candidatefix(eckhart): allow device name to overflowby Ioan Bizău · 1cda8e65 · Aug 29, 2025 · 2 filesMessage 62 · AdequateInformational 18Details
Commit message · Ioan Bizău

fix(eckhart): allow device name to overflow

[no changelog]

62/100 · AdequateMessage clarity
✓ 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
memory safetyboot or update path
AI analysis · Informational 18/100

This commit changes how the Trezor hardware wallet displays a long device name in its settings menu. Previously, if the device name was too long to fit on screen, the firmware would trigger a fatal error in debug builds. The fix allows the name to overflow visually instead of crashing. There is no indication this is a security vulnerability; it is a UI robustness fix.

Security candidatefix(eckhart): allow connection menu to overflowby Ioan Bizău · ba06170d · Aug 29, 2025 · 2 filesMessage 62 · AdequateInformational 17Details
Commit message · Ioan Bizău

fix(eckhart): allow connection menu to overflow

[no changelog]

62/100 · AdequateMessage clarity
✓ 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
memory safetyboot or update path
AI analysis · Informational 17/100

This commit is a UI layout fix for the Trezor hardware wallet's 'Eckhart' design. It renames and restructures how menu buttons handle long text labels so that certain items (like the device name) can overflow onto a single scrolling line instead of being forced into two lines. There is no indication this change fixes a security vulnerability; it appears to be a visual/UX improvement.

Lower-priorityfix(prodtest_emu): fix command list structureby cepetr · f898e927 · Aug 29, 2025 · 1 fileMessage 57 · ThinLow 29Details
Commit message · cepetr

fix(prodtest_emu): fix command list structure

[no changelog]

57/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
AI analysis · Low 29/100

This commit fixes a data structure bug in the production-test emulator for Trezor hardware wallets. The code previously stored a list of pointers to command definitions, but used the wrong size when growing the list and then dereferenced it incorrectly. The fix stores the command definitions directly in the list and uses the correct size. This is a straightforward bug fix in an internal testing tool; there is no direct evidence it is an exploitable security vulnerability.

Lower-priorityfix(code): fix usb vcp emulationby cepetr · d4e43c54 · Aug 29, 2025 · 1 fileMessage 57 · ThinLow 27Details
Commit message · cepetr

fix(code): fix usb vcp emulation

[no changelog]

57/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
AI analysis · Low 27/100

This commit fixes a bug in the Unix emulator for Trezor's USB virtual serial port (VCP). Previously, after reading part of a message, the emulator would erase the entire buffer and reset the length to zero, even if unread data remained. Now, for VCP interfaces, it correctly keeps the unread portion of the message for the next read. This is a correctness fix in emulator code, not the real device firmware, and there is no direct evidence it is security-relevant or exploitable.