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.
Message quality measures whether a commit identifies its scope, purpose, rationale, testing, and supporting references. It does not change the security-severity score.
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
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
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.
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 …
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
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
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…
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…
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…
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…
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…
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…
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.…
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…
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…
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…
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 …
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
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…
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.
Expand any commit for its author, full message, clarity score, changed files, triage signals, analysis, and source link.
Security candidatefeat: confirm cancel outputby Ioan Bizău · c1e9277b · Jan 12, 2026 · 12 filesMessage 47 · ThinInformational 15Details
Commit message · Ioan Bizău
feat: confirm cancel output
[no changelog]
47/100 · ThinMessage clarity
✓ Descriptive subject✓ 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 on-screen prompt that asks users to confirm they really want to cancel a transaction-signing flow. It is a user-experience and safety feature, not a security fix. There is no evidence of a vulnerability being patched.
Security candidaterefactor: extract `ConfirmActionOptions`by Ioan Bizău · 3f0cbc03 · Jan 12, 2026 · 4 filesMessage 47 · ThinInformational 15Details
Commit message · Ioan Bizău
refactor: extract `ConfirmActionOptions`
[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 15/100
This commit is a straightforward code cleanup: it bundles several settings for confirmation screens into a single ConfirmActionOptions struct instead of passing them as separate function arguments. There is no change to user-facing behavior, no bug fix, and no security-related change.
Security candidaterefactor: use `ConfirmActionOptions` in `ConfirmValue`by Ioan Bizău · eb5ede77 · Jan 12, 2026 · 3 filesMessage 62 · AdequateInformational 15Details
Commit message · Ioan Bizău
refactor: use `ConfirmActionOptions` in `ConfirmValue`
[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 straightforward internal code cleanup in the Trezor firmware's user-interface layer. It replaces several individual settings inside a 'ConfirmValue' screen builder with a shared 'ConfirmActionOptions' object. There is no change to user-visible behavior or to security logic; it is purely a refactor to reduce duplicated code.
Security candidatefeat(delizia): swipe to go back on confirm_valueby Ioan Bizău · 90e30e57 · Jan 12, 2026 · 7 filesMessage 57 · ThinInformational 19Details
Commit message · Ioan Bizău
feat(delizia): swipe to go back 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
signing or wallet pathboot or update path
AI analysis · Informational 19/100
This commit adds a 'swipe down to go back' feature to the Delizia user interface on Trezor hardware wallets. When reviewing a cryptocurrency transaction, a user can now swipe down on the amount screen to return to the address screen and double-check it. It is a usability improvement, not a fix for a vulnerability.
Security candidaterefactor: introduce `StrPropertyType`by Ioan Bizău · 8129ce47 · Jan 12, 2026 · 14 filesMessage 70 · AdequateInformational 15Details
Commit message · Ioan Bizău
refactor: introduce `StrPropertyType`
* for properties that cannot have `bytes` values, which `PropertyType` allows * also replace `str(x)` calls with `x or ""` for dealing with the `None` case
[no changelog]
70/100 · AdequateMessage clarity
✓ Descriptive subject✓ Uses a recognizable type or scope✓ Provides detailed explanatory context
Why it was queued
cryptography-sensitive pathsigning or wallet pathboot or update path
AI analysis · Informational 15/100
This commit is a straightforward internal code cleanup. It introduces a new type alias called StrPropertyType for UI properties that are always text strings (never raw bytes), and replaces some str(x) conversions with x or "" to handle possible None values more cleanly. There is no indication this fixes a security bug or changes user-visible behavior.
✓ 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 26/100
This commit changes how the Trezor firmware's vibration motor (haptic) driver reports and handles errors. Previously, some haptic functions returned simple true/false success values, and some callers ignored the result of initialization. Now those functions return a structured status code, callers capture the status (though mostly still ignore it), and one resume path actually halts on failure. A test-only haptic syscall was removed. The changes are defensive cleanups rather than a fix for a known exploitable bug, but they reduce the chance that a failing haptic device could leave the system in an inconsistent state.
refactor(core/bootloader): unify bootloader event loop in rust
[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 trustcryptography-sensitive pathboot or update path
AI analysis · Low 28/100
This commit is a large internal refactor of the Trezor bootloader's event loop, moving it from C into Rust and changing how screens handle USB/Bluetooth communication. The title and message explicitly call it a refactor with '[no changelog]', and there is no vendor statement that this fixes a security bug. The diff shows substantial code movement but no obvious new vulnerability. Because it is a wide-reaching rewrite of security-critical boot-time code, it carries ordinary implementation risk, but the available materials do not demonstrate a concrete security issue.
✓ 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 43/100
This commit adjusts how the Trezor bootloader's length is calculated and pads the bootloader image to a 512-byte boundary. The old calculation added the sizes of two memory sections, which could produce a value that does not match the actual padded image size. The new calculation uses a dedicated end marker, and the linker script now explicitly fills unused space with zeros and aligns the image. This is a defensive fix in low-level firmware packaging; it does not by itself show an exploitable bug, but misaligned or incorrectly reported bootloader sizes could theoretically cause verification or update failures.
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
update trustcryptography-sensitive pathboot or update path
AI analysis · Informational 15/100
This commit fixes the horizontal centering of a small vendor logo shown on the bootloader's 'unsafe firmware' warning screen. The old code subtracted 22 pixels from the screen width before dividing by two, which would slightly offset the 24x24 image. The new code simply centers the image using the screen's midpoint. There is no security-relevant change in the diff itself.
- allow upgrade tests to distinguish between core models
[no changelog]
60/100 · AdequateMessage clarity
✓ Descriptive subject✓ Provides an explanatory body✓ Mentions testing or verification
Why it was queued
boot or update pathauthentication path
AI analysis · Informational 15/100
This commit only changes the test suite and supporting Python tooling. It renames a model set from TREZORS to ALL_MODELS, splits devices into legacy and core groups, and updates upgrade tests so they can run against individual Trezor models rather than just broad 'legacy' or 'core' categories. There is no change to the firmware that runs on the hardware wallet, no fix for a security bug, and no new attack path.
Security candidatechore(common): deprecate uploading language blob during firmware updateby Roman Zeyde · 9c966372 · Jan 6, 2026 · 4 filesMessage 77 · AdequateInformational 15Details
Commit message · Roman Zeyde
chore(common): deprecate uploading language blob during firmware update
Remove unused protobuf field from `RebootToBootloader`.
[no changelog]
77/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body
Why it was queued
update trust
AI analysis · Informational 15/100
This commit removes an unused data field called language_data_length from the RebootToBootloader command used during Trezor firmware updates. It is a cleanup change that marks the old field as reserved in the protocol definition and regenerates the corresponding code in Python, Rust, and the device firmware. There is no security-relevant change here.
Security candidatechore(core): deprecate uploading language blob during firmware updateby Roman Zeyde · 97dfd0d7 · Jan 6, 2026 · 2 filesMessage 62 · AdequateInformational 15Details
Commit message · Roman Zeyde
chore(core): deprecate uploading language blob during firmware update
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 removes a feature that let a firmware update package include a language translation file. It is a routine cleanup: the device will no longer accept or install a language blob while rebooting into bootloader mode for a firmware update. There is no indication this fixes a security bug or introduces a vulnerability.
Security candidatechore(python): deprecate uploading language blob during firmware updateby Roman Zeyde · 4d5290d0 · Jan 6, 2026 · 3 filesMessage 62 · AdequateInformational 15Details
Commit message · Roman Zeyde
chore(python): deprecate uploading language blob during firmware update
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 removes a feature from Trezor's Python tools that let users upload a language translation file during a firmware update. It is a routine cleanup (chore) that deprecates the language-blob upload option and simplifies the code. There is no indication of a security fix or vulnerability.
Security candidatefix(legacy): allow cross-sign with ETH mainnetby Roman Zeyde · 08bb64a7 · Jan 6, 2026 · 4 filesMessage 88 · StrongLow 25Details
Commit message · Roman Zeyde
fix(legacy): allow cross-sign with ETH mainnet
Backport #5622 to legacy:
- Previously only non-standard networks (not SLIP-44 60 or 1) could cross-sign with Ethereum mainnet. Now any network that isn't Ethereum mainnet can use Ethereum derivation paths - This is a workaround enabling access to networks like Hyperliquid that have conflicting chain IDs and can't claim official SLIP-44 registration.
Also, backport legacy testnets' support from #5970.
88/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
Why it was queued
signing or wallet pathboot or update path
AI analysis · Low 25/100
This commit loosens address-path validation for older Trezor (legacy) devices when signing Ethereum-style transactions. Previously, only non-standard networks could use Ethereum's mainnet derivation path; now any network except Ethereum mainnet itself can do so, and Ethereum mainnet additionally accepts testnet-style paths. The stated purpose is to support newer networks like Hyperliquid that cannot get an official coin-type registration. The change is a deliberate feature backport, not a covert bug fix, but it does relax a security-relevant boundary that normally prevents cross-network address reuse.
Security candidatetest: add a test case for Ethereum cross-signing supportby Roman Zeyde · 71633aff · Jan 6, 2026 · 2 filesMessage 95 · StrongInformational 15Details
Commit message · Roman Zeyde
test: add a test case for Ethereum cross-signing support
Previously (#5622) it was tested using Holesky testnet, which was changed to use `slip44=60` in #5970.
[no changelog]
95/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference
Why it was queued
signing boundary
AI analysis · Informational 15/100
This commit only adds a new automated test to the Trezor firmware test suite. It checks that a non-Ethereum network can still use the standard Ethereum account derivation path when signing a transaction. No product code was changed, so this cannot introduce a security vulnerability or fix one in the firmware itself.
Security candidatechore(core): bump to 2.10.1by obrusvit · 96cda7c4 · Jan 6, 2026 · 8 filesMessage 57 · ThinInformational 15Details
Commit message · obrusvit
chore(core): bump to 2.10.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 pathboot or update path
AI analysis · Informational 15/100
This commit is a routine version bump from 2.9.8 to 2.10.1 for the Trezor firmware. It only changes the version number in one header file and updates the matching version numbers in translation files, plus refreshes the translation signature metadata. There are no code behavior changes, no bug fixes, and no security-related modifications.
Security candidatefeat(tron): add TransferContract supportby Jun Luo · 4375c211 · Jan 6, 2026 · 41 filesMessage 72 · AdequateLow 35Details
Commit message · Jun Luo
feat(tron): add TransferContract support
Allows native TRX transfer [no changelog]
Co-authored-by: PrisionMike <su.sh2396@gmail.com>
72/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body
Why it was queued
cryptography-sensitive pathsigning or wallet pathboot or update path
AI analysis · Low 35/100
This commit adds the ability to sign native TRON (TRX) transfers on Trezor hardware wallets. It introduces new message types, a signing workflow, user confirmation screens, and client-side helpers. The change is a feature addition rather than a fix for a known vulnerability, and there is no vendor statement that this resolves a security issue.
✓ Subject identifies a change✓ Uses a recognizable type or scope✓ Provides an explanatory body
Why it was queued
signing or wallet pathboot or update path
AI analysis · Informational 15/100
This commit only updates version numbers and translation metadata across the Trezor firmware repository. It does not change any executable code, fix any behavior, or alter security logic. There is nothing in the diff that introduces or fixes a security issue.
Security candidatetest(core): change `key_index` used in `crypto.tropic::test_sign` unittestby M1nd3r · 2ea5146f · Jan 2, 2026 · 1 fileMessage 72 · AdequateInformational 15Details
Commit message · M1nd3r
test(core): change `key_index` used in `crypto.tropic::test_sign` unittest
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
cryptography-sensitive path
AI analysis · Informational 15/100
This commit only changes a test file for the Tropic cryptographic module. It swaps the hardcoded key index from 0 to 31 in a unit test. There is no change to production firmware code, no security fix, and no vulnerability being introduced or patched.
fix(bolt,caesar,eckhart): incorrect and missing address chunkification
- Adds missing chunkification in Bolt and Caesar. - Fixes edge cases where chunks were overwritten or composed incorrectly.
85/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context
Why it was queued
cryptography-sensitive path
AI analysis · Low 34/100
This commit fixes how cryptocurrency addresses are visually grouped into chunks on Trezor device screens for several wallet models. Previously, addresses could be displayed with missing or incorrect spacing, which might make it harder for users to visually verify an address before approving a transaction. The fix changes the low-level text layout code and passes the chunking option through two user-interface layouts. It is a display/rendering bug fix rather than a cryptographic flaw, but because address verification is a key anti-phishing step, any display issue has security relevance.
✓ 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 cosmetic wording fix for the Trezor hardware wallet's backup quiz screen. It changes how the device labels the word the user must select, switching from English-style ordinal text like '2nd' to a neutral '2 of 20' format. There is no security issue here; it is purely a user-interface and localization improvement.
✓ 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 updates the regulatory information screen on the Trezor T3W1 hardware wallet. It adds new country certification icons, reorganizes the order of regions shown, and displays the device's production year on the South Korea page. There is no security-relevant change here—only user-interface text, images, and layout.
Security candidatefix(bolt): webauthn credential scrollingby Ioan Bizău · 024b883a · Dec 29, 2025 · 2 filesMessage 57 · ThinInformational 18Details
Commit message · Ioan Bizău
fix(bolt): webauthn credential scrolling
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
credential or privilege state
AI analysis · Informational 18/100
This commit fixes a UI bug in the Trezor hardware wallet where scrolling through FIDO/WebAuthn credentials could behave incorrectly. The change updates the displayed account name in place rather than recreating the whole text element each time the page changes. There is no direct evidence this is a security vulnerability; it appears to be a user-experience fix for on-screen credential navigation.
Security candidatefix(core): correct `debug_assert` in `get_button_border()`by Roman Zeyde · 54d6bfad · Dec 23, 2025 · 1 fileMessage 77 · AdequateInformational 18Details
Commit message · Roman Zeyde
fix(core): correct `debug_assert` in `get_button_border()`
There are `MAX_KEYS` buttons + the `cancel` button.
[no changelog]
77/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body
Why it was queued
boot or update path
AI analysis · Informational 18/100
This commit fixes an off-by-one error in a debug-only assertion inside a Trezor hardware wallet screen. The assertion checks whether a button index is valid, but it previously rejected the last valid button (the 'cancel' button). The fix changes '<' to '<=' so the assertion no longer falsely triggers. This is a minor correctness fix in debug builds and does not change release behavior or user-facing security.
✓ 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 simply removes an unused Python import (`shlex`) from five build scripts. It does not change any program logic, behavior, or security boundary. It is a routine code cleanup with no security relevance.