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.
refactor(crypto): get rid of random_xor() 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
cryptography-sensitive path
AI analysis · Informational 12/100
This commit removes a helper function called random_xor() and replaces its use in the hardware wallet's PIN secret generation with a single, stronger random-number call. There is no direct evidence in the commit that this fixes an active security vulnerability; it reads as a code cleanup that simplifies how random bytes are produced before they are stored on the secure Optiga chip.
Security candidaterefactor(core): originate random number always from sec/rngby cepetr · 6f789233 · Sep 24, 2025 · 25 filesMessage 67 · AdequateLow 30Details
Commit message · cepetr
refactor(core): originate random number always from sec/rng
[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 randomnesscryptography-sensitive pathseed or entropy pathboot or update path
AI analysis · Low 30/100
This commit is a code cleanup that makes all random-number generation in the Trezor firmware core go through one dedicated secure path (sec/rng). It also moves the old insecure test-only random generator into a separate file so it is only used in emulators and tests, not in real hardware. The change reduces the risk that a real device accidentally uses a weak random source, but the commit itself does not claim to fix a specific active vulnerability.
✓ 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 randomnesscryptography-sensitive pathseed or entropy pathboot or update path
AI analysis · Low 34/100
This commit refactors how Trezor firmware generates random numbers. It adds a new 'strong' randomness path that mixes the device's hardware RNG with entropy from external secure chips (Optiga and/or Tropic), and routes all randomness through a common internal API. It is a feature/cleanup change, not a disclosed security fix, but it touches critical cryptography code and changes how secure chips are used.
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
entropy or randomness
AI analysis · Moderate 57/100
This commit removes a flag called USE_INSECURE_PRNG from the production-test firmware build. That flag previously told the device to use a weak or insecure random number generator during factory testing. Removing it means the production-test firmware will now use the microcontroller's true hardware random number generator (TRNG) instead. Using a weak random source in a test environment could, in theory, affect security if any test keys, identifiers, or calibration data generated there were later reused or leaked, but this change is in a specialized factory-only firmware image, not the main wallet firmware users run.
✓ 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 path
AI analysis · Moderate 55/100
This commit adds a small workaround in the Trezor hardware wallet's random number generator code. The change allocates a slightly larger temporary buffer and only uses the inner portion, leaving unused 'bumper' bytes at the end. The commit message calls this a 'libtropic overwrite bug workaround,' suggesting an external library (libtropic) may write past the requested amount of random data. The patch does not fix the underlying library bug; it only pads the local buffer so any overflow lands in harmless scratch space rather than corrupting adjacent memory. Because this affects the cryptographic random number generator used for keys and secrets, a real overwrite could have security implications, but the diff itself does not show an actual vulnerability in Trezor code or prove the bug is exploitable.
✓ 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 0/100
This commit swaps in two new pre-built binary files for the T3W1 hardware model (a QA bootloader and a Bluetooth development firmware blob) and updates the corresponding SHA-256 hashes in a header file. The change is labeled as a routine chore with no changelog entry. There is no description of why the binaries changed, no source diff, and no security context provided, so it is impossible to tell from this commit alone whether the update fixes a bug, adds a feature, or changes security behavior.
Security candidatefeat(core/bootloader): use different wait message on BLE during fw installationby tychovrahe · fb39b0ca · Sep 24, 2025 · 13 filesMessage 62 · AdequateInformational 15Details
Commit message · tychovrahe
feat(core/bootloader): use different wait message on BLE during fw installation
[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 · Informational 15/100
This commit only changes the on-screen message shown during firmware installation. If the update is happening over Bluetooth (BLE), the device now tells the user to keep the Trezor close to the host device; if it is happening over USB, it continues to tell the user not to disconnect the cable. There is no change to security logic, cryptography, or data handling.
refactor(core/eckhart): fuse passphrase and label keyboards to one
- create one full-screen component `StringKeyboard` - input component is now generic over the `StringInput` trait - two implemented input types: `PassphraseInput` and `LabelInput` [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 is a code cleanup that merges two very similar on-screen keyboards in the Trezor firmware into a single shared component. It does not add new features, change security behavior, or fix a bug. The passphrase keyboard and the label keyboard now share one generic 'StringKeyboard' implementation, with separate input logic for passphrases and labels. Test helpers were updated to recognize the new component name.
Security candidatechore(core): Allow backup check only when the backup existsby Lukas Bielesch · 94cda445 · Sep 24, 2025 · 5 filesMessage 62 · AdequateLow 41Details
Commit message · Lukas Bielesch
chore(core): Allow backup check only when the backup exists
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 41/100
This commit tightens when a Trezor device lets the user run a 'backup check' (also called a dry-run recovery). Previously, the device allowed the check as long as it was initialized, even if the seed had never been backed up, was marked as not needing a backup, or the backup was unfinished. The change now blocks the backup-check menu item and the RecoveryDevice dry-run command when no real backup exists. This prevents a user from being misled into thinking an unbacked-up seed is safe, and stops a dry-run from being started in states where it has no meaningful purpose.
✓ 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 updates the legal/regulatory information screen shown on a Trezor hardware wallet. It adds Taiwan and an extra Japan certification icon, and restructures the code that decides which labels and icons appear. There is no security-relevant change—only on-screen text and images.
✓ 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 updates two pre-built binary files for the T3W1 hardware model (a QA bootloader and a Bluetooth development firmware blob) and refreshes the recorded cryptographic hash for the new bootloader version. The change is labeled as a routine development chore with no changelog entry. There is no source-code diff, no description of a security fix, and no independent evidence that this update addresses a vulnerability.
Security candidaterefactor(eckhart): subtext marquee when too longby Ioan Bizău · c328be66 · Sep 23, 2025 · 2 filesMessage 57 · ThinInformational 15Details
Commit message · Ioan Bizău
refactor(eckhart): subtext marquee when too long
[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 routine user-interface cleanup for the Trezor hardware wallet. It removes a manual 'marquee' flag and instead makes any long subtext automatically scroll sideways. There is no indication this change fixes or introduces a security problem.
✓ 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 routine user-interface feature update for the Trezor hardware wallet. It changes the device menu so that paired Bluetooth-style devices can display both a host name and an application name, and it adds a scrolling (marquee) text effect for long names. There is no security-relevant change, no vulnerability fix, and no indication of a security issue.
feat(core/eckhart): add host info screen to device menu
- add host info screen for each paired device [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
cryptography-sensitive pathsigning or wallet pathboot or update path
AI analysis · Informational 15/100
This commit adds a new 'Host info' screen to the device menu on Trezor hardware wallets (Eckhart layout only). It lets users view the name and Bluetooth MAC address of each paired host device. There is no security vulnerability here—this is purely a user-interface feature.
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
boot or update pathparser or protocol path
AI analysis · Informational 15/100
This is a routine code-style and type-annotation cleanup in the Python part of the Trezor firmware repository. It updates type hints to satisfy a newer version of the pyright type checker, replaces some manual success checks with a helper, and makes a few small return-type changes (for example, returning bytes instead of bytearray from some transport reads). There is no indication of a security bug being fixed or introduced.
Majority by volume is resolving the byte types promotion problem, which pyright stopped ignoring
60/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
Why it was queued
cryptography-sensitive pathseed or entropy pathsigning or wallet pathboot or update pathauthentication pathparser or protocol path
AI analysis · Informational 15/100
This is a large code-style and type-annotation cleanup. It replaces concrete type hints like `bytes` with broader aliases such as `AnyBytes`, `AnyBuffer`, and `StrOrBytes`, and fixes a few minor type-checker warnings (for example adding an `assert ... is not None` and wrapping a value with `bytes(...)`). There are no runtime logic changes, no security fixes, and no behavior changes visible in the diff.
- logical and understandable function parameters and result names [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 pathboot or update path
AI analysis · Informational 15/100
This commit is a straightforward internal code cleanup for the Trezor hardware wallet's on-device menu system. It renames function parameters, result types, and message identifiers to be clearer and more consistent (for example, 'pin_code' becomes 'pin_enabled' and 'ScreenBrightness' becomes 'SetBrightness'). No security-sensitive behavior appears to change; the same menu options are still presented and handled the same way.
- Add "Backup Device" option to Device Menu when backup is needed [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 pathboot or update path
AI analysis · Informational 15/100
This commit adds a new 'Backup Device' menu item to the Trezor Safe 5 (Eckhart layout) device menu when the device still needs a backup. It is a user-facing feature change, not a security fix or vulnerability. The change wires a new UI button through to the existing backup_device() flow, with no changes to security-critical logic, authentication, or access control.
✓ 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 user-interface redesign for the Trezor hardware wallet's 'backup needed' menu on the Eckhart model. It removes the ability to start a backup directly from the device menu and instead shows an informational screen telling the user to open Trezor Suite to create a backup. There is no security vulnerability here; it is a routine product change.
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Names security-relevant behavior explicitly! No meaningful explanatory body
Why it was queued
memory safety
AI analysis · Low 42/100
This commit fixes a Bluetooth Low Energy (BLE) crash in Trezor hardware wallets caused by a stack overflow. The patch does two things: it stops placing the device advertising name on the thread stack by using a static buffer instead, and it increases the BLE management thread's stack size from the default to 2048 bytes. The change reduces the chance that a long or specially crafted device name could corrupt nearby memory or crash the BLE subsystem. There is no vendor statement that this is a security vulnerability, and no independent researcher is credited.
Security candidatefix(legacy): always use Gwei for ETH fee ratesby Roman Zeyde · a5fb5adb · Sep 21, 2025 · 2 filesMessage 72 · AdequateLow 39Details
Commit message · Roman Zeyde
fix(legacy): always use Gwei for ETH fee rates
Similar to how it's done in core.
[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 · Low 39/100
This commit changes how the older Trezor One (legacy) firmware displays Ethereum transaction fees on the device screen. Previously, small per-gas fee values could be shown in 'Wei' (the smallest Ethereum unit) instead of always using 'Gwei'. The fix makes per-gas fees consistently display in Gwei, matching the newer Trezor Core firmware. This is a user-interface consistency fix that could have minor security relevance because confusing fee units might lead a user to misread or misapprove a transaction fee, but the commit itself does not change any signing logic or cryptographic checks.
✓ Subject identifies a change✓ Uses a recognizable type or scope✓ Provides an explanatory body
Why it was queued
update trustboot or update path
AI analysis · Informational 15/100
This commit only increases version numbers (patch levels) for four Trezor firmware components: the bootloader, production test tool, security monitor, and Bluetooth Low Energy module. There are no code logic changes, bug fixes, or security-related modifications in the diff itself.
Security candidatefix(core): don't request anim frames if text fitsby Ioan Bizău · f6d6787d · Sep 18, 2025 · 3 filesMessage 57 · ThinInformational 18Details
Commit message · Ioan Bizău
fix(core): don't request anim frames if text fits
[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 commit is a small UI cleanup for Trezor hardware wallets. It stops on-screen scrolling text (marquees) from requesting animation frames when the text already fits in its allotted space. This saves battery and avoids unnecessary screen redraws, but it does not fix a security vulnerability.
chore(core/eckhart): update overflow arrow position
- add test so that the overflow arrow doesn't overlap the text [no changelog]
100/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body✓ Explains rationale or failure mode✓ Mentions testing or verification✓ Names security-relevant behavior explicitly
Why it was queued
memory safetyboot or update path
AI analysis · Informational 15/100
This commit is a minor visual polish change for the Trezor hardware wallet's user interface. It moves a small downward arrow icon slightly upward so it no longer overlaps menu text, and adds an automated test to ensure that spacing rule stays correct. There is no security-relevant change.
chore(core/eckhart): do not disable partially hidden items
- rather limit their touch area not to overlap with the top component [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 · Low 27/100
This commit tweaks how menu buttons behave on the Trezor Safe 5 (Eckhart layout). Previously, any menu button that was not fully visible on screen was completely disabled, so you could not tap it. Now only buttons that are fully hidden are disabled; buttons that are partially visible remain active, but their touchable area is trimmed so it does not overlap the top header. This is a user-interface polish change, not a fix for a cryptographic or firmware security flaw. It could slightly reduce the chance of a user accidentally tapping a half-hidden button, but it does not introduce or remove a meaningful security vulnerability on its own.