EP
← All projectsElements Project

Core Lightning

Modular C implementation of the Lightning Network protocol and node stack.

BitcoinLightning NetworkActive incident
Repository coverage

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

184security candidates280second-pass queue1894AI analyses
56commits · 30 days
211commits · 60 days
683commits · 180 days
1671commits · 365 days
Backfill bands
Aug 5 → Feb 61049 seen37 candidatesComplete
Feb 6 → Jun 6579 seen10 candidatesComplete
Jun 6 → Jul 678 seen1 candidatesComplete
Jul 6 → Aug 5147 seen16 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.

70/100 average clarity
489Strong · 80–100
1231Adequate · 60–79
259Thin · 40–59
30Opaque · 0–39
Read the scoring rubric →
Developer activity

Who is changing the project?

Public Git author strings; identities are not independently verified.

DeveloperCommitsCandidatesAnalyzedHigh riskMessage avg.
cdecker14910384
Níckolas Goline63844277
Rusty Russell96475958172
daywalker90118895165
Lagrang386578170
Vincenzo Palazzo13411182
dovgopoly15015164
Sangbida Chaudhuri14931146066
Dusty Daemon821378066
ShahanaFarooqui931093063
Peter Neuroth1024101071
Christian Decker36436072
Analysis record

Published AI watches

Last scanned 21 minutes ago

Informational 15 AI analysisMessage 73 · Adequate
EP Elements ProjectCore Lightning BitcoinLightning Network

contrib: add jaonoctus's signing key

This commit simply adds a new person's PGP public-key fingerprint to the list of trusted release signers in two documentation files. It does not change any code, fix any bug, or alter any security behavior of the software itself.

41278b4eby jaonoctus+2−02 files
No security note in commit
Informational 15 AI analysisMessage 73 · Adequate
EP Elements ProjectCore Lightning BitcoinLightning Network

wallet: fixed timestamps for invented bookkeeper deposits

This is a tiny internal fix to make a bookkeeping migration produce stable event ordering. It changes the timestamp used when creating historical 'deposit' records during a one-time database migration, so the records sort consistently with…

498e5086by daywalker90+2−01 file
No security note in commit
Informational 21 AI analysisMessage 85 · Strong
EP Elements ProjectCore Lightning BitcoinLightning Network

docs: document missing and fix erroneous JSON-RPC error codes

This commit is a documentation-only cleanup of the JSON-RPC command help files. It corrects which numeric error codes are listed for each command so the published schemas match what the software actually returns. No program logic, validati…

Documentation-only change with no executable code modificationsCorrects RPC schema error-code metadata to match actual handler behaviorNo change to input parsing, authorization, cryptography, or network behavior
d1b6963bby daywalker90+204−1224 files
No security note in commit
Low 46 AI analysisMessage 73 · Adequate
EP Elements ProjectCore Lightning BitcoinLightning Network

channeld: initialize tx_sigs_allowed on startup

This commit fixes a bug where a setting that controls whether unexpected transaction signatures are allowed was not initialized when the channel daemon starts. If a peer sent such signatures before the channel was fully ready, the program …

use of uninitialized variableundefined behavior (invalid bool load)network-triggered code path
c09c4520by Erick Cestari+1−01 file
No security note in commit
Informational 15 AI analysisMessage 100 · Strong
EP Elements ProjectCore Lightning BitcoinLightning Network

ci: fix the coverage nightly's profile handling

This commit fixes the project's internal nightly code-coverage CI workflow. It changes how test coverage files are collected, ensures the same LLVM compiler version is used to generate and merge coverage data, and uploads a Codecov-compati…

5685c9a3by cdecker+12−211 file
No security note in commit
Low 37 AI analysisMessage 78 · Adequate
EP Elements ProjectCore Lightning BitcoinLightning Network

schemas: make required fields match the code

This commit is a large cleanup of Core Lightning's API schemas, generated RPC bindings, and related plugin code. The stated goal is to make the documented 'required' fields match what the C code actually always produces or expects. In prac…

Large schema-only change with no accompanying security advisory or CVEOne semantic change to plugin hook response: invoice_payment hook can now reject with only failure_message and no resultMany fields change from optional to required in public RPC/protobuf interfaces
ddbd2963by daywalker90+1786−173950 files
No security note in commit
Informational 15 AI analysisMessage 73 · Adequate
EP Elements ProjectCore Lightning BitcoinLightning Network

doc: document error 313 on every command which can return it

This commit only updates documentation. It adds error code 313 to the documented error lists for several Core Lightning commands (fundpsbt, utxopsbt, txprepare, multiwithdraw, and upgradewallet). The error code already existed in the code …

a34b9758by Peter Neuroth+30−86 files
No security note in commit
Low 25 AI analysisMessage 88 · Strong
EP Elements ProjectCore Lightning BitcoinLightning Network

tools/build-release.sh: name the checksum file when verifying the signature

This commit fixes a release-script check that verifies the cryptographic signature on a file of checksums. Previously, the script only told GPG to verify the signature file itself. If someone replaced that signature file with an inline-sig…

Incorrect cryptographic verification logic in release toolingPotential false-positive signature verification with inline-signed .asc substitutionRelease-integrity hardening
8e495707by Peter Neuroth+5−21 file
No security note in commit
Low 42 AI analysisMessage 95 · Strong
EP Elements ProjectCore Lightning BitcoinLightning Network

doc: pass the manifest explicitly to gpg --verify

This commit updates Core Lightning's release documentation to tell users and release managers to run gpg --verify with both the signature file and the manifest file named explicitly. The old one-argument form can silently succeed even if t…

Verification bypass risk in release artifact validationgpg --verify single-argument form can exit 0 without reading the intended manifestDocumentation-only hardening of release process
2dee8699by Peter Neuroth+9−62 files
Vendor flagged security relevance
Low 25 AI analysisMessage 58 · Thin
EP Elements ProjectCore Lightning BitcoinLightning Network

Cargo.lock: update dependencies

This commit is a routine update to the Rust dependency lock file (Cargo.lock), bumping many third-party libraries to newer patch or minor versions. The commit message gives no security reason for the update, and no verified references link…

Routine dependency refresh with no stated security rationaleUpdates to security-sensitive transitive crates (rustls, hyper, h2, tokio, webpki-roots) but no evidence these versions fix known vulnerabilitiesNo source-code changes or patch-specific fixes visible in the diff
c1551c55by daywalker90+298−2761 file
No security note in commit
High 80 AI analysisMessage 85 · Strong
EP Elements ProjectCore Lightning BitcoinLightning Network

common: bound JSON nesting depth when parsing

This commit fixes a stack-overflow risk in Core Lightning's JSON parser. Before the fix, an attacker could send a valid JSON-RPC message containing thousands of nested brackets or braces. The parser's own helper functions used recursion fo…

Stack-overflow via deeply nested JSONRecursive JSON traversal without depth boundDenial-of-service vector in JSON-RPC input parsing
83f92e4bby Níckolas Goline+90−22 files
Vendor flagged security relevance
Informational 15 AI analysisMessage 28 · Opaque
EP Elements ProjectCore Lightning BitcoinLightning Network

common: minor typo fixes

This commit only fixes typos and comment style. It changes two C-style comments from // to /* */ and corrects a grammar error in a documentation comment ('element' to 'elements'). There are no code behavior changes, no bug fixes, and no se…

273d7f02by w3lld1+3−32 files
No security note in commit
Informational 20 AI analysisMessage 90 · Strong
EP Elements ProjectCore Lightning BitcoinLightning Network

pyln-testing: truncate long testnames

This change fixes a test-infrastructure bug in Core Lightning's Python testing helpers. When running tests against a PostgreSQL database, very long test names could be silently shortened by PostgreSQL, causing different test runs or nodes …

No security-relevant signal: change is in test framework code onlyFixes a test reliability issue, not a runtime vulnerabilityNo input sanitization, authentication, cryptography, or network changes
c4fe4cbaby Peter Neuroth+59−12 files
No security note in commit
Moderate 60 AI analysisMessage 73 · Adequate
EP Elements ProjectCore Lightning BitcoinLightning Network

wallet: exclude immature coinbase outputs from fee rescue selection

This fix prevents Core Lightning from trying to use freshly created bitcoins (immature coinbase rewards) as emergency funds for fee-bump transactions. Such a transaction would be invalid under Bitcoin's rules and would be rejected by the n…

Consensus-invalid transaction generation preventedFee rescue / CPFP failure mode mitigatedCoinbase maturity check added to coin selection
34883ff7by cdecker+5−12 files
Vendor flagged security relevance
Moderate 59 AI analysisMessage 91 · Strong
EP Elements ProjectCore Lightning BitcoinLightning Network

askrene: fix crash loading node bias with description

This commit fixes a bug in Core Lightning's askrene plugin that could prevent a node from restarting. When a saved routing layer contained a node bias with a description, the plugin accidentally freed the description's memory while using i…

Use-after-free / double-take of a tal-allocated string during plugin startupDenial-of-service-like symptom: lightningd aborts before replying to init, node cannot restartFixes publicly reported issue #9433 by endothermicdev
4681177dby Vincenzo Palazzo+2−32 files
No security note in commit
Informational 12 AI analysisMessage 91 · Strong
EP Elements ProjectCore Lightning BitcoinLightning Network

tests: restart the node which owns the layer in node bias test

This commit only fixes a test case so it actually exercises the intended code path. It does not change any production code, so it cannot introduce or fix a real-world security vulnerability by itself. The test change is a reproducer for a …

0f3f67a0by Vincenzo Palazzo+3−21 file
No security note in commit
High 78 AI analysisMessage 68 · Adequate
EP Elements ProjectCore Lightning BitcoinLightning Network

dualopend: bound the feerates a peer opens at

This commit fixes a bug in Core Lightning's experimental dual-funded channel feature. When another node tried to open a channel, Core Lightning was not checking whether the proposed transaction fees were reasonable. A peer could request a …

Missing input validation on wire-parsed feerate fieldsPeer could induce signing and storage of feerate == 0RBF remote path allowed unbounded upward feerate walks
ba08356fby cdecker+140−04 files
Vendor flagged security relevance
High 72 AI analysisMessage 100 · Strong
EP Elements ProjectCore Lightning BitcoinLightning Network

tests: regression coverage for out-of-range feerates

This commit adds regression tests for three related bugs where wildly wrong Bitcoin transaction feerates could enter Core Lightning. In the worst case, a malicious or broken fee source could make the node think a feerate was zero (due to a…

Integer overflow in feerate conversion (u32 wrap from 0xFFFFFFFF perkb to 0 perkw)Absurd feerate from external fee source bypassing sanity ceilingDatabase-stored out-of-range feerate causing startup abort/crash loop
65bdbc47by cdecker+137−02 files
No security note in commit
Moderate 64 AI analysisMessage 86 · Strong
EP Elements ProjectCore Lightning BitcoinLightning Network

lightningd: don't assert on funding feerates read from the db

This update fixes a crash bug in Core Lightning. When the software tried to list details of a channel opening in progress, it could crash if a stored fee rate was extremely large or zero. The crash happened because the code used an interna…

Integer overflow in RBF escalation (u32 * 25 / 24) leading to assertion failureAssertion failure in read-only introspection RPC (listpeerchannels) causing crash-loop at startupDatabase value treated as invariant despite originating from external fee estimator
d67c4936by cdecker+72−227 files
Vendor flagged security relevance
Moderate 53 AI analysisMessage 86 · Strong
EP Elements ProjectCore Lightning BitcoinLightning Network

wallet: clamp absurd inflight funding feerates on upgrade

This commit fixes a bug where Core Lightning nodes could get stuck in a crash loop. If a node had previously stored an extremely high or zero fee rate for an in-progress channel funding operation (a 'splice' or dual-funded channel RBF), a …

Integer overflow in fee-rate calculation (u32 overflow when multiplying by 25/24)Assertion failure leading to daemon crash loop at startupDatabase migration clamps out-of-range stored funding feerates
f057c692by cdecker+34−01 file
Vendor flagged security relevance
Repository ledger

Explore captured commits

Expand any commit for its author, full message, clarity score, changed files, triage signals, analysis, and source link.

Lower-priorityCI: remove crate-bump workflowby daywalker90 · 16b2a183 · Apr 24, 2026 · 1 fileMessage 72 · AdequateInformational 15Details
Commit message · daywalker90

CI: remove crate-bump workflow

it was not picking up usage and is not working as intended either

Changelog-None

72/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body
Why it was queued
documentation-only discount
AI analysis · Informational 15/100

This commit simply deletes an unused GitHub Actions workflow file that automated version bumps for Rust crates. There is no change to the actual Core Lightning software, no security fix, and no vulnerability introduced.

Lower-prioritycrates: explicitly set workspace wide `rust-version` to 1.85by daywalker90 · f488ca2b · Apr 24, 2026 · 12 filesMessage 65 · AdequateInformational 15Details
Commit message · daywalker90

crates: explicitly set workspace wide `rust-version` to 1.85

Also bump the resolver version so `cargo update` will respect this MSRV.

Changelog-None

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

This commit is a routine Rust project maintenance change. It sets the minimum required Rust compiler version to 1.85 across all workspace crates, upgrades the Cargo dependency resolver to version 3, and refreshes the Cargo.lock file with newer patch versions of libraries. There is no indication this fixes or introduces a security vulnerability.

Lower-priorityCI: add workflow to verify MSRV on any rust file changesby daywalker90 · aafd2a83 · Apr 24, 2026 · 1 fileMessage 72 · AdequateInformational 15Details
Commit message · daywalker90

CI: add workflow to verify MSRV on any rust file changes

Changelog-None

72/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Mentions testing or verification! No meaningful explanatory body
Why it was queued
documentation-only discount
AI analysis · Informational 15/100

This commit adds a new automated CI (Continuous Integration) workflow that checks whether Rust code changes still compile with the project's declared Minimum Supported Rust Version (MSRV). It does not change any application code, network behavior, cryptography, or user-facing functionality. There is no security vulnerability here.

Lower-prioritycrates: upgrade to 2024 rust editionby daywalker90 · 84d4d592 · Apr 24, 2026 · 15 filesMessage 80 · StrongInformational 15Details
Commit message · daywalker90

crates: upgrade to 2024 rust edition

I've ran `cargo fix --edition` and three changes were noticeable:
- set_var is now unsafe, i've added a SAFETY comment on each to explain why
this is fine here.
- conversions of several if let to match because of the new if let temporary scope
I have reviewed and restored all of them since the behaviour was the same on each.
- the macro expr was converted to expr_2021 in the lsps plugin, i have reverted those
aswell since we don't use const or _ expressions

Changelog-None

80/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode
AI analysis · Informational 15/100

This commit updates several Rust crates from the 2021 edition of the Rust programming language to the 2024 edition. The only code changes are mechanical adjustments required by the new edition: marking environment-variable writes as unsafe with safety comments, reformatting some chained function calls, and converting some if-let constructs to match statements. There is no security fix or vulnerability being patched.

AI review queuedcrates: formatting with new 2024 edition rulesby daywalker90 · 28147d38 · Apr 24, 2026 · 35 filesMessage 45 · ThinInformational 15Details
Commit message · daywalker90

crates: formatting with new 2024 edition rules

`cargo fmt --all`

Changelog-None

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
second-pass: unusually broad change
AI analysis · Informational 15/100

This commit is purely a code-formatting cleanup. It runs `cargo fmt --all` to apply the Rust 2024 edition style rules across many Rust source files. The changes only reorder imports, re-wrap long lines, add trailing commas, and adjust indentation. No program logic, security checks, or behavior were changed.

AI review queuedv26.04.1by Sangbida Chaudhuri · eba035f7 · Apr 24, 2026 · 10 filesMessage 0 · OpaqueLow 39Details
Commit message · Sangbida Chaudhuri

v26.04.1

0/100 · OpaqueMessage clarity
! Very short subject! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
AI analysis · Low 39/100

This is a version-bump point release (v26.04.1) for Core Lightning. The changelog says it fixes two issues: a build failure caused by a wrong printf format, and a Lightning gossip protocol problem where malformed channel announcements could stress the gossip store. The actual code changes for those fixes are not present in this commit; it only updates version strings and the changelog. So this commit itself is mostly administrative, but it signals that security-relevant fixes were released.

Lower-prioritylightningd: fix format specifier for bitcoin_tx_weight in splice log.by Sangbida Chaudhuri · a55585e6 · Apr 24, 2026 · 1 fileMessage 85 · StrongInformational 15Details
Commit message · Sangbida Chaudhuri

lightningd: fix format specifier for bitcoin_tx_weight in splice log.

bitcoin_tx_weight() returns size_t, so use %zu instead of %lu to avoid
a -Wformat error under -Werror on platforms where size_t != unsigned long.

Changelog-Fixed: Builds on linux/amd64 to push to Dockerhub

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

This is a one-character code change fixing a compiler warning. It changes a log message format from %lu to %zu so the code compiles cleanly on platforms where a particular data type size differs. It does not change program behavior or fix any security issue.

Lower-prioritygossipd: don't accept malformed channel_announcements with mis-ordered node-ids.by Rusty Russell · 869ffc6e · Apr 24, 2026 · 1 fileMessage 81 · StrongModerate 52Details
Commit message · Rusty Russell

gossipd: don't accept malformed channel_announcements with mis-ordered node-ids.

See https://github.com/lightning/bolts/pull/1333

Every reader of the gossip_store gets upset, and we get many errors if this happens :(

Reported-by: https://github.com/NishantBansal2003
Changelog-Fixed: Protocol: We correctly reject invalidly ordered channel_announcement messages.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>

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

This update fixes a bug in Core Lightning's gossip daemon, which handles network routing announcements. The daemon was accepting malformed channel announcements where the two node IDs were in the wrong order. Such messages are invalid per the Lightning protocol and can cause errors for any node that later reads them from its stored gossip data. The fix makes the node reject these invalid announcements, preventing downstream error cascades.

Lower-prioritypython: upgrade min python version to 3.10by daywalker90 · db7dfcd9 · Apr 20, 2026 · 13 filesMessage 45 · ThinInformational 15Details
Commit message · daywalker90

python: upgrade min python version to 3.10

python 3.9 is EOL

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

This commit simply raises the minimum required Python version from 3.9 to 3.10 across the project's Python packages and updates the generated lock file accordingly. It is a routine maintenance change because Python 3.9 has reached end-of-life. There are no code changes that fix or introduce a security vulnerability.

AI review queuedv26.04by Sangbida Chaudhuri · 6f9356fb · Apr 20, 2026 · 10 filesMessage 0 · OpaqueInformational 15Details
Commit message · Sangbida Chaudhuri

v26.04

0/100 · OpaqueMessage clarity
! Very short subject! Too few words to establish purpose! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
AI analysis · Informational 15/100

This commit is a routine version bump from release candidate 3 (v26.04rc3) to the final release (v26.04). It only changes version strings in packaging files, the changelog, and a lock file. There are no code logic changes and no security fixes or new features introduced.

Lower-prioritylightningd: `--message-padding` to allow users to disable padding altogether.by Rusty Russell · deddd8e4 · Apr 20, 2026 · 10 filesMessage 73 · AdequateInformational 23Details
Commit message · Rusty Russell

lightningd: `--message-padding` to allow users to disable padding altogether.

In case there are more cases we missed, this lets users disable it.

Changelog-Added: Config: `message-padding` option can be set to `false` to disable it for all peers.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
AI analysis · Informational 23/100

This commit adds a new command-line/config option `--message-padding` that lets users turn off a recently added privacy feature. By default, Core Lightning now pads peer messages to the same length to hide which type of message is being sent. Some other Lightning implementations (LND variants and Eclair) reportedly reject or mis-handle those padding bytes, so this switch lets operators disable padding entirely if they run into compatibility problems. It is a workaround/configurability change, not a fix for a code vulnerability.

AI review queuedv26.04rc3by Sangbida Chaudhuri · f2b70176 · Apr 13, 2026 · 10 filesMessage 0 · OpaqueInformational 15Details
Commit message · Sangbida Chaudhuri

v26.04rc3

0/100 · OpaqueMessage clarity
! Very short subject! Too few words to establish purpose! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
AI analysis · Informational 15/100

This commit is a routine version bump from v26.04rc2 to v26.04rc3 for Core Lightning. It updates version strings in packaging files, a changelog, and a lock file. There are no code changes that fix or introduce any security-relevant behavior.

Lower-prioritymsggen: add bkpr-report rpc methodby daywalker90 · 9b128d62 · Apr 13, 2026 · 9 filesMessage 45 · ThinInformational 15Details
Commit message · daywalker90

msggen: add bkpr-report rpc method

Changelog-None

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

This commit adds a new bookkeeping report command (bkpr-report) to Core Lightning's gRPC and RPC interfaces. It is a routine feature addition that exposes an existing internal RPC method through the generated gRPC bindings, protocol definitions, and Python test helpers. There is no indication of a security vulnerability in the changes.

Lower-prioritymsggen: add `splicein` and `spliceout` rpc methodsby daywalker90 · fabf4e81 · Apr 13, 2026 · 9 filesMessage 50 · ThinInformational 18Details
Commit message · daywalker90

msggen: add `splicein` and `spliceout` rpc methods

Changelog-None

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

This commit is a routine feature addition to Core Lightning's code-generation tooling. It exposes two new RPC methods, 'splicein' and 'spliceout', through the gRPC and Python bindings. There is no indication in the commit message or diff that this fixes a security bug; it appears to be normal API surface expansion.

Lower-priorityCHANGELOG.md: add missing entry for keysend LDK fix.by Rusty Russell · f1fd1526 · Apr 13, 2026 · 1 fileMessage 65 · AdequateInformational 15Details
Commit message · Rusty Russell

CHANGELOG.md: add missing entry for keysend LDK fix.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>

65/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
Why it was queued
documentation-only discount
AI analysis · Informational 15/100

This commit only adds a missing changelog entry describing an earlier bug fix. It does not change any code, configuration, or behavior. The actual fix (changing keysend's assumed final CLTV from 22 to 42 blocks for compatibility with LDK nodes) was made in a separate pull request referenced in the changelog. There is no security-relevant change in this commit itself.

Lower-prioritykeysend: increase assumed final_cltv_expiry to 42 (to match LDK).by Rusty Russell · b57edd21 · Apr 10, 2026 · 1 fileMessage 81 · StrongLow 35Details
Commit message · Rusty Russell

keysend: increase assumed final_cltv_expiry to 42 (to match LDK).

Reported-by: https://github.com/tnull
Fixes: https://github.com/ElementsProject/lightning/issues/9034
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Changelog-Fixed: JSON-RPC: `keysend` now assumes 42, not 22 for final CLTV (should fix sending to LDK nodes)

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

This change fixes a compatibility issue in the `keysend` payment feature. Core Lightning was assuming a lower safety margin (22 blocks) for the final recipient's deadline than LDK/Rust-Lightning actually requires (42 blocks). When sending spontaneous payments to LDK nodes, this mismatch could cause the payment to be rejected or fail. The patch simply raises the assumed value to match LDK, improving interoperability. It is not a vulnerability that lets an attacker steal funds, but it is a reliability/security-adjacent fix for payment routing.

Lower-priorityMakefile: don't try to make generate files .INTERMEDIATE.by Rusty Russell · 4831ec24 · Apr 10, 2026 · 1 fileMessage 85 · StrongInformational 15Details
Commit message · Rusty Russell

Makefile: don't try to make generate files .INTERMEDIATE.

Because they get deleted, `make install` ends up regenerating them, and they trigger
object rebuilds.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>

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

This is a minor build-system fix in the Makefile. It stops automatically generated source files from being treated as temporary files that get deleted after use. Previously, deleting them caused `make install` to regenerate them and unnecessarily rebuild other files. There is no security issue here.

Lower-prioritypytest: fix flake in test_closing_anchorspend_htlc_tx_rbfby Rusty Russell · d0de3864 · Apr 10, 2026 · 1 fileMessage 83 · StrongInformational 13Details
Commit message · Rusty Russell

pytest: fix flake in test_closing_anchorspend_htlc_tx_rbf

```
2026-04-02T04:45:50.5882651Z > assert 3000 - 1 < total_feerate_perkw < 3000 + 1
2026-04-02T04:45:50.5883085Z E assert 3001.3083296990844 < (3000 + 1)
2026-04-02T04:45:50.5883354Z
2026-04-02T04:45:50.5883508Z tests/test_closing.py:3853: AssertionError
```

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>

83/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
AI analysis · Informational 13/100

This is a test-only change that makes a flaky test more tolerant. It does not change any production code, so it has no direct security impact on users of Core Lightning.

Lower-priorityRevert dev-uniform padding.by Rusty Russell · 5be75c0f · Apr 10, 2026 · 8 filesMessage 68 · AdequateInformational 12Details
Commit message · Rusty Russell

Revert dev-uniform padding.

This reverts:

2252bda0de3cb1f48e7efaaeb061efe32462d007 "connectd: gate uniform message padding behind --dev-uniform-padding"
f844eb0864b6048e3a27024e29b2c92aff919cdb "lightningd: add dev-uniform-padding flag to lightningd".
b7c05f604add41cda7e77e58bc25ac32387488b6 "test: add flag to test_constant_packet_size"

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Provides detailed explanatory context✓ Mentions testing or verification
AI analysis · Informational 12/100

This commit removes an experimental developer-only feature called 'uniform padding' that was intended to make network traffic between Lightning nodes look more uniform as a defense against traffic analysis. It is a clean revert of three earlier commits and does not introduce any security vulnerability or fix one. The feature was gated behind a hidden developer flag and was never active in normal operation.

Lower-priorityconnectd: keep their_features inside struct peer.by Rusty Russell · 7569c6ed · Apr 10, 2026 · 2 filesMessage 60 · AdequateInformational 15Details
Commit message · Rusty Russell

connectd: keep their_features inside struct peer.

We're about to use it.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>

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

This is a small internal code cleanup in Core Lightning's connection handling. It moves a copy of the peer's feature list into the peer structure so it can be used later. There is no security fix or vulnerability visible in this change.

Lower-priorityconnectd: add "use_uniform_writes" per-peer helper.by Rusty Russell · aae2a0b6 · Apr 10, 2026 · 1 fileMessage 65 · AdequateInformational 11Details
Commit message · Rusty Russell

connectd: add "use_uniform_writes" per-peer helper.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>

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

This commit is a small internal code cleanup in Core Lightning's connection handling. It replaces two direct checks of a developer-only padding flag with a helper function named `use_uniform_writes()`. There is no change to behavior, no fix for a bug, and no indication of a security issue.

Security candidateconnectd: rescue constant message size feature by exploiting OPT_ONION_MESSAGES (LND)by Rusty Russell · 52b70043 · Apr 10, 2026 · 1 fileMessage 65 · AdequateLow 34Details
Commit message · Rusty Russell

connectd: rescue constant message size feature by exploiting OPT_ONION_MESSAGES (LND)

I 🧡 Laolu!

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>

65/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
Why it was queued
explicit security language
AI analysis · Low 34/100

This change adjusts when Core Lightning pads its network messages to a constant size. Previously padding was controlled by a developer/testing flag. Now it is enabled only when the connected peer advertises support for 'onion messages' (a newer Lightning feature). The commit message says this works around a bug in LND (another Lightning implementation) where LND would disconnect if it received certain padded 'ping' messages. The fix uses onion-message support as a signal that the remote LND version is new enough to tolerate the padding. There is no direct evidence in the diff of a security vulnerability; it reads as a compatibility/interoperability fix that incidentally preserves a privacy feature (uniform packet sizes).

Security candidateconnectd: rescue constant message size feature by exploiting option 154 (Eclair).by Rusty Russell · a65c6975 · Apr 10, 2026 · 1 fileMessage 65 · AdequateLow 35Details
Commit message · Rusty Russell

connectd: rescue constant message size feature by exploiting option 154 (Eclair).

I 🧡 tbast!

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>

65/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
Why it was queued
explicit security language
AI analysis · Low 35/100

This commit adjusts when Core Lightning pads ping messages to keep packet sizes uniform. It now skips padding when talking to Eclair nodes that advertise feature bit 154, because Eclair had a similar bug where it did not reply to certain padded pings, which could cause connection problems. The change is a compatibility workaround, not a direct fix for a vulnerability in Core Lightning itself.

Lower-priorityCHANGELOG.md: sort entries into rough coolness order!by Rusty Russell · d2d4002b · Apr 10, 2026 · 1 fileMessage 65 · AdequateInformational 15Details
Commit message · Rusty Russell

CHANGELOG.md: sort entries into rough coolness order!

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>

65/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
Why it was queued
documentation-only discount
AI analysis · Informational 15/100

This commit only reorders existing text entries in the project's CHANGELOG.md file. It does not change any code, configuration defaults, or documentation content. There is no security relevance.

Lower-priorityCHANGELOG.md: reformat for consistency, combine some lines.by Rusty Russell · 0e9c4953 · Apr 10, 2026 · 1 fileMessage 93 · StrongInformational 15Details
Commit message · Rusty Russell

CHANGELOG.md: reformat for consistency, combine some lines.

Remove "Replacing sed by $(SED) in Makefile ([#8786])" which isn't
user-visiable.

Add `Protocol: Splicing is enabled by default` which didn't get
included because of the missing colon in:

Changelog-Deprecated Splicing is now enabled by default!

In 9b51d6618bb83a6d38407e22e21011f8307489ce!

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>

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
documentation-only discount
AI analysis · Informational 15/100

This commit is a routine cleanup of the project's CHANGELOG.md file. It reformats entries for consistency, combines related bullet points, removes one non-user-visible build-system entry, and adds a missing changelog note that splicing is now enabled by default. No program code was changed, so it cannot directly affect security or introduce vulnerabilities.