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 candidatechore: cannot have both info and external_menuby Ioan Bizău · 0f9f4808 · Nov 19, 2025 · 3 filesMessage 80 · StrongLow 30Details
Commit message · Ioan Bizău
chore: cannot have both info and external_menu
* we already have this assertion in Eckhart, but it somehow slipped from Delizia * also, `debug_assert!` is currently not used so it should really be a `NotImplementedError`
[no changelog]
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
boot or update path
AI analysis · Low 30/100
This commit is a small defensive cleanup in Trezor's user-interface code. It adds a runtime check that prevents two UI features—'info' and 'external_menu'—from being used at the same time, because that combination is not implemented. It also removes two places in Python code that accidentally passed both flags together. The change makes a previously silent debug-only assertion into an explicit error, which helps avoid unexpected UI behavior rather than fixing an active security vulnerability.
Security candidatechore(tests,eckhart): confirm_output menusby Ioan Bizău · 262152c5 · Nov 19, 2025 · 2 filesMessage 67 · AdequateInformational 15Details
Commit message · Ioan Bizău
chore(tests,eckhart): confirm_output menus
[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
boot or update path
AI analysis · Informational 15/100
This commit is a test-only/internal UI change for the Trezor firmware. It adds a flag called has_flow_menu to a screen component and marks three screens in the confirm_output flow with that flag. The flag is only used to expose menu state to automated tests/debuglink, and does not change user-facing behavior or fix any security issue.
✓ 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 41/100
This commit adjusts linker scripts that control how the Trezor hardware wallet's bootloader and security monitor (secmon) binary images are laid out in flash memory. It reduces alignment padding from 512 bytes to 4 bytes and changes how unused space at the end of each image is filled with zeros. The change appears to be a correctness fix for image padding rather than a fix for an exploitable memory corruption bug, but the exact security implications are not stated by the vendor.
Security candidatefix(storage): unify number of pin attemps to 10 on devices using Tropicby cepetr · 23be710f · Nov 19, 2025 · 1 fileMessage 62 · AdequateLow 33Details
Commit message · cepetr
fix(storage): unify number of pin attemps to 10 on devices using Tropic
[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
access control
AI analysis · Low 33/100
This commit changes how many wrong PIN attempts are allowed on Trezor hardware wallets that use a component called Tropic. Previously, devices using both Tropic and Optiga security chips were limited to 10 PIN attempts, while devices using only Tropic were allowed 16. The change makes all Tropic-based devices use 10 attempts, matching the stricter limit. This is a defensive consistency fix, not an active vulnerability patch, but it reduces the attack surface for PIN brute-force attempts on Tropic-only devices.
Security candidaterefactor(core/rust/crypto): unify init_ctx macrosby Martin Milata · c2b6571f · Nov 18, 2025 · 6 filesMessage 72 · AdequateInformational 15Details
Commit message · Martin Milata
refactor(core/rust/crypto): unify init_ctx macros
[no changelog]
Co-authored-by: Roman Zeyde <roman.zeyde@satoshilabs.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 path
AI analysis · Informational 15/100
This commit is a code cleanup: it removes duplicate helper macros from several cryptography modules and replaces them with a single shared macro. There is no change to user-facing behavior, no bug fix, and no security patch. It is purely an internal refactoring to make the code easier to maintain.
Security candidatechore(core/rust): update zeroize to 1.8.2by Martin Milata · 203ac1bc · Nov 18, 2025 · 2 filesMessage 57 · ThinInformational 15Details
Commit message · Martin Milata
chore(core/rust): update zeroize to 1.8.2
[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 safety
AI analysis · Informational 15/100
This commit simply bumps the version of a Rust dependency called zeroize from 1.7.0 to 1.8.2. zeroize is a library used to securely erase sensitive data from memory. The change itself is a routine version update with no visible security fix or vulnerability being addressed in the commit. There is no indication this update fixes a known security problem in Trezor firmware.
Security candidaterefactor(core): rust bindings for trezor-crypto primitives needed by THPby Martin Milata · db411e96 · Nov 18, 2025 · 13 filesMessage 62 · AdequateInformational 20Details
Commit message · Martin Milata
refactor(core): rust bindings for trezor-crypto primitives needed by THP
[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 pathseed or entropy path
AI analysis · Informational 20/100
This commit adds Rust wrappers around existing low-level cryptographic functions in the Trezor firmware so they can be used by a new feature called THP. It does not appear to fix a known bug or vulnerability. The changes are mostly a refactor: they expose AES-GCM, Curve25519, HMAC-SHA256, SHA-512, CRC32, and a random-byte helper to Rust code, and add unit tests. There is no direct evidence in the commit that this resolves a security issue, but any new crypto binding introduces a small chance of misuse or memory-safety mistakes.
Security candidatechore(core/rust): update bindgen to 0.72.1by Martin Milata · 359f1754 · Nov 18, 2025 · 5 filesMessage 57 · ThinInformational 18Details
Commit message · Martin Milata
chore(core/rust): update bindgen to 0.72.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
cryptography-sensitive path
AI analysis · Informational 18/100
This is a routine dependency update for the Rust build tool bindgen inside Trezor firmware. It bumps bindgen from version 0.62.0 to 0.72.1 and adjusts the code to match the newer API. The change removes a small workaround that forced a function signature to be read as non-const pointers, because the newer bindgen now generates the correct const pointers. There is no direct security fix here, but keeping build tools current reduces the chance of future bugs or build issues.
Security candidaterefactor(crypto): add missing headerby Martin Milata · 7796e041 · Nov 18, 2025 · 1 fileMessage 57 · ThinInformational 15Details
Commit message · Martin Milata
refactor(crypto): add missing 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
cryptography-sensitive path
AI analysis · Informational 15/100
This is a one-line change adding a missing C standard header file (`stdbool.h`) to a cryptographic header. It enables the use of `bool`, `true`, and `false` types in the file. There is no functional code change, no bug fix, and no security-relevant behavior change visible in the diff.
Security candidatefix(crypto): unify AES context layout on GCC and clang (bindgen)by Martin Milata · 27bd4198 · Nov 18, 2025 · 1 fileMessage 62 · AdequateLow 30Details
Commit message · Martin Milata
fix(crypto): unify AES context layout on GCC and clang (bindgen)
[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 30/100
This commit fixes a compiler-specific alignment definition for AES cryptographic data structures. Previously, the code only forced memory alignment when compiled with GCC on 64-bit x86, but not when compiled with Clang on the same architecture. The change makes Clang behave the same way as GCC, ensuring the AES context has the same memory layout regardless of which compiler is used. This is a hardening/fix for consistency in cryptographic code, but the commit message does not describe an active exploit or security vulnerability.
✓ 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 19/100
This commit removes the ability to download or install 'beta' firmware versions through the Trezor Python command-line tool. It is a feature cleanup, not a security fix. There is no indication it patches a vulnerability.
✓ 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 28/100
This commit is a small internal cleanup of how the Trezor firmware's kernel talks to applets (isolated mini-programs). It removes a direct pointer to the applet's header from the applet structure and instead reads that header from the start of the applet's code area when needed. The change is described as a refactor with no changelog. There is no direct evidence in the commit that this fixes a security vulnerability, but it does reduce the chance that a stale or manipulated header pointer could be used.
✓ 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 marks several fixed data objects as read-only constants so the compiler can place them in flash memory (.rodata) instead of writable RAM. This is a hardening change: it prevents accidental or malicious code from modifying values like the device model name, USB product strings, firmware revision, and the base32 alphabet. There is no direct evidence in the commit that an actual exploit exists; it is a defensive memory-layout fix.
Security candidaterefactor(core): remove coreapp specific logic from appletsby cepetr · 3f383a6f · Nov 13, 2025 · 8 filesMessage 62 · AdequateInformational 11Details
Commit message · cepetr
refactor(core): remove coreapp specific logic from applets
[no changelog]
62/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
cryptography-sensitive path
AI analysis · Informational 11/100
This commit is a code cleanup that moves coreapp-specific logic out of the generic applet code into a new dedicated coreapp module. It does not appear to fix or introduce a security vulnerability; it is a structural refactor to make the applet abstraction more generic and prepare for future extension applets.
✓ 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 39/100
This commit changes how the Trezor firmware's embedded Python interpreter handles short 'atomic' critical sections. Previously, these sections disabled interrupts using a privileged system call. Now they are replaced with no-ops (do nothing). The stated reason is to remove interrupt locking from unprivileged code. The change could affect timing, race conditions, or security properties that relied on interrupt masking for atomicity, but the diff alone does not show an exploitable bug or a disclosed vulnerability.
✓ 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 27/100
This commit adds a new 'thread-local storage' (TLS) memory section for Trezor's coreapp on newer hardware models. It changes how the device saves and restores small, per-task memory areas when switching between tasks. The change is a feature implementation, not a fix for a known security bug. There is no evidence in the commit or supplied references that this addresses an active vulnerability or was disclosed as security-relevant.
Security candidatefeat(common,core,python,tests): add `tron.get_address` support.by Jun Luo · 590d3e98 · Nov 12, 2025 · 36 filesMessage 72 · AdequateInformational 18Details
✓ 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
boot or update path
AI analysis · Informational 18/100
This commit adds support for retrieving Tron cryptocurrency addresses on Trezor hardware wallets. It is a feature addition that extends existing address-derivation infrastructure to a new blockchain. There is no indication in the commit that it fixes a security bug or introduces a vulnerability.
Security candidatefix(tron): update tron to use sessionby PrisionMike · 0468fa14 · Nov 12, 2025 · 15 filesMessage 80 · StrongInformational 17Details
Commit message · PrisionMike
fix(tron): update tron to use session
- Minor code fixes to old PR by overcat - Only build Tron for debug builds - Updated message index - Updated text fixtures [no changelog]
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
boot or update path
AI analysis · Informational 17/100
This commit updates the Tron coin support in Trezor firmware to use the newer 'session' API and changes the Tron message type numbers. It also removes unused Tron transaction-signing message definitions and limits Tron support to debug builds only. There is no direct evidence in the commit of a security vulnerability being fixed; it appears to be a maintenance and integration cleanup change.
✓ 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 changes a function parameter declaration from an empty array syntax to a pointer syntax in the Noise protocol cryptography code. It is purely a coding-style/compiler-warning fix with no functional change to the program's behavior or security.
Security candidatechore: bump versionsby Roman Zeyde · 42b26bfd · Nov 7, 2025 · 12 filesMessage 55 · ThinInformational 15Details
✓ Subject identifies a change✓ Uses a recognizable type or scope✓ Provides an explanatory body
Why it was queued
update trustsigning or wallet pathboot or update path
AI analysis · Informational 15/100
This commit only updates version numbers and translation metadata. It does not change any program logic, fix any bug, or alter any security behavior. There is nothing here that could directly affect security.
Security candidatefeat(core): functions for Evolu spam protectionby Martin Pastyřík · d2516f1d · Nov 5, 2025 · 60 filesMessage 57 · ThinLow 45Details
Commit message · Martin Pastyřík
feat(core): functions for Evolu spam protection
[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 pathauthentication path
AI analysis · Low 45/100
This commit adds new Trezor firmware features for an 'Evolu' / 'Suite Sync' service. It introduces a device-bound delegated identity key, a way to export that key after user confirmation, and ways to prove possession of that key to request a SLIP-21 node or to sign a registration request with the device's Optiga certificate. The change is framed by the vendor as spam protection / anti-abuse functionality, not as a security fix. The commit itself is a feature implementation, but it touches sensitive areas: key derivation from a new per-device master secret, secure-monitor/kernel syscalls for reading a private key, and user-consent flows for exporting a private key.
Security candidatefix(eckhart,stellar): updated font for stellar amount and bitcoin lock timeby PrisionMike · 0143345e · Nov 4, 2025 · 4 filesMessage 85 · StrongInformational 15Details
Commit message · PrisionMike
fix(eckhart,stellar): updated font for stellar amount and bitcoin lock time
Fix stellar amount font on T3W1 Fixes #6109 Also updates Bitcoin lock datetime font.
85/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body✓ Links an issue, advisory, or supporting reference
Why it was queued
boot or update path
AI analysis · Informational 15/100
This commit is a visual/UI-only fix for the Trezor T3W1 hardware wallet. It changes the font used to display Stellar transaction amounts and Bitcoin lock times on the device screen. There is no change to security logic, cryptography, transaction validation, or how the device signs anything. The only code changes are selecting a different font style and updating the corresponding screen snapshot hashes used by automated tests.
Security candidateRevert "chore: remove `GetNonce` and `PaymentRequest` from experimental features"by Roman Zeyde · 366580dc · Nov 4, 2025 · 24 filesMessage 65 · AdequateInformational 21Details
Commit message · Roman Zeyde
Revert "chore: remove `GetNonce` and `PaymentRequest` from experimental features"
This reverts commit 6b844d37489d79e88d1cec6a443fe550a5f6469d.
65/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
Why it was queued
nonce handlingcryptography-sensitive pathsigning or wallet path
AI analysis · Informational 21/100
This commit is a simple revert that puts two features—PaymentRequest and GetNonce/Nonce—back into the 'experimental' category in Trezor's protocol definitions. It does not fix or introduce a security bug; it just re-labels fields and messages as experimental again and updates generated code and tests accordingly. The change is administrative: it re-enables the experimental flag so these features are only usable when a device has experimental features turned on.
Security candidatechore(eckhart): make warning button multi lineby Ioan Bizău · 4231c563 · Nov 4, 2025 · 1 fileMessage 57 · ThinInformational 15Details
Commit message · Ioan Bizău
chore(eckhart): make warning button multi line
[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 trivial user-interface layout change. It switches one button in a warning screen from a single-line text button to a multi-line text button so longer button labels can wrap. There is no security relevance in the code change itself.
Previously, we were checking just the 'shape' and size of the contract to determine if it's an ERC-20 contract call. We now directly look at the function signature, if it is familiar. Changed function name for clarity as it handles non-ERC-20 contracts as well. [no changelog]
85/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Names security-relevant behavior explicitly
Why it was queued
signing boundarydefensive validationsigning or wallet path
AI analysis · Moderate 63/100
This commit tightens how a Trezor hardware wallet decides whether an Ethereum transaction is a standard ERC-20 token transfer/approval. Previously the code guessed based on the transaction's overall shape and size; now it also checks the actual function signature bytes. The change removes an assumption that any matching transaction must be either a transfer or approval, which could have led the device to display a token-style confirmation for contract calls that only happened to look similar. There is no public claim that this was exploited, and the commit does not label itself as a security fix.