TZ
← All projectsTrezor

Trezor firmware

Firmware monorepo for Trezor One, Model T, and Safe devices.

BitcoinHardware walletsNormal
Repository coverage

3237 commits in the local evidence base

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.

1126security candidates372second-pass queue2926AI analyses
283commits · 30 days
704commits · 60 days
1648commits · 180 days
2688commits · 365 days
Backfill bands
Aug 5 → Feb 61298 seen115 candidatesComplete
Feb 6 → Jun 6775 seen58 candidatesComplete
Jun 6 → Jul 6217 seen13 candidatesComplete
Jul 6 → Aug 5360 seen54 candidatesComplete
Commit communication

Does the history explain itself?

Message quality measures whether a commit identifies its scope, purpose, rationale, testing, and supporting references. It does not change the security-severity score.

67/100 average clarity
639Strong · 80–100
1553Adequate · 60–79
1038Thin · 40–59
7Opaque · 0–39
1security candidate with opaque commit messaging
Read the scoring rubric →
Developer activity

Who is changing the project?

Public Git author strings; identities are not independently verified.

DeveloperCommitsCandidatesAnalyzedHigh riskMessage avg.
tychovrahe343134322564
Roman Zeyde676214620372
obrusvit25796236364
PrisionMike10866106272
Andrew Kozlik833481268
Petr Susil202299
Jakub Janků591838180
Martin Pastyřík26823173
cepetr264106222059
M1nd3r24689227071
Ioan Bizău23076230059
Lukas Bielesch856784067
Analysis record

Published AI watches

Last scanned 23 minutes ago

Informational 15 AI analysisMessage 57 · Thin
TZ TrezorTrezor firmware BitcoinHardware wallets

chore(core): improvements to English copy

This commit is a routine text cleanup for the Trezor hardware wallet's on-screen English messages. It fixes punctuation, removes unnecessary line breaks, and makes small wording tweaks (for example, changing 'PIN will be required' to 'A PI…

1dbc2c3cby Michal Kazda+22−422 files
No security note in commit
Moderate 59 AI analysisMessage 57 · Thin
TZ TrezorTrezor firmware BitcoinHardware wallets

feat(core): app root packet downgrade protection

This commit adds downgrade protection for a new 'app root packet' system in Trezor firmware. Previously, the code had a TODO note saying downgrade protection needed to be considered. The change makes the device remember the timestamps of p…

Replaces a TODO comment ('!@# TODO: Consider downgrade protection') with concrete timestamp-based anti-downgrade checksAdds per-ring timestamp state to prevent rollback of root-of-trust packetsAdds chain_timestamp field and 90-day drift bound to root packet format
4a9cf168by cepetr+335−3112 files
No security note in commit
Moderate 67 AI analysisMessage 62 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

fix(core/rust): discard low-order keys in THP handshake

This commit fixes a cryptographic edge case in Trezor's THP (Trezor Host Protocol) handshake. It now rejects Curve25519 public keys that are all zeros or that produce an all-zero shared secret. A zero public key can cause the Diffie-Hellma…

Curve25519 zero/low-order public key rejection added to DHZero shared-secret output rejected after scalar multiplicationHandshake state machine now transitions to Failed on initiation-response error
429a283dby M1nd3r+45−74 files
No security note in commit
Informational 11 AI analysisMessage 57 · Thin
TZ TrezorTrezor firmware BitcoinHardware wallets

feat(core): enable `ward` with `miniscript`

This commit changes one line in a build configuration file for the Trezor hardware wallet firmware. It adds the 'ward' feature to the existing 'miniscript' feature set. There is no direct evidence in the commit that this is a security fix;…

Single-line Cargo.toml feature flag changeNo code logic modificationNo changelog or security note in commit message
d434a636by Jakub Janků+1−11 file
No security note in commit
Informational 15 AI analysisMessage 80 · Strong
TZ TrezorTrezor firmware BitcoinHardware wallets

feat(core): add `ward` feature flag

This commit adds a new disabled-by-default feature flag called 'ward' to the Trezor firmware build system. It does not change any production firmware behavior; it only wires up a placeholder MicroPython module and build options so that fut…

New feature flag is disabled by default and gated behind optional Cargo featuresCommit message explicitly states intent to exclude WARD from production firmware buildsNew MicroPython module is a stub with no exported functions beyond __name__
7b58e75aby Jakub Janků+55−018 files
No security note in commit
Low 27 AI analysisMessage 57 · Thin
TZ TrezorTrezor firmware BitcoinHardware wallets

feat(core): enable -Wsign-compare

This commit turns on a compiler warning (-Wsign-compare) that catches places where signed and unsigned numbers are compared, and fixes the resulting warnings across the Trezor firmware. Most changes are clean-up casts and loop-index type c…

Compiler warning -Wsign-compare enabled, indicating prior signed/unsigned comparison issuesI/O return-value checks hardened against negative ssize_t values being treated as successPython binding offset/length validation tightened in Monero crypto module
1cc940a4by cepetr+162−15247 files
No security note in commit
Informational 15 AI analysisMessage 62 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

refactor(core): merge passphrase__access_hidden_wallet into passphrase__access_wallet

This commit is a simple user-interface cleanup. It removes one duplicate translation label ('Access hidden wallet') and makes the device use a single, consistent label ('Access wallet') when asking the user to confirm opening a passphrase-…

65402aecby Michal Kazda+2−103 files
No security note in commit
Informational 15 AI analysisMessage 62 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

refactor(core): merge passphrase__hidden_wallet into passphrase__wallet

This commit is a simple user-interface cleanup. It merges two translation labels that both meant 'Passphrase wallet' into a single label, and updates the screens that used the old duplicate label. There is no security-relevant behavior cha…

7ce6887fby Michal Kazda+5−184 files
No security note in commit
Low 45 AI analysisMessage 85 · Strong
TZ TrezorTrezor firmware BitcoinHardware wallets

fix(core/bootloader): keep the full block length for block-0 retries

This commit fixes a bug in the Trezor bootloader's firmware-update code. When updating firmware, the first block of data is fetched in two pieces: a small initial 'header prefetch,' then the rest. If a communication error happened and the …

Firmware update reliability bug in bootloaderBlock-0 retry path truncated data before hash verificationHash mismatch caused by buffer offset/size mismatch, not by attacker
dc937ba2by tychovrahe+81−711 file
No security note in commit
Informational 12 AI analysisMessage 62 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

refactor(core/bootloader): separate image upload and image checks

This commit is a code cleanup in the Trezor bootloader. It moves the generic, image-type-agnostic parts of firmware upload (chunk receiving, retry logic, flash erasing/writing, timeouts) into a new reusable module called wf_image_upload.c,…

Refactor only: logic moved, not changed in security-relevant waysSame signature/version/model/downgrade checks remain in firmware-specific handlerSame flash erase/write sequence preserved in generic engine
caab7d9eby tychovrahe+772−4834 files
No security note in commit
Informational 15 AI analysisMessage 57 · Thin
TZ TrezorTrezor firmware BitcoinHardware wallets

chore(core): remove unused trezor_lib/ui feature

This commit removes an unused Rust Cargo feature flag called 'ui' from the Trezor firmware build configuration. It is a cleanup change: the feature was always enabled in practice, so the code now compiles unconditionally. There is no secur…

1436fbc6by cepetr+2−158 files
No security note in commit
Low 27 AI analysisMessage 57 · Thin
TZ TrezorTrezor firmware BitcoinHardware wallets

fix(core/caesar): change confirm middle button

This commit changes how users confirm an Ethereum authorization screen on Trezor's 'Caesar' layout. Previously, the user had to hold down a button to approve; now a simple tap is enough. The change only affects the user-interface interacti…

UI confirmation gesture changed from hold-to-confirm to tap-to-confirmOnly affects EIP-7702 authorization flow on Caesar (T3B1) layoutTest fixture hashes updated for all supported languages
e231cc94by obrusvit+50−502 files
No security note in commit
Informational 15 AI analysisMessage 62 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

refactor(core): merge firmware and unix cargo packages

This commit is a routine internal cleanup that merges two separate build packages (one for real hardware firmware and one for the desktop emulator) into a single package. It moves source files into subdirectories and updates build scripts …

6be32440by cepetr+48−32025 files
No security note in commit
Informational 15 AI analysisMessage 67 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

chore(core): test aes gcm only if enabled

This commit is a minor build/test maintenance change. It adds a feature flag (USE_AES_GCM) so that AES-GCM tests are only run when the feature is actually enabled in a particular firmware build. There is no security fix or vulnerability be…

890aca93by cepetr+13−14 files
No security note in commit
Informational 15 AI analysisMessage 95 · Strong
TZ TrezorTrezor firmware BitcoinHardware wallets

chore(python, tests): add and update GNU licence headers

This commit only adds or updates copyright and GNU license header comments in Python test and tooling files. It makes no changes to executable code, so it cannot introduce a security vulnerability or fix one.

6dc781c2by M1nd3r+1202−203250 files
No security note in commit
Informational 15 AI analysisMessage 62 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

refactor(core): move the multisig XPUB title into a translation template

This commit is a straightforward code cleanup: it moves the on-screen title for multisig XPUB screens from hard-coded English text into the device's translation system. The visible text remains essentially the same, and there is no securit…

6d69df16by Michal Kazda+20279−2023911 files
No security note in commit
Informational 15 AI analysisMessage 62 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

chore(core/bolt): remove unneeded `use` statements

This commit simply removes two unused Rust import statements (called `use` statements). It does not change any actual code behavior, logic, or security properties of the Trezor firmware.

a56f8c3dby Roman Zeyde+0−22 files
No security note in commit
Informational 18 AI analysisMessage 57 · Thin
TZ TrezorTrezor firmware BitcoinHardware wallets

fix(core): add missing colon in Tron

This commit fixes a UI formatting bug in the Tron cryptocurrency flow on Trezor hardware wallets. A missing colon was added to account information labels shown on the device screen. The change is cosmetic and does not appear to affect cryp…

UI label formatting fix onlyNo changes to signature verification, key handling, or transaction authorizationNo buffer size, memory allocation, or input validation changes observed
739c2968by Michal Kazda+19332−193364 files
No security note in commit
Informational 15 AI analysisMessage 57 · Thin
TZ TrezorTrezor firmware BitcoinHardware wallets

fix(core): combine path/account with labels

This commit is a straightforward user-interface refactoring. It bundles an account/path label together with its corresponding value into a single tuple, instead of passing them as four separate arguments. There is no security-relevant chan…

c66f6f4dby Michal Kazda+51−7413 files
No security note in commit
Repository ledger

Explore captured commits

Expand any commit for its author, full message, clarity score, changed files, triage signals, analysis, and source link.

Security candidatechore(crypto): remove NOISE_TAG_SIZE_BYTES defineby M1nd3r · 4a7a9950 · Aug 18, 2026 · 1 fileMessage 72 · AdequateInformational 15Details
Commit message · M1nd3r

chore(crypto): remove NOISE_TAG_SIZE_BYTES define

- Replaced by NOISE_XXPSK3_TAG_SIZE.

[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 path
AI analysis · Informational 15/100

This is a simple code cleanup: the developer removed a local alias named NOISE_TAG_SIZE_BYTES and replaced every use of it with the existing official constant NOISE_XXPSK3_TAG_SIZE. The numeric value and behavior of the code are unchanged, so there is no security impact.

Security candidatechore(crypto): add checks to noiseby M1nd3r · c59f833b · Aug 18, 2026 · 5 filesMessage 72 · AdequateModerate 59Details
Commit message · M1nd3r

chore(crypto): add checks to noise

- Check max message size.
- Respect aes-gcm block limits.

[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 path
AI analysis · Moderate 59/100

This commit hardens the Noise protocol code used in Trezor firmware by adding size limits and nonce limits to prevent two cryptographic problems: encrypting or decrypting messages that are too large for the protocol, and reusing the same encryption nonce after the counter wraps around. Reusing a nonce with AES-GCM can destroy the confidentiality of messages and allow attackers to forge fake messages. The patch also wipes sensitive context data more thoroughly when errors occur, reducing the chance that leftover key material could leak.

AI review queuedrefactor(translations): remove unused stellar_timeboundsby Jakub Janků · 725b3eb0 · Aug 18, 2026 · 10 filesMessage 77 · AdequateInformational 15Details
Commit message · Jakub Janků

refactor(translations): remove unused stellar_timebounds

[no changelog]

(cherry picked from commit f4ad393ee8c8ec03a73ff89e23adec48e77dbbc5)

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 or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit removes an unused translation string called 'stellar__timebounds' from the Trezor firmware's translation system. It is a cleanup/refactoring change with no visible effect on device behavior or security. The signatures.json file was also updated because removing a string changes the cryptographic hash (merkle root) used to verify translation files.

Security candidatefeat(stellar): show network in signing flowsby Jakub Janků · 7e4bbee9 · Aug 18, 2026 · 9 filesMessage 93 · StrongLow 30Details
Commit message · Jakub Janků

feat(stellar): show network in signing flows

The network can be optionally viewed in the info menu on the last
screen of the tx and auth entry signing flows.

The network was intentionally omitted from the confirmation flow
during a recent redesign:
https://github.com/trezor/trezor-firmware/issues/5148#issuecomment-2975448688

However, the stated rationale somewhat overlooked users that wish to
interact with multiple networks. For users that have accounts both
on mainnet and testnet, it is crucial to be able to distinguish that
they don't sign a transaction for mainnet that was actually meant to
be sent to testnet only.

Fixes: https://github.com/satoshilabs/trezor-firmware/issues/319
(cherry picked from commit cb97b0b37cccfa60619111ebc35aad518635d5b3)

93/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference✓ Names security-relevant behavior explicitly
Why it was queued
signing boundarycryptography-sensitive pathsigning or wallet pathauthentication path
AI analysis · Low 30/100

This commit improves the Stellar signing experience on Trezor hardware wallets by letting users see which network (Mainnet, Testnet, or Futurenet) a transaction is for before approving it. Previously, the network was intentionally hidden from the main confirmation flow after a redesign, which could lead someone with accounts on both mainnet and testnet to accidentally approve a mainnet transaction they only intended for testnet. The fix adds the network name to an info menu on the final review screen for both regular Stellar transactions and Soroban authorizations. It also adds support for the Stellar Futurenet network passphrase. This is a security/usability improvement rather than a remote-exploitable vulnerability.

Security candidatefeat(bolt): increase item limit in show_info_with_cancelby Jakub Janků · 063b3f2a · Aug 18, 2026 · 1 fileMessage 85 · StrongInformational 15Details
Commit message · Jakub Janků

feat(bolt): increase item limit in show_info_with_cancel

One info item occupies 2 paragraphs; the limit is therefore
increased from 4 to 18 items.

This is a preparatory commit.

[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
boot or update path
AI analysis · Informational 15/100

This commit changes the on-screen display component used by one user-interface helper from a short paragraph container to a long one, raising the maximum number of info lines that can be shown from 4 to 18. The commit message explicitly calls it a 'preparatory commit' and there is no indication of a security bug or fix.

Security candidatefix(caesar): don't omit description in confirm_valueby Jakub Janků · c9c2d315 · Aug 18, 2026 · 3 filesMessage 85 · StrongModerate 51Details
Commit message · Jakub Janků

fix(caesar): don't omit description in confirm_value

... when info_items is non-empty.

This fixes an issue in Ripple confirm_account_deletion where the
fee limit is shown without any description and multiple similar
issues in Stellar payment-like operations (which internally use
confirm_stellar_output_amount).

[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 pathboot or update path
AI analysis · Moderate 51/100

This commit fixes a display bug in Trezor hardware wallets running the 'Caesar' user interface. In certain Ripple and Stellar transaction confirmation screens, a helpful description label (for example, explaining that a shown number is a fee limit or payment amount) was accidentally left off. The fix makes sure the description appears alongside the value, so users are less likely to misread what they are approving. It is a user-interface clarity issue rather than a direct theft-of-funds vulnerability, but it could contribute to a user approving a transaction they do not fully understand.

AI review queuedfix(l10n): add generated filesby Michal Kazda · 107d49e1 · Aug 18, 2026 · 5 filesMessage 57 · ThinInformational 15Details
Commit message · Michal Kazda

fix(l10n): add generated files
[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 pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit only regenerates translation files after some text labels were moved from one category to another (for example, 'Authenticate' and 'Wipe' were changed from general words to button labels). There is no code behavior change, no bug fix, and no security relevance visible in the diff.

Security candidatefix(l10n): change words__ into buttons__ in codeby Michal Kazda · ccf540df · Aug 18, 2026 · 11 filesMessage 57 · ThinInformational 15Details
Commit message · Michal Kazda

fix(l10n): change words__ into buttons__ in code
[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 pathboot or update path
AI analysis · Informational 15/100

This commit is a straightforward internal cleanup of translation key names. It changes labels like 'words__continue_anyway' to 'buttons__continue_anyway' in code that displays on-screen buttons and menu items. The actual user-facing text shown on the device is unchanged; only the internal identifier used to look up that text was renamed. There is no security-relevant change.

AI review queuedfix(ripple): show dt even when it's 0by PrisionMike · 76faf52f · Aug 18, 2026 · 4 filesMessage 57 · ThinLow 49Details
Commit message · PrisionMike

fix(ripple): show dt even when it's 0

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 pathsecond-pass: security-sensitive path
AI analysis · Low 49/100

This commit fixes a bug in Trezor's Ripple (XRP) signing code. When a payment request included a destination tag of 0, the device treated it as if no tag was set, so it did not show or verify the tag. Because destination tags are used to route funds to the correct recipient on exchanges, omitting tag 0 could let an attacker trick a user into approving a payment that looks tagless but actually sends to tag 0, potentially sending funds to the wrong account or making them hard to recover.

AI review queuedfix(core/monero): validate change address on sweep transactionsby Petr Susil · 11c2dedf · Aug 18, 2026 · 3 filesMessage 100 · StrongHigh 74Details
Commit message · Petr Susil

fix(core/monero): validate change address on sweep transactions

The sweep shape (declared change amount 0, two outputs) is exempt from
the change ownership check, because on a sweep the change address is a
random throwaway address, not ours. But the shape is host-controlled, so
a malicious host can point change_dts.addr at the paying recipient and
have the exemption accept it. That output is then keyed as change in
step 6, derived from our own view key (a*R), leaving it unspendable by
both the recipient and the owner.

Reject the aliasing: an address we decline to validate must never be the
address of an output that carries money. Honest sweeps are unaffected --
their fake output carries amount 0.

Fixes: https://github.com/trezor/trezor-firmware/issues/7544
(cherry picked from commit ea6caf1e1875df05e983629df90d3dd217af4ab9)

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✓ Links an issue, advisory, or supporting reference✓ Names security-relevant behavior explicitly
Why it was queued
defensive validationsigning or wallet pathsecond-pass: near security thresholdsecond-pass: security-sensitive path
AI analysis · High 74/100

This update fixes a bug in how Trezor handles certain Monero 'sweep' transactions. In a sweep, one output is a fake zero-value decoy with a random address, and the device normally skips checking that the change address belongs to the wallet. A malicious computer app could exploit that skip by claiming the real payment recipient's address is the change address. The device would then encrypt the recipient's output using the wallet's own secret view key, making the money effectively unspendable by the recipient and unrecoverable by the sender. The fix adds a check: if the unvalidated change address appears on any output that actually carries money, the transaction is rejected. Honest sweeps, where the decoy carries zero coins, still work normally.

Security candidatefeat(core): support "dangerous" hold-to-confirm on Deliziaby Roman Zeyde · 31a076a8 · Aug 17, 2026 · 3 filesMessage 62 · AdequateInformational 20Details
Commit message · Roman Zeyde

feat(core): support "dangerous" hold-to-confirm on Delizia

[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 20/100

This commit adds a new user-interface option for the Trezor Safe 5 (Delizia) that lets certain confirmation screens use a red 'danger' hold-to-confirm style instead of the normal green one. It is purely a visual/theming change and does not alter what the device signs, what it allows, or any security policy. The large diff is mostly updated test screenshot hashes caused by the changed colors/text.

Security candidatechore(core): move `trezor.crypto.cosi` module to unittestsby Roman Zeyde · 2af21738 · Aug 17, 2026 · 4 filesMessage 77 · AdequateInformational 15Details
Commit message · Roman Zeyde

chore(core): move `trezor.crypto.cosi` module to unittests

It's no longer used in firmware.

[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 path
AI analysis · Informational 15/100

This commit removes an unused cryptography helper module from the actual Trezor firmware and keeps it only in the test suite. There is no security bug being fixed here; it is a routine cleanup to avoid shipping dead code.

Security candidatechore(core/tools): drop bootloader_hashes for boot_ucb modelsby tychovrahe · c5a23c8e · Aug 17, 2026 · 7 filesMessage 100 · StrongInformational 15Details
Commit message · tychovrahe

chore(core/tools): drop bootloader_hashes for boot_ucb models

UCB models verify a staged bootloader through its PQ boot-header
signature (boot_image_replace under USE_BOOT_UCB), not through the padded
blake2s digests in bootloader_hashes.h -- boot_image_embdata.c only wires
.hash_00/.hash_FF `#ifndef USE_BOOT_UCB`, and that file is compiled only
by the firmware project, which enables boot_ucb for these models. The
digests are therefore never referenced for UCB models; the generated
header only churned whenever the bootloader binary changed, for no
consumer.

Skip generation for boot_ucb models (detected from the model.toml
features list), remove the now-dead #include from their model headers,
and delete the stale generated files for T3W1, D002 and T3T2.

[no changelog]

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

100/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Mentions testing or verification✓ Names security-relevant behavior explicitly
Why it was queued
signing boundaryupdate trustboot or update path
AI analysis · Informational 15/100

This is a cleanup change that stops generating unused bootloader hash files for newer Trezor models (D002, T3T2, T3W1). These models already verify the bootloader using a different mechanism (UCB with post-quantum signatures), so the old hash files were never actually used. The commit deletes the stale files and removes their #include references. There is no security vulnerability here.

Security candidatefix(stellar,python): use -p for --network-passphraseby Jakub Janků · 2f2ab1f7 · Aug 16, 2026 · 1 fileMessage 90 · StrongInformational 20Details
Commit message · Jakub Janků

fix(stellar,python): use -p for --network-passphrase

Previously, -n was used which collided with -n for --address.
The short name -p is used in the sign-soroban-authorization command
for the corresponding option with the same effect.

[no changelog]

90/100 · StrongMessage clarity
✓ Specific, 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
access control
AI analysis · Informational 20/100

This is a tiny command-line interface (CLI) fix for the Stellar-related commands in Trezor's Python library. Two different options were accidentally using the same short flag '-n': one for '--address' and one for '--network-passphrase'. The patch changes '--network-passphrase' to use '-p' instead, matching another Stellar command. This is mainly a usability bug, not a direct security vulnerability, because users could not reliably select the intended option by short flag.

Security candidatefeat(core): support dev-signed definitions on non-production buildsby Roman Zeyde · 3006c023 · Aug 16, 2026 · 12 filesMessage 85 · StrongInformational 19Details
Commit message · Roman Zeyde

feat(core): support dev-signed definitions on non-production builds

Similar to how dev-signed translations are supported via the `dev_keys` feature.

Definitions public keys are moved to `core/embed/rust/src/definitions/constants.rs`.

[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
boot or update path
AI analysis · Informational 19/100

This commit moves the public keys used to verify coin/token definitions from Python code into a new Rust module. It also makes development-signed definitions accepted on non-production builds, similar to an existing feature for translations. The change is a build/configuration refactor rather than a fix for an active security flaw. Production firmware still requires production signatures; dev keys are only accepted when the `dev_keys` feature is enabled, which is intended for development builds.

AI review queuedfix(core): update fixturesby Michal Kazda · b30af88e · Aug 16, 2026 · 2 filesMessage 47 · ThinInformational 12Details
Commit message · Michal Kazda

fix(core): update fixtures
[no changelog]

47/100 · ThinMessage clarity
✓ Descriptive subject✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 12/100

This commit only refreshes test data files: it updates a translation signature metadata file and regenerates UI test fixtures. There is no code change, no security fix, and no indication of a vulnerability being addressed.

AI review queuedrefactor(translations): merge {cardano,ethereum}__networkby Jakub Janků · b0a549cd · Aug 16, 2026 · 13 filesMessage 77 · AdequateInformational 15Details
Commit message · Jakub Janků

refactor(translations): merge {cardano,ethereum}__network

This is a preparatory commit, the string will be used for another
cryptocurrency as well.

[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 or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This is a harmless internal cleanup: the word "Network" was previously stored separately for Cardano and Ethereum, and is now merged into a single shared translation key called words__network. No user-facing text, security behavior, or transaction logic changed.

Security candidatefix(legacy): hardening ETH unstake and claimby obrusvit · b41173f3 · Aug 16, 2026 · 4 filesMessage 92 · StrongHigh 70Details
Commit message · obrusvit

fix(legacy): hardening ETH unstake and claim

- unlike stake, the value of unstake and claim is supplied as a contract
arg. Even though the contracts are non-payable, we must enforce
`msg.value` to be 0
- in addition, enforce the right chain_id to prevent replay attacks

(cherry picked from commit f0cd25f93bde76a0f71d0b47ec1907484b0abeba)

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
explicit security languagedefensive validationboot or update path
AI analysis · High 70/100

This update fixes a security flaw in Trezor's older hardware wallet firmware for Ethereum staking operations. Previously, when a user tried to 'unstake' or 'claim' staked ETH, the device did not reliably block ETH from being sent along with the transaction (msg.value), even though those smart-contract functions are not supposed to accept money. It also did not strictly check that the transaction was on the correct Ethereum network (chain ID), which could have allowed a malicious or accidental transaction on one network to be replayed on another. The fix enforces zero ETH value for unstake/claim and ties each allowed contract address to its proper network.

Security candidatefix(core): hardening ETH unstake and claimby obrusvit · 72414778 · Aug 16, 2026 · 4 filesMessage 92 · StrongHigh 74Details
Commit message · obrusvit

fix(core): hardening ETH unstake and claim

- unlike stake, the value of unstake and claim is supplied as a contract
arg. Even though the contracts are non-payable, we must enforce
`msg.value` to be 0
- in addition, enforce the right chain_id to prevent replay attacks

(cherry picked from commit 31323e62fbae7bb7b9ccc17a236e97cd8efeb91a)

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
explicit security languagedefensive validationsigning or wallet path
AI analysis · High 74/100

This update tightens the rules for two Ethereum staking operations—unstake and claim—on Trezor hardware wallets. Before the fix, the device did not verify that the user was on the correct Ethereum network (chain ID) and did not block ETH from being attached to unstake/claim transactions. Because those contract functions reject incoming ETH, any ETH sent with them would normally be lost. The patch now rejects such transactions before they can be signed, preventing accidental or malicious loss of funds and cross-chain replay attacks.

AI review queuedchore(translations): sync Crowdin translationsby Thalarion · 82264593 · Aug 15, 2026 · 4 filesMessage 57 · ThinInformational 15Details
Commit message · Thalarion

chore(translations): sync Crowdin translations

[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 pathtranslation-only discountsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit only updates translated text strings in Czech, German, and Spanish language files, plus the corresponding translation signature metadata. There are no code, logic, or security-related changes.

Security candidatefeat(l10n): add Indonesian JSONby Michal Kazda · 8f890956 · Aug 15, 2026 · 1 fileMessage 72 · AdequateInformational 15Details
Commit message · Michal Kazda

feat(l10n): add Indonesian JSON
- including updated signatures
[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
signing boundarytranslation-only discount
AI analysis · Informational 15/100

This commit adds an Indonesian language translation file (id.json) to the Trezor firmware. It is a localization-only change with no executable code, no security logic, and no functional behavior changes. There is no indication this introduces any security issue.

Security candidatefix(core): show ETH public key derivation pathby Roman Zeyde · fa5e3906 · Aug 14, 2026 · 2 filesMessage 57 · ThinInformational 20Details
Commit message · Roman Zeyde

fix(core): show ETH public key derivation path

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
secret or key material
AI analysis · Informational 20/100

This commit fixes a user-interface detail on Trezor hardware wallets: when displaying an Ethereum public key on the device screen, it now also shows the derivation path (the sequence of numbers that identifies which account/key the public key belongs to). Previously only the public key was shown. This is a usability and transparency improvement, not a fix for a code vulnerability that could be exploited remotely.

AI review queuedtest(stellar): remove signer using StellarSetOptionsOpby Jakub Janků · 5b1837ad · Aug 14, 2026 · 1 fileMessage 87 · StrongInformational 15Details
Commit message · Jakub Janků

test(stellar): remove signer using StellarSetOptionsOp

[no changelog]

(cherry picked from commit fd5e83f9c32e3ec3e41341e1091a7fbedb2cc767)

87/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body✓ Mentions testing or verification
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit only adds a new test case for the Stellar cryptocurrency feature. It records an expected transaction signature for a 'remove signer' operation so the device can be tested against a known-good value. There is no code change, no bug fix, and no security-relevant behavior change.

AI review queuedfix(stellar): confirm signer weight set by StellarSetOptionsOpby Jakub Janků · 4aa20901 · Aug 14, 2026 · 2 filesMessage 93 · StrongModerate 55Details
Commit message · Jakub Janků

fix(stellar): confirm signer weight set by StellarSetOptionsOp

Fixes: https://github.com/satoshilabs/trezor-firmware/issues/312
(cherry picked from commit d1beab9790243949a972d6ddca1b297a6efa9ff7)

93/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Moderate 55/100

This update fixes how the Trezor hardware wallet displays a Stellar 'Set options' operation when a signer is being added or changed. Previously, the device did not show the signer's 'weight' value on its screen. Because weight controls how powerful a signer is (for example, how many signatures are needed to approve a transaction), a user could unknowingly approve a high-weight signer that gives an attacker more control over the account. The fix now shows the weight during confirmation, so users can spot suspicious changes before signing.

Security candidatefeat(core/rust/crypto): ECDSA bindingsby matejcik · ea4433b9 · Aug 14, 2026 · 2 filesMessage 57 · ThinInformational 12Details
Commit message · matejcik

feat(core/rust/crypto): ECDSA bindings

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 12/100

This commit adds new Rust code that lets other parts of the Trezor firmware call existing C-language ECDSA cryptographic functions (signature verification and public-key recovery). It is a feature addition that exposes already-trusted crypto code through a thin Rust wrapper. There is no indication in the commit that it fixes a bug or vulnerability.