TZ
← All projectsTrezor

Trezor firmware

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

BitcoinHardware walletsNormal
Repository coverage

2655 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 queue1193AI analyses
342commits · 30 days
582commits · 60 days
1357commits · 180 days
2654commits · 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
1318Adequate · 60–79
859Thin · 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.
PrisionMike945978273
Andrew Kozlik702427266
Roman Zeyde571177240171
tychovrahe292104116161
Jakub Janků19915184
Martin Pastyřík23810173
cepetr1968290059
Ioan Bizău23076137059
obrusvit2137693064
M1nd3r2067183071
Lukas Bielesch846771067
Martin Milata1744651063
Analysis record

Published AI watches

Last scanned 57 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 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 67 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

test(ethereum): fix incorrect address checksum

This commit only updates test data. It corrects the capitalization (checksum) of Ethereum addresses used in automated tests and refreshes the expected screen-shot hashes those tests compare against. There are no changes to the actual Trezo…

2b1938ccby Tomas Martykan+52−523 files
No security note in commit
Low 33 AI analysisMessage 67 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

fix(python/trezorlib): enable entropy check on T1 by default

This commit changes the Trezor Python library so that, when setting up a Trezor Model One (the original Trezor 1 device), it now performs an entropy check by default if the device runs firmware 1.13.1 or newer. Previously, the library only…

Enables a previously disabled security/validation feature (entropy check) for a specific device modelAdds version-gated behavior to avoid errors on older firmwareDefensive hardening of wallet setup randomness verification
a4af9107by Andrew Kozlik+10−42 files
No security note in commit
Informational 15 AI analysisMessage 57 · Thin
TZ TrezorTrezor firmware BitcoinHardware wallets

chore(core): remove scons related files

This commit is a routine cleanup that removes the old SCons build system files from the Trezor Core firmware repository. It deletes Makefiles, SConscripts, and related Python helper scripts, but does not change any firmware source code, cr…

a4b25c31by cepetr+5−927554 files
No security note in commit
Informational 22 AI analysisMessage 80 · Strong
TZ TrezorTrezor firmware BitcoinHardware wallets

refactor(core): assorted micropython-1.28.0 fixes

This commit updates Trezor's embedded MicroPython interpreter from an older version to 1.28.0. It pulls in several upstream MicroPython bug fixes, including stricter buffer-size checks for converting integers to bytes, a new stack-safety A…

Synchronizes upstream MicroPython fixes that include buffer-size and stack-safety hardeningPrevents Ctrl+C interruption of frozen boot code, reducing denial-of-service/control-flow risk during bootFixes sys.stdout.buffer.write() return value, which could affect code relying on correct I/O semantics
7ba7879dby Martin Milata+36−4012 files
No security note in commit
Informational 15 AI analysisMessage 70 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

refactor(core): use mp_obj_new_str_from_cstr

This commit is a simple code cleanup that replaces a common MicroPython string-creation pattern with a new helper function. It does not change what the code does, only how it is written. There is no security issue visible in the change.

6a889e6aby Martin Milata+3−33 files
No security note in commit
Informational 15 AI analysisMessage 80 · Strong
TZ TrezorTrezor firmware BitcoinHardware wallets

refactor(core): replace hexlify with bytes.hex()

This is a large but straightforward internal cleanup: the project switched from using the MicroPython `ubinascii` module's `hexlify`/`unhexlify` functions to the standard Python `bytes.hex()` and `bytes.fromhex()` methods. The change remov…

44aa469eby Martin Milata+1334−1383120 files
No security note in commit
Informational 18 AI analysisMessage 70 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

refactor(core): replace m_new_obj_with_finaliser

This commit is a routine code cleanup in the Trezor firmware's embedded MicroPython modules. It replaces an older, two-step object allocation pattern with a newer helper that allocates memory and sets the object type in one step. The chang…

No security-relevant logic changes observedNo input validation changesNo memory safety bug fixes (e.g., no overflow, use-after-free, or uninitialized memory fixes)
142794eaby Martin Milata+40−5619 files
No security note in commit
Informational 15 AI analysisMessage 80 · Strong
TZ TrezorTrezor firmware BitcoinHardware wallets

refactor(core): bundle the utimeq module

This commit is a routine maintenance refactor. MicroPython removed its built-in 'utimeq' module, so Trezor copied the same code into its own firmware tree and renamed it to 'timeq'. There is no security bug being fixed and no new vulnerabi…

617bc806by Martin Milata+284−2211 files
No security note in commit
Informational 17 AI analysisMessage 70 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

refactor(core): use mp_obj_new_str_from_vstr

This is a code cleanup change in Trezor's firmware that swaps one MicroPython internal helper for another. It replaces calls that create byte or string objects from a vstr buffer with newer, purpose-built helpers. The commit message says t…

Refactor only: helper function renames with equivalent semanticsNew str helper adds UTF-8 validation; bytes helper does not validateNo input validation, length, or error-handling changes observed
7ea11191by Martin Milata+72−7433 files
No security note in commit
Informational 15 AI analysisMessage 85 · Strong
TZ TrezorTrezor firmware BitcoinHardware wallets

refactor(core): switch to slots-based mp_obj_type_t

This commit is a routine internal cleanup that switches how Trezor's firmware defines built-in MicroPython object types. It replaces older, manually-written type structures with a newer macro provided by the upstream MicroPython project. T…

ab51798fby Martin Milata+163−16624 files
No security note in commit
Informational 15 AI analysisMessage 62 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

refactor(core/rust): bindgen wrapper for calling static micropython functions

This commit is a straightforward internal code refactor. It adds a small C wrapper file so that Rust code can call two specific internal MicroPython functions that are declared as static/inline in headers. There is no user-facing change, n…

d5121d92by Martin Milata+20−06 files
No security note in commit
Informational 15 AI analysisMessage 80 · Strong
TZ TrezorTrezor firmware BitcoinHardware wallets

build(core): adjust mpy-cross paths

This commit is a routine build-system update for the Trezor firmware. It changes where the build process looks for the MicroPython cross-compiler binary (mpy-cross) and synchronizes a configuration header with newer MicroPython code. There…

2ef70e16by Martin Milata+18−264 files
No security note in commit
Low 30 AI analysisMessage 80 · Strong
TZ TrezorTrezor firmware BitcoinHardware wallets

build(core): collect micropython GC root pointers

This commit updates the Trezor firmware build system to use a newer MicroPython mechanism for tracking special memory pointers called 'root pointers.' It removes hard-coded lists of these pointers from configuration files and instead colle…

GC root pointer handling changedBuild system now auto-collects root pointers instead of hard-coding themRemoves manual MICROPY_PORT_ROOT_POINTERS lists
fc128f3dby Martin Milata+75−107 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): don't send MCU attestationby Roman Zeyde · 8bc6d1b2 · May 11, 2026 · 2 filesMessage 57 · ThinInformational 19Details
Commit message · Roman Zeyde

chore(core): don't send MCU attestation

[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
update trustauthentication path
AI analysis · Informational 19/100

This commit removes a feature that would have sent a 'MCU attestation'—a cryptographic proof signed by the device's microcontroller—during device authentication. The change itself is a simple deletion of the attestation code and its changelog entry. There is no direct evidence in the commit of a security vulnerability; it appears to be a product decision to stop sending this proof, possibly because the feature was not ready or was being reconsidered. It reduces the amount of identity information the device exposes during authentication.

Security candidaterefactor(core): change algorithm for scm_revision obfuscationby cepetr · dd0af7b3 · May 8, 2026 · 11 filesMessage 62 · AdequateLow 37Details
Commit message · cepetr

refactor(core): change algorithm for scm_revision obfuscation

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

This commit changes how the Trezor firmware exposes its internal Git commit hash (the 'revision ID'). Previously the full hash was directly readable by software. Now only a shortened version is stored plainly, while the full hash is lightly scrambled (XORed) and only returned through a function that requires a specific key byte. The goal is to make it harder for a malicious fake Trezor to copy the revision ID from an official firmware update and pretend it is running that official firmware. It is a defensive hardening change, not a fix for an active bug or vulnerability in the traditional sense.

Security candidatefix(core): get rid of CONST weirdnessby cepetr · 7b27f4be · May 8, 2026 · 3 filesMessage 57 · ThinInformational 12Details
Commit message · cepetr

fix(core): get rid of CONST weirdness

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

This commit is a cleanup of how the word 'const' is used in the Trezor firmware's ed25519 cryptographic code. Previously, the code defined a custom 'CONST' macro that meant 'const' on newer compilers and nothing on older GCC versions. The commit removes that macro and uses plain 'const' everywhere. It also adjusts a Rust build script comment and compiler flag. There is no indication in the commit that this fixes a security vulnerability or changes runtime behavior.

Security candidaterefactor(core): move emu profile to sys layerby cepetr · 4c279521 · May 8, 2026 · 10 filesMessage 57 · ThinInformational 15Details
Commit message · cepetr

refactor(core): move emu profile 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 straightforward code reorganization: it moves the emulator's profile-handling code from one directory to another and updates the build files and include paths accordingly. There is no change to what the code does, no bug fix, and no security-related change.

Security candidaterefactor(core): introduce USE_APPLETS macroby cepetr · cd2ab44b · May 8, 2026 · 18 filesMessage 57 · ThinInformational 15Details
Commit message · cepetr

refactor(core): introduce USE_APPLETS macro

[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 straightforward internal code refactor. It renames a build feature flag from 'applet' to 'applets' and replaces the KERNEL preprocessor guard with a new USE_APPLETS guard in the relevant source files. There is no change to actual security logic, no bug fix, and no indication of a vulnerability being addressed.

Security candidatechore: migrate from SDL2 to SDL3by M1nd3r · 9fe8ae02 · May 7, 2026 · 19 filesMessage 57 · ThinInformational 20Details
Commit message · M1nd3r

chore: migrate from SDL2 to SDL3

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

This commit updates the Trezor firmware build system and emulator code to use SDL3 instead of the older SDL2 library. It is a routine dependency migration affecting only emulator builds (software simulations of the hardware wallet), not the real device firmware. The changes rename functions and constants to match SDL3's API, adjust build scripts, and add a couple of small safety checks. There is no indication this fixes a known security vulnerability.

Security candidatefix(core/build): fix headertool keys selectionby tychovrahe · b2de55aa · May 6, 2026 · 2 filesMessage 57 · ThinLow 40Details
Commit message · tychovrahe

fix(core/build): fix headertool keys selection

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

This commit fixes a logic error in the build scripts that decide whether to use development or production signing keys when preparing Trezor firmware images. Before the fix, the condition was accidentally inverted, so production builds may have used development keys and development builds may have used production keys. Using the wrong keys could make firmware signatures invalid or cause devices to reject genuine firmware, but the commit itself does not show an exploitable runtime vulnerability in shipped code.

Security candidatefix(core/bootloader): fix codec v1 overflow issuesby tychovrahe · eebd2e5e · May 5, 2026 · 1 fileMessage 67 · AdequateModerate 63Details
Commit message · tychovrahe

fix(core/bootloader): fix codec v1 overflow issues

[no changelog]

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
update trustmemory safetyboot or update path
AI analysis · Moderate 63/100

This patch fixes several integer-handling bugs in the Trezor bootloader's USB message decoder. The changes prevent small or maliciously crafted message sizes from causing arithmetic overflows or underflows when the device calculates how many USB packets to read. Such flaws could potentially let an attacker confuse the bootloader into reading memory out of bounds or behaving unpredictably during a firmware update.

Security candidatefix(core): fix OOB read in read_vendor_headerby tychovrahe · 3b64e4e8 · May 5, 2026 · 10 filesMessage 57 · ThinHigh 74Details
Commit message · tychovrahe

fix(core): fix OOB read in read_vendor_header

[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 · High 74/100

This commit fixes an out-of-bounds memory read bug in the Trezor bootloader's firmware header parser. The read_vendor_header function previously trusted size values inside a firmware file without first checking whether those sizes fit within the actual data buffer. A malformed firmware update or a corrupted on-device firmware image could have caused the bootloader to read memory beyond the allowed region. The patch adds size checks so the parser rejects too-small or oversized headers before using their contents.

Security candidatebuild(core): use BOOTLOADER_DEVEL flag for keys selectionby tychovrahe · a7b34c4a · May 5, 2026 · 30 filesMessage 62 · AdequateLow 30Details
Commit message · tychovrahe

build(core): use BOOTLOADER_DEVEL flag for keys selection

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

This commit renames and restructures how Trezor firmware selects cryptographic signing keys for bootloaders. Previously, non-production builds automatically used weaker development/QA keys. Now, a dedicated BOOTLOADER_DEVEL flag controls that, while a separate FORCE_BOOTLOADER_UPGRADE flag controls whether the firmware should forcibly update the bootloader. The change also prevents combining PRODUCTION=1 with BOOTLOADER_DEVEL=1. This is primarily a build-hardening and internal workflow cleanup; it does not by itself fix a remotely exploitable bug in shipped devices.

Security candidatefeat(core): add N4W1 backup/recovery flowsby Roman Zeyde · 7325bb60 · May 5, 2026 · 18 filesMessage 90 · StrongLow 31Details
Commit message · Roman Zeyde

feat(core): add N4W1 backup/recovery flows

Can be manually tested by invoking:
```
$ core/emu.py -ea -c trezorctl device setup -b shamir # will run multi-share backup
$ core/tools/n1w1-emu.py run 127.0.0.1:21325 /tmp/tagN # simulate tag connection and I/O
```

Enabled N4W1-based backup/recovery device tests for SLIP-39 single group scenarios.
Other device & click tests will be added in subsequent PRs.

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

This commit adds a new backup and recovery method called N4W1 to Trezor firmware. It is a feature addition that lets users back up and restore their wallet seed using a near-field wireless tag instead of typing words on the device screen. The change is mostly about adding new code paths and tests; it does not appear to fix a known security bug, nor does the vendor describe it as a security patch.

Security candidatefix(ethereum): out of bounds checkby Ioan Bizău · 2c9b35be · May 5, 2026 · 1 fileMessage 57 · ThinModerate 63Details
Commit message · Ioan Bizău

fix(ethereum): out of bounds check

[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
memory safetysigning or wallet path
AI analysis · Moderate 63/100

This commit fixes an off-by-one-style bounds check in the Ethereum clear-signing code on Trezor hardware wallets. The old check only verified that the starting position was inside the data, but did not verify that the code was about to read 32 bytes from that position. As a result, a malformed Ethereum transaction or message could trick the device into reading past the end of a buffer while decoding human-readable fields. The fix now checks that offset plus 32 bytes does not exceed the data length before reading.

Security candidatefeat(ethereum): definition request mechanismby Ioan Bizău · 5daa6e48 · May 5, 2026 · 15 filesMessage 57 · ThinLow 39Details
Commit message · Ioan Bizău

feat(ethereum): definition request mechanism

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

This commit adds a new feature to Trezor Ethereum signing that lets the device ask the connected computer or phone for extra token/contract display information during a transaction. It is a feature addition (not a direct bug fix), so it mainly changes how the wallet and device talk to each other. There is no clear security vulnerability visible in the diff, but any new request/response protocol introduces places where a malicious or buggy host could supply misleading data, and the device must carefully validate what it receives. The commit does not itself describe a security issue or credit a researcher.

Security candidatefeat(ethereum): clear signing unlimited amountsby Ioan Bizău · 1c2d64f3 · May 5, 2026 · 7 filesMessage 57 · ThinLow 28Details
Commit message · Ioan Bizău

feat(ethereum): clear signing unlimited amounts

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

This commit changes how Trezor displays Ethereum token-approval amounts that exceed a safety threshold. Previously, the code returned 'None' for such large amounts, and the user interface fell back to a generic 'Unlimited amount' warning. Now the formatter explicitly returns a special 'AboveThreshold' marker carrying the text 'Unlimited', and each device UI layout uses that marker to show the same warning and display text. The change is a user-interface refinement, not a fix for a cryptographic bug or a remote exploit. It does, however, make the 'unlimited' signal explicit rather than implicit, which slightly reduces the chance that a future UI change would accidentally treat a huge allowance as an ordinary amount.

Security candidatechore(core): make TextBox more UTF-8 compliantby obrusvit · b964cab3 · May 2, 2026 · 2 filesMessage 57 · ThinInformational 15Details
Commit message · obrusvit

chore(core): make TextBox more UTF-8 compliant

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

This commit fixes a UI bug in how the Trezor hardware wallet counts and displays the last character of a passphrase when it contains multi-byte UTF-8 characters (such as emoji or accented letters). Previously, the code measured length in bytes and sliced the string by byte position, which could split a multi-byte character and produce a broken or incorrect last-character display. The change adds proper character-based counting and a safe way to retrieve the last character. It is a correctness/robustness fix rather than a clear security vulnerability, and there is no evidence it was disclosed or exploited as a security issue.

Security candidatechore(core/delizia): remove unused borderby obrusvit · b5264664 · May 2, 2026 · 3 filesMessage 57 · ThinInformational 15Details
Commit message · obrusvit

chore(core/delizia): remove unused border

[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 is a routine cleanup change that removes an unused visual border feature from the Trezor firmware's Delizia user interface. It does not change any security-sensitive behavior; it only simplifies the code by deleting a function that always returned zero-width borders and updating two places that called it to no longer use a border wrapper.

Security candidatefeat(core): hide chars in passphrase inputby obrusvit · 610a034a · May 2, 2026 · 6 filesMessage 80 · StrongLow 29Details
Commit message · obrusvit

feat(core): hide chars in passphrase input

- hide already written characters in the passphrase keyboard in Delizia
and Bolt
- holding a finger in the input field reveals the whole passphrase in a
potentially multi-line manner
- update fixtures

80/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context
Why it was queued
access controlboot or update pathauthentication path
AI analysis · Low 29/100

This commit changes how Trezor hardware wallets display passphrase entry on screen. Previously, the passphrase characters were shown in plain text as the user typed them. After this change, already-typed characters are hidden (shown as dots or asterisks), with only the most recently typed character briefly visible. The user can press and hold in the input area to reveal the full passphrase for verification. This is a security/usability improvement to reduce shoulder-surfing risk, not a fix for an exploitable vulnerability.

Security candidatefeat(core): passphrase reveal mode until touch endby obrusvit · ca609973 · May 2, 2026 · 3 filesMessage 85 · StrongInformational 15Details
Commit message · obrusvit

feat(core): passphrase reveal mode until touch end

- this commit changes all touch display passphrase keyboards to allow
persisting the reveal mode until the user lifts the finger off the
screen anywhere, not just within the extended input shown area

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

This commit changes how Trezor devices reveal a passphrase on screen while typing. Previously, the revealed passphrase would hide again if the user's finger slid outside a specific extended area below the input box. Now, the passphrase stays visible until the user simply lifts their finger anywhere on the screen. This is a user-experience refinement, not a security fix or vulnerability.

Security candidaterefactor(core/eckhart): split homescreen 2 submodsby copilot-swe-agent[bot] · 6320cc85 · May 2, 2026 · 5 filesMessage 93 · StrongInformational 15Details
Commit message · copilot-swe-agent[bot]

refactor(core/eckhart): split homescreen 2 submods

Agent-Logs-Url:
https://github.com/trezor/trezor-firmware/sessions/a07efdb9-5d60-4295-a1fb-ed1062339761

Co-authored-by: obrusvit <14001709+obrusvit@users.noreply.github.com>

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

This commit is a straightforward code cleanup: it takes one large Rust source file for the Trezor hardware wallet's homescreen and splits it into three smaller, logically organized files (header, notification center, and helpers) plus a module entry point. No user-facing behavior, security logic, or data handling changed.

Security candidatefeat(core): use "Initiate connection" bootloader label on T2T1, T3B1, T3T1by Hannsek · 89f33013 · Apr 30, 2026 · 3 filesMessage 93 · StrongInformational 15Details
Commit message · Hannsek

feat(core): use "Initiate connection" bootloader label on T2T1, T3B1, T3T1

Replaces the outdated "INSTALL FIRMWARE" / "INSTALL FW" button label on
the bootloader intro screen with one that accurately describes what the
button does — initiating the USB/host connection.

T3W1 (Safe 7) already used "Initiate connection"; this aligns all other
Core devices with that wording. T3B1 (Safe 3) uses a shortened "Init
connection" to fit the 128×64 pixel display.

Closes #6824

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

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

This commit only changes the text label on a bootloader button from 'INSTALL FIRMWARE'/'INSTALL FW' to 'INITIATE CONNECTION'/'Init connection' on three Trezor hardware wallet models. It is a user-interface wording improvement with no security or functional code changes.

Security candidatechore(core, crypto): remove unused monero hasherby M1nd3r · 14c6e436 · Apr 30, 2026 · 6 filesMessage 57 · ThinInformational 15Details
Commit message · M1nd3r

chore(core, crypto): remove unused monero hasher

[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 simply removes an unused Monero hashing helper (the 'Hasher' class and related C functions) from the Trezor firmware codebase. It deletes dead code, tests, and type stubs. There is no indication this fixes or introduces a security vulnerability.

Security candidatechore(ethereum): cleanup ERC-7730 type namesby Ioan Bizău · 993dbadf · Apr 29, 2026 · 12 filesMessage 57 · ThinInformational 15Details
Commit message · Ioan Bizău

chore(ethereum): cleanup ERC-7730 type names

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

This commit is a simple renaming cleanup. It changes identifiers like 'EthereumERC7730DisplayFormatInfo' to 'EthereumDisplayFormatInfo' and 'ETHEREUM_ERC7730_DISPLAY_FORMAT' to 'ETHEREUM_DISPLAY_FORMAT' across protobuf definitions, generated code, and tests. There are no functional changes to how data is validated, parsed, or displayed.

Security candidatefeat(tests,ethereum): clear signing definitionsby Ioan Bizău · dc012aaa · Apr 28, 2026 · 3 filesMessage 67 · AdequateInformational 12Details
Commit message · Ioan Bizău

feat(tests,ethereum): clear signing definitions

[no changelog]

67/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Mentions testing or verification! No meaningful explanatory body
Why it was queued
signing boundary
AI analysis · Informational 12/100

This commit only adds and updates automated tests for Trezor's Ethereum 'clear signing' feature (ERC-7730 display formats). It does not change the firmware's security logic, so it is not a security patch. The tests verify that malformed or mismatched definitions are rejected, which is a normal defensive testing activity.

Security candidatefeat(tests,ethereum): add clear signing assertionsby Ioan Bizău · 3900f4c3 · Apr 28, 2026 · 1 fileMessage 72 · AdequateInformational 15Details
Commit message · Ioan Bizău

feat(tests,ethereum): add clear signing assertions

[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
Why it was queued
signing boundary
AI analysis · Informational 15/100

This commit only adds stronger checks to existing automated tests for Ethereum 'clear signing' on Trezor devices. It does not change any firmware, wallet, or production code, so it cannot introduce a security vulnerability or fix one in shipped software.

Security candidatechore(ethereum): skip clear signing for large databy Ioan Bizău · 747eec4d · Apr 28, 2026 · 1 fileMessage 62 · AdequateLow 33Details
Commit message · Ioan Bizău

chore(ethereum): skip clear signing for large data

[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 path
AI analysis · Low 33/100

This commit changes how Trezor handles Ethereum transactions with large amounts of embedded data. Previously, the device always tried to 'clear sign' (show human-readable details on screen) for every transaction. Now, if the transaction data is larger than an internal storage limit, it skips clear signing and falls back to 'blind signing' (showing a generic warning). The change is described as a workaround because the clear-signing parser cannot fetch additional data chunks, and enabling it would remove the ability to fall back to blind signing. This is a defensive/hardening change rather than a fix for an active vulnerability, but it reduces the chance that a large malicious transaction could confuse the parser or the user.