EP
← All projectsElements Project

Core Lightning

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

BitcoinLightning NetworkActive incident
Repository coverage

2008 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
55commits · 30 days
210commits · 60 days
682commits · 180 days
1670commits · 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
488Strong · 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
daywalker90117895165
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-priorityxpay: print rejected currency correctly.by Rusty Russell · 8db2c28d · Jun 1, 2026 · 2 filesMessage 60 · AdequateInformational 20Details
Commit message · Rusty Russell

xpay: print rejected currency correctly.

Reported-by: Won Hoi Kim and Ahmad Elmoursi
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 20/100

This commit fixes a minor bug in Core Lightning's xpay plugin where an error message about unsupported foreign-currency offers could print garbage or truncated text instead of the actual currency code (like 'USD'). It is a correctness and usability fix, not a security vulnerability.

Lower-prioritypytest: test xpay for routehint when channel is to itself.by Rusty Russell · 19808e45 · Jun 1, 2026 · 1 fileMessage 75 · AdequateInformational 12Details
Commit message · Rusty Russell

pytest: test xpay for routehint when channel is to itself.

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

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

This commit only adds a new test case for the xpay payment feature. It checks that xpay can handle a malformed invoice route hint where a node points to itself, and that the payment still succeeds through a normal direct channel. There is no code fix or behavior change in this commit.

AI review queuedrelease: prepare v26.06by Madeline · 071093aa · Jun 1, 2026 · 1 fileMessage 28 · OpaqueInformational 15Details
Commit message · Madeline

release: prepare v26.06

28/100 · OpaqueMessage clarity
✓ Subject identifies a change! No meaningful explanatory body
Why it was queued
documentation-only discountsecond-pass: opaque commit message
AI analysis · Informational 15/100

This commit is a routine release-preparation change. It only updates the CHANGELOG.md file, renaming the release title from '26.06rc2' to '26.06' and adjusting the release date and tag link. No code, configuration, or security-related content was changed.

Lower-priorityCI: remove focal and add resolute Ubuntu buildsby daywalker90 · a0041a6e · May 28, 2026 · 9 filesMessage 57 · ThinInformational 15Details
Commit message · daywalker90

CI: remove focal and add resolute Ubuntu builds

Changelog-None

57/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
AI analysis · Informational 15/100

This commit updates the project's release automation to drop support for the older Ubuntu 20.04 ('focal') build environment and add support for the upcoming Ubuntu 26.04 ('resolute'). It also fixes a GitHub Actions workflow bug where boolean inputs were being compared as strings. There is no change to the Core Lightning node software itself, and nothing in the commit indicates a security vulnerability or fix.

Lower-prioritymsggen: fix non-determinism edge caseby daywalker90 · 11b83240 · May 26, 2026 · 3 filesMessage 68 · AdequateInformational 19Details
Commit message · daywalker90

msggen: fix non-determinism edge case

After adding back some fields in 62d1e3e405f722e7363d8e8dbc427039a12c421a
there is one field that was in a different place sometimes in node.proto:
DecodeInvoicePathsPath

Changelog-None

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

This commit fixes a non-determinism bug in the code generator that produces gRPC protocol definitions for Core Lightning. The generator sometimes produced message definitions in a different order, which could cause unnecessary changes in generated files between builds. The fix sorts dictionary keys when merging schemas and iterating over properties. There is no direct security vulnerability here—this is a build reproducibility and code hygiene fix.

Lower-prioritycrates: bump cln-rpc, cln-grpc and cln-plugin to v0.7.0 for releaseby daywalker90 · 55ab6e7d · May 25, 2026 · 6 filesMessage 50 · ThinInformational 15Details
Commit message · daywalker90

crates: bump cln-rpc, cln-grpc and cln-plugin to v0.7.0 for release

Changelog-None

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

This commit is a routine version bump for three Rust software packages (cln-rpc, cln-grpc, and cln-plugin) from version 0.6.0 to 0.7.0. It only changes version numbers in package metadata files. There is no code change, no bug fix, and no security-related content.

AI review queuedtests/fuzz/fuzz-open_channel: fix bad local variable access after longjmpby Matt Whitlock · 4fd17d73 · May 22, 2026 · 1 fileMessage 100 · StrongInformational 17Details
Commit message · Matt Whitlock

tests/fuzz/fuzz-open_channel: fix bad local variable access after longjmp

You can't access a local variable from a point before it was initialized and
expect it to have the initialized value. Move the setjmp() call to after
run_ctx is initialized so that the tal_free() call at cleanup will see the
correct address and not crash.

Fixes: https://github.com/ElementsProject/lightning/issues/9131
Changelog-None

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
fuzzing or regression evidencesecond-pass: broader security terminology
AI analysis · Informational 17/100

This commit fixes a crash bug inside a fuzz test, not in the main Core Lightning software. A fuzz test is an automated testing tool that feeds random data to a program to find crashes. The bug occurred because a safety net (setjmp/longjmp) could jump to cleanup code before a local variable (run_ctx) was initialized, causing the cleanup code to use an invalid memory address and crash. The fix simply moves the safety-net setup to after the variable is initialized. This does not affect real Lightning nodes or their users.

Lower-priorityv26.06rc2: update versionsby Rusty Russell · d285d92a · May 22, 2026 · 9 filesMessage 50 · ThinInformational 15Details
Commit message · Rusty Russell

v26.06rc2: update versions

`uv run make update-versions NEW_VERSION=v26.06rc2`

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

50/100 · ThinMessage clarity
✓ Descriptive subject✓ Provides an explanatory body
AI analysis · Informational 15/100

This commit is a routine version bump from v26.06rc1 to v26.06rc2 across several package metadata files. It changes only version strings and contains no functional code modifications, bug fixes, or security-related changes.

Lower-priorityCHANGELOG: mark v26.06rc2by Rusty Russell · 06346c4b · May 22, 2026 · 1 fileMessage 50 · ThinInformational 15Details
Commit message · Rusty Russell

CHANGELOG: mark v26.06rc2

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

50/100 · ThinMessage clarity
✓ Descriptive subject✓ Provides an explanatory body
Why it was queued
documentation-only discount
AI analysis · Informational 15/100

This commit is a routine documentation update that renames the upcoming release candidate in the project's changelog. It changes 'v26.06rc1' to 'v26.06rc2', updates the release date, and adds a release name credit. No code, configuration, or security-related content was modified.

Lower-priorityCHANGELOG.md: put missing CHANGELOG entries in for PR 9136.by Rusty Russell · 2b8684f9 · May 21, 2026 · 1 fileMessage 83 · StrongInformational 15Details
Commit message · Rusty Russell

CHANGELOG.md: put missing CHANGELOG entries in for PR 9136.

Removals should be documented with Changelog-Removed lines, mirroring
the old Deprecated line.

In this case, the `max_total_htlc_in_msat` removal was premature: we try
to give one version AFTER the deprecation period.

That way users can re-enable the feature if they need to, using
`--i-promise-to-fix-broken-api-user=listpeerchannels.max_total_htlc_in_msat`
and we can decide whether to defer removal, re-enable, even un-deprecate
(or get whatever tool they are using fixed).

It's happened a few times in the past that nobody tested with deprecations
disabled, and users got stuck when they upgraded :(

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

This commit only edits the project's CHANGELOG.md file. It adds documentation notes about two previously-merged changes (a plugin notification field and a renamed JSON-RPC value) and a link to a pull request. No code behavior changes, no bug fixes, and no security-related content are present.

Security candidategossipd: be more robust against channel_update spamming.by Rusty Russell · bad9d6d3 · May 21, 2026 · 2 filesMessage 65 · AdequateHigh 76Details
Commit message · Rusty Russell

gossipd: be more robust against channel_update spamming.

Reported-by: chandrapratap376@gmail.com
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
resource exhaustion
AI analysis · High 76/100

This update fixes a memory exhaustion weakness in Core Lightning's gossip daemon. An unauthenticated remote peer could send a flood of fake Lightning channel identifiers, causing the node to keep allocating memory until the process crashed or the host ran out of memory. The patch caps two internal queues at 10,000 entries so memory use stays bounded.

Lower-prioritymsggen: remove most omits and generate them insteadby daywalker90 · 62d1e3e4 · May 21, 2026 · 8 filesMessage 50 · ThinInformational 18Details
Commit message · daywalker90

msggen: remove most omits and generate them instead

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 code-generation cleanup for the Core Lightning message/serialization layer. It removes hand-maintained 'omit' overrides and lets the generator produce more complete protocol definitions for gRPC, JSON-RPC, and Python bindings. The changes add missing fields such as channel type, state change history, invoice paths, and unknown TLV fields to generated API models. There is no direct security fix or vulnerability here; it is a maintenance change that may affect API compatibility and could expose more raw data to callers.

AI review queuedschemas: remove obsolete fields in decodeby daywalker90 · b2fc984c · May 21, 2026 · 7 filesMessage 45 · ThinInformational 16Details
Commit message · daywalker90

schemas: remove obsolete fields in decode

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
parser or protocol pathsecond-pass: security-sensitive path
AI analysis · Informational 16/100

This commit removes several outdated or unused fields from the JSON schemas and generated API definitions for the `decode` command in Core Lightning. It is a cleanup change that narrows the API surface by deleting fields that are no longer produced by the implementation. There is no direct evidence in the commit that this fixes an active security vulnerability.

Lower-prioritycommon: add test that changing any field invalidates a payer proof.by Rusty Russell · 7b7cbf09 · May 21, 2026 · 1 fileMessage 75 · AdequateInformational 12Details
Commit message · Rusty Russell

common: add test that changing any field invalidates a payer proof.

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

75/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Mentions testing or verification
Why it was queued
defensive validation
AI analysis · Informational 12/100

This commit only adds a new test to the codebase. It checks that changing any field in a BOLT12 payer proof breaks the cryptographic signature, which is a defensive correctness test. There is no code fix, behavior change, or vulnerability being patched.

Lower-prioritycommon: fix up test vectors' invoice_merkle_root.by Rusty Russell · 4d089e6f · May 21, 2026 · 1 fileMessage 78 · AdequateInformational 18Details
Commit message · Rusty Russell

common: fix up test vectors' invoice_merkle_root.

Calculate proof_merkle_root properly: we accidentally printed the
`invoice_merkle_root` again here.

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

78/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
Why it was queued
fuzzing or regression evidence
AI analysis · Informational 18/100

This change fixes a test-vector generator used only in Core Lightning's own test suite. The generator was accidentally printing the invoice merkle root twice and labeling the second copy as the 'proof merkle root.' The fix computes and prints the actual proof merkle root. This is a test-data bug, not a bug in live payment code, so it does not directly endanger user funds or node security.

Lower-prioritycommon: don't use a dummy zero field for payer proofs.by Rusty Russell · 3f20e58a · May 21, 2026 · 1 fileMessage 65 · AdequateLow 29Details
Commit message · Rusty Russell

common: don't use a dummy zero field for payer proofs.

Spec simplification suggested by @t-bast.

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 · Low 29/100

This commit updates how payment proofs are digitally signed in Core Lightning. Previously, the code inserted a fake empty field (type 0, length 0) when computing the proof signature. The new code follows a simplified specification and signs the proof data directly without that dummy field. This is a standards-compliance/spec-simplification change rather than a fix for an active vulnerability.

Lower-prioritycommon/test: don't use an empty note field in test vectors.by Rusty Russell · 53db80ba · May 21, 2026 · 1 fileMessage 75 · AdequateInformational 15Details
Commit message · Rusty Russell

common/test: don't use an empty note field in test vectors.

It's now optional, so make it NULL here.

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

75/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Mentions testing or verification
Why it was queued
fuzzing or regression evidence
AI analysis · Informational 15/100

This commit only updates a test program that prints sample data for BOLT12 invoice proofs. It changes the test to leave the optional 'note' field blank (NULL) instead of using an empty string, matching a recent specification change that says the field may be omitted when empty. There is no change to production code, no security fix, and no vulnerability.

AI review queuedmsggen: add createproof, xkeysend and graceful generationby daywalker90 · aeab4519 · May 20, 2026 · 20 filesMessage 65 · AdequateInformational 15Details
Commit message · daywalker90

msggen: add createproof, xkeysend and graceful generation

Fixed UnionField added and deprecated propagation
New primitive ProofField for createproof

Changelog-None

65/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
Why it was queued
second-pass: unusually broad change
AI analysis · Informational 15/100

This commit is a routine code-generation update for Core Lightning's gRPC and RPC bindings. It adds support for three new JSON-RPC commands (createproof, xkeysend, graceful) and a new primitive type (ProofField) used by createproof. The changes are entirely in generated binding code, not in the core daemon logic that actually processes payments, proofs, or shutdowns. There is no indication of a security fix or vulnerability.

Lower-priorityCI: update github actions in preparation of node.js 20 deprecationby daywalker90 · db4644f0 · May 20, 2026 · 13 filesMessage 62 · AdequateInformational 15Details
Commit message · daywalker90

CI: update github actions in preparation of node.js 20 deprecation

Changelog-None

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

This commit only updates the versions of GitHub Actions used in the project's automated build and test pipelines. It does not change any Core Lightning code that runs on users' computers, nor does it introduce any known security vulnerability. It is a routine maintenance change to stay ahead of GitHub's deprecation of older Node.js versions.

AI review queuedschemas: remove old deprecations, add missing deprecations/added fieldsby daywalker90 · 938bdea8 · May 20, 2026 · 30 filesMessage 85 · StrongInformational 19Details
Commit message · daywalker90

schemas: remove old deprecations, add missing deprecations/added fields

Also made fields not go optional if they are deprecated in the case that their parent is also deprecated. This makes more sense imo when you deprecate a whole command.

I added deprecation annotation for the .proto file as well so that later in the convert.rs file it properly annotates everything to allow for deprecated stuff.

Also fixed one propagation bug for the added/deprecated fields, that's why there are some additional changes of some fields.

Changelog-None

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
parser or protocol pathsecond-pass: unusually broad changesecond-pass: security-sensitive path
AI analysis · Informational 19/100

This commit is a large, routine cleanup of API metadata in Core Lightning. It marks many old RPC commands and fields as deprecated, removes some long-deprecated fields from generated gRPC/JSON schemas, and fixes version annotations in the code generator. There is no direct evidence of a security vulnerability being patched; the changes are about API lifecycle management and generated bindings.

Lower-priorityrenepay: skip channels disabled in gossmapby Christian Decker · 73825bca · May 18, 2026 · 1 fileMessage 68 · AdequateLow 26Details
Commit message · Christian Decker

renepay: skip channels disabled in gossmap

channel_is_available() checked whether a channel_update existed
(gossmap_chan_set) and whether renepay's own disabledmap had flagged
it, but never checked gossmap's half_chan.enabled flag. This meant
renepay would route through channels marked disabled in the
gossip_store, wasting HTLC round-trips to re-discover the failure.

Changelog-Fixed: renepay now skips channels disabled in the gossip map.

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

This fix corrects a routing bug in Core Lightning's 'renepay' payment plugin. Previously, renepay could try to send payments through Lightning channels that the wider network had already marked as disabled, causing payment attempts to fail and wasting network round-trips. The patch makes renepay respect the disabled flag from network gossip, so it avoids those channels upfront. It is a reliability/efficiency fix rather than a direct theft-of-funds vulnerability.

AI review queuedCargo.lock: weekly dependency updateby daywalker90 · 1a1e11a2 · May 18, 2026 · 1 fileMessage 68 · AdequateInformational 15Details
Commit message · daywalker90

Cargo.lock: weekly dependency update

Updating pin-project v1.1.12 -> v1.1.13
Updating pin-project-internal v1.1.12 -> v1.1.13
Updating serde_qs v1.1.1 -> v1.1.2
Updating zerofrom v0.1.7 -> v0.1.8

Changelog-None

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 · Informational 15/100

This is a routine weekly update to the Rust dependency lock file (Cargo.lock), bumping four small helper libraries to their latest patch versions. There is no indication in the commit or supplied references that any of these updates fix a security issue, and the commit message explicitly says 'Changelog-None'.

AI review queuedgitignore: add bwatchby daywalker90 · 6d98b486 · May 18, 2026 · 1 fileMessage 28 · OpaqueInformational 15Details
Commit message · daywalker90

gitignore: add bwatch

Changelog-None

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

This commit adds a single entry named 'bwatch' to the .gitignore file inside the plugins directory. A .gitignore file simply tells Git which files or folders to ignore when tracking changes. There is no code change, no bug fix, and no security relevance visible in this commit.

AI review queuedv26.06rc1by Sangbida Chaudhuri · abb0cdda · May 12, 2026 · 10 filesMessage 0 · OpaqueInformational 15Details
Commit message · Sangbida Chaudhuri

v26.06rc1

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 for a new release candidate (v26.06rc1) of Core Lightning. It updates version strings in packaging files and adds a detailed changelog. No actual source code behavior changes are included in this commit, so it does not introduce or fix any security issue by itself.

AI review queuedcrates: weekly dependency updateby daywalker90 · f3c7aed2 · May 11, 2026 · 1 fileMessage 35 · OpaqueInformational 15Details
Commit message · daywalker90

crates: weekly dependency update

Changelog-None

35/100 · OpaqueMessage clarity
✓ Descriptive subject! No meaningful explanatory body
Why it was queued
second-pass: broader security terminologysecond-pass: opaque commit message
AI analysis · Informational 15/100

This is a routine weekly update to the Rust dependency lock file (Cargo.lock). It bumps several third-party library versions by patch or minor increments and removes one unused dependency. There is no indication in the commit of any security fix, vulnerability, or behavior change in Core Lightning itself.