EL
← All projectsElectrum

Electrum

Long-running lightweight Bitcoin wallet for desktop and mobile platforms.

BitcoinSoftware walletsNormal
Repository coverage

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

92security candidates261second-pass queue1007AI analyses
127commits · 30 days
262commits · 60 days
545commits · 180 days
1002commits · 365 days
Backfill bands
Aug 5 → Feb 6470 seen11 candidatesComplete
Feb 6 → Jun 6346 seen10 candidatesComplete
Jun 6 → Jul 653 seen2 candidatesComplete
Jul 6 → Aug 554 seen3 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.

66/100 average clarity
220Strong · 80–100
549Adequate · 60–79
340Thin · 40–59
44Opaque · 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.
ThomasV137891162
SomberNight39330362063
f321x40325387070
Sander van Grieken10910101057
ghost4342517069
Felix25410072
user323062
ekzyis222053
accumulator613071
Roman Zeyde515053
Sasha Zykov515075
Aaron Fiore414068
Analysis record

Published AI watches

Last scanned 39 minutes ago

Low 29 AI analysisMessage 58 · Thin
EL ElectrumElectrum BitcoinSoftware wallets

Merge pull request #10992 from f321x/dedup_is_seed_wizard

This commit simplifies the seed-validation logic in Electrum's Qt wallet wizard by replacing a local copy of the rules with a call to an existing shared validation method. The change appears to be a code-cleanup refactor that removes dupli…

Refactor of seed-validation logic in wallet creation wizardRemoval of duplicated seed-type checks in favor of centralized validationAdded assertion constraining seed type to 'electrum'
554daca6by ghost43+2−81 file
No security note in commit
Low 29 AI analysisMessage 73 · Adequate
EL ElectrumElectrum BitcoinSoftware wallets

Merge pull request #10982 from spesmilo/wizard_2fa_seed_redirect

This commit changes Electrum's wallet creation wizard so that if a user tries to restore a normal 'standard' wallet but pastes a seed phrase that actually belongs to a two-factor authentication (2FA) wallet, the wizard automatically redire…

UX-level safety fix preventing wallet-type/seed mismatchState mutation: wizard_data['wallet_type'] changed from 'standard' to '2fa' based on seed typeNo cryptographic, network, or privilege changes
310c9dd0by Felix+102−133 files
No security note in commit
Informational 12 AI analysisMessage 68 · Adequate
EL ElectrumElectrum BitcoinSoftware wallets

qt: wizard: dedup seed validation rules

This commit is a small code cleanup in Electrum's wallet setup wizard. It removes a duplicate copy of the rules used to check whether a recovery seed is valid and instead reuses an existing method. There is no indication this fixes a secur…

89d0de06by f321x+2−81 file
No security note in commit
Informational 15 AI analysisMessage 70 · Adequate
EL ElectrumElectrum BitcoinSoftware wallets

tests: wizard: cover standard -> 2fa redirection

This commit only adds and reorganizes automated test code for Electrum's wallet creation wizard. It does not change any production wallet logic, cryptography, or network handling. The tests verify that when a user tries to restore a 'stand…

70b4d27cby f321x+68−91 file
No security note in commit
Informational 15 AI analysisMessage 78 · Adequate
EL ElectrumElectrum BitcoinSoftware wallets

Merge pull request #10988 from f321x/update_security_review_ci_model

This commit updates Electrum's internal CI (continuous integration) script that runs an automated security review using Anthropic's Claude Code tool. It changes the AI model version used for reviews from 'claude-opus-5' to 'claude-opus-5-5…

CI hardening: detects and reports AI model downgrades during automated security reviewNo changes to application code, cryptography, network protocol, or build artifactsNo privilege escalation, injection, or data-exfiltration vectors introduced by the diff
638fbba8by Felix+75−111 file
No security note in commit
Informational 12 AI analysisMessage 90 · Strong
EL ElectrumElectrum BitcoinSoftware wallets

ci: security review: warn if the model got downgraded

This commit updates Electrum's own CI security-review script. It adds detection and warnings when the automated code reviewer (Claude Code) silently falls back to a different AI model, for example after a content-policy refusal. It does no…

CI-only changeNo modification of wallet, crypto, networking, or build artifactsAdds detection for AI model fallback/downgrade in automated security review
ace2ca7aby f321x+74−101 file
No security note in commit
Low 44 AI analysisMessage 68 · Adequate
EL ElectrumElectrum BitcoinSoftware wallets

Merge pull request #10987 from spesmilo/fix_10986

This commit fixes a bug where Electrum failed to recognize certain already-signed Bitcoin transactions as complete. Specifically, for native SegWit inputs, Bitcoin Core can produce a finalized PSBT with a valid witness but an empty scriptS…

Logic error in transaction completeness detectionNative SegWit witness handling edge casePSBT interoperability issue with Bitcoin Core
bef80421by ghost43+11−02 files
No security note in commit
Low 35 AI analysisMessage 81 · Strong
EL ElectrumElectrum BitcoinSoftware wallets

transaction: treat native segwit input with non-empty witness as complete

This commit fixes a bug where Electrum incorrectly treated finalized Bitcoin transactions as incomplete. Some wallet software (like Bitcoin Core and Sparrow) creates native SegWit transactions that omit an empty placeholder field Electrum …

Logic error in transaction completeness detectionPotential denial of service / user funds stuck due to refusal to broadcast valid finalized transactionInteroperability failure with Bitcoin Core and Sparrow PSBT output
e9bb42e6by ThomasV+11−02 files
No security note in commit
Moderate 68 AI analysisMessage 73 · Adequate
EL ElectrumElectrum BitcoinSoftware wallets

Merge pull request #10981 from spesmilo/do_not_sign_txin_with_witness

This change prevents Electrum from re-signing Bitcoin transaction inputs that already contain a witness (the data proving the input was authorized). The patch fixes a bug where Electrum could incorrectly sign a non-SegWit input as if it we…

Incorrect signature algorithm selection for non-SegWit inputs when witness data is presentPSBT handling edge case where pre-existing witness data influences signing pathPotential invalid signature production during transaction signing
9da4c342by ThomasV+10−21 file
No security note in commit
Informational 15 AI analysisMessage 73 · Adequate
EL ElectrumElectrum BitcoinSoftware wallets

Merge pull request #10974 from SomberNight/202609_nostr_psbt_xpub

This commit only adds a long code comment explaining a design choice in Electrum's PSBT-over-Nostr plugin. It does not change any program behavior. The comment documents that the plugin derives each cosigner's Nostr secret key from their B…

Documentation-only changeExplicit design tradeoff disclosure: cosigners can derive each other's Nostr secret keys from shared xpubsNo functional code change
46408a78by ThomasV+13−01 file
No security note in commit
Low 42 AI analysisMessage 73 · Adequate
EL ElectrumElectrum BitcoinSoftware wallets

Merge pull request #10980 from spesmilo/add_input_from_network_do_not_ignore_exceptions

This is a one-line bugfix in Electrum's transaction handling. Previously, the code accidentally swallowed (hid) almost all exceptions when fetching extra transaction data from the network, only re-raising errors that were both network-rela…

Exception swallowing bug fixedNetwork/transaction input enrichment logic changedSilent failure mode removed
bb9d3280by ghost43+1−11 file
No security note in commit
Moderate 60 AI analysisMessage 58 · Thin
EL ElectrumElectrum BitcoinSoftware wallets

Merge pull request #10970 from f321x/fix_bolt11_bugs_2

This commit fixes several bugs in Electrum's handling of BOLT11 Lightning invoices. The most user-visible fixes are: stricter validation of invoice amounts (rejecting zero, negative, sub-millisatoshi, and leading-zero amounts), correct pad…

Stricter BOLT11 amount validation prevents acceptance of zero, negative, sub-millisatoshi, and leading-zero amountsFixed int_to_data5 padding bug that corrupted small timestamp values during invoice round-tripMalformed 'r' routing tags now raise exceptions instead of being silently skipped
4b92c0f2by ghost43+82−939 files
No security note in commit
Moderate 61 AI analysisMessage 80 · Strong
EL ElectrumElectrum BitcoinSoftware wallets

add_info_from_network: do not swallow exceptions

Electrum's transaction builder had a bug where it would ignore certain consistency errors when fetching extra transaction data from the network. A malicious or misbehaving server could supply a wrong input amount, and Electrum would silent…

Swallowed exception leading to use of attacker-controlled input valuePSBT input consistency check bypassedPotential malicious Electrum server influence on transaction signing
3f67b21bby ThomasV+1−11 file
Vendor flagged security relevance
Informational 15 AI analysisMessage 60 · Adequate
EL ElectrumElectrum BitcoinSoftware wallets

bolt11: remove tag arg from get_routing_info

This is a small code cleanup change. A function that reads routing hints from Lightning invoices no longer takes a tag argument because only one type of routing hint ('r') is now supported. All callers are updated accordingly. There is no …

e78fba28by f321x+12−127 files
No security note in commit
Moderate 62 AI analysisMessage 73 · Adequate
EL ElectrumElectrum BitcoinSoftware wallets

Merge pull request #10940 from accumulator/fix_10937

This commit tightens how Electrum parses Bitcoin payment requests (BOLT11 lightning invoices and BIP21 URIs). It turns previously uncaught internal errors into proper validation failures, rejects malformed invoice fields that used to be si…

Stricter input validation for externally supplied BOLT11 invoices and BIP21 URIsPreviously uncaught exceptions (ValueError, UnicodeDecodeError, ecc errors) are now wrapped in domain-specific decode exceptionsMalformed fallback addresses are skipped rather than aborting or crashing
a57ef6e7by Felix+707−9610 files
No security note in commit
Low 40 AI analysisMessage 36 · Opaque
EL ElectrumElectrum BitcoinSoftware wallets

bolt11: followup #10940

This commit tightens how Electrum parses BOLT11 Lightning invoices. It now rejects duplicate 'n' (node pubkey) tags instead of silently keeping only the first one, and it rejects invoice timestamps that are negative or too far in the futur…

Stricter validation of invoice timestamp boundsDuplicate 'n' tag now raises an exception instead of being silently droppedFollow-up to prior PR #10940, indicating a recent area of security-sensitive review
3026fbdbby f321x+14−232 files
No security note in commit
Low 32 AI analysisMessage 73 · Adequate
EL ElectrumElectrum BitcoinSoftware wallets

Merge pull request #10737 from sashazykov/hw-close-wallet-thread-leak

This commit fixes a shutdown bug in Electrum's hardware wallet support. Previously, if disconnecting from a hardware wallet failed, the cleanup thread could keep running, which could crash the application when closing. The fix stops the th…

Process abort/crash at shutdown due to leaked QThreadException during cleanup not handled, potentially causing abnormal terminationHardware wallet client close made best-effort with error logging
5b77ca46by Felix+9−22 files
No security note in commit
Informational 23 AI analysisMessage 58 · Thin
EL ElectrumElectrum BitcoinSoftware wallets

Merge pull request #10958 from SomberNight/202609_deps

This commit is a routine dependency update for the Electrum Bitcoin wallet. It bumps versions of Python, OpenSSL, secp256k1, and various Python packages used in builds and runtime. The commit itself does not fix any known security bug in E…

Dependency version bumps for cryptographic libraries (OpenSSL, libsecp256k1, electrum-ecc)Routine maintenance commit with no explicit security claimHash-only changes in deterministic requirements files
8bd8c3fbby ghost43+57−5612 files
No security note in commit
Informational 21 AI analysisMessage 58 · Thin
EL ElectrumElectrum BitcoinSoftware wallets

Merge pull request #10965 from SomberNight/202609_header_checkpoints

This commit only adds new Bitcoin block header checkpoints to Electrum's built-in chain data files. Checkpoints are hardcoded reference points that help the wallet verify it is following the real blockchain and not a fake one. Updating the…

Hardcoded blockchain checkpoints extended for all supported networksNo executable code or cryptographic logic changedNo bug fix, privilege change, or input validation change present
9e0b7e64by ghost43+276−04 files
No security note in commit
Informational 15 AI analysisMessage 58 · Thin
EL ElectrumElectrum BitcoinSoftware wallets

update block header checkpoints

This commit simply refreshes Electrum's built-in list of Bitcoin blockchain checkpoints. Checkpoints are known-good block hashes that help the wallet verify it is following the real chain. The update adds newer checkpoints for mainnet, sig…

e11c579bby SomberNight+276−04 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-priorityqt: lnurlw: catch UserCancelled on lnurlw withdrawalby f321x · e1f1e6f7 · Dec 10, 2025 · 1 fileMessage 65 · AdequateInformational 17Details
Commit message · f321x

qt: lnurlw: catch UserCancelled on lnurlw withdrawal

Catch the UserCancelled exception if the user cancels the lnurlw
coroutine dialog during the withdrawal.

65/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
AI analysis · Informational 17/100

This is a minor user-interface fix. When a user starts a Lightning LNURL-withdrawal in the Electrum desktop app and then clicks Cancel, the app now quietly handles that cancellation instead of possibly showing an unhandled error. It does not create a security vulnerability; it improves the user experience by suppressing a harmless exception.

Lower-prioritylnurlw: accept "null" minWithdrawable in responseby f321x · 4bd013ef · Dec 10, 2025 · 1 fileMessage 68 · AdequateInformational 19Details
Commit message · f321x

lnurlw: accept "null" minWithdrawable in response

Accept a `null` value as response for the `minWithdrawable` field in the
lnurlw response. Some servers seem to set this to `null` instead of 0
when having no minimum withdrawal amount.

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
AI analysis · Informational 19/100

This is a tiny compatibility fix for the Electrum Bitcoin wallet's handling of LNURL-withdraw (a way to withdraw bitcoins from a service). Some LNURL servers send a 'null' value for the minimum withdrawal amount instead of the number 0. Previously, Electrum would crash when converting 'null' to an integer. The change treats 'null' as 0 so the wallet can continue. It is not a security fix and does not introduce an obvious vulnerability.

Lower-prioritytests: lnpeer: add test_reject_mpp_for_non_mpp_invoiceby f321x · 7c01d9db · Dec 10, 2025 · 1 fileMessage 50 · ThinInformational 15Details
Commit message · f321x

tests: lnpeer: add test_reject_mpp_for_non_mpp_invoice

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Mentions testing or verification! No meaningful explanatory body
AI analysis · Informational 15/100

This commit only adds a new automated test to Electrum's Lightning networking code. It checks that a multi-part payment (MPP) is rejected when the recipient's invoice did not advertise support for MPP. There is no change to production code, no bug fix, and no security patch in the diff itself.

Lower-prioritylnpeer: fail htlcs if we get unwanted mppby f321x · 183d426e · Dec 10, 2025 · 2 filesMessage 60 · AdequateModerate 59Details
Commit message · f321x

lnpeer: fail htlcs if we get unwanted mpp

Fail incoming htlcs if we receive a payment consisting of multiple parts
if we signaled to not want mpp in the invoice.

60/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
AI analysis · Moderate 59/100

This commit fixes a bug in Electrum's Lightning payment receiving code. Previously, a merchant could create an invoice that said 'do not pay me using multiple payment parts (MPP)', but Electrum would still accept such multi-part payments anyway. The patch makes Electrum reject those unwanted multi-part payments. This matters because accepting MPP when it was not requested could let a payer split a payment in ways the receiver did not expect, potentially causing accounting confusion, channel fee issues, or problems with just-in-time (JIT) channel opening, which only supports single-part payments.

AI review queuedlnworker: add invoice features to PaymentInfo classby f321x · 125a921c · Dec 10, 2025 · 3 filesMessage 73 · AdequateLow 34Details
Commit message · f321x

lnworker: add invoice features to PaymentInfo class

Adds the invoice features to the `PaymentInfo` class so we can check if
the sender respects our requested features (e.g. if they tried to send
mpp if we requested no mpp).

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Low 34/100

This commit changes how Electrum stores and uses Lightning invoice features. It records which features (like multi-part payments, or MPP) were advertised in an invoice, so the wallet can later check whether the sender followed those rules. The change also fixes a minor bug where the wallet read from the wrong config object. There is no direct evidence in the commit that this fixes an active exploit, but it is a defensive hardening change that prevents a sender from ignoring the receiver's invoice rules.

AI review queuedlnworker: use channel_id instead of scid in ReceivedMPPHtlcby f321x · 5be598b8 · Dec 9, 2025 · 4 filesMessage 73 · AdequateLow 32Details
Commit message · f321x

lnworker: use channel_id instead of scid in ReceivedMPPHtlc

Store the channel id instead of the scid in ReceivedMPPHtlc.
The scid can be None, in theory even for multiple channels at the same
time. Using the channel_id which is always available and unique seems
less error prone at the cost of temporarily higher storage requirements
in the db for the duration of the pending htlcs.

Alternatively we could use the local scid alias however using the
channel_id seems less complex and leaves less room for ambiguity.

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Low 32/100

This commit changes how Electrum's Lightning wallet internally tracks incoming multi-part payments. Instead of using the short channel ID (which can be missing or ambiguous), it now uses the permanent channel ID. The change includes a database upgrade to convert old stored data. The commit message frames this as a robustness improvement, not a security fix, but the scenario it addresses—multiple channels lacking short IDs—could theoretically lead to mis-routing or incorrect handling of pending payments.

Lower-prioritylnworker: add type assert to get_channel_by_short_idby f321x · 8a88ebe6 · Dec 9, 2025 · 1 fileMessage 65 · AdequateLow 29Details
Commit message · f321x

lnworker: add type assert to get_channel_by_short_id

Prevents accidentally passing None if channel.short_id is not set yet

65/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
AI analysis · Low 29/100

This commit adds a safety check to a Lightning Network function so it refuses to accept an empty or wrong-type channel identifier. The change is defensive: it turns a silent 'no match found' return value into an immediate crash if a caller accidentally passes an invalid identifier. There is no direct evidence in the commit that this fixes an active security vulnerability or real-world exploit.

Lower-prioritylnworker: write rationale for PaymentInfo class in docstringby SomberNight · 6d1e8e86 · Dec 8, 2025 · 1 fileMessage 81 · StrongInformational 15Details
Commit message · SomberNight

lnworker: write rationale for PaymentInfo class in docstring

ref https://github.com/spesmilo/electrum/commit/4ad9caddab3fe5d3b25fc53d7ffa7ccf5cbd3b6c
ref https://github.com/spesmilo/electrum/commit/f08e5541aeda9524eb456477f93732de7357c792

81/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
AI analysis · Informational 15/100

This commit only adds explanatory comments (a docstring) to a data class used in Electrum's Lightning payment handling. It does not change any code behavior, fix any bug, or alter any security mechanism. There is no security issue here.

Lower-prioritylnpeer: deduct JIT fees also for trampolineby ThomasV · da998150 · Dec 6, 2025 · 1 fileMessage 45 · ThinLow 41Details
Commit message · ThomasV

lnpeer: deduct JIT fees also for trampoline

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
AI analysis · Low 41/100

This is a one-line fix in Electrum's Lightning Network code. It adjusts when Electrum considers the first part of a trampoline payment 'complete' by subtracting JIT (just-in-time) channel opening fees from the amount being forwarded. Without the fix, a trampoline payment stage could be incorrectly marked complete too early, potentially causing accounting or routing issues. The commit message frames it as a bug fix, not a security issue, and no security impact is directly stated.

Lower-prioritylnpeer: deduct jit channel fees from total amountby f321x · fb566eb5 · Dec 6, 2025 · 2 filesMessage 76 · AdequateModerate 59Details
Commit message · f321x

lnpeer: deduct jit channel fees from total amount

Deduct the just in time channel opening fees from the total amount so
htlcs don't get timed out if they come from a just in time channel with
opening fee.

Related: https://github.com/spesmilo/electrum/pull/9584

76/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
AI analysis · Moderate 59/100

This commit fixes a bug in Electrum's Lightning payment handling for 'just-in-time' (JIT) channels. When a payment arrives through a JIT channel, the channel opener charges an opening fee. Previously, the code did not properly subtract this fee when checking whether the full payment amount had been received. This could cause multi-part payments to time out or fail even though the sender had sent enough money, because the receiver's accounting compared the raw amount received against the invoice total without accounting for the fee already taken by the JIT channel. The patch renames the fee field for clarity and deducts the JIT opening fee from the total before deciding whether the payment is complete.

AI review queueddnssec: log warning if dependency is missingby SomberNight · cf8c243b · Dec 5, 2025 · 1 fileMessage 68 · AdequateInformational 18Details
Commit message · SomberNight

dnssec: log warning if dependency is missing

Calling dnssec.query() with missing "cryptography" dep behaves the same as if DNSSEC validation failed: validated=False will be returned.
When used for openalias, we mandate validated=True.

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
defensive validationsecond-pass: broader security terminology
AI analysis · Informational 18/100

This commit only changes how Electrum logs a message when the optional 'cryptography' Python package is missing. It does not change any actual security behavior: DNSSEC validation still fails and falls back to plain DNS, and OpenAlias still rejects unvalidated results. The change simply makes the missing-dependency warning more visible in logs.

Lower-priorityopenalias: always enforce DNSSEC validation succeedsby SomberNight · cdcac8cb · Dec 5, 2025 · 6 filesMessage 50 · ThinModerate 59Details
Commit message · SomberNight

openalias: always enforce DNSSEC validation succeeds

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
AI analysis · Moderate 59/100

This commit removes the ability to skip DNSSEC security checks for OpenAlias lookups in the Electrum Bitcoin wallet. OpenAlias turns human-readable names like 'donate@example.com' into Bitcoin addresses using DNS. Previously, users or commands could pass a 'nocheck' flag to accept unvalidated DNS results, which is dangerous because DNS responses can be spoofed or tampered with. The patch now enforces that DNSSEC validation must succeed before any OpenAlias result is used, and it strips out the old 'nocheck' options and unvalidated warnings. This is a hardening change that closes a known weak path where an attacker on the network could trick the wallet into sending money to the wrong address.

Lower-priorityonion_message: verify ONION_MESSAGE feature on peer before forwardingby Sander van Grieken · 23b64657 · Dec 5, 2025 · 1 fileMessage 60 · AdequateLow 48Details
Commit message · Sander van Grieken

onion_message: verify ONION_MESSAGE feature on peer before forwarding

60/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Mentions testing or verification! No meaningful explanatory body
AI analysis · Low 48/100

This commit adds a safety check in Electrum's Lightning 'onion message' forwarding code. Before passing an encrypted message to the next peer in the chain, Electrum now verifies that the peer actually advertises support for onion messages. Without this check, Electrum could forward messages to peers that do not understand them, which could leak information about the route, waste bandwidth, or cause protocol confusion. The change is small and defensive.

Lower-priorityonion_message: fix forwarding, blinding was renamed path_key followup 130af597600364d235e97ca46c2eca59d25ef4efby Sander van Grieken · fb58d210 · Dec 5, 2025 · 1 fileMessage 65 · AdequateLow 42Details
Commit message · Sander van Grieken

onion_message: fix forwarding, blinding was renamed path_key
followup 130af597600364d235e97ca46c2eca59d25ef4ef

65/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
AI analysis · Low 42/100

This is a one-line bug fix in Electrum's Lightning onion message forwarding code. The developer renamed a parameter from 'blinding' to 'path_key' when sending an onward onion message. The change aligns the code with a prior commit that renamed related concepts, and prevents the outgoing message from carrying the wrong/obsolete field name, which could cause forwarding to fail or behave incorrectly.

Lower-priorityqml: fix: paying to openaliasby SomberNight · 49430e97 · Dec 5, 2025 · 1 fileMessage 78 · AdequateInformational 18Details
Commit message · SomberNight

qml: fix: paying to openalias

regression from in https://github.com/spesmilo/electrum/pull/9993
7d0ac64d065a5d5b700507ac88fe3463553e913d

78/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference
AI analysis · Informational 18/100

This is a small bug fix in Electrum's mobile-style QML user interface. A previous code change accidentally left OpenAlias payment addresses out of the list of recognized invoice types, so users trying to pay to an OpenAlias address (for example, a human-readable name like 'donate@example.com') would see an 'Unknown invoice' error instead of completing the payment. The patch simply adds OpenAlias back to the accepted list. It is a functionality regression fix, not a security vulnerability.

Lower-priorityelectrum refuses to exchange gossip with CLN nodes, due to missing feature OPTION_CHANNEL_TYPE_OPT. moving OPTIONAL_CHANNEL_TYPE_OPT to BASE_FEATURESby Sander van Grieken · 3e4f80aa · Dec 5, 2025 · 1 fileMessage 85 · StrongLow 25Details
Commit message · Sander van Grieken

electrum refuses to exchange gossip with CLN nodes, due to missing feature OPTION_CHANNEL_TYPE_OPT.
moving OPTIONAL_CHANNEL_TYPE_OPT to BASE_FEATURES

85/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode
AI analysis · Low 25/100

This commit fixes a Lightning Network compatibility bug in Electrum. Electrum nodes were refusing to exchange network routing gossip with Core Lightning (CLN) nodes because Electrum was not advertising a specific feature flag called OPTION_CHANNEL_TYPE_OPT in its baseline feature set. The fix moves that feature flag from the wallet-only features to the base features shared by all Lightning operations, including gossip. There is no direct security vulnerability here; it is an interoperability/availability fix.

Lower-priorityTest JIT channels: check that lnpay success is true.by ThomasV · 55cc27d2 · Dec 5, 2025 · 1 fileMessage 75 · AdequateInformational 14Details
Commit message · ThomasV

Test JIT channels: check that lnpay success is true.

This test fails since 0f314d1dd965424d898f4d8c564449ee42c21e97

75/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Mentions testing or verification
AI analysis · Informational 14/100

This commit only adds a check in a test script to verify that a Lightning payment succeeds. It is a test-only change and does not modify any production wallet or Lightning code. The commit message says the test has been failing since an earlier commit, but it does not describe any security problem.

Lower-prioritylnwatcher: remove address callback if keep_watching is Falseby ThomasV · cd1d384d · Dec 5, 2025 · 1 fileMessage 65 · AdequateLow 34Details
Commit message · ThomasV

lnwatcher: remove address callback if keep_watching is False

(follow-up 9b72dc297b799a01b03a95c25aec75bd4f492543)

65/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
AI analysis · Low 34/100

This is a small follow-up fix in Electrum's Lightning watchtower code. It ensures that when a channel closure no longer needs monitoring, the software stops watching the associated Bitcoin address. Without this cleanup, Electrum could keep polling or reacting to address updates indefinitely, wasting resources and potentially causing stale state or minor errors. The change itself is defensive housekeeping rather than a clear-cut vulnerability patch.

Lower-prioritytest accounting_addresses: stop alice before requesting, because we need a new session.by ThomasV · 40729aa0 · Dec 5, 2025 · 1 fileMessage 87 · StrongInformational 15Details
Commit message · ThomasV

test accounting_addresses: stop alice before requesting, because we need a new session.

(follow-up 9b72dc297b799a01b03a95c25aec75bd4f492543)

87/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Explains rationale or failure mode✓ Mentions testing or verification
AI analysis · Informational 15/100

This is a minor change to a test script for the Electrum Bitcoin wallet. It stops a test wallet daemon before running a command and adds a flag to use a new session. There is no security issue here—it's purely a test reliability fix.

AI review queuedtxbatcher: add TODOs re nLocktime block-height vs timestamp confusionby SomberNight · ef0e4e02 · Dec 4, 2025 · 3 filesMessage 65 · AdequateLow 32Details
Commit message · SomberNight

txbatcher: add TODOs re nLocktime block-height vs timestamp confusion

seems harmless atm but some rethinking is needed and checks should be added

65/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Low 32/100

This commit adds comments and TODOs warning that the wallet code may be mixing up two different kinds of Bitcoin time locks: block heights and wall-clock timestamps. It also fixes some helper functions to explicitly return None instead of implicitly returning nothing. The commit itself says the issue 'seems harmless atm' but needs rethinking. There is no actual exploit shown, only a note that future checks are needed.

Lower-prioritylnwatcher: remove rearly return that breaks accounting_addressesby ThomasV · 9b72dc29 · Dec 4, 2025 · 2 filesMessage 65 · AdequateLow 29Details
Commit message · ThomasV

lnwatcher: remove rearly return that breaks accounting_addresses

This reverts 6ffaa55.
Also, in regtests, add a check that fails if accounting_addresses are broken.

65/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
AI analysis · Low 29/100

This commit fixes a bug in Electrum's Lightning watchtower code where an early exit was preventing the wallet from properly tracking certain closing transactions. The fix removes an unnecessary 'return early' check so that the wallet continues to process and account for these transactions. A new regression test checks that the closing transaction appears in the user's on-chain history even when it doesn't directly involve the user's wallet addresses. This is primarily an accounting/visibility bug, not a direct theft-of-funds vulnerability.

Lower-priorityplugins: nwc: don't mutate aionostr Eventby SomberNight · 75ac8bce · Dec 4, 2025 · 1 fileMessage 60 · AdequateInformational 18Details
Commit message · SomberNight

plugins: nwc: don't mutate aionostr Event

I want to change the Event class to be immutable.

60/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
AI analysis · Informational 18/100

This is a small code cleanup in Electrum's Nostr Wallet Connect (NWC) plugin. The developer stopped modifying an incoming message object directly and instead passes the needed data as separate function parameters. The commit message says the goal is to make the underlying Event class immutable in the future. There is no direct security bug being fixed here, but the change removes a fragile pattern where error responses depended on whether the message had been previously altered.

AI review queuedQt wizard: bugfix: standardize_path in WCWalletNameby ThomasV · 32c677be · Dec 3, 2025 · 1 fileMessage 65 · AdequateInformational 18Details
Commit message · ThomasV

Qt wizard: bugfix: standardize_path in WCWalletName

without this, any wallet that is not in the config
wallet_path cannot be open.

65/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 18/100

This is a small bugfix in Electrum's Qt wallet creation wizard. It makes sure wallet paths are stored in a consistent format so wallets located outside the default wallets folder can be opened. The change also renames a variable and updates comments, but does not add new security checks. It is a routine fix, not a security patch.

AI review queuedfollow-up prev commitby ThomasV · cb7e550a · Dec 2, 2025 · 1 fileMessage 28 · OpaqueLow 27Details
Commit message · ThomasV

follow-up prev commit

28/100 · OpaqueMessage clarity
✓ Subject identifies a change! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
AI analysis · Low 27/100

This is a tiny follow-up patch that widens a type check in Electrum's wallet database code. When deleting or removing an item from a stored dictionary, the code now clears the parent pointer for any 'base stored object' rather than only for nested dictionaries. Without this fix, other stored object types (such as lists) might keep a stale reference to their former parent, which could lead to inconsistent database state or unexpected behavior when the data is later modified and saved.

Lower-priorityjson_db: fix StoredDict.__delitem__() to work similarly to .pop()by SomberNight · 14fd85f9 · Dec 1, 2025 · 2 filesMessage 73 · AdequateLow 35Details
Commit message · SomberNight

json_db: fix StoredDict.__delitem__() to work similarly to .pop()

follow-up https://github.com/spesmilo/electrum/pull/10233 ("jsondb pointers")

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Links an issue, advisory, or supporting reference
AI analysis · Low 35/100

This commit fixes a consistency bug in Electrum's internal JSON database. When a user or code deleted a nested dictionary using `del dict[key]`, the child dictionary was not properly told it had been removed from its parent. That meant changes made to the child after deletion could still leak into the wallet's pending database updates. The fix makes `del dict[key]` behave the same as `.pop(key)` by clearing the child's parent pointer. The included tests confirm both methods now behave identically.