FD
← All projectsFoundation

Passport firmware

Firmware for Foundation Passport Bitcoin signing devices.

BitcoinHardware walletsNormal
Repository coverage

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

43security candidates46second-pass queue123AI analyses
33commits · 30 days
53commits · 60 days
80commits · 180 days
133commits · 365 days
Backfill bands
Aug 5 → Feb 612 seen0 candidatesComplete
Feb 6 → Jun 659 seen3 candidatesComplete
Jun 6 → Jul 64 seen0 candidatesComplete
Jul 6 → Aug 52 seen0 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.

54/100 average clarity
6Strong · 80–100
38Adequate · 60–79
77Thin · 40–59
12Opaque · 0–39
4security candidates 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.
Matt Gleason651457351
Jacksper1314714367
Jack331731150
Jean-Pierre De Jesus DIAZ828061
mjg-foundation525065
Ken Carpenter313048
dependabot[bot]505076
Analysis record

Published AI watches

Last scanned 30 minutes ago

Informational 24 AI analysisMessage 73 · Adequate
FD FoundationPassport firmware BitcoinHardware wallets

Merge pull request #665 from Foundation-Devices/casa-crypto-account-export

This commit adds a new feature to Foundation's Passport hardware wallet that exports two cryptographic public keys for Casa wallet registration: the master extended public key and a separate Casa-specific key derived at path m/45'. The key…

New key-export surface: two public keys (master + m/45' derived) are now exported togetherSensitive material is public-key/chain-code only; no private keys are exportedExport channels remain QR and microSD, unchanged from prior Casa export behavior
5e499107by mjg-foundation+291−315 files
No security note in commit
Low 25 AI analysisMessage 73 · Adequate
FD FoundationPassport firmware BitcoinHardware wallets

Merge pull request #669 from Foundation-Devices/add-native-unchained-connect-wallet

This commit adds support for the Unchained wallet to the Passport hardware wallet. Most of the change is normal feature code, but it also introduces a new way to feed already-encoded data into the QR encoder and tightens up the encoder so …

New unsafe FFI function `ur_encoder_start_raw` added with documented safety preconditionsUR type string is validated (length, charset, UTF-8) before use in encoderEncoder now tracks a `started` flag and returns empty output if not started, reducing use-after-free/misuse risk
26bd36d5by mjg-foundation+426−1812 files
No security note in commit
Moderate 55 AI analysisMessage 78 · Adequate
FD FoundationPassport firmware BitcoinHardware wallets

Merge pull request #655 from Foundation-Devices/sft-7320-entropy-hardening

This firmware update hardens the way Passport generates random numbers. Previously, a failing or stuck hardware random-number generator could silently produce weak or repeated values, which is dangerous for creating secret keys. The patch …

Fail-closed RNG error handling: persistent seed/clock errors now trigger a fatal handler instead of returning potentially weak valuesST-recommended seed-error recovery (RM0433 section 34.3.7): clear SEIS and flush 12 discard words, with bounded retry attemptsDuplicate and zero-value rejection in rng_try_sample to avoid returning stuck or invalid RNG output
0f1a5325by mjg-foundation+150−379 files
Vendor flagged security relevance
High 71 AI analysisMessage 83 · Strong
FD FoundationPassport firmware BitcoinHardware wallets

Merge pull request #675 from Foundation-Devices/fix/verify-change-before-review

This firmware update moves the verification of Bitcoin 'change' addresses to happen before the user reviews the transaction on screen. Previously, the device checked whether change outputs truly belonged to the wallet only after the user h…

Reorders security-critical validation to occur before user approvalValidates change-output ownership before the review screen hides those outputsPrevents transaction signing if change derivation does not match the PSBT
1fea63c8by Jacksper13+174−454 files
Vendor flagged security relevance
Low 29 AI analysisMessage 83 · Strong
FD FoundationPassport firmware BitcoinHardware wallets

SFT-8098: skip change verification for transactions without change

This commit changes how the Passport hardware wallet reviews Bitcoin transactions that have no 'change' output. Previously, the wallet would always run a change-verification step that opens the secure key store, even when there was no chan…

Change reduces unnecessary access to the key store during transaction reviewNo cryptographic check is removed for transactions that actually contain changeUI label changed to more accurately describe the operation being performed
3df93748by Jacksper13+36−112 files
No security note in commit
Moderate 59 AI analysisMessage 83 · Strong
FD FoundationPassport firmware BitcoinHardware wallets

SFT-8098: complete change verification before transaction review

This commit moves a safety check earlier in the process of approving a Bitcoin transaction on the Passport hardware wallet. Previously, the wallet verified that 'change' outputs (money going back to your own wallet) truly belonged to you o…

Change-address verification moved from post-approval signing stage to pre-review stagePSBT change output ownership now proved before user is shown transaction detailsSensitive key derivation context closed before transaction review is displayed
fb88001cby Jacksper13+150−464 files
Vendor flagged security relevance
Informational 15 AI analysisMessage 58 · Thin
FD FoundationPassport firmware BitcoinHardware wallets

Merge pull request #673 from Foundation-Devices/SFT-7945-add-pytest-to-devshell

This commit is a routine development tooling and cleanup change. It adds the Pytest testing framework to the project's Nix development shell, fixes a test runner path, adds a GitHub Actions workflow to run simulator tests automatically, an…

d8ee1164by mjg-foundation+101−25825 files
No security note in commit
Informational 18 AI analysisMessage 73 · Adequate
FD FoundationPassport firmware BitcoinHardware wallets

Merge pull request #648 from Foundation-Devices/dependabot-host-tooling-hygiene

This commit updates the Python Pillow image-processing library used in host-side developer tooling from version 8.x to 12.3.x and requires Python 3.10 or newer. Pillow 8.x is known to have many publicly disclosed security vulnerabilities, …

Dependency version bump of a library with known historical vulnerabilities (Pillow 8.x)Constraint now requires Python 3.10+ alongside the newer Pillow major versionChange is limited to host tooling files (pyproject.toml, setup.py, requirements-optional.txt, tox.ini, DEVELOPMENT.md)
d6c05830by Jacksper13+6−55 files
No security note in commit
Informational 15 AI analysisMessage 58 · Thin
FD FoundationPassport firmware BitcoinHardware wallets

Merge pull request #649 from Foundation-Devices/bitcoin-safe-wallet-flow

This commit adds support for a new Bitcoin software wallet called 'Bitcoin Safe' to the Passport hardware wallet firmware. It is a straightforward feature addition that registers the wallet in the firmware's list of supported software wall…

9f1e36b0by Jacksper13+27−03 files
No security note in commit
Moderate 62 AI analysisMessage 58 · Thin
FD FoundationPassport firmware BitcoinHardware wallets

Merge pull request #653 from Foundation-Devices/show-op-return-output-amount

This update changes how the Passport hardware wallet displays Bitcoin transaction outputs that carry data (OP_RETURN outputs). Previously, only the embedded message was shown. Now the device also shows the amount of bitcoin assigned to tha…

UI spoofing hardening: user-controlled OP_RETURN data is now escaped before renderingNew display of OP_RETURN output amount reduces risk of hidden value leakageUnit test includes an attacker-controlled message simulating fake Amount/Destination headings
433c4a20by Jacksper13+79−33 files
No security note in commit
Moderate 59 AI analysisMessage 78 · Adequate
FD FoundationPassport firmware BitcoinHardware wallets

Merge pull request #660 from Foundation-Devices/fix/legacy-settings-overflow

This commit fixes a bug in how the Passport hardware wallet saves its settings to internal flash memory. Previously, the code checked whether the settings data was too large only after it had already picked and erased a flash storage slot.…

Buffer size validation moved before flash write/erase operationsReplaced broken 'assert false' crash path with explicit ValueErrorAdded unit test for oversized settings rejection
180e183dby Jacksper13+34−113 files
No security note in commit
Low 33 AI analysisMessage 78 · Adequate
FD FoundationPassport firmware BitcoinHardware wallets

tooling: constrain tox Pillow dependency (SFT-7281)

This commit tightens a software dependency used only in testing/development tooling. It prevents an automated test environment from installing old, known-vulnerable versions of the Pillow image library when running under Python 3.10. The c…

Dependency constraint added to block known-vulnerable Pillow versionsCommit message acknowledges prior path could install an older vulnerable releaseChange is in Trezor external module tooling, not Passport firmware runtime
56799183by Jack+2−12 files
Vendor flagged security relevance
High 73 AI analysisMessage 58 · Thin
FD FoundationPassport firmware BitcoinHardware wallets

Merge pull request #662 from Foundation-Devices/fix/unverified-psbt-fees

This firmware update fixes a security issue in the Passport hardware wallet's handling of Bitcoin transaction fees. Previously, when a transaction file (PSBT) only provided a claimed input amount without the full previous transaction to pr…

UI now displays 'Unverified' instead of a numeric network fee when input amounts cannot be independently verifiedNew assertion prevents witness/non-witness UTXO value or scriptPubKey mismatch for the same inputHistory-cache amount updates are deferred until after cryptographic proof of input ownership is completed
7b64e920by Jacksper13+336−627 files
Vendor flagged security relevance
Moderate 66 AI analysisMessage 58 · Thin
FD FoundationPassport firmware BitcoinHardware wallets

Merge pull request #661 from Foundation-Devices/fix/seedqr-validation

This update tightens the checks on SeedQR codes, which are QR codes that encode a wallet's backup seed phrase as numbers. Before, the decoder might accept invalid or oddly-sized numeric strings and either crash or produce an incorrect seed…

Input validation added to seed-import pathOut-of-range BIP-39 word index now rejected explicitlyNon-digit characters rejected before integer conversion
2c41d1c5by Jacksper13+59−63 files
No security note in commit
Informational 18 AI analysisMessage 28 · Opaque
FD FoundationPassport firmware BitcoinHardware wallets

fixed excess delete call

This tiny change removes two variables ('pu' and 'skp') from a Python 'del' cleanup statement in the code that signs Bitcoin transactions. The commit message says it fixes an 'excess delete call.' In Python, deleting a name that does not e…

Change is in a sensitive operation: PSBT signingOriginal code could raise NameError and crash the signing taskNo explicit security claim in commit message or diff
1b2efc8fby Matt Gleason+1−11 file
No security note in commit
Informational 15 AI analysisMessage 18 · Opaque
FD FoundationPassport firmware BitcoinHardware wallets

fixed format

This commit adds a single blank line between two test functions to fix code formatting. It makes no functional changes to the firmware or its tests.

52ade0a1by Matt Gleason+1−01 file
No security note in commit
Moderate 59 AI analysisMessage 58 · Thin
FD FoundationPassport firmware BitcoinHardware wallets

Merge pull request #672 from Foundation-Devices/fix/validate-local-multisig-xpub

This update fixes a validation gap when importing multisig wallets into the Passport hardware wallet. Previously, the device only checked that the public key matched; now it also checks the chain code. Without this check, a tampered extend…

Incomplete cryptographic input validation (public key only, not full xpub)Potential acceptance of tampered extended public keys in multisig wallet importFix adds chain_code equality check alongside existing public_key equality check
b1756906by Jacksper13+95−24 files
Vendor flagged security relevance
Informational 15 AI analysisMessage 60 · Adequate
FD FoundationPassport firmware BitcoinHardware wallets

SFT-7945: test suite working in devshell, removed unused translation

This commit is a routine cleanup and test-infrastructure change. It removes an unused translation system (translation files, imports, and a test), updates linting rules to no longer exclude the now-removed translation folder, and fixes the…

d8353514by Matt Gleason+25−21420 files
No security note in commit
Low 36 AI analysisMessage 45 · Thin
FD FoundationPassport firmware BitcoinHardware wallets

Integrate PSBT fee and amount validation

This commit adds a test fixture flag called witness_utxo to a fake PSBT input object used in unit tests, and documents a changelog entry about marking network fees as 'unverified' when a PSBT input's UTXO data cannot be verified. The actua…

PSBT fee/amount validationunverifiable inputs flagged as unverifiedwitness UTXO handling
409137c9by Jack+2−02 files
Vendor flagged security relevance
Moderate 60 AI analysisMessage 45 · Thin
FD FoundationPassport firmware BitcoinHardware wallets

Reuse sensitive values during PSBT validation

This firmware update changes how Passport validates Bitcoin transaction files (PSBTs) before signing. It makes two main improvements: it reuses the wallet's secret seed for fewer key-derivation operations, and it verifies that the claimed …

Deferred and batched sensitive key derivation during PSBT validationAmount-cache update moved after ownership/key-path proofNew assertion to block re-signing already-signed non-multisig inputs
f88420bfby Jack+72−213 files
Vendor flagged security relevance
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 queuedMerge pull request #665 from Foundation-Devices/casa-crypto-account-exportby mjg-foundation · 5e499107 · Sep 16, 2026 · 5 filesMessage 73 · AdequateInformational 24Details
Commit message · mjg-foundation

Merge pull request #665 from Foundation-Devices/casa-crypto-account-export

Export both Casa pairing keys by QR and microSD

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Links an issue, advisory, or supporting reference
Why it was queued
signing or wallet pathparser or protocol pathmerge-commit duplicate discountsecond-pass: security-sensitive path
AI analysis · Informational 24/100

This commit adds a new feature to Foundation's Passport hardware wallet that exports two cryptographic public keys for Casa wallet registration: the master extended public key and a separate Casa-specific key derived at path m/45'. The keys can be exported either as a QR code or saved to a microSD card. The change is a feature addition, not a bug fix, and there is no evidence in the commit that it addresses a security vulnerability. However, exporting additional key material always slightly increases the attack surface if the exported data is mishandled.

AI review queuedMerge pull request #669 from Foundation-Devices/add-native-unchained-connect-walletby mjg-foundation · 26bd36d5 · Sep 16, 2026 · 12 filesMessage 73 · AdequateLow 25Details
Commit message · mjg-foundation

Merge pull request #669 from Foundation-Devices/add-native-unchained-connect-wallet

Add native Unchained Connect Wallet support

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Links an issue, advisory, or supporting reference
Why it was queued
signing or wallet pathparser or protocol pathmerge-commit duplicate discountsecond-pass: security-sensitive path
AI analysis · Low 25/100

This commit adds support for the Unchained wallet to the Passport hardware wallet. Most of the change is normal feature code, but it also introduces a new way to feed already-encoded data into the QR encoder and tightens up the encoder so it won't produce output if it hasn't been started correctly. The simulator also gets clipboard copy/paste tweaks. There is no vendor statement that this fixes a security bug, and the changes look like defensive hardening rather than a patch for an active vulnerability.

Security candidateMerge pull request #655 from Foundation-Devices/sft-7320-entropy-hardeningby mjg-foundation · 0f1a5325 · Sep 16, 2026 · 9 filesMessage 78 · AdequateModerate 55Details
Commit message · mjg-foundation

Merge pull request #655 from Foundation-Devices/sft-7320-entropy-hardening

SFT-7320: Improve Passport Core hardware error handling

78/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Links an issue, advisory, or supporting reference✓ Names security-relevant behavior explicitly
Why it was queued
entropy or randomnessdefensive validationseed or entropy pathboot or update pathmerge-commit duplicate discount
AI analysis · Moderate 55/100

This firmware update hardens the way Passport generates random numbers. Previously, a failing or stuck hardware random-number generator could silently produce weak or repeated values, which is dangerous for creating secret keys. The patch makes the device detect bad randomness and either recover or permanently stop with a clear error screen, instead of continuing with potentially guessable secrets. It also routes all MicroPython randomness through the same checked generator.

AI review queuedMerge pull request #675 from Foundation-Devices/fix/verify-change-before-reviewby Jacksper13 · 1fea63c8 · Sep 14, 2026 · 4 filesMessage 83 · StrongHigh 71Details
Commit message · Jacksper13

Merge pull request #675 from Foundation-Devices/fix/verify-change-before-review

Complete change verification before transaction review

83/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference
Why it was queued
defensive validationsigning or wallet pathmerge-commit duplicate discountsecond-pass: security-sensitive path
AI analysis · High 71/100

This firmware update moves the verification of Bitcoin 'change' addresses to happen before the user reviews the transaction on screen. Previously, the device checked whether change outputs truly belonged to the wallet only after the user had already approved the transaction and while it was about to sign. Because the review screen hides change outputs from the user, a malicious or buggy PSBT could have asked the device to send change to an attacker's address, and the user would never see it before approving. The fix ensures the wallet proves it owns every hidden change output before showing the review screen, so a mismatch aborts the transaction before the user is asked to confirm.

AI review queuedSFT-8098: skip change verification for transactions without changeby Jacksper13 · 3df93748 · Sep 11, 2026 · 2 filesMessage 83 · StrongLow 29Details
Commit message · Jacksper13

SFT-8098: skip change verification for transactions without change

Avoid opening the key store when review does not require change verification. Clarify the spinner label and cover cancellation with and without change.

83/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
Why it was queued
defensive validationsigning or wallet pathsecond-pass: near security thresholdsecond-pass: security-sensitive path
AI analysis · Low 29/100

This commit changes how the Passport hardware wallet reviews Bitcoin transactions that have no 'change' output. Previously, the wallet would always run a change-verification step that opens the secure key store, even when there was no change to verify. Now it skips that step when there is no change, and updates the on-screen spinner label from 'Validating transaction' to 'Verifying change' so the user knows what is happening. The change is framed by the developer as a user-experience and clarity improvement, not as a fix for a known security vulnerability.

AI review queuedSFT-8098: complete change verification before transaction reviewby Jacksper13 · fb88001c · Sep 11, 2026 · 4 filesMessage 83 · StrongModerate 59Details
Commit message · Jacksper13

SFT-8098: complete change verification before transaction review

Reuse the existing check after wallet approval and before transaction details. Keep one verification pass and extend the approval flow regressions.

83/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
Why it was queued
defensive validationsigning or wallet pathsecond-pass: near security thresholdsecond-pass: security-sensitive path
AI analysis · Moderate 59/100

This commit moves a safety check earlier in the process of approving a Bitcoin transaction on the Passport hardware wallet. Previously, the wallet verified that 'change' outputs (money going back to your own wallet) truly belonged to you only after you had already reviewed the transaction and approved signing. Now that ownership proof happens before the transaction details are shown to the user. This prevents a scenario where a malicious or buggy PSBT (the file describing the transaction) hides a change address that actually belongs to an attacker, because the wallet will refuse to show the review screen if it cannot prove the change is yours. The change is defensive: it closes a window where a user might approve a transaction whose change output has not yet been validated.

Security candidateMerge pull request #673 from Foundation-Devices/SFT-7945-add-pytest-to-devshellby mjg-foundation · d8ee1164 · Sep 11, 2026 · 25 filesMessage 58 · ThinInformational 15Details
Commit message · mjg-foundation

Merge pull request #673 from Foundation-Devices/SFT-7945-add-pytest-to-devshell

SFT-7945: Add Pytest to Nix Devshell

58/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Links an issue, advisory, or supporting reference! No meaningful explanatory body
Why it was queued
seed or entropy pathauthentication pathmerge-commit duplicate discount
AI analysis · Informational 15/100

This commit is a routine development tooling and cleanup change. It adds the Pytest testing framework to the project's Nix development shell, fixes a test runner path, adds a GitHub Actions workflow to run simulator tests automatically, and removes an unused translation system along with its associated tests. There is no indication this change fixes a security vulnerability or introduces a security-relevant behavior.

Lower-prioritySFT-7945: removed excess simulator teardown testby Matt Gleason · fc2b53fb · Sep 10, 2026 · 1 fileMessage 55 · ThinTriage 0Details
Commit message · Matt Gleason

SFT-7945: removed excess simulator teardown test

55/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Mentions testing or verification! No meaningful explanatory body
Lower-prioritySFT-7945: refined simulator teardownby Matt Gleason · a3394712 · Sep 10, 2026 · 2 filesMessage 45 · ThinTriage 0Details
Commit message · Matt Gleason

SFT-7945: refined simulator teardown

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Lower-prioritySFT-7945: used test_spi_flash.bin to avoid persistent simulator databy Matt Gleason · c3304687 · Sep 9, 2026 · 2 filesMessage 72 · AdequateTriage 0Details
Commit message · Matt Gleason

SFT-7945: used test_spi_flash.bin to avoid persistent simulator data
affecting or being modified by tests

72/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Explains rationale or failure mode✓ Mentions testing or verification! No meaningful explanatory body
Lower-prioritySFT-7945: more stable simulator teardownby Matt Gleason · 0dfd45cc · Sep 9, 2026 · 1 fileMessage 45 · ThinTriage 0Details
Commit message · Matt Gleason

SFT-7945: more stable simulator teardown

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Lower-prioritySFT-7945: removed legacy settings test, because they targeted simulatorby Matt Gleason · e4a93380 · Sep 2, 2026 · 2 filesMessage 87 · StrongTriage 0Details
Commit message · Matt Gleason

SFT-7945: removed legacy settings test, because they targeted simulator
settings and require manual/integration tests on hardware

87/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Explains rationale or failure mode✓ Mentions testing or verification
Security candidateMerge pull request #648 from Foundation-Devices/dependabot-host-tooling-hygieneby Jacksper13 · d6c05830 · Sep 2, 2026 · 5 filesMessage 73 · AdequateInformational 18Details
Commit message · Jacksper13

Merge pull request #648 from Foundation-Devices/dependabot-host-tooling-hygiene

Update Pillow constraints for host tooling

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Links an issue, advisory, or supporting reference
Why it was queued
boot or update pathautomated dependency-update discountmerge-commit duplicate discount
AI analysis · Informational 18/100

This commit updates the Python Pillow image-processing library used in host-side developer tooling from version 8.x to 12.3.x and requires Python 3.10 or newer. Pillow 8.x is known to have many publicly disclosed security vulnerabilities, so the change likely removes exposure to those bugs during firmware build and test workflows. The change does not alter the firmware that runs on the Passport device itself, only the tools that run on a developer's computer.

AI review queuedMerge pull request #649 from Foundation-Devices/bitcoin-safe-wallet-flowby Jacksper13 · 9f1e36b0 · Sep 2, 2026 · 3 filesMessage 58 · ThinInformational 15Details
Commit message · Jacksper13

Merge pull request #649 from Foundation-Devices/bitcoin-safe-wallet-flow

Add Bitcoin Safe wallet flow

58/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Links an issue, advisory, or supporting reference! No meaningful explanatory body
Why it was queued
signing or wallet pathmerge-commit duplicate discountsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit adds support for a new Bitcoin software wallet called 'Bitcoin Safe' to the Passport hardware wallet firmware. It is a straightforward feature addition that registers the wallet in the firmware's list of supported software wallets and defines how to export wallet data to it (via QR code or microSD card). There is no indication of a security bug, vulnerability, or fix in the changed code.

AI review queuedMerge pull request #653 from Foundation-Devices/show-op-return-output-amountby Jacksper13 · 433c4a20 · Sep 2, 2026 · 3 filesMessage 58 · ThinModerate 62Details
Commit message · Jacksper13

Merge pull request #653 from Foundation-Devices/show-op-return-output-amount

Show amounts for OP_RETURN outputs

58/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Links an issue, advisory, or supporting reference! No meaningful explanatory body
Why it was queued
signing or wallet pathmerge-commit duplicate discountsecond-pass: security-sensitive path
AI analysis · Moderate 62/100

This update changes how the Passport hardware wallet displays Bitcoin transaction outputs that carry data (OP_RETURN outputs). Previously, only the embedded message was shown. Now the device also shows the amount of bitcoin assigned to that output and escapes the message text so a crafted message cannot fake extra user-interface labels (like a fake 'Amount' or 'Destination' section). The included tests demonstrate that an attacker who controls an OP_RETURN message can no longer make the screen look like a real payment destination is being sent funds.

Security candidateMerge pull request #660 from Foundation-Devices/fix/legacy-settings-overflowby Jacksper13 · 180e183d · Sep 2, 2026 · 3 filesMessage 78 · AdequateModerate 59Details
Commit message · Jacksper13

Merge pull request #660 from Foundation-Devices/fix/legacy-settings-overflow

Validate legacy settings before flash writes

78/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Links an issue, advisory, or supporting reference✓ Names security-relevant behavior explicitly
Why it was queued
memory safetydefensive validationmerge-commit duplicate discount
AI analysis · Moderate 59/100

This commit fixes a bug in how the Passport hardware wallet saves its settings to internal flash memory. Previously, the code checked whether the settings data was too large only after it had already picked and erased a flash storage slot. If the data was too big, the code hit a broken 'assert false' statement that would crash the device. The fix moves the size check earlier, before any flash slot is touched, and replaces the crash with a proper error. A new unit test confirms that oversized settings are rejected before any flash operation happens.

Lower-prioritySFT-7945: simulator and test startup improvements, moved tests to theirby Matt Gleason · 6e1f3899 · Aug 31, 2026 · 3 filesMessage 60 · AdequateTriage 0Details
Commit message · Matt Gleason

SFT-7945: simulator and test startup improvements, moved tests to their
own CI workflow

60/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Mentions testing or verification! No meaningful explanatory body
Security candidatetooling: constrain tox Pillow dependency (SFT-7281)by Jack · 56799183 · Aug 28, 2026 · 2 filesMessage 78 · AdequateLow 33Details
Commit message · Jack

tooling: constrain tox Pillow dependency (SFT-7281)

The tox requirements path bypassed the Pillow constraint and could install an older vulnerable release. Exercise the supported constrained dependency under Python 3.10 while retaining the legacy environments without Pillow.

78/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Names security-relevant behavior explicitly
Why it was queued
boot or update path
AI analysis · Low 33/100

This commit tightens a software dependency used only in testing/development tooling. It prevents an automated test environment from installing old, known-vulnerable versions of the Pillow image library when running under Python 3.10. The change does not alter the firmware that runs on the Passport device itself, so end-user funds or device security are not directly at risk. It is a preventive hygiene fix for the developer build/test pipeline.

Security candidateMerge pull request #662 from Foundation-Devices/fix/unverified-psbt-feesby Jacksper13 · 7b64e920 · Aug 28, 2026 · 7 filesMessage 58 · ThinHigh 73Details
Commit message · Jacksper13

Merge pull request #662 from Foundation-Devices/fix/unverified-psbt-fees

Avoid displaying unverified PSBT fees

58/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Links an issue, advisory, or supporting reference! No meaningful explanatory body
Why it was queued
signing boundarysigning or wallet pathmerge-commit duplicate discount
AI analysis · High 73/100

This firmware update fixes a security issue in the Passport hardware wallet's handling of Bitcoin transaction fees. Previously, when a transaction file (PSBT) only provided a claimed input amount without the full previous transaction to prove it, Passport would calculate and display a network fee as if it were verified. A malicious or buggy companion wallet could lie about input amounts, making the fee look smaller than it actually is and tricking the user into approving a transaction that sends more money to fees or an attacker than shown. The fix marks such fees as 'Unverified' on screen and in warnings, and adds cross-checks when both witness and non-witness input data are present. It also moves key-derivation verification earlier so bogus ownership metadata cannot be recorded in the device's history cache.

Security candidateMerge pull request #661 from Foundation-Devices/fix/seedqr-validationby Jacksper13 · 2c41d1c5 · Aug 28, 2026 · 3 filesMessage 58 · ThinModerate 66Details
Commit message · Jacksper13

Merge pull request #661 from Foundation-Devices/fix/seedqr-validation

Reject malformed SeedQR payloads

58/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Links an issue, advisory, or supporting reference! No meaningful explanatory body
Why it was queued
seed or entropy pathmerge-commit duplicate discount
AI analysis · Moderate 66/100

This update tightens the checks on SeedQR codes, which are QR codes that encode a wallet's backup seed phrase as numbers. Before, the decoder might accept invalid or oddly-sized numeric strings and either crash or produce an incorrect seed. Now it rejects anything that isn't the right length, isn't all digits, or contains word index numbers that are too high. This protects users from importing a corrupted or attacker-crafted seed that could lead to an unusable or insecure wallet.

AI review queuedfixed excess delete callby Matt Gleason · 1b2efc8f · Aug 27, 2026 · 1 fileMessage 28 · OpaqueInformational 18Details
Commit message · Matt Gleason

fixed excess delete call

28/100 · OpaqueMessage clarity
✓ Subject identifies a change! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: opaque commit messagesecond-pass: security-sensitive path
AI analysis · Informational 18/100

This tiny change removes two variables ('pu' and 'skp') from a Python 'del' cleanup statement in the code that signs Bitcoin transactions. The commit message says it fixes an 'excess delete call.' In Python, deleting a name that does not exist raises a NameError, which would crash the signing task. The patch prevents that crash but does not appear to be a security vulnerability itself; it is a bug fix for a runtime error in sensitive code.

AI review queuedfixed formatby Matt Gleason · 52ade0a1 · Aug 27, 2026 · 1 fileMessage 18 · OpaqueInformational 15Details
Commit message · Matt Gleason

fixed format

18/100 · OpaqueMessage clarity
✓ Subject identifies a change! Too few words to establish purpose! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
AI analysis · Informational 15/100

This commit adds a single blank line between two test functions to fix code formatting. It makes no functional changes to the firmware or its tests.

Lower-prioritySFT-7945: updated flake lock to bump pillow to 12.3.0by Matt Gleason · 50cd8d9f · Aug 27, 2026 · 1 fileMessage 50 · ThinTriage 0Details
Commit message · Matt Gleason

SFT-7945: updated flake lock to bump pillow to 12.3.0

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
AI review queuedMerge pull request #672 from Foundation-Devices/fix/validate-local-multisig-xpubby Jacksper13 · b1756906 · Aug 27, 2026 · 4 filesMessage 58 · ThinModerate 59Details
Commit message · Jacksper13

Merge pull request #672 from Foundation-Devices/fix/validate-local-multisig-xpub

Validate complete local multisig xpubs

58/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Links an issue, advisory, or supporting reference! No meaningful explanatory body
Why it was queued
defensive validationsigning or wallet pathmerge-commit duplicate discountsecond-pass: security-sensitive path
AI analysis · Moderate 59/100

This update fixes a validation gap when importing multisig wallets into the Passport hardware wallet. Previously, the device only checked that the public key matched; now it also checks the chain code. Without this check, a tampered extended public key (xpub) could have been accepted as belonging to the wallet, potentially allowing an attacker to silently change the wallet's receiving addresses or make future transactions look valid when they are not. The fix is accompanied by a new test that confirms mismatched chain codes are rejected.

Security candidateSFT-7945: test suite working in devshell, removed unused translationby Matt Gleason · d8353514 · Aug 27, 2026 · 20 filesMessage 60 · AdequateInformational 15Details
Commit message · Matt Gleason

SFT-7945: test suite working in devshell, removed unused translation
system and tests

60/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Mentions testing or verification! No meaningful explanatory body
Why it was queued
seed or entropy pathauthentication path
AI analysis · Informational 15/100

This commit is a routine cleanup and test-infrastructure change. It removes an unused translation system (translation files, imports, and a test), updates linting rules to no longer exclude the now-removed translation folder, and fixes the test runner path and simulator fixture reliability. There is no security-relevant behavior change in the firmware itself.