SW
← All projectsSparrow

Sparrow Wallet

Desktop Bitcoin wallet focused on security, privacy, multisignature, and hardware signers.

BitcoinHardware integrationSoftware walletsNormal
Repository coverage

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

71security candidates271second-pass queue399AI analyses
88commits · 30 days
151commits · 60 days
249commits · 180 days
404commits · 365 days
Backfill bands
Aug 5 → Feb 6100 seen9 candidatesComplete
Feb 6 → Jun 6128 seen15 candidatesComplete
Jun 6 → Jul 67 seen1 candidatesComplete
Jul 6 → Aug 546 seen8 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.

48/100 average clarity
0Strong · 80–100
35Adequate · 60–79
324Thin · 40–59
51Opaque · 0–39
2security 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.
Craig Raw39667385647
doblon8313048
nzb-tuxxx212060
Michele Balistreri212048
nroktib111050
Liz Lightning202045
PeterXMR101045
Ian McKenzie101050
ottosch101050
craigraw101060
Analysis record

Published AI watches

Last scanned 31 minutes ago

Informational 17 AI analysisMessage 50 · Thin
SW SparrowSparrow Wallet BitcoinHardware integrationSoftware wallets

remove the surplus signatures progress bar segments a finalized multisig transaction discards

This commit fixes a UI display bug in Sparrow Wallet's signature progress bar. When a multi-signature Bitcoin transaction becomes finalized, extra signatures beyond the required threshold are discarded. Previously, the progress bar did not…

UI state desynchronization after multisig finalizationProgress bar segment count mismatch with actual signature setNo change to cryptographic or transaction validation code
40f77206by Craig Raw+9−12 files
No security note in commit
Informational 15 AI analysisMessage 38 · Opaque
SW SparrowSparrow Wallet BitcoinHardware integrationSoftware wallets

bump to v2.5.6

This commit is a routine version bump from 2.5.5 to 2.5.6. It only changes version strings in four files (build configuration, documentation, macOS app metadata, and a Java source constant). There are no code logic changes, no bug fixes, a…

f7f36d00by Craig Raw+4−44 files
No security note in commit
Informational 17 AI analysisMessage 50 · Thin
SW SparrowSparrow Wallet BitcoinHardware integrationSoftware wallets

use a framerate-capped interpolated timeline for the server toggle and wallet tab loading pulse animations, and stop any running server toggle pulse before starting a new one

This commit tweaks two visual animations in the Sparrow Wallet desktop app: the server connection toggle pulse and the wallet loading pulse. It caps how often the screen is redrawn during the pulse and makes sure any already-running pulse …

Resource-consumption / performance hardening: capped animation framerate reduces CPU/GPU load from continuous 60 Hz redraws.State-management hardening: stopping an existing pulse before starting a new one prevents accumulation of running Timelines.No direct security flaw is present in the diff; signals are defensive-hardening in nature.
4da29f4eby Craig Raw+7−132 files
No security note in commit
Low 45 AI analysisMessage 50 · Thin
SW SparrowSparrow Wallet BitcoinHardware integrationSoftware wallets

cut pasted amounts to the unit precision in the send tab and send to many, and stop the csv import skipping fractional sats and exponent amounts

This commit fixes how Sparrow Wallet handles pasted or imported Bitcoin amounts. Previously, very small or oddly formatted amounts (like scientific notation '1e-8' or fractional satoshis) could be misread or silently skipped during CSV imp…

Amount parsing inconsistency between UI paste and CSV importSilent swallowing of NumberFormatException could skip payment rowsUse of Double.parseDouble for monetary amounts
9e999d3fby Craig Raw+39−362 files
No security note in commit
Informational 15 AI analysisMessage 50 · Thin
SW SparrowSparrow Wallet BitcoinHardware integrationSoftware wallets

add a system theme option that follows the os light or dark setting, and make it the default for new installs

This commit adds a new 'System' theme option to the Sparrow Wallet desktop app that automatically follows the operating system's light or dark mode setting, and makes it the default for new installations. It also updates various UI compone…

a573f22aby Craig Raw+90−3215 files
No security note in commit
Low 36 AI analysisMessage 50 · Thin
SW SparrowSparrow Wallet BitcoinHardware integrationSoftware wallets

refuse bitbox02 keystore import and discovery for legacy p2sh and p2pkh wallets it cannot sign for, and hide those script types from the device import menus

This commit tightens how Sparrow Wallet handles BitBox02 hardware wallets when working with older Bitcoin address formats (legacy P2PKH and P2SH). Previously, the app could let a user import or discover a wallet that the BitBox02 cannot ac…

Prevents user from configuring a signing device for wallet types the device cannot sign forCould avoid funds becoming unspendable or requiring complex recovery if a user unknowingly imported an unsupported legacy script typeReplaces hard-coded device-specific logic with a generic capability model, reducing future similar issues
de169b18by Craig Raw+23−73 files
No security note in commit
Low 37 AI analysisMessage 50 · Thin
SW SparrowSparrow Wallet BitcoinHardware integrationSoftware wallets

reject unknown command line options and values given to flags with an error and exit code instead of starting on the default network, and accept the --option=value form

This commit tightens how Sparrow Wallet handles command-line arguments. Previously, typos or unexpected values could silently be ignored, causing the wallet to start on the default Bitcoin network instead of the one the user intended. Now,…

Command-line argument parsing now rejects unknown options instead of silently ignoring themBoolean flags now reject `--flag=value` forms that would otherwise silently pass the value through as a file/URI argumentProgram now exits with non-zero status on argument errors, reducing risk of unintended default-network startup
46197586by Craig Raw+26−12 files
No security note in commit
Low 37 AI analysisMessage 50 · Thin
SW SparrowSparrow Wallet BitcoinHardware integrationSoftware wallets

ignore amount digits beyond the selected unit precision in the send tab amount and fee fields and the send to many grid, instead of truncating them in the payment

This commit fixes a UI bug in the Sparrow Bitcoin wallet where typing or pasting too many decimal digits into amount or fee fields could be silently truncated, potentially causing a user to send a different amount than they saw on screen. …

Precision-loss / truncation bug in financial input fieldsUser-facing amount/fee mismatch between displayed value and parsed valueInput validation now tied to unit-specific precision (satoshis indivisible)
6cde97adby Craig Raw+48−315 files
No security note in commit
Low 41 AI analysisMessage 50 · Thin
SW SparrowSparrow Wallet BitcoinHardware integrationSoftware wallets

derive public keys from the seed when importing a sparrow wallet file

This commit changes how Sparrow Wallet restores its own wallet files. Previously, when importing a Sparrow wallet file, the public keys (used to find transactions and addresses) might not be correctly rebuilt from the seed phrase. The fix …

Correctness fix for key material restoration during wallet importAdds test coverage for encrypted and unencrypted seed-based wallet importAdds test coverage for watch-only wallet import
1fb4e8bbby Craig Raw+149−23 files
No security note in commit
Informational 21 AI analysisMessage 50 · Thin
SW SparrowSparrow Wallet BitcoinHardware integrationSoftware wallets

add file import of the xpub descriptor jade writes to usb storage

This commit adds the ability to import a Bitcoin wallet's extended public key (xpub) into Sparrow Wallet from a file written by a Blockstream Jade hardware wallet via USB storage. Previously, Jade only supported QR-code import. The change …

New file import path parses external descriptor data and converts it to a keystoreScript type mismatch is explicitly rejected with an IllegalArgumentExceptionSilent payments policy (SINGLE_SP) is explicitly rejected
c4b53879by Craig Raw+74−44 files
No security note in commit
Low 34 AI analysisMessage 50 · Thin
SW SparrowSparrow Wallet BitcoinHardware integrationSoftware wallets

include the non-witness utxo in psbts for krux keystores, and in the qr display when the psbt has more than one input

This commit changes how Sparrow Wallet builds QR codes for partially-signed Bitcoin transactions (PSBTs). For certain hardware wallets (Krux), it now includes extra data (the full previous transaction, called 'non-witness utxo') in the QR …

Hardware wallet signing correctness: missing non-witness UTXO data can cause some signers to reject or mis-handle multi-input segwit PSBTsQR payload size increase: larger QR codes may be harder to scan reliably, potentially affecting usabilitySubproject update (drongo) likely contains related serialization logic changes
0e2c402fby Craig Raw+4−32 files
No security note in commit
Low 35 AI analysisMessage 50 · Thin
SW SparrowSparrow Wallet BitcoinHardware integrationSoftware wallets

clear a scanned wallet when a file, text payload or unrecognised qr is imported in the same pane

This commit fixes a UI state bug in Sparrow Wallet's import pane. Previously, when a user scanned or imported a wallet and then imported a non-wallet file, text payload, or unrecognized QR code in the same pane, the previously loaded walle…

Stale UI state could mislead users about which wallet is loadedCross-import state retention in single import paneUser interface consistency fix with security-relevant consequences
d7ded1e7by Craig Raw+4−21 file
No security note in commit
Low 35 AI analysisMessage 50 · Thin
SW SparrowSparrow Wallet BitcoinHardware integrationSoftware wallets

lock the cormorant store against client connection reads and serve history as a copy, and close the client socket however its handler exits

This commit fixes two reliability issues in Sparrow Wallet's built-in Electrum server (Cormorant). First, it makes sure the internal transaction store is locked while being read or updated, and returns a fresh copy of a wallet's history so…

Concurrency: shared mutable store accessed by client handler and polling threads now synchronizedData consistency: history returned as a defensive copy to avoid iterator seeing concurrent modificationsResource leak: client socket now closed in finally block regardless of exception path
6cc4d50aby Craig Raw+57−94 files
No security note in commit
Low 44 AI analysisMessage 50 · Thin
SW SparrowSparrow Wallet BitcoinHardware integrationSoftware wallets

ensure cormorant responses and notifications are always serialized per client connection

This commit fixes a race condition in Sparrow Wallet's built-in Electrum server (Cormorant). Previously, a response to a wallet client and an asynchronous notification (like a new block or a balance update) could be written to the same net…

Race condition on shared socket output streamConcurrent writes from RPC response path and event-bus notification pathPotential interleaving/framing of JSON-RPC messages on same TCP connection
6d9d3014by Craig Raw+146−303 files
No security note in commit
Low 27 AI analysisMessage 50 · Thin
SW SparrowSparrow Wallet BitcoinHardware integrationSoftware wallets

wake a silent payments history waiter when a failed widening restores a completed scan, rather than leaving it parked for the session

This commit fixes a bug in Sparrow Wallet's silent-payments scanning cache. If a background scan had already finished, then a later 'widening' request to extend the scan failed and rolled back, any history request that arrived during the f…

Concurrency / condition-variable waiter starvationSilent-payments history lookup hang / wallet UI unresponsivenessFailure-recovery path missing signal on rollback
7868a94dby Craig Raw+100−122 files
No security note in commit
Informational 18 AI analysisMessage 60 · Adequate
SW SparrowSparrow Wallet BitcoinHardware integrationSoftware wallets

guard a short server.version response in the desktop and terminal connection tests

This commit fixes a minor crash bug in Sparrow Wallet's connection-test screens. Previously, if a Bitcoin Electrum server answered the version request with an unusually short response, the wallet would try to read list items that didn't ex…

Input validation hardening for external server responseIndexOutOfBoundsException prevented in UI feedback pathNo cryptographic, authentication, or transaction logic touched
66348fafby Craig Raw+4−42 files
No security note in commit
Low 37 AI analysisMessage 50 · Thin
SW SparrowSparrow Wallet BitcoinHardware integrationSoftware wallets

omit a paynym contact whose payment code does not parse rather than keeping it with a null code or failing the whole paynym response

This commit fixes a bug in Sparrow Wallet's PayNym (BIP47 reusable payment code) contact handling. Previously, if a single contact in your PayNym following/followers list had a malformed payment code, the app either kept a broken contact w…

Null payment code previously stored in contact objectPotential NullPointerException or downstream dereference of null PaymentCode in contact lists/searchWhole PayNym response could fail on one malformed contact
94ebb849by Craig Raw+43−114 files
No security note in commit
Informational 19 AI analysisMessage 50 · Thin
SW SparrowSparrow Wallet BitcoinHardware integrationSoftware wallets

skip the exchange currencies request in offline mode in the desktop and terminal general settings

This change stops Sparrow Wallet from trying to fetch live fiat-currency exchange rates when the user has explicitly chosen 'offline mode'. Instead of making a network request that is doomed to fail, it now reuses the currency already save…

Avoids unnecessary network egress in offline modeReduces error/warning noise for expected offline behavior
b91f7993by Craig Raw+15−12 files
No security note in commit
Low 37 AI analysisMessage 50 · Thin
SW SparrowSparrow Wallet BitcoinHardware integrationSoftware wallets

skip addresses already given out under a label and widen the gap limit on an explicit advance in the terminal receive dialog

This commit fixes two related Bitcoin wallet behaviors in Sparrow. First, when you ask for a new receive address, the wallet now skips any address that already has a label, because a label means that address was already given to someone. P…

Address reuse prevention: labeled-but-empty addresses are now skipped consistently across desktop and terminal receive flowsGap-limit widening on explicit advance reduces risk of missing funds during wallet recovery/rescanLogic centralized in WalletForm to reduce UI-specific divergence
cae870ceby Craig Raw+85−164 files
No security note in commit
Low 44 AI analysisMessage 50 · Thin
SW SparrowSparrow Wallet BitcoinHardware integrationSoftware wallets

cap bbqr display and pdf encodings at the 1295 parts the header can number, using larger parts for data that needs more rather than emitting a sequence that cannot be reassembled

This commit fixes a bug in Sparrow Wallet's BBQ QR code format. Previously, if a large transaction or data blob needed more than 1,295 QR-code-sized pieces, the app would generate pieces with impossible sequence numbers that could not be r…

Integer/sequence-number overflow-like limit violation in a data-encoding protocolPotential denial-of-service or data-integrity failure when exporting large transactions via QRRound-trip unit test added to prevent regression
4b5326d8by Craig Raw+27−12 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 queuedrecognise a silent payments descriptor when matching label origins and reading a descriptor pdfby Craig Raw · 10b001e8 · Sep 10, 2026 · 4 filesMessage 50 · ThinInformational 19Details
Commit message · Craig Raw

recognise a silent payments descriptor when matching label origins and reading a descriptor pdf

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 19/100

This commit adds support for a newer Bitcoin address format called 'silent payments' when Sparrow Wallet reads wallet labels from files or PDFs. Before this change, the wallet could fail to recognize silent-payment descriptors, so labels tied to those addresses might not be imported or matched correctly. There is no direct evidence this is a security vulnerability—no funds could be stolen—but it is a correctness fix that prevents silent-payment users from silently losing label metadata.

Lower-prioritycopy the stored table layout of a wallet, and clear it and the silent payment addresses on a new accountby Craig Raw · a7541fff · Sep 10, 2026 · 1 fileMessage 50 · ThinTriage 0Details
Commit message · Craig Raw

copy the stored table layout of a wallet, and clear it and the silent payment addresses on a new account

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
AI review queuedfetch all nodes on a silent payments refresh when a reorg has invalidated any of themby Craig Raw · c3e76454 · Sep 10, 2026 · 1 fileMessage 50 · ThinModerate 59Details
Commit message · Craig Raw

fetch all nodes on a silent payments refresh when a reorg has invalidated any of them

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
defensive validationsigning or wallet pathsecond-pass: near security thresholdsecond-pass: security-sensitive path
AI analysis · Moderate 59/100

This commit fixes a bug in Sparrow Wallet's handling of silent payments after a blockchain reorganization (reorg). When the blockchain briefly rewinds and then re-adds a transaction at the same height, the wallet might not refresh all of its payment addresses, potentially leaving some balances or transaction statuses outdated. The fix forces a full refresh of all wallet nodes whenever any address was previously invalidated by a reorg, ensuring no stale data is missed.

AI review queueddo not advance the stored block height of a silent payments wallet until a scan has covered itby Craig Raw · 314ac184 · Sep 10, 2026 · 1 fileMessage 50 · ThinLow 41Details
Commit message · Craig Raw

do not advance the stored block height of a silent payments wallet until a scan has covered it

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Low 41/100

This commit fixes a bookkeeping bug in Sparrow Wallet for silent-payments wallets. Previously, the wallet could record that it had scanned up to a certain block height before the scan actually finished. If the app then restarted, it might skip scanning that block range and miss payments sent to it. The change makes the wallet wait until a scan has actually covered a block before advancing its stored starting point for the next scan.

AI review queuedname the sortedmulti reinterpretation in the message for a bsms record whose first address does not matchby Craig Raw · 1675e206 · Sep 10, 2026 · 1 fileMessage 50 · ThinInformational 19Details
Commit message · Craig Raw

name the sortedmulti reinterpretation in the message for a bsms record whose first address does not match

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 19/100

This commit only changes the text of an error message shown to users when importing a Bitcoin Secure Multisig Setup (BSMS) record. It makes the message clearer about why Sparrow treats a multi() quorum as a sortedmulti() equivalent and explains that addresses may differ from other signers if they don't sort keys the same way. There is no code behavior change, no vulnerability fix, and no security-relevant logic change.

AI review queuedrefuse to display a wallet seed in the terminal when the wallet was locked while its key was derivedby Craig Raw · f7b637d0 · Sep 10, 2026 · 1 fileMessage 50 · ThinModerate 58Details
Commit message · Craig Raw

refuse to display a wallet seed in the terminal when the wallet was locked while its key was derived

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Moderate 58/100

This commit fixes a timing-related issue in Sparrow Wallet's terminal version. If a user asked to view their wallet seed and the wallet auto-locked before the password-derived key was ready, the app could still try to display the seed using a stale/untrusted state. The patch now checks whether the wallet locked during key derivation and refuses to show the seed if so, preventing possible exposure of the seed when the user no longer has an active unlocked session.

AI review queuedderive the fee of a wallet transaction from the transactions funding its inputs rather than the value its history entry reportsby Craig Raw · b6d74f80 · Sep 10, 2026 · 5 filesMessage 50 · ThinModerate 63Details
Commit message · Craig Raw

derive the fee of a wallet transaction from the transactions funding its inputs rather than the value its history entry reports

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Moderate 63/100

This commit changes how Sparrow Wallet calculates transaction fees. Previously, the wallet trusted the fee value reported by the Electrum server for each transaction. Now, when the wallet already knows the transactions that fund a given transaction's inputs, it calculates the fee directly from those input amounts minus the outputs. The server's reported fee is only used as a fallback when the wallet cannot derive the fee itself. This reduces the risk that a malicious or faulty server could trick the wallet into using an incorrect fee—particularly when the user later tries to bump a transaction's fee using RBF or CPFP.

AI review queueddo not import wallet descriptors on a cormorant started to test a server connectionby Craig Raw · b59f355b · Sep 10, 2026 · 1 fileMessage 60 · AdequateLow 35Details
Commit message · Craig Raw

do not import wallet descriptors on a cormorant started to test a server connection

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

This commit fixes a logic bug in Sparrow Wallet's Cormorant feature. Previously, when Cormorant was started only to test a connection to a Bitcoin server (not to actually manage wallets), it could still try to check or import wallet descriptors. The fix adds a guard so that wallet import checks are skipped when Cormorant is in 'test server connection' mode. This prevents unintended wallet operations and reduces the risk of exposing wallet information or causing errors during a simple connection test.

AI review queuedcancel a retrying connection attempt when testing a server to avoid resource sharingby Craig Raw · 75cd6ceb · Sep 10, 2026 · 3 filesMessage 72 · AdequateLow 26Details
Commit message · Craig Raw

cancel a retrying connection attempt when testing a server to avoid resource sharing

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
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Low 26/100

This commit adds a way to stop an ongoing background server connection attempt when the user tries to test or switch to a different server. Before the change, a retrying connection could keep running in the background while a new test connection started, causing the two attempts to share or fight over the same network resources. The fix cancels the old attempt first, then starts the new one. It is a reliability/resource-cleanup improvement rather than a clear-cut security vulnerability fix.

Security candidateverify the signatures of a finalized psbt before copying its fields into an open transactionby Craig Raw · 3590fb3a · Sep 9, 2026 · 2 filesMessage 60 · AdequateModerate 69Details
Commit message · Craig Raw

verify the signatures of a finalized psbt before copying its fields into an open transaction

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
signing boundarysigning or wallet path
AI analysis · Moderate 69/100

This commit fixes a security gap in Sparrow Wallet when merging two partially-signed Bitcoin transactions (PSBTs). Previously, if a newly loaded PSBT was already finalized, Sparrow would copy its signatures and final transaction data into an open transaction without first checking that those signatures were valid. The change adds a verification step so invalid or malicious finalized PSBT data is rejected before it can overwrite the existing transaction.

AI review queuedrefresh a node when its script hash status returns to an earlier value, retiring the mitigation for electrs < 0.9.0by Craig Raw · 70e56a5b · Sep 9, 2026 · 3 filesMessage 50 · ThinModerate 63Details
Commit message · Craig Raw

refresh a node when its script hash status returns to an earlier value, retiring the mitigation for electrs < 0.9.0

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Moderate 63/100

This commit changes how Sparrow Wallet tracks Electrum server notifications about Bitcoin address activity. Previously, the app remembered every status value it had ever seen for each address and ignored repeats of any earlier value. Now it only remembers the latest status and treats any change—even a return to an earlier value—as a real update. The old behavior could leave the wallet showing transactions that the server no longer has (for example, after a mempool replacement or a chain reorganization), which could mislead users about their balance or transaction history.

Security candidatedo not offer copy and qr export actions for an extended private key pasted into the keystore xpub fieldby Craig Raw · 34f27fd8 · Sep 9, 2026 · 1 fileMessage 55 · ThinModerate 59Details
Commit message · Craig Raw

do not offer copy and qr export actions for an extended private key pasted into the keystore xpub field

55/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Names security-relevant behavior explicitly! No meaningful explanatory body
Why it was queued
secret or key materialsigning or wallet path
AI analysis · Moderate 59/100

This commit fixes a UI behavior in Sparrow Wallet where a user could accidentally paste a secret extended private key (xprv) into the public-key-only 'xpub' field of a watch-only wallet. Previously, the app treated it as valid, offered copy/QR-code export actions, and could leak the private key through those export paths. Now the app rejects xprv input in that field, removes the export context menu, and shows a validation error.

AI review queuedrequire the policy line and check the declared cosigner count when importing coldcard format multisig walletsby Craig Raw · 5aa262ee · Sep 9, 2026 · 4 filesMessage 50 · ThinModerate 56Details
Commit message · Craig Raw

require the policy line and check the declared cosigner count when importing coldcard format multisig wallets

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Moderate 56/100

This commit tightens how Sparrow Wallet imports multisig wallet files from Coldcard. Previously, if the file omitted the 'Policy' line or listed fewer cosigner keys than the policy required, Sparrow would silently assume a default 2-of-2 setup. That could let a malformed or attacker-crafted import file create a wallet whose security rules don't match what the user expects. The patch now requires the policy line and verifies the number of cosigner keys matches the declared policy, throwing an error if they don't.

AI review queuedclear a replacement transaction when a utxo it spends is frozen rather than silently removing the inputby Craig Raw · b7902f54 · Sep 8, 2026 · 1 fileMessage 50 · ThinLow 32Details
Commit message · Craig Raw

clear a replacement transaction when a utxo it spends is frozen rather than silently removing the input

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Low 32/100

This change fixes a bug in Sparrow Wallet where freezing a coin (UTXO) that was being used in a replacement transaction could silently remove the input and accidentally break the transaction's privacy-related outputs. Now, if removing the frozen coin would be unsafe, the wallet clears the replacement transaction instead of silently altering it. This is a correctness and safety improvement rather than a typical remote-exploitable vulnerability.

Security candidateverify silent payment output scripts before device signing, combining and exportby Craig Raw · ed78418a · Sep 7, 2026 · 3 filesMessage 60 · AdequateModerate 68Details
Commit message · Craig Raw

verify silent payment output scripts before device signing, combining and export

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
signing boundarysigning or wallet path
AI analysis · Moderate 68/100

This commit adds safety checks in the Sparrow Bitcoin wallet to verify Silent Payment output scripts before exporting, copying, combining, or sending a transaction to a hardware device for signing. Silent Payments are a privacy feature that lets someone generate a unique receiving address from a public 'silent' address. The change makes sure the wallet can prove the claimed payment address is correct before the user signs or shares the transaction, reducing the risk of sending funds to a wrong or attacker-controlled address.

Lower-priorityupdate lark for ledger merkle proof hashes continuation fixby Craig Raw · a7d85776 · Sep 7, 2026 · 1 fileMessage 50 · ThinTriage 0Details
Commit message · Craig Raw

update lark for ledger merkle proof hashes continuation fix

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
AI review queuedreport a transaction tab height the server will not prove instead of marking it unverified until it doesby Craig Raw · 080be605 · Sep 7, 2026 · 9 filesMessage 50 · ThinLow 36Details
Commit message · Craig Raw

report a transaction tab height the server will not prove instead of marking it unverified until it does

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Low 36/100

This commit changes how Sparrow Wallet shows a transaction's block height when the connected server cannot prove the transaction is actually in that block. Previously, the transaction tab would label such a height as 'Unverified' while waiting for proof. Now it shows the height plainly, and only after the server has had a fair chance to prove it and fails does it add an 'Unverified' warning. The change also makes the transaction-tab verification use the same retry logic and user-facing reporting that wallet history verification already uses, so a momentary server hiccup is not treated as a server lie.

AI review queuedcompare silent payment scan addresses when considering wallet address changesby Craig Raw · 62ec51ce · Sep 4, 2026 · 1 fileMessage 50 · ThinLow 46Details
Commit message · Craig Raw

compare silent payment scan addresses when considering wallet address changes

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Low 46/100

This commit fixes a logic gap in Sparrow Wallet's settings form. When a user changes wallet settings, the app checks whether the wallet's receiving addresses would change, so it can warn or take appropriate action. The check already compared regular extended public keys, but it forgot to compare 'silent payment scan addresses'—a newer Bitcoin privacy feature. Without this comparison, changing the silent-payment scan key might not be detected as an address change, potentially causing the wallet to show stale or incorrect addresses without warning.

AI review queuedrevert the sighash selection when the sighash none warning is dismissed rather than answered noby Craig Raw · 6983c955 · Sep 4, 2026 · 1 fileMessage 50 · ThinLow 44Details
Commit message · Craig Raw

revert the sighash selection when the sighash none warning is dismissed rather than answered no

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Low 44/100

This commit fixes a small UI bug in Sparrow Wallet's transaction signing dialog. When a user chooses the risky 'SIGHASH_NONE' option, Sparrow shows a warning asking if they are sure. Previously, clicking 'No' reverted the choice, but closing/dismissing the warning box without answering left the risky option selected. The fix now reverts the choice whenever the user does not explicitly click 'Yes'.

AI review queuedcorrect an amount or fee entry that parses as zero when only part of it validatesby Craig Raw · b0a4934a · Sep 4, 2026 · 1 fileMessage 50 · ThinLow 42Details
Commit message · Craig Raw

correct an amount or fee entry that parses as zero when only part of it validates

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
defensive validationsigning or wallet pathsecond-pass: near security thresholdsecond-pass: security-sensitive path
AI analysis · Low 42/100

This commit fixes a bug in Sparrow Wallet's text input handling for Bitcoin amounts and transaction fees. Previously, if a user typed something like '0abc', the wallet would partially match only the '0' and treat the amount as zero, silently dropping the invalid trailing characters. This could let a user accidentally (or be tricked into) entering an amount that the wallet interprets as zero when they intended something else. The fix now only keeps a zero value if the entire typed text is a valid amount, not just a partial match.

AI review queuedshow a height the transaction tab takes from the server as unverified until it is provenby Craig Raw · 97954f44 · Sep 4, 2026 · 6 filesMessage 50 · ThinModerate 63Details
Commit message · Craig Raw

show a height the transaction tab takes from the server as unverified until it is proven

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Moderate 63/100

This commit changes Sparrow Wallet so that when you open a transaction in the transaction tab, the block height claimed by the server is not automatically trusted. Instead, the wallet now asks the server for a cryptographic proof (a Merkle proof) that the transaction really is in that block. Until the proof arrives and checks out, the height is shown as 'Unverified'. Previously, the transaction tab would display the server's claimed height and block hash as if they were confirmed facts, even though they came only from the server. This change closes a trust gap: a malicious or mistaken server could no longer make an unconfirmed or differently-located transaction appear confirmed in the UI simply by reporting a fake height or block hash.

AI review queuedrefuse an announced tip below the last pinned headerby Craig Raw · 8ab75efd · Sep 4, 2026 · 3 filesMessage 50 · ThinHigh 70Details
Commit message · Craig Raw

refuse an announced tip below the last pinned header

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · High 70/100

This commit hardens Sparrow Wallet against a malicious or misbehaving Electrum server that tries to 'rewind' the blockchain tip to a height below the last built-in checkpoint after it has already announced a higher tip. Previously, such a fake low announcement could have been accepted for public servers that are required to verify transactions, potentially letting the server hide or rewrite recent history. The fix refuses those regressive announcements and adds tests to confirm the behavior.

Lower-priorityrecover the trezor safe 7 session when the device retransmits an unacknowledged messageby Craig Raw · ce42c0db · Sep 3, 2026 · 1 fileMessage 50 · ThinTriage 0Details
Commit message · Craig Raw

recover the trezor safe 7 session when the device retransmits an unacknowledged message

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Security candidateshow the signatures for a signed transaction opened offline or when the server cannot return every inputby Craig Raw · aeeeeb54 · Aug 31, 2026 · 4 filesMessage 50 · ThinInformational 17Details
Commit message · Craig Raw

show the signatures for a signed transaction opened offline or when the server cannot return every input

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing boundarysigning or wallet path
AI analysis · Informational 17/100

This commit fixes a UI bug in the Sparrow Bitcoin wallet. When a user opened a fully signed transaction while offline, or when the connected server could not provide every previous transaction input, the wallet failed to display the transaction's signature details and the broadcast controls. The patch makes the wallet derive and show the signature progress bar directly from the signed transaction data in those cases, instead of waiting for server data that may never arrive.

AI review queuedretain an entered https scheme for its host when configuring a bitcoin core serverby Craig Raw · e6242780 · Aug 28, 2026 · 5 filesMessage 50 · ThinLow 36Details
Commit message · Craig Raw

retain an entered https scheme for its host when configuring a bitcoin core server

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Low 36/100

This commit fixes a UI behavior in Sparrow Wallet where a user-entered HTTPS scheme for a Bitcoin Core server was not being remembered. Previously, if a user typed or selected an HTTPS Bitcoin Core URL, the wallet could silently fall back to HTTP when the host or port was edited, potentially sending wallet traffic over an unencrypted connection. The patch now records that a specific host was intended to use HTTPS and keeps using HTTPS for that host unless the host is changed. This is a security-relevant correctness fix for connection configuration, not an active exploit in the code itself.