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(ethereum): EIP-7702by Ioan Bizău · 307d601a · Feb 2, 2026 · 18 filesMessage 40 · ThinInformational 15Details
Commit message · Ioan Bizău
feat(ethereum): EIP-7702
40/100 · ThinMessage clarity
✓ Subject identifies a change✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
cryptography-sensitive pathsigning or wallet path
AI analysis · Informational 15/100
This commit adds support for a new Ethereum transaction type called EIP-7702 (smart accounts / account abstraction) to Trezor firmware. It is a feature addition, not a security fix. The change includes new user-facing confirmation text, test fixtures, and logic to allow signing these transactions only when safety checks are disabled and the destination address is a known allowed contract.
Security candidatechore(core): clean python der implementationby M1nd3r · 07676315 · Jan 30, 2026 · 7 filesMessage 57 · ThinLow 29Details
Commit message · M1nd3r
chore(core): clean python der implementation
[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 pathsigning or wallet pathauthentication path
AI analysis · Low 29/100
This commit refactors the way digital signatures are encoded and decoded in the Trezor firmware's Python code. It replaces a generic low-level DER sequence encoder/decoder with two dedicated functions for signatures. The change is described by the developer as a cleanup ('chore') with no changelog entry. There is no direct evidence in the commit that this fixes a security vulnerability, but centralizing signature handling can reduce the risk of future mistakes.
The "headertool.py" script location has changed to "core/tools/trezor_core_tools/". Moreover, the "headertool_pq.py" has been introduced for PQ crypto based headers e.g. TS7 bootloader.bin at the moment.
Removing the Makefile binctl target as it's not used and the fix with the automatic script (i.e. headertool vs headertool_pq) selection would be complicated.
[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
update trust
AI analysis · Informational 15/100
This commit simply removes an unused developer convenience command from the build Makefile. It does not change any firmware code, crypto logic, or device behavior, and has no security relevance.
Security candidatefix(core/tests): use decorator for unit tests skippingby M1nd3r · a9a1b9fd · Jan 30, 2026 · 7 filesMessage 72 · AdequateInformational 15Details
Commit message · M1nd3r
fix(core/tests): use decorator for unit tests skipping
[no changelog]
72/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Mentions testing or verification! No meaningful explanatory body
Why it was queued
cryptography-sensitive pathsigning or wallet path
AI analysis · Informational 15/100
This commit only changes how certain software tests are skipped or run. It replaces manual 'if' checks at the bottom of test files with Python's built-in '@unittest.skipUnless' decorator on test classes. This makes the test suite behave more consistently but does not change any actual product code that users interact with.
chore(core): slip21 keychain and path improvements
[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 path
AI analysis · Informational 12/100
This commit is a routine internal cleanup in the Trezor firmware. It moves the SLIP21 path validation into its own helper method, adds a new function to convert SLIP21 paths to human-readable strings, and updates tests. There is no indication it fixes a security vulnerability or changes user-visible behavior in a risky way.
- Fixed description of buffer sizes in the header file. - Added check of hrp length in cash_encode. Otherwise it allows to encode addresses that cannot be decoded using cash_decode. - Adjusted naming of constants and parameters for clarity and consistency.
[no changelog]
82/100 · StrongMessage clarity
✓ Descriptive subject✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Explains rationale or failure mode
Why it was queued
cryptography-sensitive path
AI analysis · Low 37/100
This commit fixes a mismatch in Trezor's Bitcoin Cash address encoding. Previously, the encoder could create addresses with an overly long human-readable prefix (the part before the colon, like 'bitcoincash') that the decoder would later reject as invalid. The patch adds a length check so the encoder refuses to produce addresses that cannot be decoded. It also renames variables and updates comments for clarity, with no functional changes beyond the new length check.
- introduce a type rather than carrying a tuple around - this should make working with notifs easier in the future as we can add fields to the struct - export the NotificationLevel to uPy
[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
cryptography-sensitive pathboot or update path
AI analysis · Informational 15/100
This commit is a straightforward internal code cleanup in the Trezor firmware's user-interface code. It replaces a loose pair of values (a notification text string plus a separate numeric 'level') with a single structured 'Notification' type, and gives the numeric levels named constants like ALERT, WARNING, INFO, and SUCCESS. There is no change to security behavior, no bug fix, and no externally visible functional change for users.
Security candidatechore: bump versionsby Roman Zeyde · 0a33b937 · Jan 28, 2026 · 11 filesMessage 63 · AdequateInformational 15Details
✓ Subject identifies a change✓ Uses a recognizable type or scope✓ Provides detailed explanatory context
Why it was queued
update trustsigning or wallet pathboot or update path
AI analysis · Informational 15/100
This commit is a routine version bump for Trezor firmware and related embedded components. It only changes version numbers in header files and translation metadata. There are no code changes, no bug fixes, and no security-related modifications visible in the diff.
Security candidatefeat: allow staking calls regardless of sourceby Ioan Bizău · 34f26ab7 · Jan 26, 2026 · 7 filesMessage 57 · ThinLow 42Details
Commit message · Ioan Bizău
feat: allow staking calls regardless of source
57/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
signing or wallet pathboot or update path
AI analysis · Low 42/100
This change removes a safety check in Trezor's Ethereum staking transaction handling. Previously, the device refused to sign staking/unstaking transactions unless a 'source' parameter was exactly 1 (Trezor's identifier). Now it accepts any source value. This is described by the vendor as a feature to allow staking calls regardless of source, but it weakens a validation gate that helped ensure the transaction was intended for Trezor's staking flow. The change is intentional and documented, but it reduces the device's ability to reject potentially mismatched or unexpected staking contract calls based on source identifier.
Security candidatefix(crypto): Fix side-channel vulnerability in BIP-39 mnemonic processingby Martin Pastyřík · 9b1c0620 · Jan 26, 2026 · 7 filesMessage 100 · StrongHigh 76Details
Commit message · Martin Pastyřík
fix(crypto): Fix side-channel vulnerability in BIP-39 mnemonic processing
Fix function `mnemonic_to_bits` to be constant time. Replace binary search over the wordlist with a linear search to ensure the same number of comparisons. Introduce function `constant_time_memeq` that comapres two parts of memory in costant time. Remove integrity check in legacy to reduce the number of computations over seed.
(cherry picked from commit 4e6f0dee81b4d9e553d247faa3194b8053b74dcb)
100/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Explains rationale or failure mode✓ Names security-relevant behavior explicitly
Why it was queued
explicit security languageconstant-time or timing behaviorcryptography-sensitive pathboot or update path
AI analysis · High 76/100
This commit fixes a timing side-channel flaw in how Trezor hardware wallets convert a user's recovery phrase (BIP-39 mnemonic words) into secret seed bits. The old code used a fast but variable-time binary search over the word list, which could let a local attacker with precise timing measurements learn information about the recovery words. The patch replaces it with a constant-time linear comparison and also removes an extra integrity check in older (legacy) Trezor firmware to reduce how often the secret seed is processed.
Security candidatechore(core): bump VERSION to 2.10.1by obrusvit · 10d30453 · Jan 26, 2026 · 8 filesMessage 92 · StrongInformational 15Details
Commit message · obrusvit
chore(core): bump VERSION to 2.10.1
- re-bump to 2.10.1 because the previous cherry-picked commit changed it to the version of the release branch - this was caused because we changed the version while the release process was already underway
[no changelog]
92/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Explains rationale or failure mode
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.10.0 to 2.10.1 in the Trezor firmware repository. It only changes version numbers in a header file and translation metadata, plus updates the signed translation package timestamp and fingerprint. There are no code behavior changes and no security relevance.
Security candidatedocs(legacy): changelog for 1.14.0by obrusvit · 8919d74e · Jan 26, 2026 · 7 filesMessage 72 · AdequateInformational 15Details
Commit message · obrusvit
docs(legacy): changelog for 1.14.0
[no changelog]
(cherry picked from commit b3745feea08aa50ddb74341471fc840ec15dde39)
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 only updates the changelog and release notes for Trezor legacy firmware version 1.14.0. It deletes six small draft changelog files and adds their contents to the main CHANGELOG.md. No actual code, logic, or security behavior is changed in this commit.
Security candidatechore(core): bump VERSION & FIX_VERSION to 2.10.0by obrusvit · f5309443 · Jan 26, 2026 · 15 filesMessage 85 · StrongInformational 15Details
Commit message · obrusvit
chore(core): bump VERSION & FIX_VERSION to 2.10.0
- security fix forces us to bump FIX_VERSION - semantically, it means bumping VERSION_MINOR - also modify CHANGELOGs from 2.9.7 to 2.10.0
[no changelog]
(cherry picked from commit 25b05677cad6b1c3e17dc32576be8c14a064ad17)
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
explicit security languagesigning or wallet pathboot or update path
AI analysis · Informational 15/100
This commit only changes version numbers and release metadata. It bumps the firmware version from 2.9.7 to 2.10.0 and updates related changelog entries and translation package signatures. The commit message mentions that a separate security fix forced the version bump, but this commit itself does not contain any code fix.
fix(core/prodtest): fix error handling in `prodtest_tropic_get_access_credential()`
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
credential or privilege state
AI analysis · Low 34/100
This is a one-line bug fix in a Trezor hardware wallet factory/production testing tool. The function `prodtest_tropic_get_access_credential()` now jumps to cleanup code when it fails to retrieve a public key, instead of continuing to run as if nothing went wrong. Without the fix, the tool could keep processing and potentially leak or mishandle sensitive key material after an error. The affected code is in a production-test (manufacturing) program, not the main wallet firmware users interact with.
- Hardcoded USDT address - Contract parsing logic identical to Ethereum - Imports from app/ethereum. - Some TODOs added for subsequent feats.
[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
cryptography-sensitive pathsigning or wallet path
AI analysis · Low 27/100
This commit adds support for showing clear, human-readable details when signing a Shasta testnet USDT token transfer on the Tron blockchain. Previously, such transactions were displayed as opaque smart-contract data. The change borrows parsing logic from the Ethereum app and hardcodes one testnet token address. It is a feature addition, not a fix for an active vulnerability, though it reduces the chance a user accidentally approves a misleading token transaction.
Security candidatechore(core): add messages for reading out telemetry databy tychovrahe · 1143f5e0 · Jan 19, 2026 · 14 filesMessage 62 · AdequateInformational 19Details
Commit message · tychovrahe
chore(core): add messages for reading out telemetry data
[no changelog]
62/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
boot or update pathauthentication path
AI analysis · Informational 19/100
This commit only adds new message definitions for reading out device telemetry (battery temperature extremes and battery error flags). It does not include any firmware logic that actually collects or responds to these messages, so it cannot by itself be used to attack a device. It is essentially plumbing for a future feature.
Security candidatefeat(core): allow reading out of telemetry databy tychovrahe · fc47c936 · Jan 19, 2026 · 9 filesMessage 57 · ThinInformational 22Details
Commit message · tychovrahe
feat(core): allow reading out of telemetry data
[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 22/100
This commit adds a new read-only feature that lets the host computer ask a Trezor device for internal telemetry records: minimum/maximum temperature and battery error counts. It is a feature addition, not a fix. There is no direct evidence in the commit that this introduces a security vulnerability, but it does expose previously internal device data over the USB/Protobuf interface. The security relevance depends on whether the new TelemetryGet message is protected by an existing session/access policy or can be requested by any connected host.
Security candidatefeat(crypto): extend DER functionality in trezor-cryptoby M1nd3r · 6681384b · Jan 16, 2026 · 4 filesMessage 85 · StrongInformational 15Details
Commit message · M1nd3r
feat(crypto): extend DER functionality in trezor-crypto
- added `der_equal` and `der_read_item_expected` - added (defined) DER_OID tag - added const qualifiers to BUFFER_READER read-only functions
[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
cryptography-sensitive path
AI analysis · Informational 15/100
This is a routine feature addition to Trezor's cryptographic library. It adds helper functions for comparing DER-encoded data items and reading an item with an expected tag, plus a constant for OID tags and minor const-correctness cleanups. There is no indication of a security bug being fixed.
✓ 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 25/100
This commit adds a new internal API surface called 'coreapp API' that lets the core firmware expose a small set of system services (timers, events, debug console, IPC, and shutdown helpers) to a separate 'coreapp' component. It is only enabled for the T3W1 model and is guarded by an 'app_loading' build feature. The change is architectural: it wires a function-pointer getter into the vector table and stores it in the coreapp header so the coreapp can request versioned API tables. There is no direct evidence in the commit of a vulnerability, exploit, or security fix; it appears to be a feature introduction for future app-loading support.
Security candidatefeat(core): increase number of unprivileged tasksby cepetr · fbc27142 · Jan 16, 2026 · 1 fileMessage 57 · ThinInformational 11Details
Commit message · cepetr
feat(core): increase number of unprivileged tasks
[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 11/100
This commit changes a single internal constant so the device can keep track of one extra background process when the optional app-loading feature is enabled. By itself it does not look like a security fix or vulnerability; it appears to be a straightforward capacity increase for a new feature.
Security candidatefeat(core): introduce an IPC mechanismby cepetr · 1d415082 · Jan 16, 2026 · 18 filesMessage 57 · ThinInformational 15Details
Commit message · cepetr
feat(core): introduce an IPC mechanism
[no changelog]
57/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
boot or update path
AI analysis · Informational 15/100
This commit adds a brand-new inter-process communication (IPC) subsystem to the Trezor firmware kernel. It lets separate software tasks send fixed-size messages to each other through kernel-managed queues, with memory copies that temporarily disable the memory-protection unit on STM32 hardware. There is no claim in the commit that this fixes a security bug; it appears to be a new feature. The code includes access checks (verifiers) for the user-space syscall path, but because this is a new and complex kernel mechanism, any mistakes in the queue logic or memory copying could become security issues in the future.
✓ 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 adds a new build-time switch called EXTAPP_SUPPORT. When turned off (the default), it prevents the 'app_loading' feature from being compiled into firmware for the T3W1 model. This is purely a build-system/configuration change and does not alter runtime behavior, fix a bug, or change any security-critical code path on its own.
✓ 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 32/100
This commit adds a new MicroPython module called `trezorapp` that lets Python code create, write, finalize, and run third-party application images inside the Trezor firmware. It is a feature implementation rather than a bug fix, and there is no direct evidence in the commit that it fixes a security vulnerability. However, because it exposes low-level app loading and task control to Python, any weaknesses in the underlying `app_cache`/`app_loader` C code or in how Python callers use this wrapper could become security-relevant. The commit itself does not describe security relevance, credit a researcher, or acknowledge a vulnerability report.
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
boot or update path
AI analysis · Informational 15/100
This is a cosmetic code cleanup. It removes an unnecessary empty keyword-only argument marker from a function signature in documentation and a mock file. There is no functional change to the code that runs on the device.
Security candidatebuild(core): fix Rust library path in SConscriptby Roman Zeyde · 98ba19b0 · Jan 14, 2026 · 8 filesMessage 57 · ThinInformational 12Details
Commit message · Roman Zeyde
build(core): fix Rust library path in SConscript
[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 12/100
This commit is a build-system fix for the Trezor firmware. It changes how the Rust static library is added to the linker command in SCons scripts and corrects the relative path to the compiled Rust library. There is no indication in the commit that this fixes a security vulnerability; it appears to be a build correctness or path-fix change.