TZ
← All projectsTrezor

Trezor firmware

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

BitcoinHardware walletsNormal
Repository coverage

3229 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.

1125security candidates372second-pass queue2925AI analyses
297commits · 30 days
701commits · 60 days
1641commits · 180 days
2707commits · 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
635Strong · 80–100
1551Adequate · 60–79
1036Thin · 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 Zeyde675214620372
obrusvit25395235364
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 32 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 77 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

refactor(core): render translated strings verbatim in layouts

This is a cosmetic code cleanup. It moves punctuation and capitalization out of the Python code and into the translation files so translated strings are shown exactly as written. There is no security-relevant change.

162ed3a2by Michal Kazda+12−125 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.

AI review queuedfeat(core/ethereum): allow EIP-7702 delegation under strict safety checksby Roman Zeyde · 4f3ad296 · Aug 22, 2026 · 3 filesMessage 62 · AdequateLow 40Details
Commit message · Roman Zeyde

feat(core/ethereum): allow EIP-7702 delegation under strict safety checks

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

This commit changes how Trezor hardware wallets handle a new Ethereum feature called EIP-7702, which lets users temporarily delegate control of their account to another smart contract. Previously, Trezor only allowed this delegation if the user lowered their safety settings. Now, it allows delegation under the strictest safety settings, but only for a pre-approved list of delegate addresses. Revocation (removing a delegate) was already allowed under strict settings and remains allowed. The change is framed as adding 'strict safety checks' rather than removing protections entirely.

AI review queuedfix(core/ethereum): disallow non-zero ETH value on SLIP-24 ERC-20 swapsby Roman Zeyde · eefd32c3 · Aug 21, 2026 · 3 filesMessage 77 · AdequateHigh 70Details
Commit message · Roman Zeyde

fix(core/ethereum): disallow non-zero ETH value on SLIP-24 ERC-20 swaps

(cherry picked from commit 2c769ec0f61026d3472f5d2d261bf0ed043ab5c9)

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 · High 70/100

This update fixes a logic flaw in Trezor's Ethereum signing code. When a user was doing an ERC-20 token swap using a SLIP-24 payment request, the device could also be instructed to send native ETH at the same time. That combination is not expected in a normal token swap and could let an attacker trick the user into authorizing an unintended ETH transfer alongside the token swap. The fix now rejects such transactions outright.

AI review queuedtest(core/ethereum): fix SLIP-24 payment request for ERC-20 tokensby Roman Zeyde · 3d24462d · Aug 21, 2026 · 2 filesMessage 72 · AdequateInformational 12Details
Commit message · Roman Zeyde

test(core/ethereum): fix SLIP-24 payment request for ERC-20 tokens

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

This commit only adds a new automated test case for signing an Ethereum ERC-20 token transfer using a SLIP-24 payment request. It does not change any production firmware code, so it cannot introduce a security vulnerability or directly fix one in shipped software. The change is purely in the test suite and its recorded expected screen outputs.

AI review queuedrefactor(core/ethereum): simplify `test_signtx_payment_req_long_value`by Roman Zeyde · 1e897557 · Aug 21, 2026 · 1 fileMessage 62 · AdequateInformational 15Details
Commit message · Roman Zeyde

refactor(core/ethereum): simplify `test_signtx_payment_req_long_value`

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

This commit only refactors a single automated test file for Ethereum transaction signing on Trezor hardware wallets. It extracts duplicated code into a helper function and updates how the test checks for an expected error message. There is no change to the actual firmware, wallet logic, or security behavior.

AI review queuedfix(l10n): fix German recover button textby Michal Kazda · d975b58f · Aug 20, 2026 · 2 filesMessage 57 · ThinInformational 15Details
Commit message · Michal Kazda

fix(l10n): fix German recover button text
[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 is a routine German translation update. It changes the wording on a wallet recovery button and refreshes the translation signature file that verifies the translations are authentic. There is no security issue here.

AI review queuedfix(core): limit protobuf nesting depthby Martin Milata · dd7afbc3 · Aug 20, 2026 · 3 filesMessage 57 · ThinModerate 66Details
Commit message · Martin Milata

fix(core): limit protobuf nesting depth

[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
parser or protocol pathsecond-pass: security-sensitive path
AI analysis · Moderate 66/100

This commit adds a hard limit on how deeply nested Protobuf messages can be when the Trezor device decodes them. Without such a limit, a malicious or malformed message could nest messages inside messages indefinitely, potentially crashing the device or causing other problems. The change caps nesting at 16 levels and adds a test to confirm that deeper nesting is rejected.

AI review queuedrefactor(python): faster serialization of nested protobufby Martin Milata · 83947a18 · Aug 20, 2026 · 1 fileMessage 77 · AdequateInformational 18Details
Commit message · Martin Milata

refactor(python): faster serialization of nested protobuf

The function was exponential in the nesting depth. Changed to use more
memory while not blowing up CPU.

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

This is a routine performance refactor in Trezor's Python library. It replaces a slow, CPU-heavy way of measuring nested protobuf message sizes with a faster approach that builds the message in memory once. There is no indication this fixes a security vulnerability; it is described purely as a speed improvement.

AI review queuedstyle(core/rust): clippyby matejcik · 6f96a4d4 · Aug 20, 2026 · 8 filesMessage 28 · OpaqueInformational 15Details
Commit message · matejcik

style(core/rust): clippy

28/100 · OpaqueMessage clarity
✓ Subject identifies a change! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
AI analysis · Informational 15/100

This commit is a routine code cleanup to satisfy the Rust Clippy linter. It removes unnecessary reference symbols (&), rewrites a small match block to assign a value directly, and removes an unused import. There is no functional change and no security relevance visible in the diff.

AI review queuedfix(solana): avoid re-confirmation in staking flowsby Jakub Janků · c195cec9 · Aug 19, 2026 · 1 fileMessage 85 · StrongLow 35Details
Commit message · Jakub Janků

fix(solana): avoid re-confirmation in staking flows

Decide whether to use the predefined flow or whether to fall back
to the generic flow before requesting any confirmation from the user.

[no changelog]

(cherry picked from commit 4d3b5a5a64ea0fcaf34934d9a61e3ee70eb06449)

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

This change fixes a logic bug in how Trezor handles Solana staking transactions. Previously, the device could ask the user to confirm a staking detail before it had fully verified that the transaction matched a safe, predefined pattern. The fix moves that confirmation check to after all safety checks are complete, so the device only asks for confirmation when it is confident the transaction is a known, legitimate staking flow. This prevents a potentially malicious or malformed transaction from tricking the user into confirming something risky.

AI review queuedfeat(tron): core edits to include `call_value` in `TriggerSmartContract`by PrisionMike · f476eaec · Aug 19, 2026 · 3 filesMessage 62 · AdequateLow 44Details
Commit message · PrisionMike

feat(tron): core edits to include `call_value` in `TriggerSmartContract`

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

This commit changes how Trezor hardware wallets handle Tron smart-contract calls that include native TRX tokens. Previously, the device did not display or validate the `call_value` field, which means a user could be tricked into sending TRX along with a contract call without seeing it on the device screen. The patch adds a safety check that rejects oversized values and shows the TRX amount during transaction confirmation. It is a defensive fix rather than an exploit.

AI review queuedfix(core/ethereum): fix SLIP-24 payment request for ERC-20 tokensby Roman Zeyde · b13a17f9 · Aug 19, 2026 · 2 filesMessage 62 · AdequateLow 38Details
Commit message · Roman Zeyde

fix(core/ethereum): fix SLIP-24 payment request for ERC-20 tokens

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

This commit fixes a bug in the Trezor hardware wallet's Ethereum transaction signing flow. When using SLIP-24 payment requests with ERC-20 token transfers, the device could incorrectly skip the user-confirmation step for the transaction details. The fix ensures that 'clear signing' mode (which bypasses some confirmations) is checked before the payment-request path, so users still see and approve the token transfer details.

AI review queuedchore(translations): sync additional Crowdin translationsby Michal Kazda · a2b756fb · Aug 19, 2026 · 6 filesMessage 62 · AdequateInformational 15Details
Commit message · Michal Kazda

chore(translations): sync additional Crowdin translations

[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
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, Spanish, French, and Portuguese translation files, plus the corresponding translation signature metadata. There are no code changes, no security fixes, and no behavior changes. It is a routine localization sync.

AI review queuedfix(core): improve confirmation UX in super-shamirby obrusvit · c97383ba · Aug 19, 2026 · 14 filesMessage 77 · AdequateInformational 15Details
Commit message · obrusvit

fix(core): improve confirmation UX in super-shamir

- confirm groups setup
- confirm individial group thresholds

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 improves the on-screen confirmation experience when creating an advanced Shamir backup on a Trezor device. It adds extra prompts that show the user how many backup groups exist, how many groups are needed to recover the wallet, and the threshold for each individual group. There is no security vulnerability here; it is purely a user-interface improvement to help people verify their backup settings.

AI review queuedchore(translations): sync Crowdin translationsby Thalarion · 883edebe · Aug 19, 2026 · 6 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 is a routine translation update for the Trezor hardware wallet firmware. It only changes user-facing text strings in Czech, German, Spanish, French, and Portuguese translation files, plus the translation signature metadata. There are no code logic changes, no security fixes, and no functional changes to how the device operates.

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.

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.

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.

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.

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.

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.

AI review queuedfix(core): nostr string serializationby Martin Milata · 1239c9e1 · Aug 11, 2026 · 3 filesMessage 57 · ThinModerate 60Details
Commit message · Martin Milata

fix(core): nostr string serialization

[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 · Moderate 60/100

This commit fixes a bug in how the Trezor hardware wallet builds Nostr event signatures. Previously, special characters in the event content and tags (like quotes, backslashes, tabs, and newlines) were not properly escaped when creating the JSON string that gets signed. This could cause the device to compute a signature that does not match what standard Nostr software expects, or in some cases could allow a malicious app to craft content that changes the meaning of what the user approved on screen versus what is actually signed. The fix adds proper JSON string escaping for both the main content and tag strings.

AI review queuedfix(solana): fall back to generic UI for more ALT referencesby Jakub Janků · cd6e7596 · Aug 11, 2026 · 4 filesMessage 93 · StrongModerate 61Details
Commit message · Jakub Janků

fix(solana): fall back to generic UI for more ALT references

transfer_token_instruction.token_mint and
transfer_token_instruction.owner can be Address Lookup Table (ALT)
references. Previously, the predefined token transfer flow
would misleadingly display just the ALT address. The user thus
couldn't distinguish an actual address from an ALT reference.
Now, the handler falls back to the generic ALT-aware confirmation UI.

537b34f847f8e3f97e4444be9f8f50706ac34075 added a check for
transfer_token_instruction.destination_account, but omitted
the token_mint and owner fields which can be ALT references
as well.

Partially fixes: https://github.com/satoshilabs/trezor-firmware/issues/325

(cherry picked from commit b992a24a93d77066b3ac2fec1dae7129d09427d1)

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

This update fixes a display bug in Trezor's Solana token-transfer confirmation screen. When a token transfer uses Solana Address Lookup Tables (ALTs) to refer to the token mint or the owner account, the device previously showed the lookup-table address as if it were the real account address. That could trick a user into approving a transfer they did not fully understand. The fix makes these cases fall back to a more cautious, generic confirmation screen that clearly marks ALT references.