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
2690commits · 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 48 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.

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.

Security candidaterefactor(core/ui): require the amount and the asset in confirm_stellar_output.by Jakub Janků · a8648775 · Aug 21, 2026 · 4 filesMessage 85 · StrongLow 27Details
Commit message · Jakub Janků

refactor(core/ui): require the amount and the asset in confirm_stellar_output.

Both have been optional since the function was introduced, but no caller ever
omitted them, and the guard would have silently shown a recipient with no
amount.

[no changelog]

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

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 · Low 27/100

This change tightens a Stellar cryptocurrency confirmation screen so the amount and asset can no longer be left blank. Previously, the code allowed them to be optional and would silently skip showing the amount if either was missing, which could let a user approve a payment without seeing how much was being sent. The commit makes both values mandatory and always displays them. It is described as a defensive refactor, not a fix for an active bug or reported vulnerability.

Security candidatebuild(xbuild): introduce cargo_profile_dir()by matejcik · 1180bc12 · Aug 21, 2026 · 7 filesMessage 70 · AdequateInformational 15Details
Commit message · matejcik

build(xbuild): introduce cargo_profile_dir()

to reliably locate built artifacts, without relying on $OUT_DIR/../../..
(which is not guaranteed stable across cargo versions)
(neither is the current method but at least now we have a central place
to fix further breakage)

70/100 · AdequateMessage clarity
✓ Descriptive subject✓ Uses a recognizable type or scope✓ Provides detailed explanatory context
Why it was queued
boot or update path
AI analysis · Informational 15/100

This is a build-system maintenance change. It replaces hard-coded guesses about where Cargo places compiled files with a single helper function that walks the directory tree more reliably. There is no user-facing feature change and no security fix or vulnerability.

Security candidatechore: rename `N4W1` to `N1W1`by Roman Zeyde · 33b92f48 · Aug 20, 2026 · 51 filesMessage 80 · StrongInformational 15Details
Commit message · Roman Zeyde

chore: rename `N4W1` to `N1W1`

https://satoshilabs.slack.com/archives/C054XGU77QV/p1787223078842129

[no changelog]

80/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body✓ Links an issue, advisory, or supporting reference
Why it was queued
boot or update path
AI analysis · Informational 15/100

This commit is a simple bulk rename of an internal feature code name from 'N4W1' to 'N1W1' across the Trezor firmware codebase, build system, tests, and client libraries. It changes only identifiers, comments, strings, and generated protocol-buffer files. There is no functional change and no security relevance.

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.

Security candidatefeat(core): introduce unlimited_syscall applet privilegeby cepetr · 01553dfe · Aug 20, 2026 · 4 filesMessage 62 · AdequateLow 46Details
Commit message · cepetr

feat(core): introduce unlimited_syscall applet privilege

[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
credential or privilege state
AI analysis · Low 46/100

This commit adds a new security gate inside the Trezor firmware's core operating system. Before this change, any installed mini-program ('applet') could call any internal system function ('syscall'). Now, by default, applets can only call a small, approved list of syscalls, unless they are explicitly granted a new 'unlimited_syscalls' privilege. The built-in 'coreapp' applet is granted this privilege, so it behaves as before. The change is a hardening measure that reduces the damage a compromised or malicious applet could do.

Security candidatefeat(core): introduce framebuffer_access applet privilegeby cepetr · d587eed6 · Aug 20, 2026 · 10 filesMessage 62 · AdequateLow 46Details
Commit message · cepetr

feat(core): introduce framebuffer_access applet privilege

[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
credential or privilege state
AI analysis · Low 46/100

This commit adds a new security permission called framebuffer_access that controls whether a small helper app (applet) running on the Trezor can read from or write to the device's screen memory. Previously, applets could access the framebuffer based only on memory location checks. Now they must also be explicitly granted the framebuffer_access privilege. The change is a hardening/feature addition, not a fix for an active exploit, and it removes an older privilege called assets_area_access that was apparently unused or being replaced.

Security candidaterefactor(core/rust): fix Layout::return_value() after Error is no longer Cloneby matejcik · e6e9ec08 · Aug 20, 2026 · 5 filesMessage 62 · AdequateLow 26Details
Commit message · matejcik

refactor(core/rust): fix Layout::return_value() after Error is no longer Clone

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 · Low 26/100

This commit is a small internal code cleanup in the Trezor firmware's Rust UI layer. It changes how a layout object hands back its result to caller code: instead of returning a copy of the result, it now 'takes' the result away so the same value cannot be retrieved twice. The change was needed because the error type no longer supports being copied (Clone). There is no direct evidence in the commit that this fixes an exploitable security bug; it appears to be a refactoring to keep the code compiling and to make the API behavior clearer (subsequent calls return None).

Security candidatefeat(rust/micropython): more ergonomic tuplesby matejcik · 89e4ee10 · Aug 20, 2026 · 11 filesMessage 57 · ThinInformational 15Details
Commit message · matejcik

feat(rust/micropython): more ergonomic tuples

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

This commit is a routine internal code cleanup in the Trezor firmware's Rust/MicroPython bridge. It introduces a dedicated tuple helper module so developers can write tuple conversions more naturally, and removes an older, less ergonomic helper. There is no indication it fixes a security bug or changes security-relevant behavior.

Security candidatefix(core): assert the monotonic versions fit what monoctr can storeby tychovrahe · 4156e6aa · Aug 20, 2026 · 1 fileMessage 85 · StrongLow 34Details
Commit message · tychovrahe

fix(core): assert the monotonic versions fit what monoctr can store

monoctr stores its counters UNARY -- value N is N written 16-byte blocks -- so
the encoding, not the uint8_t the value travels in, is what caps them at
MONOCTR_MAX_VALUE (63). A model that raises a monotonic version past that gets no
build error; it fails later, at runtime, and confusingly:

* the boardloader compares the boot header against the stored floor, cannot
write the new value, and reports "BOOTLOADER DOWNGRADED" on a perfectly good
image;
* the firmware and secmon floors silently stop advancing, so anti-rollback
quietly weakens instead of failing.

Assert all three at build time instead. Every model is well inside the limit
today (highest is 3), so this only fixes the failure mode of a future bump.

version_check.c is the only place all three can be checked. The firmware and
secmon values reach their images through header.S, where _Static_assert cannot
go, and model_version.h is itself pulled into that assembly via version.h, so
the checks cannot live there either. This translation unit both sees all three
constants and owns the monoctr policy they feed.

SECMON_MONOTONIC_VERSION is guarded: only models with a secmon define it (4 of 9
today).

Verified by temporarily setting a model to 64 and confirming the build stops, and
by building models with and without a secmon so both sides of the #ifdef compile.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

[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
update trustboot or update path
AI analysis · Low 34/100

This commit adds build-time safety checks to prevent future Trezor firmware versions from accidentally setting anti-rollback version numbers too high for the hardware storage to handle. If a version were set above the storage limit, the device could either wrongly refuse to boot a valid update, or silently stop enforcing downgrade protection. The fix prevents that mistake at compile time, before any device is shipped. It does not fix an active bug today because all current models are well below the limit.

Security candidatefeat(core/prodtest): Add pin padding to AUTHENTICATE and SET_PIN command.by kopecdav · 2beb4b17 · Aug 20, 2026 · 1 fileMessage 62 · AdequateLow 44Details
Commit message · kopecdav

feat(core/prodtest): Add pin padding to AUTHENTICATE and SET_PIN command.

[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
access control
AI analysis · Low 44/100

This commit changes a Trezor factory-testing tool (prodtest) so that PINs sent during NFC backup authentication and PIN setup are padded to a fixed length and encrypted with the Noise XXpsk3 protocol before being transmitted. Previously, the raw PIN was placed directly into the NFC APDU command. The change reduces the risk that someone sniffing NFC traffic could learn the PIN length or the PIN itself in plaintext. It is a defensive hardening improvement in a manufacturing/debug utility, not a fix for an active exploit in end-user firmware.

Security candidatefix(core): add missing buffer length checksby cepetr · a698d6fa · Aug 19, 2026 · 6 filesMessage 57 · ThinModerate 51Details
Commit message · cepetr

fix(core): add missing buffer length checks

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

This commit adds several missing safety checks in low-level hardware code for the Trezor hardware wallet. It prevents reading past the end of a too-short firmware image, avoids odd behavior when asked to read or write zero SD card blocks, ensures a signature buffer is large enough before use, and fixes a debug-message routine that could truncate or mishandle strings. These are defensive fixes; the commit message does not call them security fixes, but missing length checks in embedded code can sometimes be exploited to crash the device or leak nearby memory.

Security candidatechore(python): generate CoSi nonces randomly by defaultby M1nd3r · 114f6e2f · Aug 19, 2026 · 7 filesMessage 85 · StrongModerate 60Details
Commit message · M1nd3r

chore(python): generate CoSi nonces randomly by default

- Deterministic nonce derivation is persisted, it is safe for publicly known keys only. It is used for reproducible CoSi signing with dev keys.

[no changelog]

(cherry picked from commit 65fa3edbf020dc1fe356a905b944da92a1b55766)

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 boundary
AI analysis · Moderate 60/100

This commit changes the Trezor Python library's collective signing (CoSi) helper so that, by default, it generates random nonces instead of deriving them deterministically from the private key and message. The old deterministic mode is kept only for publicly known development keys, because using it with real secret keys is dangerous: a malicious coordinator could trick the same key into signing the same message twice with different combined nonces, which would leak the private key. The patch itself is a security improvement, not an exploit, but it fixes a latent vulnerability in the library's API design.

Security candidatefeat(core,python): definitions payload versionby obrusvit · d0f290cb · Aug 19, 2026 · 12 filesMessage 85 · StrongInformational 23Details
Commit message · obrusvit

feat(core,python): definitions payload version

- reinterpret the definitions magic `trzd1` as magic + version, i.e.
`trzd` + `1`
- this allows us to release backwards incompatible definitions with a
bumped version
- this is a necessary preparation for a signature quorum change

[no changelog]

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
signing boundary
AI analysis · Informational 23/100

This commit refactors how Trezor firmware recognizes external 'definitions' files (the data blobs that describe Ethereum networks and tokens). It splits the old 5-byte header 'trzd1' into a 4-byte magic 'trzd' plus a 1-byte version number. The change is framed by the authors as a necessary preparation for a future signature-quorum change, not as a fix for an active vulnerability. No currently reachable security flaw is present in the diff; the code still only accepts version '1', which keeps the existing 2-of-3 signature requirement.

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.

Security candidatefeat(ui,tron): support for native transfer with smart contract interactionby PrisionMike · f36dff00 · Aug 19, 2026 · 6 filesMessage 62 · AdequateLow 28Details
Commit message · PrisionMike

feat(ui,tron): support for native transfer with smart contract interaction

[no changelog]

62/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
cryptography-sensitive pathsigning or wallet path
AI analysis · Low 28/100

This commit adds user-interface support for Tron smart-contract transactions that also move native TRX coins. Previously, the device screen did not show the native TRX amount when a smart contract was involved. Now it can display that amount so the user sees what they are really sending. The change is mostly UI wiring and test data; it does not appear to alter transaction validation or signing logic.

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.

Security candidatefeat(legacy,core): add make.me.blink U2F dummy app IDby Andrew Kozlik · 1fe0ea1c · Aug 18, 2026 · 4 filesMessage 77 · AdequateInformational 21Details
Commit message · Andrew Kozlik

feat(legacy,core): add make.me.blink U2F dummy app ID

Show "not registered" message instead of a registration prompt when
Firefox sends its dummy U2F register request.

77/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body
Why it was queued
boot or update pathauthentication path
AI analysis · Informational 21/100

This commit is a small user-experience fix, not a security patch. Firefox's U2F support sends a special dummy registration request to check whether a security key is present. Trezor previously recognized two such dummy IDs, but Firefox's newer authenticator code uses a third one ('make.me.blink'). Without this change, Trezor would prompt the user to register the device, which is confusing. The fix makes Trezor show a simple 'not registered / already registered' message instead. It does not fix a vulnerability that lets an attacker steal funds or bypass protection.