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.
chore(python): add ROOT signing public keys [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
signing boundaryboot or update path
AI analysis · Informational 21/100
This commit simply fills in previously empty lists of official production 'root' public keys used by Trezor's Python library to validate firmware signatures. These are public keys, not private secrets, so adding them does not by itself create a vulnerability. It is a routine configuration update replacing placeholder TODO entries with real key values.
✓ 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 removes an unused function called tropic.get_certificate() from the Trezor firmware. The function was already a stub that did nothing useful: it returned success without actually fetching any certificate. The change is a cleanup, not a security fix, and does not appear to address any active vulnerability.
✓ Descriptive subject✓ Names a concrete action or component✓ 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 is a routine user-interface refresh for the Trezor Safe 7 tutorial. It replaces some tutorial text, adds new icons, and extracts the screen background drawing into a reusable component. There is no security-relevant change visible in the code.
Security candidatefix(core/bootloader): improve failed communication behaviorby tychovrahe · 7ee86377 · Aug 18, 2025 · 1 fileMessage 62 · AdequateLow 32Details
Commit message · tychovrahe
fix(core/bootloader): improve failed communication behavior
[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 32/100
This bootloader patch changes how the Trezor device handles a failed USB/communication write. Previously, if sending a packet failed, the bootloader would call an 'ensure' function that effectively halted or panicked the device. Now the function returns a failure status up to the caller instead. This is a hardening improvement that makes the bootloader more resilient to communication errors, but the commit message frames it only as a behavior improvement with no changelog.
Security candidatefeat(bolt): SLIP-24 payment requestsby Ioan Bizău · b85ab377 · Aug 15, 2025 · 8 filesMessage 57 · ThinInformational 18Details
Commit message · Ioan Bizău
feat(bolt): SLIP-24 payment requests
[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 18/100
This commit adds on-device user-interface support for SLIP-24 payment requests on the Trezor Model T (Bolt layout). It does not change transaction validation, cryptography, or signing logic. Instead, it wires up new confirmation screens so users can review payment-request details (provider, refund addresses, swap/trade details, fees) before signing. Existing tests that previously skipped Model T are now enabled for it, and new UI test hashes are recorded. There is no direct evidence of a security vulnerability in this patch.
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body✓ Mentions testing or verification
Why it was queued
update trustboot or update path
AI analysis · Moderate 57/100
This commit fixes the verification logic for Trezor bootloader version 2 images in the Python firmware library. Previously, the code checked the elliptic-curve (EC) signature against only the Merkle root digest. The fix now hashes that digest together with the post-quantum (SLH) signature first, matching the actual signing procedure. Without this fix, a valid-looking bootloader signature could be accepted even if the SLH signature was wrong or missing, weakening the dual-signature security check.
Security candidatechore(tests): make go to menu item an actionby Lukas Bielesch · 65b753df · Aug 15, 2025 · 15 filesMessage 67 · AdequateInformational 15Details
Commit message · Lukas Bielesch
chore(tests): make go to menu item an action
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 or wallet pathauthentication path
AI analysis · Informational 15/100
This is a routine test-infrastructure change. It moves a helper that clicks menu items in automated tests into a shared debug-link action and updates many test scripts to use it. There is no change to the firmware's security behavior, no fix for a vulnerability, and no user-facing feature.
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
cryptography-sensitive pathsigning or wallet pathboot or update pathauthentication path
AI analysis · Informational 19/100
This is a large internal refactoring of how Trezor's user-interface passes key-value display data from Python apps to the Rust firmware. It replaces two-element string tuples with a new three-element 'PropertyType' that adds a flag indicating whether a value is raw data. The change touches many coin apps and UI layouts but is described by the vendor as a routine chore with no changelog entry. There is no direct evidence in the commit of a security vulnerability or fix.
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
cryptography-sensitive pathboot or update path
AI analysis · Informational 15/100
This is a routine code cleanup in the Trezor hardware wallet's user interface layer. It moves default font and spacing choices for a UI component called PropsList into each device's theme file, so callers can use a simpler constructor. There is no change to security logic, cryptography, or how user data is handled.
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
cryptography-sensitive pathboot or update path
AI analysis · Informational 15/100
This commit is a user-interface layout tweak for Trezor hardware wallets. It adds configurable vertical spacing between key/value property pairs shown on device screens. There is no security-relevant change, no bug fix, and no handling of secrets or memory.
✓ Subject identifies a change✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
cryptography-sensitive pathboot or update path
AI analysis · Informational 14/100
This commit is a cosmetic/user-interface change. It updates the text and styling shown on the hardware wallet's red error screens (RSOD), such as when a wipe code is entered or too many PIN attempts occur. The messages are rewritten in sentence case instead of all capitals, and some fonts/layouts are adjusted. There is no indication this fixes or introduces a security vulnerability.
Security candidatefeat(core): use LED colors for diode in Eckhartby obrusvit · 8c171c2a · Aug 13, 2025 · 3 filesMessage 72 · AdequateInformational 15Details
Commit message · obrusvit
feat(core): use LED colors for diode in Eckhart
- change affects Homescreen LED color - newly RSOD ErrorScreen uses LED diode
[no changelog]
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
boot or update path
AI analysis · Informational 15/100
This commit is a cosmetic UI change for the Trezor hardware wallet's Eckhart design. It makes the device's RGB LED light up with specific colors on the homescreen and during red-screen error states, matching the screen's theme. There is no security-relevant change to how data is protected, how keys are handled, or how the device communicates.
Security candidatefeat(core): extend THP credentials with app_nameby Martin Milata · 538aa5ce · Aug 13, 2025 · 8 filesMessage 57 · ThinInformational 19Details
Commit message · Martin Milata
feat(core): extend THP credentials with app_name
[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
credential or privilege state
AI analysis · Informational 19/100
This commit adds a new optional 'app_name' field to Trezor's Trusted Host Pairing (THP) credentials. It lets the device display both the application name and the host/browser name during pairing and connection prompts, making it clearer to users which app is requesting access. There is no direct evidence in the commit that this fixes an active security vulnerability; it reads as a user-experience and metadata improvement.
✓ 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 commit that removes unused code from a bootloader UI header component in the Trezor firmware. It deletes an unused left-button feature and switches one screen to use a standard close-button helper. There is no security fix or behavior change visible in the diff.
✓ 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 compiler flag named USE_SVC_SHUTDOWN from the firmware build script. There is no functional code change, no bug fix, and no security-relevant behavior altered. It is a routine cleanup.
refactor(core): remove circular dependencies, new 'storage' feature
[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
seed or entropy pathboot or update path
AI analysis · Informational 17/100
This is a large internal code reorganization in Trezor's embedded firmware. It moves flash/storage headers and build flags around so different firmware images (bootloader, kernel, production test, etc.) declare more explicitly which features they need. There is no obvious security bug introduced, but the change touches low-level memory-layout and storage code, so any mistake could in principle affect how secrets are stored. The commit itself is labeled a refactor and includes no changelog.
refactor(core): cleanup storage syscalls, prepare early initialization
[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 11/100
This commit is a code cleanup and refactoring change in Trezor firmware. It replaces the old storage_init() function, which required callers to fetch their own random entropy (salt), with a new storage_setup() helper that fetches entropy internally. It also removes the direct entropy_get() system call from the non-secure kernel interface. There is no direct evidence in the commit that this fixes an active security vulnerability; it appears to be architectural preparation for future initialization changes.
refactor(core): simplify entropy module, relocate/rename to storage_salt
[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
entropy or randomness
AI analysis · Informational 12/100
This commit is a code cleanup: it renames the 'entropy' module to 'storage_salt' and moves it into the storage subsystem. The same device-unique salt logic (CPU ID plus one-time-programmable randomness block, or a master-key-derived salt on newer devices) is preserved, just called at a different point during storage setup rather than at boot. There is no indication this fixes a security bug or changes cryptographic behavior.
Security candidatefeat(core/tools): make nrf update script more universal and allow updating boardloader with itby tychovrahe · 24e318de · Aug 12, 2025 · 1 fileMessage 62 · AdequateInformational 15Details
Commit message · tychovrahe
feat(core/tools): make nrf update script more universal and allow updating boardloader with it
[no changelog]
62/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
boot or update path
AI analysis · Informational 15/100
This commit is a routine developer tooling refactor. It renames and generalizes an internal Python helper script used to upload firmware to Trezor hardware over a USB serial port, so it can handle both nRF chip updates and boardloader updates. There is no change to device firmware, no user-facing feature, and no security fix or vulnerability indicated in the diff or commit message.
refactor(core/prodtest): unify binary update function
[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 11/100
This commit is a code cleanup that merges two nearly identical firmware-update helpers into one shared function. There is no indication it fixes or introduces a security bug; it is a routine refactoring in an internal production-testing tool.
Security candidatechore(core/prodtest): improve nrf-update and bootloader-update description in readmeby tychovrahe · d5d38b21 · Aug 12, 2025 · 1 fileMessage 62 · AdequateInformational 15Details
Commit message · tychovrahe
chore(core/prodtest): improve nrf-update and bootloader-update description in readme
[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 trustdocumentation-only discount
AI analysis · Informational 15/100
This commit only updates a README documentation file for an internal production-testing tool. It adds a sentence telling users which helper scripts to run when updating bootloader and nRF firmware binaries. No code, build scripts, firmware logic, or security behavior was changed.
Following https://github.com/trezor/trezor-firmware/issues/5472#issuecomment-3174382038.
[no changelog]
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
authentication path
AI analysis · Low 42/100
This commit fixes a subtle bug where the same error object was reused every time a forbidden key path was accessed. In Python/MicroPython, reusing a single exception instance can cause problems if something later modifies or inspects the raised error, because the same object carries state from one error site to another. The fix creates a fresh exception object each time, which is safer and more correct, but the commit message and diff do not clearly describe an active security vulnerability.
Security candidatechore(core): fix a small typo in `thp_common.py`by Roman Zeyde · 8b06fdac · Aug 12, 2025 · 10 filesMessage 72 · AdequateInformational 15Details
Commit message · Roman Zeyde
chore(core): fix a small typo in `thp_common.py`
Also, use `log._min_level` to suppress debug logging.
[no changelog]
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 pathauthentication path
AI analysis · Informational 15/100
This commit is a minor cleanup in Trezor's test code. It fixes a spelling mistake in a helper function name and changes how debug logging is silenced during automated tests. It does not affect the actual device firmware or any user-facing security behavior.
Security candidatefix(build): no ui_debug_overlay only in prodby obrusvit · 384e0157 · Aug 11, 2025 · 1 fileMessage 57 · ThinLow 26Details
Commit message · obrusvit
fix(build): no ui_debug_overlay only in prod
[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 26/100
This commit adjusts when a firmware feature called 'ui_debug_overlay' is enabled during the build process. Previously, it was enabled for all optimized builds (PYOPT), which likely includes production releases. Now it is only enabled alongside other debug features when debug mode (PYOPT='0') is active. The change prevents a debug UI overlay from being compiled into production firmware.
Security candidatefix(core): fix BLE pairingby tychovrahe · 8d654150 · Aug 11, 2025 · 17 filesMessage 57 · ThinLow 36Details
Commit message · tychovrahe
fix(core): fix BLE pairing
[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 36/100
This commit fixes Bluetooth Low Energy (BLE) pairing behavior in the Trezor hardware wallet firmware. It changes how the device advertises itself, handles pairing requests, disconnects existing connections before pairing, and resets the advertising name after pairing ends. The changes are framed as a functional bug fix rather than a security fix, but they touch on sensitive pairing state management that could affect whether an attacker could trick the device into pairing unexpectedly or stay connected when it should not.