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.
Message quality measures whether a commit identifies its scope, purpose, rationale, testing, and supporting references. It does not change the security-severity score.
This commit updates the PostgreSQL database driver used by Eclair from version 42.7.11 to 42.7.12. It is a routine dependency bump by an automated tool. The commit itself does not say what bugs the new driver fixes, but small point-release…
Dependency version bump of a database driverPoint-release upgrade may include upstream security fixes, but none are named in the commitNo application code changes or direct vulnerability evidence in the diff
This commit updates Eclair's Bitcoin library dependency from version 0.48 to 0.49, which internally uses newer versions of bitcoin-kmp and secp256k1-kmp. The code changes only replace old property accesses (like `.txid`) with new method ca…
Dependency version bump for Bitcoin and secp256k1 cryptographic librariesSource changes are API adaptations (.txid -> .getTxid), not logic changesSecurity-critical validation code is touched (PSBT/transaction integrity checks against malicious Bitcoin Core)
This commit is a routine build-system update. It upgrades several Maven plugin versions, removes the git commit ID from one jar manifest field to avoid a build-time circular dependency, and adds an optional build profile for a fuzz-testing…
This commit closes a cross-site request forgery (CSRF) hole in Eclair's admin API. Before the change, a malicious web page visited by a node operator could silently submit authenticated API requests (for example, to send funds or close Lig…
New origin-check directive rejecting all requests with an Origin headerRemoval of CORS response headers from API responsesCSRF protection described in commit message and release notes
This commit is a routine post-release housekeeping change. It bumps the project version from 0.14.3 to 0.15.0-SNAPSHOT across several build files, re-enables a Maven trusted-checksum feature used for build verification, adds a placeholder …
No security-relevant code changesNo vulnerability indicatorsNo bug fixes or patches
This commit adjusts build packaging settings to make compiled releases more reproducible across different computers. It sets consistent file permissions and line endings for packaged documentation and runtime files. There is no indication …
This is a large security patch for the Eclair Lightning node that fixes multiple ways an attacker could steal funds, burn money to miners, or lock funds forever. The fixes include: preventing force-closes with un-publishable splice transac…
Force-close uses latest publishable commitment to avoid unconfirmable splice commit txsClosing fee bounded by maxClosingFeerate when local node pays feesNew max-funding-feerate configuration caps funding/splice miner fees
This change expands when Eclair will allow password-based authentication to a Tor control port. Previously, only loopback addresses (the same machine) were considered safe enough for password auth. Now, private/site-local and link-local ne…
Relaxation of authentication-method restriction for Tor control portPassword authentication now permitted on site-local and link-local addressesOriginal code explicitly rejected password auth for non-loopback addresses
This commit is a routine post-release housekeeping change. It bumps the project version from 0.14.2 to 0.15.0-SNAPSHOT, re-enables a Maven trusted-checksum feature used for build verification, adds a placeholder release-notes file, and del…
No security-relevant code changes indicating a vulnerabilityBoot.scala startup guard prevents accidental deployment of an unsafe development snapshotMaven trusted checksum verification is re-enabled, improving supply-chain/build integrity
This commit hardens Eclair's handling of the Lightning 'splicing' feature when a peer misbehaves. Splicing lets two nodes resize an open payment channel without closing it on-chain. The patch adds extra checks so that if a peer sends unexp…
Adds commitment-index consistency checks before completing splice/RBF funding attemptsRejects forbidden update messages while remote peer is quiescingRejects commit_sig during quiescence to prevent commitment-index desync
This commit adds a safety net to the Eclair Lightning node to limit how many incoming peer connections can sit unfinished before completing the cryptographic handshake. Previously, an attacker could open many TCP connections and leave them…
Resource-exhaustion mitigation: bounds unauthenticated incoming connections to prevent memory/file-descriptor/CPU exhaustionNew kill reason TooManyPendingConnections added to PeerConnection.KillReasonNew metrics incomingconnections.pending/evicted/rejected for monitoring abuse
This commit fixes three security issues in how Eclair connects to the Tor network and stores sensitive files. First, it changes the default Tor authentication from password to safecookie, and blocks password mode when the Tor control port …
Default authentication changed from password to safecookiePassword authentication rejected for remote Tor control portsTor cookie length validated to be exactly 32 bytes
This commit fixes a bug in the Eclair Lightning node where a peer could send a message containing both a correct standard signature and an incorrect partial signature. The old code would verify the correct signature but then store the inva…
Type-confusion between IndividualSignature and PartialSignatureWithNonce in channel messagesInvalid partial signature could be stored after valid individual signature was verifiedNew signatureFor helper enforces commitment-format-aware signature selection
This change makes the Eclair Lightning node force-close a payment channel if a peer tries to add a payment whose timeout value (cltv_expiry) is 500,000,000 or higher. Such large values are invalid according to the Lightning BOLT 2 specific…
BOLT 2 compliance check added for HTLC cltv_expiry >= 500,000,000Invalid cltv_expiry now triggers local error and channel force-closeOff-by-one fix in locktime threshold interpretation (<= changed to <)
This commit adds a new optional encrypted payload to Lightning payment fulfillment messages. It is a feature implementation, not a fix for an active vulnerability. The code does introduce a safety check: if a peer sends an oversized fulfil…
New cryptographic payload handling added to payment fulfillment pathSize limits and silent truncation applied to failure packets, fulfillment payloads, and attribution dataChannel force-close triggered on oversized peer fulfillment payload
This commit fixes five low-severity security or robustness issues in the Eclair Lightning node. It removes a risky type cast that could crash the node on corrupted channel data, forces encrypted cluster communication to prevent private dat…
Unsafe type cast removed from channel codecCluster mode now requires tls-tcp transportAPI error responses no longer include exception messages
This commit fixes a bug in the Eclair Lightning node where, after a restart, the node could be tricked into keeping the wrong incoming payments alive. An attacker could reuse the same payment identifier (payment_hash) from a legitimate in-…
Fixes a logic bug that could lead to forced channel closuresAttack vector: payment_hash reuse to pin unrelated HTLCsChanges identifier from payment_hash to unique (channel_id, htlc_id)
This commit only updates user documentation. It adds warnings that the Bitcoin node (bitcoind) should run on the same machine as Eclair, and if it runs remotely, operators must use a secure encrypted tunnel. No code was changed, so this pa…
Documentation-only changeNo code, configuration, or cryptographic modificationsDescribes pre-existing deployment risk rather than a new vulnerability
This commit fixes several bugs in Eclair's 'on-the-fly funding' feature, which lets a node open a Lightning channel and pay for it using future payment fees. The bugs could allow a malicious peer to make the node pay twice, lose money on f…
Double-payment vulnerability fixed: paymentAlreadyRelayed now checks commitment transactions in addition to pending local changes, preventing relay of already-cross-signed HTLCs after restart.Loss-of-funds vulnerability fixed: funded channels with unpaid future-HTLC fees are force-closed before upstream HTLCs are failed, avoiding a race where the peer fulfills a cross-signed downstream HTLC after we failed upstream.Upstream settlement gap fixed: preimages received after HTLC expiry are now relayed upstream, preventing the node from paying downstream without being paid upstream.
This commit tightens file and folder permissions for Eclair's sensitive data. It ensures that seed files (which protect the node's identity and Lightning channel funds) and the data directory are readable only by the owner on Linux/macOS s…
Hardening of seed file permissions to owner-only read/writeHardening of datadir and chaindir permissions to owner-onlyMigration path also re-permissions copied seed files
* der2compact() and compact2der() methods have been removed, new signInputCompact() method has been added
* Use Transaction.encodeWitnessEcdsaSig() instead of low-level calls
* Replace local der() methode with bitcoin-lib's encodeWitnessEcdsaSig()
76/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
Why it was queued
cryptography-sensitive pathsigning or wallet path
AI analysis · Informational 22/100
This commit updates Eclair to use a newer version of its underlying Bitcoin library (bitcoin-lib 0.47). Most changes are mechanical: replacing local helper functions with new library-provided equivalents for encoding signatures and signing transaction inputs. There is no direct evidence in the commit message or diff that this fixes a specific security vulnerability, but it does touch cryptographic code and updates a dependency, which can sometimes address bugs or weaknesses in the library itself.
Lower-priorityImprove data stored in `AuditDb` (#3245)by Bastien Teinturier · 890ccb37 · Mar 26, 2026 · 12 filesMessage 76 · AdequateInformational 18Details
Commit message · Bastien Teinturier
Improve data stored in `AuditDb` (#3245)
* Improve `channel_events` in the `AuditDb`
We improve the `channel_events` table in the `AuditDb` by:
- adding the `funding_txid` from each event - adding the `channel_type` from each event - using hex instead of blobs in sqlite - providing APIs to list these events - adding indexes on `channel_id` and `remote_node_id`
The added data isn't available in past events. We decide to simply rename the older tables and start fresh: previous data will not be available from the API, but can still be queried directly in SQL if necessary.
* Improve transaction events in the `AuditDb`
We improve the `transactions_published` and `transactions_confirmed` tables in the `AuditDb` by:
- adding more details about mining fees and feerates - adding input and output counts - using hex instead of blobs in sqlite - providing APIs to list transactions by `remote_node_id` - adding indexes for listing APIs
The added data isn't available in past events. We decide to simply rename the older tables and start fresh: previous data will not be available from the API, but can still be queried directly in SQL if necessary.
* Improve payment sent and received events in the `AuditDb`
We improve the `sent` and `received` payment tables in the `AuditDb` by:
- adding `start_at` / `settled_at` timestamps to measure duration - adding `remote_node_id` for every channel used - using hex instead of blobs in sqlite - reordering columns and renaming them wherever useful
The added data isn't available in past events. We decide to simply rename the older tables and start fresh: previous data will not be available from the API, but can still be queried directly in SQL if necessary.
* Improve payment relayed events in the `AuditDb`
We improve the `relayed` and `relayed_trampoline` payment tables in the `AuditDb` by:
- unifying the way we handle multi-part payments, by having one row per payment, whether incoming or outgoing, and reconciling based on type and direction when listing events - adding `remote_node_id` for every channel used - using hex instead of blobs in sqlite - renaming columns for better clarify
The added data isn't available in past events. We decide to simply rename the older tables and start fresh: previous data will not be available from the API, but can still be queried directly in SQL if necessary.
* Improve relay statistics computation
We change the relay statistics we compute, to more accurately reflect nodes that are good or bad peers and inform liquidity allocation decisions.
* Add liquidity purchase fees in transaction events
We now track liquidity purchases as well in transaction events, as their fees must be taken into account when evaluating the overall fees earned from a node.
We also add the number of on-chain transactions made with a given peer to its relay stats.
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 · Informational 18/100
This commit is a planned database schema upgrade for Eclair's audit logging. It renames old audit tables, creates new ones with extra columns (such as remote node IDs, transaction details, and timestamps), and replaces two old API endpoints with a new 'relaystats' endpoint. There is no obvious security vulnerability in the diff itself; it is a backwards-incompatible but intentional data-model change.
Close connection when receiving malformed messages (#3273)
When receiving a message that we're supposed to be able to decode, for which decoding fails, we must send a warning and close the connection. This ensures that the connection state cannot become corrupted, which may otherwise happen if we fail to deserialize a `commit_sig` message (for example) and simply ignored it while continuing to process the next messages.
Fixes #3271
93/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode✓ Links an issue, advisory, or supporting reference
Why it was queued
cryptography-sensitive path
AI analysis · High 70/100
This patch fixes a bug in Eclair, a Bitcoin Lightning Network node implementation. Previously, if a peer sent a message that Eclair couldn't properly decode (for example, a corrupted or unexpected 'commit_sig' message), Eclair would log a warning but otherwise ignore it and keep processing later messages. This could cause the two peers' views of the channel state to drift out of sync, potentially leading to incorrect behavior or security issues. The fix makes Eclair send a warning back to the peer and immediately close the connection when it fails to decode a message it expected to understand.
This release contains improvements for v3 transactions, which we want for #3192.
68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Links an issue, advisory, or supporting reference
AI analysis · Informational 15/100
This commit simply updates Eclair's required Bitcoin Core version from 29.x to 30.2. It changes documentation, download URLs, SHA-256 checksums, and a runtime version check. There is no security vulnerability in this change itself.
We create a new set of actors that keep track of payment statistics across our peers and rank them to identify the top profit earners. Based on those statistics, the actors issue recommendations to:
- allocate more liquidity towards nodes that are generating revenue and may run out of liquidity in the next few days - reclaim liquidity from inactive channels - change our relay fees to optimize increases or decreases in outgoing flow and volume
76/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Low 34/100
This commit adds a new optional 'peer profit scoring' feature to the Eclair Lightning node. When enabled, it automatically tracks payment statistics, ranks peers by profitability, and can automatically open channels, close idle channels, and adjust relay fees. By default all automatic actions are disabled, so the change is primarily an operational automation feature rather than an immediate security patch or vulnerability. The main security consideration is that enabling the automatic actions gives the node software control over on-chain funds and channel pricing, which could in theory be abused or misconfigured, but the commit itself does not introduce a known exploit.
AI review queuedFix race condition in `Postman` causing flaky `OfferPayment` tests (#3270)by Bastien Teinturier · 8c5f39f4 · Mar 19, 2026 · 1 fileMessage 100 · StrongLow 33Details
Commit message · Bastien Teinturier
Fix race condition in `Postman` causing flaky `OfferPayment` tests (#3270)
The integration test "send blinded multi-part payment a->b->c (single channel a->b)" in `OfferPaymentSpec` fails intermittently. The root cause is a race condition in `Postman` where the subscription for an onion message reply is registered after the message is sent, allowing the reply to arrive and be silently dropped before the subscription exists.
In integration tests where all 3 nodes run on the same JVM, the onion message round-trip (Alice -> Bob -> Carol -> creates invoice -> Carol -> Bob -> Alice) can complete in just a few milliseconds - fast enough to beat the `Subscribe` message to the `Postman`'s mailbox.
This explains why the test is flaky: it usually works (round-trip slower than subscribe), but occasionally fails (round-trip faster than subscribe, reply dropped).
We simply move the subscription registration to *before* the message is sent to the network.
100/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference
Why it was queued
second-pass: broader security terminology
AI analysis · Low 33/100
This commit fixes a timing bug in Eclair's message-delivery component called Postman. When sending an onion message that expects a reply, the code used to register for the reply *after* sending the message. In fast local tests (and potentially fast real networks), the reply could arrive before the registration completed, causing the reply to be lost. The fix registers the subscription *before* sending the message. The commit describes this as a test flakiness issue, not a security vulnerability.
AI review queuedAdd bitcoin rpc call to check if an address belongs to our wallet (#3267)by Fabrice Drouin · a4d66adc · Mar 18, 2026 · 4 filesMessage 73 · AdequateInformational 17Details
Commit message · Fabrice Drouin
Add bitcoin rpc call to check if an address belongs to our wallet (#3267)
We use the "ismine" property that is returned by the "getaddressinfo" RPC call.
73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Links an issue, advisory, or supporting reference
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 17/100
This commit adds a new helper function that lets Eclair ask Bitcoin Core whether a given bitcoin address belongs to the user's own wallet. It is a feature addition with no visible bug fix or security patch. There is no indication in the commit that it fixes a vulnerability.
AI review queuedImprove support for plugin-defined features (#3264)by Bastien Teinturier · a4f4abd9 · Mar 17, 2026 · 42 filesMessage 93 · StrongLow 35Details
Commit message · Bastien Teinturier
Improve support for plugin-defined features (#3264)
We allow injecting non-official features via plugins, by extending the `CustomFeaturePlugin` trait. However, we previously added those features to a set of unknown features: we can do better and add them to the known features map, which provides pretty-printing in logs and simplifies debugging.
We also had an issue where `hasFeature` would always return `false` for plugin features, even when they were supported by both nodes, because we only looked at our `activated` features map which only contains official features.
We get rid of the `UnknownFeature` class entirely and keep the encoded feature bits after deserializing them. We take those feature bits into account in `hasFeature`, which fixes the issue.
This creates a slightly weird asymmetry because our local features, which are created based on our `eclair.conf`, will not have this field set while features that are read from network messages or the DB will have this field set. A better architecture would be to remove the `activated` map entirely and directly wrap the feature bits, while providing helper functions to interact with features without having to directly read a `BitVector`. This is a larger refactoring though, because we'd need to add support for filtering `init` / `node` features using bitmasks, which isn't entirely trivial to handle and requires careful management of plugin features.
93/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode✓ Links an issue, advisory, or supporting reference
Why it was queued
signing or wallet pathparser or protocol pathsecond-pass: broader security terminologysecond-pass: unusually broad changesecond-pass: security-sensitive path
AI analysis · Low 35/100
This commit fixes a bug where Eclair did not correctly recognize custom features added by plugins when checking if another node supports them. Previously, plugin features were treated as 'unknown' and `hasFeature` always returned false for them, even when both nodes supported the same plugin feature. The change stores the raw feature bits after decoding and uses them in feature checks, while removing the old 'UnknownFeature' class. It is a correctness and compatibility improvement rather than a critical security patch, but it could affect whether nodes agree on required features during connection.
AI review queuedFix flaky onion message test (#3266)by Bastien Teinturier · 1543e7ca · Mar 17, 2026 · 1 fileMessage 98 · StrongInformational 15Details
Commit message · Bastien Teinturier
Fix flaky onion message test (#3266)
The "automatically connect to known nodes" test was flaky, because there is a race with our code that lazily removes node announcements from our DB after channels close (in `handleChannelSpent` in `Validation.scala`).
We now explicitly wait for gossip to ensure that we cannot run into this race condition, which should fix the flakyness during CI.
98/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference
Why it was queued
second-pass: broader security terminology
AI analysis · Informational 15/100
This commit fixes a flaky automated test in the Eclair Lightning node software. It adds a wait step so that test nodes have time to learn about network channels before the test proceeds. There is no security issue here—only a test reliability improvement.
AI review queuedReject offers with amount set to `0` (#3265)by Bastien Teinturier · 16ebf01a · Mar 17, 2026 · 2 filesMessage 76 · AdequateLow 28Details
Commit message · Bastien Teinturier
Reject offers with amount set to `0` (#3265)
This doesn't make any sense, the field should be omitted if any amount is acceptable: setting it to `0` is confusing.
See https://github.com/lightning/bolts/pull/1316
76/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
Why it was queued
parser or protocol pathsecond-pass: security-sensitive path
AI analysis · Low 28/100
This commit tightens validation of Lightning Network 'offers' (a way for a merchant to publish a payment request). Previously, an offer could include an amount field set to zero, which the protocol designers consider invalid and confusing. The change makes Eclair reject such offers. The main risk is that an attacker or buggy peer could send a zero-amount offer and, before this patch, Eclair might have accepted or processed it in an unintended way. The commit itself is a straightforward validation fix and does not show an active exploit.
AI review queuedRemove support for zlib encoding for channel queries (#3263)by Bastien Teinturier · eef7c326 · Mar 11, 2026 · 8 filesMessage 81 · StrongLow 28Details
Commit message · Bastien Teinturier
Remove support for zlib encoding for channel queries (#3263)
We removed support for sending compressed data when it was removed from the spec (see https://github.com/ACINQ/eclair/pull/2244). We meant to remove support for receiving compressed data as well as a follow-up, but it slipped for a long time! There's no reason to keep supporting it now.
81/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
Why it was queued
parser or protocol pathsecond-pass: security-sensitive path
AI analysis · Low 28/100
This commit removes the ability of the Eclair Lightning node to receive zlib-compressed channel-query data from peers. The Lightning protocol spec dropped zlib compression for these messages some time ago, and this change catches up by rejecting or ignoring compressed encodings. It is a hardening/cleanup change rather than a fix for an active vulnerability, though keeping a deprecated decompression path could in theory expose a node to memory or CPU issues if a peer sent malicious compressed data.
Plugin validation of interactive transactions (#3258)
We add a new `ValidateInteractiveTxPlugin` trait that can be extended by plugins that want to perform custom validation of remote inputs and outputs added to interactive transactions. This can be used for example to reject transactions that send to specific addresses or use specific UTXOs.
81/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
Why it was queued
defensive validation
AI analysis · Informational 21/100
This commit adds a new optional plugin hook that lets Eclair node operators write custom checks for Bitcoin transactions used in Lightning channel funding or splicing. It is a defensive feature, not a vulnerability fix. The same change also improves error messages when a transaction is rejected and slightly refactors how input confirmation checks are run. There is no evidence in the commit of an active security bug being patched.
Lower-priorityAuto-refresh relay fees from conf can be disabled (#3260)by pm47 · 0a9853bf · Mar 2, 2026 · 7 filesMessage 81 · StrongInformational 18Details
Commit message · pm47
Auto-refresh relay fees from conf can be disabled (#3260)
There is a performance hit on restart if there is a large number (>100s) of channels, so it can be disabled with a new `eclair.relay.fees.reset-existing-channels` setting.
The default behavior is unchanged.
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 18/100
This commit adds an optional setting that lets node operators disable an automatic fee refresh for existing payment channels when Eclair restarts. By default, the old behavior is preserved (fees are still refreshed). The change is framed as a performance improvement for operators with hundreds of channels, not as a security fix. There is no direct evidence in the commit that this resolves a vulnerability or that an attacker can exploit the old behavior.
We add a `ChannelFundingCreated` event that is emitted when the funding transaction or a splice transaction has been signed and can now be published, either by us or by our peer (depending on who funds).
This can be handy to detect peers that are using black-listed inputs and immediately close the channel before it confirms and can be used.
66/100 · AdequateMessage clarity
✓ Descriptive subject✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 20/100
This commit adds a new notification event called ChannelFundingCreated to the Eclair Lightning node. It tells external listeners when a channel funding or splice transaction has been signed and is ready to be published. The change is purely additive: it emits an event at existing points in the code and exposes it over the WebSocket API. It does not alter security-critical logic such as transaction signing, validation, or channel state transitions. The release notes explicitly say the event is handy for detecting peers that use black-listed inputs so operators can close the channel early, but that is a monitoring/operational use case, not a vulnerability fix.
This avoids a herd effect when restarting the node.
68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Links an issue, advisory, or supporting reference
AI analysis · Informational 18/100
This commit changes how Eclair (a Bitcoin Lightning node) loads stored peer data when the node restarts. Previously, every peer's stored data was read from the database immediately at startup. Now it is loaded only when the peer first reconnects. The stated goal is to avoid a 'herd effect'—a large burst of database reads all at once after a restart. There is no direct security vulnerability in the diff; it is a performance and reliability improvement. The change does not alter who can request data or what data is stored.
Lower-priorityDon't automatically use `scid_alias` for public channels (#3255)by Bastien Teinturier · 546028fd · Feb 27, 2026 · 3 filesMessage 81 · StrongLow 37Details
Commit message · Bastien Teinturier
Don't automatically use `scid_alias` for public channels (#3255)
In #3250 we started implicitly choosing the best channel type based on activated features when not explicitly specified by the node operator. However, we automatically used `scid_alias` if it was supported by both peers, but it is only allowed for unannounced channels. We now restrict this to follow the BOLTs.
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 · Low 37/100
This commit fixes a bug where Eclair would automatically enable a feature called `scid_alias` for public Lightning Network channels, even though the Lightning protocol rules (BOLTs) only allow that feature for unannounced (private) channels. Public channels with `scid_alias` could violate protocol rules and cause interoperability or routing problems, though it is not a direct theft-of-funds vulnerability.
This was generated using Opus 4.6 with the `/init` command. It provides overall context about the codebase to every Claude session, to avoid repeating work to build that context (consume less token whenever using Claude for a task).
88/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode✓ Links an issue, advisory, or supporting reference
Why it was queued
documentation-only discount
AI analysis · Informational 15/100
This commit adds a documentation file called CLAUDE.md that gives the Claude AI coding assistant general context about the Eclair Lightning Network project. It contains no code changes, no configuration changes, and nothing that affects how the software runs or processes data. It is purely informational for AI-assisted development.
We fix a few flaky tests in our channel FSM that test scenarios where errors are received while creating funding transactions. The issue was that we used a dummy wallet that could complete its call before our calls to `awaitCond(alice.stateName == WAIT_FOR_FUNDING_INTERNAL)`.
We use a new dummy on-chain wallet that never responds to transaction funding calls to allow tests to inject failure events.
86/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100
This commit only changes test code. It fixes flaky automated tests in the Eclair Lightning node by introducing a fake wallet that never completes funding transactions, so tests can reliably simulate error events during channel funding. There is no change to production code and no security vulnerability is being fixed or introduced.
Lower-priorityAdd claude files to `.gitignore` (#3252)by pm47 · 11a86046 · Feb 20, 2026 · 1 fileMessage 76 · AdequateInformational 15Details
Commit message · pm47
Add claude files to `.gitignore` (#3252)
Claude adds a `.claude` dir at the root of the project. In a sandboxing setup we may want to use other custom claude-related directories, hence the wildcard.
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 · Informational 15/100
This commit simply adds a new pattern to the project's .gitignore file so that files and folders created by the Claude AI assistant are not accidentally committed to the repository. It has no security relevance to the Eclair Lightning node software itself.
Select `channel_type` for automatic channel creation (#3250)
When creating channels automatically, we don't necessarily have access to our peer's features. It is useful to automatically select the channel type based on local and remote features. We now allow this behavior in the `OpenChannelInterceptor`.
Note that when we add official support for taproot channels and 0-fee commitments, we will hard-code in `eclair` which type of channels we think is best. If node operators want to override this order, they will need to explicitly provide the `channel_type` parameter (which can be done when using the API).
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 18/100
This commit changes how Eclair selects a Lightning channel type when opening a channel automatically. Previously, the caller had to explicitly provide a channel type. Now, if no type is provided, Eclair will automatically pick a preferred type based on what both the local node and the remote peer support. If no compatible type can be found, the channel opening is rejected. This is a feature improvement, not a security fix, and the commit message does not describe it as fixing a vulnerability.
Those tests started randomly failing after moving to anchor outputs. The reason is that anchor outputs have a bigger commit weight than non anchor channels, and with our initial balance allocation we sometimes reached a point where the *remote* had exhausted all of its balance to pay commit fees (when the feerate was around 10 000 sat/kw), so the *local* couldn't send HTLCs (`RemoteCannotAffordFeesForNewHtlc`). This is an expected situation where we cannot do anything except wait for pending HTLCs to resolve before sending other HTLCs.
We simply increase the initial balance to avoid running into this case. We also remove the `skip` case (which wasn't working at all, we should have used the `cancel` scalatest helper if we wanted to interrupt the test without failing it) and allow failures during the initial HTLC setup (which can happen if HTLCs are larger than the available balance).
98/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference
Why it was queued
fuzzing or regression evidence
AI analysis · Informational 15/100
This commit only changes test code. It fixes flaky balance fuzz tests in Eclair by giving simulated channels more starting money so they can afford higher transaction fees under anchor outputs. There is no change to production code, no real-world security fix, and no vulnerability being patched.
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Links an issue, advisory, or supporting reference
Why it was queued
cryptography-sensitive path
AI analysis · Informational 23/100
This commit updates the PostgreSQL JDBC driver used by the Eclair Lightning node software from version 42.6.0 to 42.7.8, and also bumps the embedded PostgreSQL test library from 2.0.1 to 2.2.0. The accompanying checksum file is updated to match the new library versions and their transitive dependencies. The commit message frames this as a routine minor library upgrade. There is no direct code change in Eclair itself, and no explicit security advisory or CVE is referenced in the commit materials.
Lower-priorityAdd type to local/remote error metrics (#3249)by pm47 · 5c5b9f90 · Feb 11, 2026 · 2 filesMessage 68 · AdequateInformational 15Details
Commit message · pm47
Add type to local/remote error metrics (#3249)
We were only splitting by origin (local/remote).
This compensates for #3236.
68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Links an issue, advisory, or supporting reference
AI analysis · Informational 15/100
This commit only improves monitoring/observability. It adds a new label ('error-type') to internal error-counting metrics so developers can see what kind of channel errors are happening, in addition to whether they came from the local node or a remote peer. There is no user-facing behavior change, no bug fix in business logic, and no security fix.
Prioritize private channels when relaying payments (#3248)
When relaying payments, we want to select private channels first and keep as much liquidity available as possible in public channels, to ensure that we don't send a `channel_update` that would otherwise disable the public channel (and thus make the private channels also unusable since they aren't visible by path-finding algorithms) or limit the `htlc_maximum_msat` of this public channel (which also indirectly applies to private channels).
We also change the order in which we select channels that have the same visibility: we prioritize channels with smaller balances, to ensure that we keep our larger balances for larger payments. When balances are equal, we prioritize the largest channel, which creates a larger inbound liquidity to allow receiving larger payments.
93/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode✓ Links an issue, advisory, or supporting reference
AI analysis · Low 32/100
This commit changes how Eclair lightning nodes pick which outgoing channel to use when forwarding payments. The new logic prefers private (unannounced) channels first, then smaller public channels, to avoid draining or disabling the larger public channels that other nodes rely on for routing. It is a routing-optimization and operational-hardening change rather than a fix for a known exploit. The commit message explicitly frames the change as avoiding public-channel exhaustion and disabled channel_updates, which has indirect security relevance for node availability and routing reputation.
AI review queuedImprove channel and payment events (#3246)by Bastien Teinturier · d735e0b5 · Feb 11, 2026 · 19 filesMessage 76 · AdequateInformational 19Details
Commit message · Bastien Teinturier
Improve channel and payment events (#3246)
We improve the following events:
- `TransactionPublished` includes more details about mining fees and an optional liquidity purchase - all channel events include the latest `channel_type` - `PaymentRelayed` exposes the `relayFee` earned
76/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
Why it was queued
parser or protocol pathsecond-pass: security-sensitive path
AI analysis · Informational 19/100
This commit is a routine refactoring of internal event definitions in the Eclair Lightning node. It changes how channel and payment events are structured so they carry more detailed information (such as splitting mining fees into local and remote portions, adding timestamps, and exposing relay fees). There is no direct evidence in the commit that these changes fix a security vulnerability; they appear to be observability and accounting improvements.