SW
← All projectsSparrow

Sparrow Wallet

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

BitcoinHardware integrationSoftware walletsNormal
Repository coverage

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

50security candidates174second-pass queue207AI analyses
46commits · 30 days
53commits · 60 days
181commits · 180 days
281commits · 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.

46/100 average clarity
0Strong · 80–100
20Adequate · 60–79
212Thin · 40–59
49Opaque · 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 Raw26846195546
doblon8312048
Michele Balistreri212048
nroktib111050
nzb-tuxxx111060
Liz Lightning202045
PeterXMR101045
Ian McKenzie101050
ottosch101050
craigraw101060
Analysis record

Published AI watches

Last scanned 36 minutes ago

Low 48 AI analysisMessage 50 · Thin
SW SparrowSparrow Wallet BitcoinHardware integrationSoftware wallets

avoid deleting the backups of same-prefixed wallets

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 …

Incorrect backup selection could lead to deletion of another wallet's backup filesLoose filename prefix matching allowed same-prefixed wallet names to collideDate extraction regex accepted extra trailing characters, broadening matches
b6ed4ba7by Craig Raw+55−302 files
No security note in commit
Moderate 62 AI analysisMessage 60 · Adequate
SW SparrowSparrow Wallet BitcoinHardware integrationSoftware wallets

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

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 futu…

Adds proof-of-work verification on server-announced chain tipsAdds future-timestamp rejection for announced chain tipsAdds staleness warning when no new mainnet tip is received for >2 hours
5ccc4902by Craig Raw+180−55 files
No security note in commit
Moderate 66 AI analysisMessage 50 · Thin
SW SparrowSparrow Wallet BitcoinHardware integrationSoftware wallets

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

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…

Unintended re-encryption of sibling wallet files due to prefix matching in H2 ChangeFileEncryptionPotential wallet corruption or loss of access when changing a wallet passwordUse of isolated temporary directory to prevent cross-wallet file operations
24c6202eby Craig Raw+153−103 files
No security note in commit
Moderate 56 AI analysisMessage 50 · Thin
SW SparrowSparrow Wallet BitcoinHardware integrationSoftware wallets

reject truncated and oversized tlv lengths when parsing keycard responses

This commit fixes a bug in how Sparrow Wallet reads data from Keycard hardware wallets. Previously, the code trusted the length declared inside a card response without checking whether that many bytes actually exist. A malicious or malfunc…

Out-of-bounds read / buffer over-read in TLV length parsingTruncated and oversized length values previously acceptedPotential memory-safety issue leading to zero-padded fabricated data
b0b9cc23by Craig Raw+160−52 files
No security note in commit
Low 42 AI analysisMessage 50 · Thin
SW SparrowSparrow Wallet BitcoinHardware integrationSoftware wallets

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

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 …

Prevents accidental import of extended private keys into watch-only wallet contextSurfaces previously swallowed import errors to the user via error dialogChanges exception handling from ImportException-only to all exceptions
fa0d4841by Craig Raw+19−152 files
No security note in commit
Low 49 AI analysisMessage 50 · Thin
SW SparrowSparrow Wallet BitcoinHardware integrationSoftware wallets

ensure imported keystore labels are truncated and unique

This commit fixes a bug in Sparrow Wallet's import of wallet labels. Previously, labels for multi-signature participants (keystores) could be too long or identical to each other, which could make the wallet file impossible to reopen. The c…

Denial-of-service via malformed imported label causing wallet file to become unopenableInput validation added for imported keystore labelsLength truncation and uniqueness enforcement for keystore labels
7a3f775aby Craig Raw+17−61 file
Vendor flagged security relevance
Moderate 61 AI analysisMessage 50 · Thin
SW SparrowSparrow Wallet BitcoinHardware integrationSoftware wallets

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

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…

Permission hardening for sensitive wallet storage directoriesNew setOwnerOnlyDirectory helper enforcing rwx------ on existing directoriesBackup directory permissions now always restricted on startup
5d387765by Craig Raw+35−01 file
Vendor flagged security relevance
Low 25 AI analysisMessage 45 · Thin
SW SparrowSparrow Wallet BitcoinHardware integrationSoftware wallets

add bitbox02 attestation failed dialog

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 attesta…

Adds explicit user warning for failed hardware wallet attestationPrevents repeated warning dialogs during device enumeration using AtomicBooleanWarns user not to store funds on potentially counterfeit device
1a810c06by Craig Raw+16−12 files
No security note in commit
Moderate 56 AI analysisMessage 50 · Thin
SW SparrowSparrow Wallet BitcoinHardware integrationSoftware wallets

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

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 le…

Added minimum fee-rate enforcement on Payjoin proposalsAdded Taproot (P2TR) key-path and derived-public-key validation and propagationRestricted payment-output substitution to proposals that retain a change output
32f7e58fby Craig Raw+250−233 files
No security note in commit
Low 46 AI analysisMessage 50 · Thin
SW SparrowSparrow Wallet BitcoinHardware integrationSoftware wallets

improve validation of legacy multipart qr part numbers

This commit tightens how Sparrow Wallet handles multi-part QR codes used to import older wallet data. It limits part numbers to four digits and rejects impossible values (like part 0 of 0, or part 5 of 2). The change prevents the app from …

Input validation added to QR multipart parserRegex quantifier tightened from unbounded to {1,4}Bounds check prevents m > n and zero/negative counts
059f1e88by Craig Raw+10−62 files
No security note in commit
Informational 18 AI analysisMessage 65 · Adequate
SW SparrowSparrow Wallet BitcoinHardware integrationSoftware wallets

remove unused signature verification results in satochip and keycard signers, note where signatures are verified

This commit removes leftover code that checked whether signatures from hardware card signers were valid, but then threw away the result. The signatures are still verified later by a different part of the wallet when the signed transaction …

Removal of local signature verification calls in hardware signer code pathsAdded comments documenting that signature verification occurs later via PSBT.verifyCombinedSignatures()Unused boolean results indicate the removed checks were dead code rather than active security controls
866e9893by Craig Raw+5−132 files
No security note in commit
Moderate 60 AI analysisMessage 50 · Thin
SW SparrowSparrow Wallet BitcoinHardware integrationSoftware wallets

improve validation of bip129, descriptor and unchained wallet imports

This commit hardens how Sparrow Wallet imports wallet files from other tools. It adds checks that reject malformed or inconsistent imports—such as a multisig setup that says it needs 3 signers but only provides 2 keys, or a coordinator fil…

Added wallet.checkWallet() validation after descriptor, BSMS, Caravan and terminal wallet creationBIP129 first-address verification prevents coordinator from supplying different keys to each signerBIP129 path restriction enforcement limits derivation to standard receive/change chains
3752540eby Craig Raw+469−429 files
Vendor flagged security relevance
Moderate 59 AI analysisMessage 60 · Adequate
SW SparrowSparrow Wallet BitcoinHardware integrationSoftware wallets

only save certificates passing hostname verification as ca validated, and retain not yet valid certificates

This commit tightens how Sparrow Wallet saves and reuses TLS certificates for private servers. Previously, any certificate that passed a basic CA check was saved as 'CA validated' even if it didn't actually match the server's hostname. Tha…

Missing hostname verification before saving CA-trusted certificateBroad exception handling previously caused deletion of saved certificates on any CertificateExceptionCertificate pinning/trust-store logic for private Electrum servers
372ebf2fby Craig Raw+38−61 file
No security note in commit
Low 28 AI analysisMessage 35 · Opaque
SW SparrowSparrow Wallet BitcoinHardware integrationSoftware wallets

remove ineffective eckey clear

This commit removes several calls that tried to wipe private-key material from memory. The developer says these wipes were 'ineffective' because the underlying ECKey object still held the secret bytes. The change is a cleanup, but it sligh…

Removal of explicit private-key zeroization callsCommit message labels prior zeroization as ineffectivePrivate key material remains referenced longer after use
1636c7e2by Craig Raw+2−1911 files
No security note in commit
High 72 AI analysisMessage 55 · Thin
SW SparrowSparrow Wallet BitcoinHardware integrationSoftware wallets

verify fetched transactions match requested txid

This commit adds checks to make sure that when Sparrow Wallet asks an Electrum server for a specific Bitcoin transaction, the server actually returns the transaction that was requested. Before this change, a malicious or buggy server could…

Missing input validation on server-provided transaction dataPotential transaction substitution by malicious or compromised Electrum serverDefense-in-depth verification added at data deserialization boundary
3979694eby Craig Raw+100−163 files
No security note in commit
Informational 15 AI analysisMessage 28 · Opaque
SW SparrowSparrow Wallet BitcoinHardware integrationSoftware wallets

rotate era logos

This commit simply rotates four logo images by 90 degrees. It changes only SVG graphics files and does not touch any code, cryptography, wallet logic, or network behavior. There is no security relevance.

2b9c3eb7by Craig Raw+4−44 files
No security note in commit
Informational 15 AI analysisMessage 38 · Opaque
SW SparrowSparrow Wallet BitcoinHardware integrationSoftware wallets

bump to v2.5.4

This commit is a routine version bump from 2.5.3 to 2.5.4. It only changes version strings in four files: the build configuration, macOS packaging metadata, in-app version constant, and documentation for reproducible builds. There are no c…

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

treat whitespace-only labels as blank on label import and export

This commit tightens how Sparrow Wallet treats labels made only of spaces or tabs during wallet label import and export. Previously, a label consisting solely of whitespace was considered a real label; now it is treated as blank and skippe…

Behavioral hardening: whitespace-only strings now treated as absent labelsNo input validation bypass, memory safety, or cryptographic changes observedPotential minor UI/data-integrity issue mitigated, not a vulnerability
0dce4783by Craig Raw+10−92 files
No security note in commit
Informational 19 AI analysisMessage 50 · Thin
SW SparrowSparrow Wallet BitcoinHardware integrationSoftware wallets

add option to ignore dust on private key sweep

This commit adds a user-facing checkbox labeled 'Ignore dust' to the private-key sweep feature in Sparrow Wallet. When enabled, very small ('dust') unspent outputs linked to the swept key are excluded from the transaction. This is a usabil…

Adds user-controlled filtering of UTXOs by value thresholdUses existing 'dustAttackThreshold' configuration, implying prior anti-dust handling elsewhereNo input validation, cryptographic, or authorization changes
cf797ea0by nroktib+21−21 file
No security note in commit
Informational 19 AI analysisMessage 45 · Thin
SW SparrowSparrow Wallet BitcoinHardware integrationSoftware wallets

add opt-in xdg application directory support

This commit changes where Sparrow Wallet stores its files on macOS and Linux to optionally follow the XDG Base Directory Specification. It is a directory-layout migration, not a fix for a vulnerability. The change could create minor securi…

Directory migration logic with symlink creation and fallback search pathsInstance lock pointer now searched in both new XDG state home and legacy default homeNetwork directory rename logic creates/updates symlinks and may leave stale symlinks
2d667d11by Craig Raw+177−829 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 queuedimprove error dialog on payjoin receiver errorby Craig Raw · 62406674 · Sep 2, 2025 · 1 fileMessage 45 · ThinInformational 15Details
Commit message · Craig Raw

improve error dialog on payjoin receiver error

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

This commit only improves an error message shown to the user when a payjoin transaction fails. It adds a specific catch block so that an existing 'PayjoinReceiverException' is logged and re-thrown with its original message intact, instead of being wrapped in a generic 'Payjoin error'. There is no security fix here—just better error reporting.

AI review queuedupdate drongoby Craig Raw · 2c27112d · Aug 16, 2025 · 1 fileMessage 18 · OpaqueTriage 0Details
Commit message · Craig Raw

update drongo

18/100 · OpaqueMessage clarity
✓ Subject identifies a change! Too few words to establish purpose! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
AI review queuedfix bluewallet spellingby Craig Raw · 6d53e1ed · Aug 12, 2025 · 2 filesMessage 28 · OpaqueInformational 15Details
Commit message · Craig Raw

fix bluewallet spelling

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

This commit is a simple spelling/brand-name correction. It changes every visible mention of 'Blue Wallet' to 'BlueWallet' in the code that handles importing and exporting multisig wallet setups from the BlueWallet mobile app. There is no security change.

AI review queuedallow transaction diagram input and output labels to expand into available widthby Craig Raw · e8c56608 · Aug 11, 2025 · 3 filesMessage 50 · ThinInformational 15Details
Commit message · Craig Raw

allow transaction diagram input and output labels to expand into available width

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

This commit is a user-interface layout tweak for Sparrow Wallet. It lets the transaction diagram's input and output labels use more horizontal space so long text (such as addresses or labels) is easier to read. There is no security change here.

AI review queuedupgrade to gradle 8.14.3by Craig Raw · bef6c750 · Aug 7, 2025 · 10 filesMessage 38 · OpaqueTriage 0Details
Commit message · Craig Raw

upgrade to gradle 8.14.3

38/100 · OpaqueMessage clarity
✓ Subject identifies a change✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
Security candidatefix non bip32 child derivation testby Craig Raw · 4ec36037 · Aug 7, 2025 · 1 fileMessage 55 · ThinInformational 3Details
Commit message · Craig Raw

fix non bip32 child derivation test

55/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Mentions testing or verification! No meaningful explanatory body
Why it was queued
secret or key material
AI analysis · Informational 3/100

This appears to be a one-line change to a test file named 'drongo' with the description 'fix non bip32 child derivation test'. There is no actual diff content available, and no security-related context is provided. Based solely on the title and stats, this looks like a routine correction to a unit test for Bitcoin BIP32 hierarchical deterministic wallet key derivation logic. Nothing in the supplied materials indicates a security vulnerability, exploit, or user-facing bug.