EP
← All projectsElements Project

Core Lightning

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

BitcoinLightning NetworkActive incident
Repository coverage

1979 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
26commits · 30 days
185commits · 60 days
659commits · 180 days
1641commits · 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.

71/100 average clarity
484Strong · 80–100
1224Adequate · 60–79
241Thin · 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
daywalker90113895164
Lagrang386578170
Vincenzo Palazzo13411182
dovgopoly15015164
Sangbida Chaudhuri14931146066
Dusty Daemon821378066
ShahanaFarooqui931093063
Peter Neuroth1024101071
Christian Decker36436072
Analysis record

Published AI watches

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

AI review queuedFix C comments which will accidentally trigger Python BOLT quote checker.by Rusty Russell · 69f1e720 · Apr 30, 2026 · 7 filesMessage 73 · AdequateInformational 15Details
Commit message · Rusty Russell

Fix C comments which will accidentally trigger Python BOLT quote checker.

We're going to get stricter, so "/* BOLT #N to-local output */" or "/* BOLT11 ... */"
will upset it.

Also remove a stray bare blank line in a BOLT comment block.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
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
Why it was queued
parser or protocol pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit only rewords C code comments to avoid confusing an internal Python tool that checks documentation quotes. No program behavior, network protocol handling, or security logic is changed. It is a code-comment cleanup with no security relevance.

AI review queuedglobal: more missing BOLT quotes.by Rusty Russell · c6f18ff7 · Apr 30, 2026 · 21 filesMessage 60 · AdequateInformational 20Details
Commit message · Rusty Russell

global: more missing BOLT quotes.

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
Why it was queued
signing or wallet pathsecond-pass: unusually broad changesecond-pass: security-sensitive path
AI analysis · Informational 20/100

This commit only adds documentation comments quoting the BOLT (Basis of Lightning Technology) specification and explaining how the existing code follows it. It does not change any program logic, function behavior, or security controls. A few comments note that the current implementation is incomplete ("FIXME"), but those are observations, not fixes. There is no evidence this commit addresses a security vulnerability or changes anything an attacker could exploit.

AI review queuedv26.04.1by Sangbida Chaudhuri · 1ad1ea99 · Apr 24, 2026 · 1 fileMessage 0 · OpaqueInformational 15Details
Commit message · Sangbida Chaudhuri

v26.04.1

0/100 · OpaqueMessage clarity
! Very short subject! No meaningful explanatory body
Why it was queued
documentation-only discountsecond-pass: opaque commit message
AI analysis · Informational 15/100

This commit only updates the CHANGELOG.md file for the v26.04.1 release. It does not change any source code, so it cannot introduce or fix a security vulnerability by itself. The changelog text mentions fixes for a gossip protocol issue and several build failures, but those actual code changes are in other commits/pull requests, not in this diff.

AI review queuedschemas: neaten notification and hook schemas in preparation for markdown generationby daywalker90 · a1cdf8e8 · Apr 24, 2026 · 41 filesMessage 65 · AdequateInformational 15Details
Commit message · daywalker90

schemas: neaten notification and hook schemas in preparation for markdown generation

also includes formatting fixes for the bkpr-report schema, brackets usually need escaping in mdx

Changelog-None

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: unusually broad changesecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit is a documentation and schema cleanup. It fixes formatting in JSON schema files so they render correctly as Markdown, removes redundant 'added' version labels from nested schema fields, corrects some labels from 'notification' to 'hook' where the schema describes a hook, and adds a small clarification to the shutdown notification description. There are no code changes that affect how Core Lightning processes payments, channels, or peer messages.

AI review queuedcrates: upgraded dependencies to latest 1.85 compatible versions as of the commit timeby daywalker90 · 88f259ec · Apr 24, 2026 · 14 filesMessage 73 · AdequateLow 34Details
Commit message · daywalker90

crates: upgraded dependencies to latest 1.85 compatible versions as of the commit time

notable upgrades requiring code changes:

rcgen: signed_by now takes an Issuer instead of a Certificate and KeyPair

tonic/prost: prost feature was stripped out of tonic and moved into tonic_prost crates

rand: OsRng was renamed to SysRng

Changelog-None

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

This commit is a routine bulk upgrade of Rust third-party libraries to versions compatible with Rust 1.85. The changes are mostly mechanical adaptations to new library APIs: certificate signing now uses an 'Issuer' object instead of separate certificate and key, gRPC/protobuf code generation moved to new 'tonic_prost' crates, and the random-number generator name changed from OsRng to SysRng. There is no explicit security fix or vulnerability disclosure in the commit message or diff, but dependency upgrades can indirectly affect security by picking up upstream bug fixes or, conversely, introducing new bugs.

AI review queuedschemas: add schemas for all plugin hooksby daywalker90 · fa2ec626 · Apr 24, 2026 · 16 filesMessage 68 · AdequateInformational 15Details
Commit message · daywalker90

schemas: add schemas for all plugin hooks

Added schemas for: peer_connected, recover, commitment_revocation, db_write,
invoice_payment, openchannel, openchannel2, openchannel2_changed,
openchannel2_sign, rbf_channel, htlc_accepted, rpc_command, custommsg,
onion_message_recv and onion_message_recv_secret

Changelog-None

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
signing or wallet pathdocumentation-only discountsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit only adds JSON documentation schemas for existing plugin hooks. It does not change any executable code, runtime behavior, or security logic. It is a documentation-only change that describes what data plugin hooks already send and receive.

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.

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.

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.

AI review queuedsql: add test that triggers bug on channelmovesby Lagrang3 · 96b4da92 · Apr 9, 2026 · 1 fileMessage 78 · AdequateLow 40Details
Commit message · Lagrang3

sql: add test that triggers bug on channelmoves

Updating channelmoves table makes sql to crash if there are more
elements in listchannelmoves than limit_per_list.

Changelog-None

Signed-off-by: Lagrang3 <lagrang3@protonmail.com>

78/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
Why it was queued
second-pass: broader security terminology
AI analysis · Low 40/100

This commit only adds a new test case that demonstrates a bug. The test is marked as expected to fail (xfail). It shows that running a SQL query on the 'channelmoves' table can crash a node if the number of channel movements exceeds an internal list limit. The actual crash-causing code is not fixed here, so this commit by itself does not resolve the issue.

AI review queuedsql: fix crash for large channelmoves tables.by Rusty Russell · 2ba55cc6 · Apr 9, 2026 · 2 filesMessage 68 · AdequateModerate 50Details
Commit message · Rusty Russell

sql: fix crash for large channelmoves tables.

I've reworked this: in general we should clear the refresh bit before
calling the jsonrpc to do the update. This allows the wait callback to
set the bit again if there's more to do, so we won't lose entries.

Now it's clear that we can remove the overzealous assert.

sql: plugins/sql.c:1749: refresh_by_created_index: Assertion `td->refresh_needs != REFRESH_UNNECESSARY' failed.
sql: FATAL SIGNAL 6 (version v26.04rc2)
0x5618e147892e send_backtrace
common/daemon.c:38
0x5618e14789bb crashdump
common/daemon.c:83
0x7f54d10ea04f ???
./signal/../sysdeps/unix/sysv/linux/x86_64/libc_sigaction.c:0
0x7f54d1138eec __pthread_kill_implementation
./nptl/pthread_kill.c:44
0x7f54d10e9fb1 __GI_raise
../sysdeps/posix/raise.c:26
0x7f54d10d4471 __GI_abort
./stdlib/abort.c:79
0x7f54d10d4394 __assert_fail_base
./assert/assert.c:94
0x7f54d10e2ec1 __GI___assert_fail
./assert/assert.c:103
0x5618e1472725 refresh_by_created_index
plugins/sql.c:1749
0x5618e14736af one_refresh_done
plugins/sql.c:579
0x5618e1473932 limited_list_done
plugins/sql.c:1738
0x5618e1477418 handle_rpc_reply
plugins/libplugin.c:1093
0x5618e1477548 rpc_conn_read_response
plugins/libplugin.c:1398
0x5618e147ec71 next_plan
ccan/ccan/io/io.c:60
0x5618e147ef90 do_plan
ccan/ccan/io/io.c:422
0x5618e147f049 io_ready
ccan/ccan/io/io.c:439
0x5618e147ffae io_loop
ccan/ccan/io/poll.c:470
0x5618e14786af plugin_main
plugins/libplugin.c:2461
0x5618e1474b12 main
plugins/sql.c:2219
0x7f54d10d5249 __libc_start_call_main
../sysdeps/nptl/libc_start_call_main.h:58
0x7f54d10d5304 __libc_start_main_impl
../csu/libc-start.c:360
0x5618e1470710 ???
_start+0x20:0
0xffffffffffffffff ???
???:0

Diagnosed-by: Lagrang3 <lagrang3@protonmail.com>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Changelog-None: Introduced this release.

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

This commit fixes a crash in Core Lightning's SQL plugin. The bug was a too-strict internal check (an assertion) that could fail when the plugin had a large number of channel moves to refresh. The fix changes how the plugin tracks which refresh work is still needed, so it no longer trips over itself when new work arrives while a refresh is already running. It is a stability fix for a plugin, not a remote exploit.

AI review queuedv2604.rc2by Sangbida Chaudhuri · 39c243ce · Apr 2, 2026 · 10 filesMessage 0 · OpaqueInformational 15Details
Commit message · Sangbida Chaudhuri

v2604.rc2

Changelog-None

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.04rc1 to v26.04rc2 for Core Lightning. It only updates version strings in packaging files and refreshes the changelog. No code behavior changes are included in the diff itself, so this single commit does not introduce or fix any security issue.

AI review queuedmsggen: generate native notification bindings from schemasby Peter Neuroth · 8b6374e1 · Apr 2, 2026 · 22 filesMessage 85 · StrongInformational 19Details
Commit message · Peter Neuroth

msggen: generate native notification bindings from schemas

Expand the native notification list consumed by msggen and regenerate the Rust and gRPC outputs for the documented notification schemas.

This wires the new schema-backed native notifications through cln-rpc, cln-grpc, and the bundled msggen schema metadata. Keep the temporary xpay-prefixed plugin notifications out of generation for now.

coin_movement.extra_tags remains a repeated string in the generated gRPC surface for now because msggen does not currently emit enums nested under repeated array items correctly.

Changelog-Changed: cln-rpc and cln-grpc now expose notification bindings for balance_snapshot, coin_movement, deprecated_oneshot, disconnect, forward_event, invoice_creation, invoice_payment, log, onionmessage_forward_fail, openchannel_peer_sigs, plugin_started, plugin_stopped, sendpay_failure, sendpay_success, shutdown, and warning.

msggen: generate xpay notification bindings

Treat xpay as a built-in plugin for notification generation and include its documented notification schemas in the msggen output.

This extends the generated cln-rpc and cln-grpc notification surfaces with the flat xpay schema files, while exposing the actual notification names `pay_part_start` and `pay_part_end` in generated APIs.

Changelog-Changed: cln-rpc and cln-grpc now expose xpay notification bindings for `pay_part_start` and `pay_part_end`.

85/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode
Why it was queued
second-pass: unusually broad change
AI analysis · Informational 19/100

This commit is a large, routine code-generation update for Core Lightning's Rust and gRPC client libraries. It adds native bindings for many existing node notifications (such as payment events, log messages, and coin movements) so that external applications can subscribe to them through the gRPC and Rust RPC interfaces. The change is mostly mechanical: it exposes notifications that already existed internally, but does not by itself add new node functionality or change security-critical logic. There is no indication in the commit that this fixes a security bug or introduces a vulnerability.

AI review queuedlightningd: don't hand 0 to dualopend as anchor feerate if we cannot estimate fees.by Rusty Russell · 5dec676c · Apr 2, 2026 · 1 fileMessage 81 · StrongLow 44Details
Commit message · Rusty Russell

lightningd: don't hand 0 to dualopend as anchor feerate if we cannot estimate fees.

Fixes: https://github.com/ElementsProject/lightning/issues/8847
Reported-by: https://github.com/mdance
Changelog-EXPERIMENTAL: fixed crash with dual funding if we cannot estimate fees.

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
second-pass: broader security terminology
AI analysis · Low 44/100

This patch fixes a crash in Core Lightning's experimental dual-funding feature. When the node couldn't estimate current Bitcoin transaction fees, it was passing a value of 0 to a sub-component (dualopend) as the 'anchor feerate.' That zero value caused the process to crash. The fix detects the zero, substitutes a minimum fallback feerate, and adds a safety check to ensure it is never zero.

AI review queuedpytest: removed old testby enaples · 2cc1abcf · Apr 2, 2026 · 1 fileMessage 38 · OpaqueInformational 15Details
Commit message · enaples

pytest: removed old test

38/100 · OpaqueMessage clarity
✓ Subject identifies a change✓ Mentions testing or verification! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
AI analysis · Informational 15/100

This commit simply deletes an old test from the test suite. It removes a pytest function that checked how the software handles opening a dual-funded channel when Bitcoin fee estimates are unavailable. There is no change to the actual software code that users run, and nothing in the commit message or diff suggests a security fix or vulnerability.

AI review queuedcreateonion: add `force_paths` parameter.by Rusty Russell · c5eb02bb · Apr 2, 2026 · 19 filesMessage 58 · ThinInformational 15Details
Commit message · Rusty Russell

createonion: add `force_paths` parameter.

We simply store it in the db, and return it with `listoffers` for now.

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

58/100 · ThinMessage clarity
✓ Descriptive subject✓ Provides detailed explanatory context
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit adds a new optional flag called `force_paths` to the `createonion` and offer-related APIs in Core Lightning. The flag is stored in the database and returned when listing offers, but the commit does not implement any enforcement logic. It is purely a data-model and API plumbing change with no security-relevant behavior visible in the diff.

AI review queueddecode: print htlc_minimum_msat / htlc_maximum_msat in blinded paths.by Rusty Russell · f4b85859 · Apr 2, 2026 · 7 filesMessage 81 · StrongInformational 20Details
Commit message · Rusty Russell

decode: print htlc_minimum_msat / htlc_maximum_msat in blinded paths.

Weird we didn't print this before!

Reported-by: https://github.com/Lagrang3
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
parser or protocol pathsecond-pass: security-sensitive path
AI analysis · Informational 20/100

This commit adds two missing fields, htlc_minimum_msat and htlc_maximum_msat, to the output of the 'decode' command when it shows blinded payment paths. Previously these values were decoded internally but not printed in JSON or CLI output. It is a display/information fix, not a code-execution vulnerability.

AI review queuedlightningd: initialize ECDH before replaying blinded HTLCsby michael1011 · 9737ef55 · Mar 24, 2026 · 3 filesMessage 83 · StrongLow 38Details
Commit message · michael1011

lightningd: initialize ECDH before replaying blinded HTLCs

Replay of stored blinded HTLCs can reach onion decoding before the
hsmd-backed ecdh() wrapper is initialized, causing a startup crash.
Set up ECDH earlier and add a regression test for blinded HTLC replay.

Changelog-Fixed: lightningd no longer crashes when replaying stored blinded HTLCs during startup.

83/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
Why it was queued
fuzzing or regression evidencesecond-pass: broader security terminology
AI analysis · Low 38/100

This commit fixes a startup crash in Core Lightning. If the node had stored a special type of payment (a 'blinded HTLC') that needed to be replayed when restarting, the code could try to decode its encrypted onion before the secure key-handling helper was ready. The fix simply initializes that helper earlier in startup and adds a regression test. It is a reliability bug, not a code-execution or theft vulnerability.

AI review queuedv26.04rc1by Sangbida Chaudhuri · 93c9adb4 · Mar 23, 2026 · 11 filesMessage 0 · OpaqueInformational 15Details
Commit message · Sangbida Chaudhuri

v26.04rc1

Changelog-None

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 to mark the v26.04rc1 release candidate of Core Lightning. It only updates version strings across packaging files, the changelog, a contributor credit script, and a lockfile. There are no code changes that alter how the software behaves or processes data.

AI review queuedlibplugin: hand command, not plugin, to parsing functions.by Rusty Russell · 52299697 · Mar 23, 2026 · 9 filesMessage 73 · AdequateInformational 11Details
Commit message · Rusty Russell

libplugin: hand command, not plugin, to parsing functions.

In particular, for dynamic options we want to create an aux_command in
the case of bookkeeper-currency.

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
Why it was queued
parser or protocol pathsecond-pass: security-sensitive path
AI analysis · Informational 11/100

This is a straightforward internal code cleanup in Core Lightning's plugin library. It changes many plugin option-parsing functions so they receive a 'command' object instead of a 'plugin' object. The commit message says this is preparation for future 'dynamic options' work (specifically for a bookkeeper currency feature). There is no bug fix, security patch, or vulnerability visible in the diff itself.

AI review queuedcommon: add mkdatastorekey helper to make string arrays.by Rusty Russell · 852e54e1 · Mar 23, 2026 · 4 filesMessage 65 · AdequateInformational 15Details
Commit message · Rusty Russell

common: add mkdatastorekey helper to make string arrays.

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
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit is a routine code cleanup: it introduces a small helper function that builds lists of text strings more conveniently, and updates three existing functions to use it. There is no security-relevant change visible in the diff.

AI review queuedpatch fix.patchby Rusty Russell · c564cfa7 · Mar 23, 2026 · 1 fileMessage 28 · OpaqueLow 26Details
Commit message · Rusty Russell

patch fix.patch

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

This patch fixes a timing bug in the bookkeeper plugin of Core Lightning. Previously, setting a currency option before the plugin was fully initialized could start background refresh tasks too early, potentially using uninitialized data. The fix delays starting those refresh tasks until after initialization is complete. It is a correctness fix rather than an obvious security vulnerability, but premature initialization can sometimes lead to crashes or unstable behavior.

AI review queuedlightningd: make caller to deptch_update_scid fetch the location in the blockby Rusty Russell · 88b394d2 · Mar 22, 2026 · 5 filesMessage 85 · StrongInformational 12Details
Commit message · Rusty Russell

lightningd: make caller to deptch_update_scid fetch the location in the block

We'll actually have it directly when we use outpoint watches from
chaintopology, so we will be able to avoid the lookup.

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
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 12/100

This is a small internal code cleanup in Core Lightning. A function that builds a channel identifier (short_channel_id) used to look up a transaction's block position itself; now its callers look up that position and pass it in. The commit message frames this as preparation for a future change, not as a security fix. There is no indication of a vulnerability being patched.

AI review queuedlightningd: make wallet_extract_owned_outputs return bool, optionally output numbers.by Rusty Russell · 60eef930 · Mar 22, 2026 · 8 filesMessage 65 · AdequateInformational 12Details
Commit message · Rusty Russell

lightningd: make wallet_extract_owned_outputs return bool, optionally output numbers.

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
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 12/100

This is a small internal code cleanup in Core Lightning. A wallet helper function that scans transactions for outputs belonging to the node is changed from returning a count of found outputs to returning a simple yes/no answer, with an optional list of output numbers. Callers are updated to use the new yes/no style. Nothing in the commit message or diff suggests a security bug is being fixed.