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

Security candidateremove the surplus signatures progress bar segments a finalized multisig transaction discardsby Craig Raw · 40f77206 · Sep 22, 2026 · 2 filesMessage 50 · ThinInformational 17Details
Commit message · Craig Raw

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

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 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 remove the visual segments representing those discarded signatures, which could leave the bar showing more segments than actually exist. The fix cleans up those surplus segments and resets progress to zero for any segment whose signature was removed. There is no direct evidence this affects funds or transaction security.

Security candidateinclude the non-witness utxo in psbts for krux keystores, and in the qr display when the psbt has more than one inputby Craig Raw · 0e2c402f · Sep 15, 2026 · 2 filesMessage 50 · ThinLow 34Details
Commit message · Craig Raw

include the non-witness utxo in psbts for krux keystores, and in the qr display when the psbt has more than one 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 · Low 34/100

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 code when the transaction has more than one input. This extra data is needed by some devices to verify inputs securely, but it also makes the QR code larger and slower to scan. The change appears to be a correctness/usability fix for hardware signing rather than a traditional software vulnerability.

Security candidatekeep the trezor pairing credential and v1 message payloads out of the logsby Craig Raw · 2a60100e · Sep 14, 2026 · 1 fileMessage 50 · ThinModerate 56Details
Commit message · Craig Raw

keep the trezor pairing credential and v1 message payloads out of the logs

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
credential or privilege state
AI analysis · Moderate 56/100

This commit updates a linked subproject called 'lark' with the stated goal of preventing Trezor hardware wallet pairing credentials and older v1 message payloads from being written to application logs. If successful, it reduces the risk that sensitive wallet communication secrets could leak through log files, which might otherwise be read by malware, backups, or support staff. However, the actual code changes are inside the subproject and not visible in this commit, so we can only judge from the commit message.

Security candidateverify psbt silent payment metadata against the input hash of every input, not only the eligible onesby Craig Raw · 8e9661a6 · Sep 11, 2026 · 1 fileMessage 60 · AdequateModerate 55Details
Commit message · Craig Raw

verify psbt silent payment metadata against the input hash of every input, not only the eligible ones

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

This commit updates a submodule called 'drongo' with a one-line change whose message says it now checks silent payment metadata against every transaction input, not just the eligible ones. Silent payments are a privacy feature for Bitcoin. The change sounds like a security fix because verifying only some inputs could let a malicious or malformed PSBT (a partially-signed Bitcoin transaction) slip past checks. However, the actual code change is just a submodule pointer bump, so we cannot see the real code fix from this commit alone.

Security candidateexplicitly reject a psbt signed over silent payment outputs that have not been computedby Craig Raw · 6fcdc88b · Sep 11, 2026 · 1 fileMessage 50 · ThinModerate 55Details
Commit message · Craig Raw

explicitly reject a psbt signed over silent payment outputs that have not been computed

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing boundary
AI analysis · Moderate 55/100

This commit updates a submodule called 'drongo' inside the Sparrow Wallet project. The title says it now explicitly rejects a partially-signed Bitcoin transaction (PSBT) if it has been signed over silent payment outputs that were not actually computed. In plain terms, it tries to prevent a wallet from accepting a transaction signature that covers hidden recipient addresses it never verified. We cannot see the actual code change because only the submodule commit hash changed.

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.

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.

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.

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.

Security candidategate the display address, sign message and keystore discovery panes on a fingerprint resolved after pin entryby Craig Raw · 5f7770b8 · Aug 26, 2026 · 2 filesMessage 50 · ThinModerate 59Details
Commit message · Craig Raw

gate the display address, sign message and keystore discovery panes on a fingerprint resolved after pin entry

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
access controlsigning or wallet path
AI analysis · Moderate 59/100

This commit changes how Sparrow Wallet checks that a connected hardware wallet is the correct one before letting the user display a receiving address, sign a message, or discover keystores. Previously, the app disabled the relevant buttons if the device's reported fingerprint did not match the wallet. The problem is that a PIN-protected device reports no fingerprint until after the PIN is entered, so the old check happened too early and could be bypassed. The new code waits until after PIN entry, re-enumerates the device to get its real fingerprint, and only then enables or disables the button. This prevents a user from accidentally using the wrong hardware wallet and, for example, displaying or signing with keys that do not belong to their wallet.

Security candidatereport an oversized download manifest instead of verifying the signature aloneby Craig Raw · 0e8d8192 · Aug 26, 2026 · 2 filesMessage 55 · ThinLow 46Details
Commit message · Craig Raw

report an oversized download manifest instead of verifying the signature alone

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

This commit changes how Sparrow Wallet's download verifier handles large manifest files. Previously, if a downloaded manifest exceeded 100 KB, the software would reject it outright and stop verification. Now, if the oversized file does not look like a manifest (no PGP signed-message header and no typical hash lines), it is treated as a release file that the signature signs directly. The change also adds a more descriptive error message. The commit title frames this as reporting an oversized manifest rather than only verifying the signature, suggesting a fix for a verification-logic edge case.

Security candidateconfirm the passphrase in the wallet-level and terminal seed importsby Craig Raw · d8ea4264 · Aug 26, 2026 · 3 filesMessage 50 · ThinLow 34Details
Commit message · Craig Raw

confirm the passphrase in the wallet-level and terminal seed imports

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
access controlcryptography-sensitive pathsigning or wallet pathauthentication path
AI analysis · Low 34/100

This commit adds a 'confirm your passphrase' step when importing a Bitcoin wallet seed in two places: the desktop wallet import screen and the terminal/command-line wallet creation. Previously, if a user typed a BIP39 passphrase (the extra password that unlocks a hidden wallet) with a typo, Sparrow would silently create a different wallet. The user might then send funds to addresses they do not actually control or cannot later reproduce. The fix forces the user to type the passphrase twice so typos are caught immediately.

Security candidateclarify that the slip39 import passphrase applies to all shares and not individual onesby Craig Raw · 0a484201 · Aug 23, 2026 · 2 filesMessage 50 · ThinInformational 15Details
Commit message · Craig Raw

clarify that the slip39 import passphrase applies to all shares and not individual ones

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

This commit only changes on-screen text labels and help messages in the wallet import flow. It clarifies that when using SLIP39 'shamir secret sharing' recovery, any passphrase applies to the whole reconstructed wallet secret, not to each individual recovery share. There is no code behavior change, no bug fix, and no security vulnerability being patched.

Security candidateupdate drongo and lark to require anti-klepto on bitbox02 and fix taproot signing issueby Craig Raw · e7ae9cca · Aug 21, 2026 · 2 filesMessage 50 · ThinModerate 55Details
Commit message · Craig Raw

update drongo and lark to require anti-klepto on bitbox02 and fix taproot signing issue

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing boundarysecure hardware boundary
AI analysis · Moderate 55/100

This commit updates two internal library submodules (drongo and lark) used by the Sparrow Wallet. The stated purpose is to require an anti-klepto protection feature for BitBox02 hardware wallets and to fix a Taproot signing issue. The actual code changes are not visible in this commit—only the submodule pointers were moved to new commits—so we cannot directly inspect what was fixed. Anti-klepto protections reduce the risk of a compromised hardware wallet leaking private key material through biased signatures. A Taproot signing issue could, in principle, affect the ability to spend or the validity of signatures, but the diff gives no details.

Security candidatecomment on why the securerandom.getinstancestrong() fallback is neither weaker nor reachableby Craig Raw · 9b05c26c · Aug 21, 2026 · 4 filesMessage 62 · AdequateInformational 15Details
Commit message · Craig Raw

comment on why the securerandom.getinstancestrong() fallback is neither weaker nor reachable

62/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Explains rationale or failure mode! No meaningful explanatory body
Why it was queued
cryptography-sensitive pathsigning or wallet path
AI analysis · Informational 15/100

This commit only adds explanatory comments to existing code. It does not change any behavior. The comments clarify that a fallback to a standard SecureRandom is not a security weakness and is practically unreachable in the bundled Java runtime. There is no functional change to how random numbers are generated for wallet seed phrases.

Security candidatecompare the ecies mac in constant time and test the invalid password causeby Craig Raw · 4e2903fe · Aug 21, 2026 · 2 filesMessage 60 · AdequateLow 47Details
Commit message · Craig Raw

compare the ecies mac in constant time and test the invalid password cause

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
constant-time or timing behaviorsigning or wallet path
AI analysis · Low 47/100

This commit updates a subproject dependency called 'drongo' and adds a test. The title says the update makes an ECIES (a type of encryption) MAC comparison run in constant time, which is a defensive fix against timing attacks that could let someone guess a wallet password faster. The new test checks that entering the wrong password produces a clear 'invalid password' error rather than a vague import error. No direct code change is shown in the diff for the crypto routine itself; it lives inside the updated submodule.

Security candidatereprompt for the bip38 passphrase rather than clearing the encrypted keyby Craig Raw · 325ab3b7 · Aug 21, 2026 · 2 filesMessage 50 · ThinInformational 22Details
Commit message · Craig Raw

reprompt for the bip38 passphrase rather than clearing the encrypted key

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

This commit changes how Sparrow Wallet handles a wrong BIP38 passphrase when sweeping an encrypted private key. Previously, entering the wrong passphrase cleared the entire encrypted key text, forcing the user to retype it. Now, the app simply shows an 'Incorrect passphrase' error and asks again, leaving the encrypted key in place. It is a usability improvement, not a security fix, and does not appear to prevent or introduce any exploit.

Security candidatepin the gradle distribution checksum in the wrapper propertiesby Craig Raw · b3b55a5f · Aug 20, 2026 · 3 filesMessage 50 · ThinInformational 19Details
Commit message · Craig Raw

pin the gradle distribution checksum in the wrapper properties

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
access control
AI analysis · Informational 19/100

This commit adds a cryptographic fingerprint (SHA-256 checksum) to the project's Gradle wrapper configuration. The wrapper is the tool that downloads the Gradle build system when developers compile the wallet. Pinning the checksum helps ensure that a compromised or tampered Gradle download is detected before it can run during the build process. Two Git submodules named drongo and lark were also updated, but no details about their changes are provided in the diff.

Security candidateredact the core credentials from the bwt debug logby Craig Raw · fb811e10 · Aug 20, 2026 · 2 filesMessage 50 · ThinLow 49Details
Commit message · Craig Raw

redact the core credentials from the bwt debug log

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
credential or privilege statesigning or wallet path
AI analysis · Low 49/100

This commit fixes a privacy/security issue where Sparrow Wallet's debug log could accidentally record the username and password used to connect to a Bitcoin Core node. When debug logging was enabled, the app printed the full internal configuration of a component called bwt, including the 'bitcoind_auth' field that contained the user's Core RPC credentials. The patch now replaces that credential with '*****' before writing it to the log. This reduces the risk that sensitive credentials leak into log files, which could then be exposed when users share logs for troubleshooting.

Security candidateshow the resource an auth47 challenge is signed forby Craig Raw · 6cda110e · Aug 20, 2026 · 2 filesMessage 50 · ThinInformational 21Details
Commit message · Craig Raw

show the resource an auth47 challenge is signed for

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

This commit improves the wallet's login confirmation message when using the Auth47 authentication protocol. Previously, the wallet only told the user which website would receive the login response (the callback). Now it also shows the 'resource' the challenge is actually signed for, and warns if the resource differs from the callback. This helps prevent a malicious or misconfigured service from tricking a user into signing a login challenge for one site while sending the response to another.

Security candidateverify the version check signature before assigning the current versionby Craig Raw · dde0985d · Aug 19, 2026 · 2 filesMessage 65 · AdequateModerate 65Details
Commit message · Craig Raw

verify the version check signature before assigning the current version

65/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Mentions testing or verification✓ Names security-relevant behavior explicitly! No meaningful explanatory body
Why it was queued
signing boundarysigning or wallet path
AI analysis · Moderate 65/100

This commit fixes a logic bug in Sparrow Wallet's update checker. Previously, the app would accept and remember a new software version number from an online file before checking whether that file was properly signed. If an attacker could tamper with the version-check file, they could make the wallet believe a fake newer version existed, even though the signature check would later fail. The patch moves the signature verification earlier and adds null-safety checks, so only properly signed version information is trusted.

Security candidatereject extended private keys when creating a terminal watch only wallet, and show import errorsby Craig Raw · fa0d4841 · Aug 4, 2026 · 2 filesMessage 50 · ThinLow 42Details
Commit message · Craig Raw

reject extended private keys when creating a terminal watch only wallet, and show import errors

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
secret or key materialsigning or wallet path
AI analysis · Low 42/100

This commit fixes a bug in Sparrow Wallet's terminal (command-line) watch-only wallet creation. Previously, a user could accidentally paste an extended private key (xprv) into a dialog meant only for public keys or output descriptors, and the wallet would silently fail or create an empty wallet. Now the app rejects xprv keys with a clear error message and also shows import errors to the user instead of logging them silently.

Security candidatealways check and restrict existing wallets and backup directories to owner only permissionsby Craig Raw · 5d387765 · Aug 4, 2026 · 1 fileMessage 50 · ThinModerate 61Details
Commit message · Craig Raw

always check and restrict existing wallets and backup directories to owner only permissions

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
credential or privilege statesigning or wallet path
AI analysis · Moderate 61/100

This update makes Sparrow Wallet automatically tighten the file permissions on wallet and backup folders so only the computer's owner can read them. Previously, if those folders already existed with looser permissions (for example, created by an older version or another user), other accounts on the same machine might have been able to read wallet files. The change also adds a warning if the app cannot fix the permissions.

Security candidateadd bitbox02 attestation failed dialogby Craig Raw · 1a810c06 · Aug 4, 2026 · 2 filesMessage 45 · ThinLow 25Details
Commit message · Craig Raw

add bitbox02 attestation failed dialog

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
update trustsigning or wallet path
AI analysis · Low 25/100

This commit adds a user-facing warning dialog when a BitBox02 hardware wallet fails an attestation check. Attestation is a process that helps verify the device is genuine and not a counterfeit or tampered unit. Previously, a failed attestation may not have been clearly communicated to the user. The change improves security by warning users not to store funds on a device that failed verification until they confirm it externally. It is a defensive hardening change, not an active vulnerability fix.

Security candidateimprove validation of payjoin proposals, and accept a substituted payment output where a change output is presentby Craig Raw · 32f7e58f · Aug 4, 2026 · 3 filesMessage 50 · ThinModerate 56Details
Commit message · Craig Raw

improve validation of payjoin proposals, and accept a substituted payment output where a change output is present

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

This commit strengthens how Sparrow Wallet checks Payjoin proposals received from a payment receiver. Payjoin lets a receiver add their own inputs to a transaction to improve privacy. The changes add missing checks that could previously let a malicious or buggy receiver: (1) silently lower the transaction fee rate, (2) add key-path or signature data that leaks wallet information, (3) substitute the payment output even when no change output exists, or (4) return arbitrary error text that the wallet would show to the user. The patch also fixes handling for modern Taproot (P2TR) transactions, which were not being copied or validated correctly. A new set of unit tests confirms these protections.