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 48 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-prioritycurrencyrate: round to the third digit and adding source argument to `currencyrate` commandby enaples · 6175642e · May 11, 2026 · 2 filesMessage 50 · ThinInformational 20Details
Commit message · enaples

currencyrate: round to the third digit and adding source argument to `currencyrate` command

Changelog-None

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

This commit updates the currency-rate plugin in Core Lightning. It adds a new optional 'source' argument to the `currencyrate` command so users can pick a specific price source, rounds displayed rates to three decimal places, and adds argument-count checks to several commands to reject extra parameters. These are minor functional and hardening changes; there is no clear security vulnerability being fixed.

Lower-priorityschemas: added `source` field to `currencyrate`by enaples · 4f8b0416 · May 11, 2026 · 7 filesMessage 60 · AdequateInformational 19Details
Commit message · enaples

schemas: added `source` field to `currencyrate`

Changelog-Added: `currencyrate` can now take a `source` argument to get the rate of a specific source

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

This commit adds a new optional 'source' argument to the currencyrate RPC command in Core Lightning. It lets users pick a specific exchange-rate source instead of getting the median across all sources. The change is purely a feature addition to the API and generated bindings; there is no indication of a security bug or fix.

Lower-prioritytests: test new features and improvements of currencyrate pluginby enaples · 727b6eaa · May 11, 2026 · 1 fileMessage 60 · AdequateInformational 15Details
Commit message · enaples

tests: test new features and improvements of currencyrate plugin

Changelog-None

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

This commit only changes test code for the currencyrate plugin. It adds new tests for rounding behavior, selecting a specific rate source, and rejecting unknown sources or too many RPC arguments. There is no change to production code and no security issue in the diff itself.

AI review queuedcurrencyrate: added READMEby enaples · fdce4870 · May 11, 2026 · 1 fileMessage 35 · OpaqueInformational 15Details
Commit message · enaples

currencyrate: added README

Changelog-None

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

This commit only adds a README file for the currencyrate plugin. It contains documentation describing how to configure price sources and warning users that stopping the plugin can interrupt invoice creation. There are no code changes and no security fix or vulnerability introduced.

AI review queuedtests: remove `test_withdraw_stuck_reserved_on_broadcast_failure`by daywalker90 · 4848b291 · May 11, 2026 · 1 fileMessage 73 · AdequateInformational 12Details
Commit message · daywalker90

tests: remove `test_withdraw_stuck_reserved_on_broadcast_failure`

After the bug was fixed in 1c5e63299411912d469e4160caa8c93e07e91447
`test_withdraw_unreserves_on_broadcast_failure` serves as a regression test

Changelog-None

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Provides detailed explanatory context✓ Mentions testing or verification
Why it was queued
fuzzing or regression evidencesigning or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 12/100

This commit simply deletes an old test that was written to document a known bug. The bug itself was already fixed in an earlier commit, and another test now serves as the regression test. No code behavior changes, and no new security issue is introduced here.

Lower-priorityxpay: add helper for payment deliverby Lagrang3 · a012c4d1 · May 11, 2026 · 1 fileMessage 68 · AdequateLow 31Details
Commit message · Lagrang3

xpay: add helper for payment deliver

Don't assume that payment->amount means the desired delivery amount.
Use a helper instead when we need that.

Changelog-None

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

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

This commit refactors how the xpay plugin tracks the intended delivery amount for a Lightning payment. Previously, the code assumed payment->amount always meant the amount the recipient should receive. The change introduces helper functions so the code can distinguish between the total desired delivery amount and the amount currently tied up in active routing attempts. This is a defensive cleanup that may prevent bugs where fees or partial payments are mis-accounted, but the commit itself does not describe a specific vulnerability or exploit.

Lower-priorityxpay: add sendamount commandby Lagrang3 · bd71651b · May 11, 2026 · 16 filesMessage 58 · ThinInformational 15Details
Commit message · Lagrang3

xpay: add sendamount command

Changelog-Added: sendamount command, to make a payment specifying the desired amount to send instead of the amount to be received.

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

58/100 · ThinMessage clarity
✓ Descriptive subject✓ Provides detailed explanatory context
AI analysis · Informational 15/100

This commit adds a brand-new RPC command called sendamount to Core Lightning's xpay plugin. It lets a user make a payment by specifying how much they want to spend, rather than how much the recipient should receive. The change is purely additive: it exposes the new command through the JSON-RPC, gRPC, Python client, and documentation, and adds tests. There is no indication in the commit that it fixes a bug or addresses a security issue.

Lower-priorityxpay: fix taken leak if we fail xpay_core early.by Rusty Russell · ae956f2a · May 11, 2026 · 1 fileMessage 70 · AdequateInformational 21Details
Commit message · Rusty Russell

xpay: fix taken leak if we fail xpay_core early.

This was uncovered by a test in the next commit.

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

70/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Mentions testing or verification
AI analysis · Informational 21/100

This commit fixes a small memory-management bug in the xpay plugin of Core Lightning. If the plugin's main payment function exits early (for example, because it receives an invalid invoice), it could fail to properly release a temporary copy of the invoice string, causing a minor memory leak. The fix makes an explicit copy of the string at the start so it can be safely cleaned up later. There is no direct evidence this is a security vulnerability, and the commit message does not describe it as one.

Lower-priorityxpay: add payment MPP amount variableby Lagrang3 · fee5eb4c · May 11, 2026 · 1 fileMessage 68 · AdequateInformational 15Details
Commit message · Lagrang3

xpay: add payment MPP amount variable

Change the name of payment->full_amount to payment->mpp_amount,
to make clear that this refers to the value needed in the last
hop payload for MPP payments to coordinate.

Changelog-None

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

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

This is a simple internal code cleanup: a variable named `full_amount` is renamed to `mpp_amount` throughout the xpay plugin, with comments updated to explain that the value is used for Multi-Path Payment (MPP) coordination in the final hop of a Lightning payment. No behavior changes, no bug fixes, and no security relevance are visible in the diff.

Lower-priorityxpay: attempt amount could have different meaningsby Lagrang3 · 5b0dcb9f · May 11, 2026 · 1 fileMessage 73 · AdequateLow 32Details
Commit message · Lagrang3

xpay: attempt amount could have different meanings

Change the name of attempt->deliver to attempt->amount,
do not assume that amount is the "desired delivery", since it might be
the "desired send" depending on the payment context.

Use helpers to get the fees and deliver amount from an attempt.

Changelog-None

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

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

This is a code-cleanup change in Core Lightning's experimental xpay plugin. The developer renamed a field and added helper functions so the code no longer confuses 'amount to deliver to the recipient' with 'amount we send into the network including fees'. The commit itself does not claim to fix a security bug, but it removes several places where the wrong meaning of 'amount' was being used, which could previously have led to incorrect fee calculations or payment accounting.

Lower-priorityxpay: add flag for "includefees"by Lagrang3 · 98132324 · May 11, 2026 · 1 fileMessage 68 · AdequateInformational 18Details
Commit message · Lagrang3

xpay: add flag for "includefees"

Add an includefees flag to payment to indicate the desire for this
payment to be a "send amount" kind instead of "receive amount".

Changelog-None

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

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

This commit adds a new optional flag called 'includefees' to the xpay plugin in Core Lightning. When enabled, it tells the routing system that the sender wants the payment amount to include any routing fees, rather than having fees deducted from the recipient's amount. This is a feature addition, not a bug fix or security patch. There is no indication in the commit that it addresses a security vulnerability.

Lower-priorityxpay: add a special offer payable condition ...by Lagrang3 · 1f55feec · May 11, 2026 · 1 fileMessage 68 · AdequateLow 29Details
Commit message · Lagrang3

xpay: add a special offer payable condition ...

that only applies to sendamount payments (includefees flag on).

Changelog-None

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

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

This change adds a new validation check in Core Lightning's xpay plugin for a specific way of paying BOLT12 offers (sendamount with the includefees flag). It ensures such payments can only be used with offers that allow any amount, are one-time, and are in the same currency. The change appears to be a hardening/validation improvement rather than a fix for an active vulnerability.

Lower-priorityxpay: add helper to fetch the MPP amount ...by Lagrang3 · c9f16f3c · May 11, 2026 · 1 fileMessage 68 · AdequateLow 32Details
Commit message · Lagrang3

xpay: add helper to fetch the MPP amount ...

for the final hop payload, which for normal xpay payments is known in
advanced but not for sendamount payments (includefees flag on).

Changelog-None

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

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

This commit adds a helper function in Core Lightning's xpay plugin to correctly determine the multi-path payment (MPP) amount used in the final hop of a payment route. For normal xpay payments, this amount is already known, but for 'sendamount' payments where fees are included in the amount, the actual delivered amount must be used instead. The change ensures the correct value is passed when building both regular and blinded payment routes, likely fixing a bug where the wrong MPP amount could be set.

Security candidateaskrene: askrene-remove-channel-updateby Lagrang3 · 902242b0 · May 11, 2026 · 15 filesMessage 68 · AdequateInformational 23Details
Commit message · Lagrang3

askrene: askrene-remove-channel-update

Changelog-Added: askrene: askrene-remove-channel-update, a new RPC to remove channel_update entries from layers.

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

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
boot or update path
AI analysis · Informational 23/100

This commit adds a new management command (askrene-remove-channel-update) that lets users delete a previously-added channel override from an AskRene routing 'layer'. It is a routine feature addition: it removes one entry from an in-memory map inside the askrene plugin and does not touch funds, cryptographic operations, or network peers. There is no direct evidence in the commit that this fixes a security bug or introduces a vulnerability, but any new RPC surface slightly enlarges the attack surface and could hide logic bugs in input handling.

Lower-prioritylightningd: include offer_id in invoice_creation notificationby Vincenzo Palazzo · f9609969 · May 11, 2026 · 5 filesMessage 81 · StrongInformational 19Details
Commit message · Vincenzo Palazzo

lightningd: include offer_id in invoice_creation notification

When a BOLT 12 invoice is created via createinvoice and is associated
with a local offer, include the offer_id in the invoice_creation event
notification. This allows plugins to determine which offer triggered
an invoice creation without having to call listinvoices for every
created invoice.

For bolt11 invoices and bolt12 invoices not associated with a local
offer, the field is omitted.

Fixes #8191

Changelog-Added: The `invoice_creation` notification now includes `offer_id` when the invoice is associated with a BOLT 12 offer.

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

This commit is a straightforward feature addition, not a security fix. It adds an optional `offer_id` field to the `invoice_creation` event notification that plugins can subscribe to. This lets plugins know which BOLT 12 offer triggered a newly created invoice, avoiding the need to repeatedly query the node for invoice details. There is no vulnerability being patched here.

Security candidatefix: release txprepare reservations on send failureby Vincenzo Palazzo · 1c5e6329 · May 11, 2026 · 2 filesMessage 100 · StrongLow 47Details
Commit message · Vincenzo Palazzo

fix: release txprepare reservations on send failure

Clean up the original PSBT reservation when withdraw/txsend fail after signing or broadcast.

Include the final withdraw regression coverage, including the liquid-safe address handling needed for CI.

Fixes #8925

100/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference
Why it was queued
signing boundarysigning or wallet path
AI analysis · Low 47/100

This commit fixes a bug in Core Lightning's wallet code where, if a prepared Bitcoin transaction failed during signing or broadcast, the coins that had been set aside ('reserved') for that transaction were not released back to the wallet. The fix makes sure those reservations are cleaned up automatically on failure, so funds are not stuck and become usable again. The change also adds tests that simulate a broadcast failure and verify the funds are no longer reserved afterward.

Lower-prioritypytest: fix regex in test_important_pluginby Vincenzo Palazzo · 04e55baf · May 11, 2026 · 1 fileMessage 60 · AdequateInformational 15Details
Commit message · Vincenzo Palazzo

pytest: fix regex in test_important_plugin

Fix the expected broken-log pattern in test_important_plugin.

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

This commit fixes a single-character typo in a test's expected error message pattern. The word 'Unkown' is corrected to 'Unknown' in a regex used by an automated test. There is no change to production code, no security fix, and no user-facing behavior change.

Lower-prioritysplice: Make feerate opening + feerate_offsetby Dusty Daemon · ee2d5f81 · May 11, 2026 · 10 filesMessage 90 · StrongModerate 55Details
Commit message · Dusty Daemon

splice: Make feerate opening + feerate_offset

Splicing feerate was being derived by `default_feerate` which was actually `unilateral_feerate`, which is incorrect.

Instead we define an explicit `splice_feerate` in the chain topology that is `opening` + `feerate_offset`.

This slipped through testing because regtest isn’t a great test of fees we see in the wild.

Changelog-Fixed: Fixes high fee issue that caused `splicein` and `spliceout` to abort.

90/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode✓ Mentions testing or verification
AI analysis · Moderate 55/100

This commit fixes a bug in Core Lightning's splicing feature where the fee rate used for splice transactions was accidentally based on the much higher 'unilateral close' fee rate instead of the intended 'opening' fee rate plus a small offset. The result was that normal splice-in and splice-out operations could be rejected or aborted because the calculated fee looked too high. The fix introduces a dedicated splice fee rate and updates the safety checks and tests accordingly. It is a correctness/availability issue rather than a remote exploit, but it could cause users to pay excessive fees or fail to use splicing.

Lower-prioritybwatch: add typed hash tables for watchesby Sangbida Chaudhuri · ca2e79ff · May 11, 2026 · 4 filesMessage 68 · AdequateInformational 15Details
Commit message · Sangbida Chaudhuri

bwatch: add typed hash tables for watches

We have 4 types of watches: utxo (outpoint), scriptpubkey, scid and
blockdepth. Each gets its own hash table with a key shape that makes
lookups direct.

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

This commit is a routine internal refactor of a new plugin called bwatch. It adds typed hash tables so the plugin can quickly look up different kinds of blockchain 'watches' (things it monitors on the Bitcoin blockchain). There is no user-facing change, no bug fix, and no security-sensitive behavior introduced.

Lower-prioritybwatch: persist watchesby Sangbida Chaudhuri · ef8b11e4 · May 11, 2026 · 3 filesMessage 51 · ThinInformational 18Details
Commit message · Sangbida Chaudhuri

bwatch: persist watches

Each watch (and its set of owners) is serialized through the wire
format from the earlier commit and stored in the datastore. On startup
we walk each type's prefix and reload the watches into their
respective hash tables, so a restart resumes watching the same things
without anyone re-registering.

51/100 · ThinMessage clarity
✓ Subject identifies a change✓ Provides detailed explanatory context
AI analysis · Informational 18/100

This commit adds a save-and-reload feature for the bwatch plugin so that after a restart it remembers which Bitcoin transactions, outputs, and channel IDs it was monitoring. It stores these in the node's internal datastore and reads them back on startup. There is no obvious security bug in the change, but it is a new persistence mechanism that could affect reliability and, if misused, could let a stale or incorrect watch live longer than intended.

Lower-prioritybwatch: add watch_found and watch_revert notificationsby Sangbida Chaudhuri · 34d8c6fe · May 11, 2026 · 2 filesMessage 73 · AdequateInformational 15Details
Commit message · Sangbida Chaudhuri

bwatch: add watch_found and watch_revert notifications

Add two RPCs for surfacing watches to lightningd on a new block or
reorg.

bwatch_send_watch_found informs lightningd of any watches that were
found in the current processed block. The owner is used to
disambiguate watches that may pertain to multiple subdaemons.

bwatch_send_watch_revert is sent in case of a revert; it informs the
owner that a previously reported watch has been rolled back.

These functions get wired up in subsequent commits.

Made-with: Cursor

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

This commit adds two internal notification functions inside Core Lightning's new block-watching plugin. They are not yet connected to anything; the commit message says they will be wired up later. There is no user-facing change and no security fix or vulnerability present in the diff.

Lower-prioritybwatch: scan blocks for scriptpubkey and outpoint matchesby Sangbida Chaudhuri · 4f12b48a · May 11, 2026 · 3 filesMessage 73 · AdequateInformational 24Details
Commit message · Sangbida Chaudhuri

bwatch: scan blocks for scriptpubkey and outpoint matches

After every fetched block, walk each transaction and fire watch_found
for matching scriptpubkey outputs and spent outpoints.

Outputs are matched by hash lookup against scriptpubkey_watches; inputs
by reconstructing the spent outpoint and looking it up in
outpoint_watches.

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

This commit adds the actual scanning logic to a new 'bwatch' plugin that watches the Bitcoin blockchain. Before this change, the plugin fetched blocks but never inspected the transactions inside them. Now, after each block is downloaded, it walks through every transaction and checks whether any output matches a watched Bitcoin address (scriptpubkey) or whether any input spends a watched previous transaction output (outpoint). When a match is found, it sends a notification back to the main lightningd process. This is a normal feature-completion commit for a block-watcher plugin; it does not by itself look like a security fix or vulnerability.

Lower-prioritybwatch: thread per-watch parameter through block scanningby Sangbida Chaudhuri · 852ed1ab · May 11, 2026 · 3 filesMessage 73 · AdequateInformational 19Details
Commit message · Sangbida Chaudhuri

bwatch: thread per-watch parameter through block scanning

To support rescans (added next), bwatch_process_block_txs and
bwatch_check_scid_watches gain a `const struct watch *w` parameter
so the caller can ask the scanner to check just one watch instead
of all of them.

When a new watch is added with start_block <= current_height (say
the watch starts at block 100 but bwatch is already at 105) we
need to replay blocks 100..105 for that watch alone — not re-scan
every active watch over those blocks.

w == NULL -> check every active watch (normal polling)
w != NULL -> check only that one watch (rescan)

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

This commit refactors a Core Lightning plugin so that block scanning can be limited to a single user-provided watch instead of checking every active watch. It is a preparatory change for adding a 'rescan' feature and does not, by itself, change any externally reachable behavior. There is no indication it fixes a security bug or introduces a vulnerability.

Lower-prioritybwatch: add scriptpubkey watch RPCsby Sangbida Chaudhuri · 64cd3fed · May 11, 2026 · 3 filesMessage 68 · AdequateInformational 11Details
Commit message · Sangbida Chaudhuri

bwatch: add scriptpubkey watch RPCs

addscriptpubkeywatch and delscriptpubkeywatch are how lightningd asks
bwatch to start/stop watching an output script for a given owner.

Changelog-Added: Plugins: bwatch exposes addscriptpubkeywatch / delscriptpubkeywatch RPCs.

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

This commit adds two new internal plugin commands, addscriptpubkeywatch and delscriptpubkeywatch, to the bwatch plugin in Core Lightning. They let lightningd ask bwatch to start or stop monitoring a Bitcoin output script (scriptpubkey) for a specific owner. The change is a straightforward feature addition with no obvious security bug in the diff itself.

Lower-prioritybwatch: add outpoint watch RPCsby Sangbida Chaudhuri · 6ed4be67 · May 11, 2026 · 3 filesMessage 68 · AdequateInformational 15Details
Commit message · Sangbida Chaudhuri

bwatch: add outpoint watch RPCs

addoutpointwatch and deloutpointwatch are how lightningd asks bwatch
to start/stop watching a specific (txid, outnum) for a given owner.

Changelog-Added: Plugins: bwatch exposes addoutpointwatch / deloutpointwatch RPCs.

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

This commit adds two new internal plugin commands, addoutpointwatch and deloutpointwatch, to the bwatch plugin in Core Lightning. They let the lightning node start or stop watching a specific transaction output (a txid plus output number) on behalf of a named owner. There is no indication in the commit that this is a security fix or that it addresses any vulnerability; it reads as ordinary feature work.