SW
← All projectsSparrow

Sparrow Wallet

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

BitcoinHardware integrationSoftware walletsNormal
Repository coverage

411 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
152commits · 60 days
250commits · 180 days
405commits · 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
325Thin · 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 Raw39767385648
doblon8313048
nzb-tuxxx212060
Michele Balistreri212048
nroktib111050
Liz Lightning202045
PeterXMR101045
Ian McKenzie101050
ottosch101050
craigraw101060
Analysis record

Published AI watches

Last scanned 18 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 queuedfail rather than loop indefinitely on an unsuccessful card wait or repeated secure channel resetsby Craig Raw · 3e53f193 · Aug 21, 2026 · 3 filesMessage 50 · ThinLow 48Details
Commit message · Craig Raw

fail rather than loop indefinitely on an unsuccessful card wait or repeated secure channel resets

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

This commit fixes two situations where Sparrow Wallet could get stuck in an endless loop while talking to a hardware card (Coldcard/Satochip). Previously, if the card refused a 'wait' request or repeatedly rejected the secure channel setup, the software would retry forever. Now it throws an error or stops after three retries. This is a reliability/DoS fix rather than a direct theft-of-funds bug, but an attacker who can make the card misbehave could freeze the wallet interface.

AI review queuedbound the bitcoin core rpc connect and read timeouts, exempting the methods that rescan synchronouslyby Craig Raw · e49b6a4a · Aug 21, 2026 · 2 filesMessage 50 · ThinModerate 62Details
Commit message · Craig Raw

bound the bitcoin core rpc connect and read timeouts, exempting the methods that rescan synchronously

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

This commit fixes a bug where Sparrow Wallet's connection to a Bitcoin Core node could hang forever if the node accepted the connection but never replied. The patch adds sensible time limits for making and reading connections, while carefully allowing very long waits only for two specific Bitcoin Core operations that legitimately take hours. Without the fix, a user connecting to a slow, stuck, or maliciously unresponsive node could have their wallet interface freeze indefinitely.

AI review queuedbound the electrum read timeout across the wait for a response, not just acquiring the read lockby Craig Raw · 5b10debd · Aug 21, 2026 · 2 filesMessage 50 · ThinModerate 51Details
Commit message · Craig Raw

bound the electrum read timeout across the wait for a response, not just acquiring the read lock

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

This commit fixes a bug in Sparrow Wallet's connection to Electrum servers. Previously, when waiting for a server reply, the timeout only applied to acquiring an internal lock, not to the actual wait for data. A server that accepted a request but never answered could cause the wallet to hang forever instead of timing out. The patch makes the timeout cover the entire wait and adds tests to prove the hang is gone and that the connection can recover on the next request.

AI review queuedonly apply dns payment resolutions matching the currently entered recipientby Craig Raw · 185e0e8b · Aug 21, 2026 · 2 filesMessage 50 · ThinModerate 59Details
Commit message · Craig Raw

only apply dns payment resolutions matching the currently entered recipient

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

This commit fixes a race condition in Sparrow Wallet's payment screen. When a user types a human-readable payment name (like a DNS-based address), every keystroke that forms a valid name triggers a slow background lookup. If the user keeps typing or changes the recipient, an older lookup could finish later and overwrite the current recipient address with the wrong one. The fix checks that the lookup result still matches what the user has actually typed before applying it.

AI review queuedimprove randomization for utxo selection, input and output shuffling, and anti-fee-snipingby Craig Raw · bf0daae6 · Aug 21, 2026 · 3 filesMessage 50 · ThinModerate 51Details
Commit message · Craig Raw

improve randomization for utxo selection, input and output shuffling, and anti-fee-sniping

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

This commit replaces ordinary shuffling with a cryptographically secure random number generator when selecting which coins (UTXOs) to use in Bitcoin transactions and when ordering transaction inputs and outputs. The change makes it harder for an observer to guess or reproduce the wallet's choices, which can reduce privacy risks and certain fee-sniping attacks. The actual security improvement depends on code inside the updated 'drongo' submodule that is not shown in the diff.

AI review queuedwarn before creating a keystore from a scanned seed with an invalid checksumby Craig Raw · fdd1875a · Aug 21, 2026 · 1 fileMessage 50 · ThinLow 44Details
Commit message · Craig Raw

warn before creating a keystore from a scanned seed with an invalid checksum

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 change adds a warning when a user scans a QR code containing a seed phrase whose checksum is invalid. Previously, Sparrow would silently create a wallet keystore from the bad seed. With a bad checksum, other wallets will reject the same seed words, so any bitcoin sent to that wallet could become unrecoverable from the backup. The patch asks the user to confirm before proceeding.

AI review queuedcatch any parse failure when opening pasted or server-fetched transactionsby Craig Raw · 4caa02d3 · Aug 21, 2026 · 3 filesMessage 50 · ThinLow 34Details
Commit message · Craig Raw

catch any parse failure when opening pasted or server-fetched transactions

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

This commit hardens Sparrow Wallet so that unexpected failures while reading pasted transactions or transactions fetched from Electrum servers are caught and handled gracefully, instead of crashing the application. It also updates the 'drongo' subproject, which likely contains related parsing code. The change is defensive and improves robustness, but the commit message does not frame it as a security fix.

AI review queuedrelease the reference to the derived encryption key when clearing a loaded walletby Craig Raw · 4b373714 · Aug 20, 2026 · 1 fileMessage 50 · ThinLow 35Details
Commit message · Craig Raw

release the reference to the derived encryption key when clearing a loaded wallet

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

This commit fixes a cleanup step in Sparrow Wallet. When a wallet is unloaded, the code now explicitly drops its reference to the derived encryption key, which may help the Java garbage collector reclaim the key material sooner and reduces the window in which a sensitive key could linger in memory. The change is defensive and small, but it does not by itself prove an exploitable vulnerability.

AI review queuedstrip only the trailing extension when deriving the h2 database nameby Craig Raw · bad92ba6 · Aug 20, 2026 · 2 filesMessage 50 · ThinModerate 60Details
Commit message · Craig Raw

strip only the trailing extension when deriving the h2 database name

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

This commit fixes a bug in how Sparrow Wallet names its internal H2 database files. Previously, the app stripped every occurrence of the wallet file extension from the full file path, not just the trailing one. That meant a wallet file named something like 'backup.mv.db2.mv.db' would accidentally write its database data to a different file ('backup2') instead of the file Sparrow was tracking. The fix removes only the final extension. The bug could cause wallet data to be written to or read from the wrong file, potentially leading to data loss, confusion, or cross-wallet contamination, though direct theft of funds is not evident from the change.

AI review queuedignore the results of superseded download verificationsby Craig Raw · abd9de2d · Aug 20, 2026 · 2 filesMessage 50 · ThinLow 41Details
Commit message · Craig Raw

ignore the results of superseded download verifications

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

This commit fixes a timing bug in Sparrow Wallet's download verification dialog. Previously, if a user started a new file verification while an earlier one was still running, the old verification could finish later and overwrite the new results on screen. That could briefly show a wrong file as 'verified' or 'matched.' The fix adds a counter so results from an outdated verification are ignored, and it cancels any running checks before starting a new one.

AI review queuedconfirm the imported quorum and cosigners before completing an incomplete multisig walletby Craig Raw · 54926b5f · Aug 20, 2026 · 2 filesMessage 50 · ThinLow 44Details
Commit message · Craig Raw

confirm the imported quorum and cosigners before completing an incomplete multisig wallet

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 adds a confirmation step when completing an unfinished multi-signature (multisig) Bitcoin wallet by importing a coordinator's configuration. Before the change, Sparrow would silently replace the user's local cosigner list and signing rules with whatever the imported file contained. After the change, the user must review and approve the required number of signatures (quorum), the list of cosigners, and which of their own keys are included before the wallet is updated. This reduces the risk that a malicious or incorrect import could trick the user into a wallet they cannot truly control or co-sign.

AI review queuedreport failed bitcoin core descriptor imports instead of only logging themby Craig Raw · 73c06c32 · Aug 20, 2026 · 4 filesMessage 50 · ThinInformational 20Details
Commit message · Craig Raw

report failed bitcoin core descriptor imports instead of only logging them

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

This commit changes Sparrow Wallet so that when it fails to import Bitcoin Core wallet descriptors, the user is shown a clear error dialog or terminal message instead of the failure being hidden in logs. Previously, descriptor import failures were only logged, which could leave users unaware that their transaction history or balances might be incomplete. The change improves visibility and reliability but does not introduce or fix a traditional security vulnerability.

AI review queuedrange check the server supplied minimum relay feeby Craig Raw · 7faa65fc · Aug 20, 2026 · 1 fileMessage 45 · ThinModerate 50Details
Commit message · Craig Raw

range check the server supplied minimum relay fee

45/100 · ThinMessage clarity
✓ 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 50/100

This commit adds a safety check on a fee rate value that a Bitcoin server sends to the Sparrow Wallet app. Before, the app would trust and use whatever number the server provided for the minimum relay fee. Now, if that number is negative or unreasonably high, the app ignores it and falls back to a safe built-in default. This protects users from a malicious or buggy server tricking the wallet into using bad fee rates that could delay, overpay, or otherwise mishandle transactions.

AI review queuedwarn when a bitcoin core node is neither local nor onionby Craig Raw · ad61007d · Aug 20, 2026 · 5 filesMessage 50 · ThinLow 47Details
Commit message · Craig Raw

warn when a bitcoin core node is neither local nor onion

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

This commit adds a warning to Sparrow Wallet when a user connects to a Bitcoin Core node that is neither on their own computer/local network nor a Tor onion address. Previously, users could unknowingly route Bitcoin Core RPC traffic over the public internet, exposing their wallet data and RPC credentials. The change also improves how Sparrow decides whether an address is 'local' and fixes a UI bug where settings panes were recreated each time they were opened. It is a defensive hardening change rather than a fix for an active exploit.

AI review queuedretain the existing wallet encryption when a password change is cancelledby Craig Raw · 194bd70f · Aug 20, 2026 · 2 filesMessage 50 · ThinModerate 59Details
Commit message · Craig Raw

retain the existing wallet encryption when a password change is cancelled

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: broader security terminologysecond-pass: security-sensitive path
AI analysis · Moderate 59/100

This commit fixes a bug in Sparrow Wallet where cancelling a password change could leave the wallet unencrypted in memory for the rest of the session. Previously, the software decrypted the wallet to prepare for a new password, but if the user cancelled, it never re-encrypted it. Now it re-encrypts with the existing key when the change is abandoned. This is a security fix for a local, user-interactive edge case.

AI review queuedskip malformed silent payment entries rather than aborting the scan batchby Craig Raw · 1e660ad2 · Aug 19, 2026 · 1 fileMessage 50 · ThinLow 42Details
Commit message · Craig Raw

skip malformed silent payment entries rather than aborting the scan batch

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

This commit changes how Sparrow Wallet handles data received from an Electrum server about silent payments. Previously, if one entry in a batch was malformed, the entire scan batch would abort. Now, the wallet logs a warning and skips only the bad entry. This makes the wallet more resilient to bad server data, but also means a malicious or buggy server could silently feed malformed entries and have them ignored rather than trigger a visible failure. There is no direct evidence in the commit that this is exploitable to steal funds, but it removes a fail-stop behavior.

AI review queuedhandle an absent final scriptsig or witness when restoring the original payjoin inputsby Craig Raw · c60a6ddd · Aug 19, 2026 · 1 fileMessage 50 · ThinLow 40Details
Commit message · Craig Raw

handle an absent final scriptsig or witness when restoring the original payjoin inputs

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

This commit fixes a crash in Sparrow Wallet's Payjoin feature. When receiving a Payjoin proposal, the wallet tries to restore original payment input details. Previously, if the original PSBT input lacked a final script signature or final witness, the code would throw a NullPointerException and crash. The patch now safely handles those missing fields by setting the restored values to null instead of crashing.

AI review queueddisable the proxy setting when no proxy server is configuredby Craig Raw · 571e4c94 · Aug 19, 2026 · 2 filesMessage 50 · ThinLow 38Details
Commit message · Craig Raw

disable the proxy setting when no proxy server is configured

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

This commit tightens how Sparrow Wallet handles its proxy setting. Previously, a user could enable 'use proxy' even if no proxy server was actually configured, or the app could save an empty/whitespace proxy server value. The change now disables the proxy setting automatically when no valid proxy server is configured, trims whitespace from the proxy host, and treats blank host values as invalid. This is a defensive hardening fix that prevents the wallet from accidentally running without the privacy/protection the user expected from a proxy.

AI review queueddetect legacy multisig descriptors case insensitively when warning about key sortingby Craig Raw · e0ee957c · Aug 19, 2026 · 3 filesMessage 50 · ThinInformational 24Details
Commit message · Craig Raw

detect legacy multisig descriptors case insensitively when warning about key sorting

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

This commit fixes a minor user-facing bug in Sparrow Wallet where the app failed to recognize legacy multisig wallet descriptors if they used uppercase letters (for example, 'MULTI(' instead of 'multi('). As a result, Sparrow would not show its usual warning that it only supports BIP67-compatible sorted multisig wallets, and it would not automatically sort the public keys. The change makes the detection case-insensitive by using a regular expression pattern instead of a simple lowercase string check. This is a usability and correctness fix rather than a serious security vulnerability.

AI review queuedimprove max cosigner ui handling in settingsby Craig Raw · b99b880c · Aug 10, 2026 · 4 filesMessage 45 · ThinLow 27Details
Commit message · Craig Raw

improve max cosigner ui handling in settings

45/100 · ThinMessage clarity
✓ 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 27/100

This commit tightens wallet validation in Sparrow Wallet. It replaces a simple validity check with a more detailed one that reports specific problems, and it prevents users from creating or loading wallets whose number of cosigners exceeds what the chosen Bitcoin script type supports. It also fixes UI slider behavior so the maximum cosigner count stays within allowed limits when the script type changes. The changes are defensive: they catch misconfigurations earlier and give clearer error messages, which reduces the chance of accidentally using an invalid or unsupported wallet.

AI review queuedresolve bip353 hrns over tcp via the socks proxy when one is configuredby Craig Raw · d9ad0618 · Aug 10, 2026 · 4 filesMessage 50 · ThinLow 38Details
Commit message · Craig Raw

resolve bip353 hrns over tcp via the socks proxy when one is configured

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

This commit changes Sparrow Wallet so that BIP353 human-readable payment names (like a Bitcoin email address) are resolved through the user's configured SOCKS proxy instead of directly over the internet. It also updates a related database field from seconds to milliseconds for storing key/seed creation times. The main security angle is privacy: without the proxy, DNS-style lookups for payment recipients could leak the recipient name and the user's IP address to DNS servers or observers. The change routes that traffic through Tor or another proxy if one is set. The database rename is a code-quality change and does not appear to be a security fix by itself.

AI review queuedclose remaining local dns resolution gaps when classifying hostnames and connecting via torby Craig Raw · 03222f20 · Aug 6, 2026 · 3 filesMessage 50 · ThinModerate 65Details
Commit message · Craig Raw

close remaining local dns resolution gaps when classifying hostnames and connecting via tor

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

This commit fixes privacy gaps in Sparrow Wallet when it connects through Tor or another proxy. Previously, the app could accidentally ask the computer's normal DNS resolver to translate server names, which could reveal which Bitcoin servers a user was trying to reach. It also could connect to local-network addresses directly even when a proxy was on, potentially bypassing Tor. The patch makes the app treat unknown hostnames as remote when a proxy is active and avoid resolving them locally, and it ensures Tor connections use the proxy for name resolution rather than the local system.

AI review queuedavoid deleting the backups of same-prefixed walletsby Craig Raw · b6ed4ba7 · Aug 5, 2026 · 2 filesMessage 50 · ThinLow 48Details
Commit message · Craig Raw

avoid deleting the backups of same-prefixed 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 · Low 48/100

This commit fixes a bug in how Sparrow Wallet finds and deletes old wallet backups. Previously, the backup cleanup logic used loose pattern matching that could accidentally treat backups of one wallet as if they belonged to another wallet with a similar name. For example, a wallet named 'Savings' might incorrectly match backup files for 'SavingsX' or 'Savings.old'. The result could be that backups of a different wallet get deleted, or that cleanup of the intended wallet's backups fails. The patch replaces the loose prefix-and-date check with a strict regular expression that requires an exact wallet name, a complete 14-digit timestamp, and a matching file extension. New unit tests confirm that only correctly named backups are selected.

AI review queuedverify proof of work on chain tips and warn when a tip goes staleby Craig Raw · 5ccc4902 · Aug 5, 2026 · 5 filesMessage 60 · AdequateModerate 62Details
Commit message · Craig Raw

verify proof of work on chain tips and warn when a tip goes stale

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

This commit adds safety checks to the Bitcoin wallet Sparrow when it receives block-chain tip announcements from an Electrum server. It now verifies that the announced block header is properly formatted, not timestamped too far in the future, and meets the proof-of-work target encoded in the header itself. It also warns the user if the server stops sending new blocks for more than two hours, which can indicate a stale or malicious server. These changes reduce the risk of a hostile or malfunctioning server misleading the wallet about the state of the Bitcoin network.

AI review queuedprevent a password change from re-encrypting wallets whose filenames share the same prefixby Craig Raw · 24c6202e · Aug 5, 2026 · 3 filesMessage 50 · ThinModerate 66Details
Commit message · Craig Raw

prevent a password change from re-encrypting wallets whose filenames share the same prefix

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: broader security terminologysecond-pass: security-sensitive path
AI analysis · Moderate 66/100

This commit fixes a bug in Sparrow Wallet's password-change feature. Previously, when a user changed the password on a wallet file whose name was a prefix of another wallet file (for example, 'Savings' and 'Savings.old'), the underlying H2 database tool would also re-encrypt the sibling wallet file. That could corrupt or lock the sibling wallet. The fix copies the target wallet to its own temporary directory, performs the encryption change there, verifies it, and then atomically replaces the original file so no other wallet files are touched.