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 queue79AI 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 Raw2684674446
doblon8312048
Michele Balistreri211048
nroktib111050
nzb-tuxxx111060
Liz Lightning200045
PeterXMR100045
Ian McKenzie100050
ottosch100050
craigraw100060
Analysis record

Published AI watches

Last scanned 52 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.

Lower-priorityupgrade jcommander to v3.0by Craig Raw · df5b5146 · Mar 4, 2026 · 1 fileMessage 45 · ThinTriage 0Details
Commit message · Craig Raw

upgrade jcommander to v3.0

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
AI review queuedupgrade zxing to v3.5.4by Craig Raw · 452584d8 · Mar 4, 2026 · 1 fileMessage 38 · OpaqueTriage 0Details
Commit message · Craig Raw

upgrade zxing to v3.5.4

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
Lower-priorityupgrade caffeine to v3.2.3by Craig Raw · 5c823533 · Mar 4, 2026 · 1 fileMessage 45 · ThinTriage 0Details
Commit message · Craig Raw

upgrade caffeine to v3.2.3

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Lower-priorityupgrade dnsjava to v3.6.4by Craig Raw · 6561971d · Mar 4, 2026 · 1 fileMessage 45 · ThinTriage 0Details
Commit message · Craig Raw

upgrade dnsjava to v3.6.4

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Lower-priorityupgrade rxjava2 to v2.2.21by Craig Raw · 8ebf8dc0 · Mar 4, 2026 · 2 filesMessage 45 · ThinTriage 0Details
Commit message · Craig Raw

upgrade rxjava2 to v2.2.21

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Lower-priorityupgrade argon2-jvm to v2.12by Craig Raw · 419e8e13 · Mar 4, 2026 · 1 fileMessage 45 · ThinTriage 0Details
Commit message · Craig Raw

upgrade argon2-jvm to v2.12

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Lower-priorityupgrade commons-codec to v1.21.0by Craig Raw · 684965cf · Mar 4, 2026 · 1 fileMessage 45 · ThinTriage 0Details
Commit message · Craig Raw

upgrade commons-codec to v1.21.0

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Lower-priorityupgrade commons-compress to v1.28.0by Craig Raw · 3498b5ba · Mar 4, 2026 · 1 fileMessage 45 · ThinTriage 0Details
Commit message · Craig Raw

upgrade commons-compress to v1.28.0

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Lower-priorityupgrade commons-lang3 to v3.20.0by Craig Raw · 74635b1d · Mar 4, 2026 · 2 filesMessage 45 · ThinTriage 0Details
Commit message · Craig Raw

upgrade commons-lang3 to v3.20.0

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
AI review queuedupgrade jdbi to v3.51.0by Craig Raw · 229c6430 · Mar 4, 2026 · 2 filesMessage 38 · OpaqueTriage 12Details
Commit message · Craig Raw

upgrade jdbi to v3.51.0

38/100 · OpaqueMessage clarity
✓ Subject identifies a change✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: opaque commit messagesecond-pass: security-sensitive path
Lower-priorityupgrade hikaricp to v7.0.2by Craig Raw · c74abfee · Mar 4, 2026 · 1 fileMessage 45 · ThinTriage 0Details
Commit message · Craig Raw

upgrade hikaricp to v7.0.2

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Lower-priorityupgrade openpdf to v1.3.43by Craig Raw · c78bc7b1 · Mar 4, 2026 · 1 fileMessage 45 · ThinTriage 0Details
Commit message · Craig Raw

upgrade openpdf to v1.3.43

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
AI review queuedupgrade jna to v5.18.1by Craig Raw · 87cd96a6 · Mar 4, 2026 · 1 fileMessage 38 · OpaqueTriage 0Details
Commit message · Craig Raw

upgrade jna to v5.18.1

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
Lower-priorityupgrade slf4j-api and jul-to-slf4j to v2.0.17by Craig Raw · 7ae04a25 · Mar 4, 2026 · 3 filesMessage 45 · ThinTriage 0Details
Commit message · Craig Raw

upgrade slf4j-api and jul-to-slf4j to v2.0.17

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
AI review queueddetect algorithm on provided certificate when checking for ca certby Craig Raw · d4c0df0d · Feb 28, 2026 · 1 fileMessage 50 · ThinTriage 12Details
Commit message · Craig Raw

detect algorithm on provided certificate when checking for ca cert

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 review queuedadd hostname verification for ca-validated tls connectionsby Craig Raw · dc88dc4e · Feb 28, 2026 · 2 filesMessage 60 · AdequateHigh 74Details
Commit message · Craig Raw

add hostname verification for ca-validated tls connections

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
defensive validationsigning or wallet pathsecond-pass: near security thresholdsecond-pass: broader security terminologysecond-pass: security-sensitive path
AI analysis · High 74/100

This commit fixes a bug in Sparrow Wallet's encrypted network connections. When the wallet connected to a server through a proxy (like Tor), it accidentally checked the proxy's identity instead of the actual server's identity. It also adds proper hostname verification for connections that use standard certificate authorities. Without these checks, a malicious actor controlling a proxy or network path could trick the wallet into trusting the wrong server, potentially exposing transaction data or balances.

AI review queueduse ca validation or tofu pinning for public servers depending on certificate typeby Craig Raw · a478edfa · Feb 27, 2026 · 6 filesMessage 50 · ThinTriage 12Details
Commit message · Craig Raw

use ca validation or tofu pinning for public servers depending on certificate type

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 review queuedimplement tofu certificate pinning for tls bitcoin core connectionsby Craig Raw · 46d44461 · Feb 19, 2026 · 4 filesMessage 50 · ThinTriage 12Details
Commit message · Craig Raw

implement tofu certificate pinning for tls bitcoin core connections

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 review queuedescape backticks in schema name for drop schema statementby Craig Raw · 78fe5578 · Feb 18, 2026 · 2 filesMessage 50 · ThinTriage 12Details
Commit message · Craig Raw

escape backticks in schema name for drop schema statement

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 review queuedbind cormorant server to localhost onlyby Craig Raw · cd0be365 · Feb 18, 2026 · 1 fileMessage 45 · ThinTriage 12Details
Commit message · Craig Raw

bind cormorant server to localhost only

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 review queuedbump to v2.4.2by Craig Raw · b9d62c0b · Feb 17, 2026 · 4 filesMessage 38 · OpaqueTriage 12Details
Commit message · Craig Raw

bump to v2.4.2

38/100 · OpaqueMessage clarity
✓ Subject identifies a change✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: opaque commit messagesecond-pass: security-sensitive path
AI review queuedsuggest configuring a custom wallets directory when opening a wallet from a non-default locationby Craig Raw · 53d1f196 · Feb 17, 2026 · 3 filesMessage 50 · ThinTriage 12Details
Commit message · Craig Raw

suggest configuring a custom wallets directory when opening a wallet from a non-default location

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 review queuedrecognise renamed linux packages for file verify drag and dropby Craig Raw · 64b8da14 · Feb 16, 2026 · 1 fileMessage 60 · AdequateTriage 12Details
Commit message · Craig Raw

recognise renamed linux packages for file verify drag and drop

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 review queuedhandle import of samourai wallet backup file with extraneous appended databy ottosch · 529cc3d6 · Feb 12, 2026 · 1 fileMessage 50 · ThinTriage 12Details
Commit message · ottosch

handle import of samourai wallet backup file with extraneous appended data

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
Security candidateadd keepkey passphrase supportby Craig Raw · e13fe897 · Feb 12, 2026 · 1 fileMessage 35 · OpaqueInformational 2Details
Commit message · Craig Raw

add keepkey passphrase support

35/100 · OpaqueMessage clarity
✓ Descriptive subject! No meaningful explanatory body! Opaque security-relevant change
Why it was queued
access control
AI analysis · Informational 2/100

This commit appears to add support for using a passphrase with KeepKey hardware wallets in Sparrow Wallet. A passphrase is an extra word added to a wallet seed for additional security. No actual code diff was provided, so we cannot assess whether the change was implemented safely or unsafely. Based only on the title and one-line description, there is no visible security issue.