LL
← All projectsLightning Labs

LND

Go implementation of a complete Lightning Network node.

BitcoinLightning NetworkNormal
Repository coverage

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

116security candidates168second-pass queue1150AI analyses
55commits · 30 days
169commits · 60 days
828commits · 180 days
1227commits · 365 days
Backfill bands
Aug 5 → Feb 6405 seen5 candidatesComplete
Feb 6 → Jun 6665 seen28 candidatesComplete
Jun 6 → Jul 689 seen4 candidatesComplete
Jul 6 → Aug 569 seen0 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.

67/100 average clarity
279Strong · 80–100
562Adequate · 60–79
367Thin · 40–59
31Opaque · 0–39
1security candidate with opaque commit messaging
Read the scoring rubric →
Developer activity

Who is changing the project?

Public Git author strings; identities are not independently verified.

DeveloperCommitsCandidatesAnalyzedHigh riskMessage avg.
Olaoluwa Osuntokun19940194474
ziggie41015372164
Jared Tobin908171
Elle Mouton26731235067
Erick Cestari26726070
bitromortac46546067
yyforyongyu55355065
saubyk15215070
Oli727057
Suheb323075
elnosh323071
George Tsagkarelis32131066
Analysis record

Published AI watches

Last scanned 34 minutes ago

Moderate 63 AI analysisMessage 58 · Thin
LL Lightning LabsLND BitcoinLightning Network

Merge pull request #11024 from ziggie1984/invoices-update-validation

This commit tightens how LND processes invoice payments, especially for newer multi-path (MPP) and AMP invoices, keysend payments, and replayed payments. It adds checks that ensure the right payment preimage is used for each invoice type a…

Preimage validation added for AMP and regular invoice replaysAMP invoices forced into MPP update path, preventing legacy-path processingLegacy settlement now fails when invoice-level preimage is missing
61f3b5a7by ziggieXXX+482−114 files
No security note in commit
Moderate 59 AI analysisMessage 35 · Opaque
LL Lightning LabsLND BitcoinLightning Network

invoices: refine update handling

This commit tightens how LND handles invoice payment updates, especially for newer 'AMP' invoices and old-style 'keysend' payments. It adds checks so that the wrong kind of payment cannot be processed against the wrong kind of invoice, and…

Added preimage/hash mismatch checks for both regular and AMP invoice replaysAMP records now require an MPP payload, preventing AMP processing on the legacy pathLegacy path now rejects AMP invoices and invoices missing invoice-level preimages
6be6350eby ziggie+476−113 files
No security note in commit
Informational 15 AI analysisMessage 57 · Thin
LL Lightning LabsLND BitcoinLightning Network

docs: update 0.21.2 release notes

This commit only updates the release notes document for version 0.21.2. It adds a bullet point describing a previously merged code change about invoice handling and adds a contributor name to the credits list. No actual code was changed, s…

758bbb8eby ziggie+6−01 file
No security note in commit
Informational 15 AI analysisMessage 57 · Thin
LL Lightning LabsLND BitcoinLightning Network

docs: move gossip bounds note to v0.21.2

This commit only moves an existing release-note entry from one version's notes (v0.22.0) to another (v0.21.2). It does not change any code, build files, configuration, or tests. The change is purely editorial documentation bookkeeping.

83e7eb8cby ziggie+11−112 files
No security note in commit
High 72 AI analysisMessage 68 · Adequate
LL Lightning LabsLND BitcoinLightning Network

discovery: bound channel range reply buffering

This change fixes a way a malicious or buggy peer could make an LND node use an unpredictable amount of memory while syncing the Lightning channel graph. Before the fix, the node only limited the size of one compressed reply message, but a…

Resource exhaustion / unbounded memory growth in gossip syncRemote peer can influence memory allocation via ReplyChannelRange streamMissing aggregate limit on decoded working set
ceff94faby Olaoluwa Osuntokun+335−153 files
Vendor flagged security relevance
Low 33 AI analysisMessage 47 · Thin
LL Lightning LabsLND BitcoinLightning Network

docs: update release notes

This commit updates the release notes for LND 0.21.2 to describe a fix for a bug in the HTLC interceptor RPC. The bug caused LND to fail to forward payments in blinded routes when the next hop was identified by node ID instead of channel I…

Blinded route forwarding failure could disrupt payment routing or be used to probe path structure.Sentinel value change in RPC API could cause client misclassification of forwards if not handled.Release notes describe the change as a fix for a forwarding issue, not as a security vulnerability.
f42b4298by bitromortac+20−01 file
No security note in commit
Informational 14 AI analysisMessage 83 · Strong
LL Lightning LabsLND BitcoinLightning Network

itest: cover blinded route next_node_id forwarding

This commit only adds new integration tests for an existing feature in LND: forwarding blinded payments where the next hop is identified by node ID rather than channel ID. It does not change production code, fix a bug, or introduce any new…

da6a40c0by bitromortac+432−02 files
No security note in commit
Low 25 AI analysisMessage 73 · Adequate
LL Lightning LabsLND BitcoinLightning Network

witness beacon: report node-ID next hop to the on-chain HTLC interceptor

This change fixes a reporting gap in LND's 'witness beacon,' a component that watches on-chain transactions and tells the HTLC interceptor where a payment should go next. Previously, when the next hop was identified by a node ID rather tha…

Missing security-critical metadata in on-chain interception pathBehavioral parity between on-chain and off-chain HTLC interceptionPotential misclassification of node-ID forwards as final receives
9c4b8bfeby bitromortac+59−52 files
No security note in commit
Moderate 59 AI analysisMessage 81 · Strong
LL Lightning LabsLND BitcoinLightning Network

htlcswitch: forward node-ID blinded hops via non-strict forwarding

This commit fixes a bug in LND's payment forwarding for 'blinded routes'—a privacy feature in the Lightning Network. Previously, if the next hop was identified by node ID rather than a specific channel ID, the payment could not be forwarde…

Fixes a functional forwarding failure for blinded-route payments using node-ID next hops (issue #10937).Prevents private channel SCID leakage in failure messages for node-ID blinded hops by returning FailUnknownNextPeer instead of a channel_update.Adds circular-route filtering for node-ID next hops before non-strict forwarding selection.
dbc57040by bitromortac+334−416 files
No security note in commit
Informational 19 AI analysisMessage 73 · Adequate
LL Lightning LabsLND BitcoinLightning Network

htlcswitch+lnrpc: report node-ID next hop to the off-chain HTLC interceptor

This change improves how the Lightning Network Daemon (LND) reports forwarding details to external plugins that inspect HTLCs (payment packets). For a new type of blinded route where the next hop is identified by node ID rather than a spec…

Information-correctness fix for HTLC interceptor APIPrevents misclassification of node-ID forwards as exit hopsAdds explicit sentinel to disambiguate zero SCID semantics
32373b76by bitromortac+29−13 files
No security note in commit
Low 25 AI analysisMessage 73 · Adequate
LL Lightning LabsLND BitcoinLightning Network

htlcswitch: classify a node-ID forward as a forward event

This commit fixes a bookkeeping bug in LND's HTLC event stream. When a payment is forwarded to a 'blinded' next hop identified only by a node public key (not a channel ID), and it fails before the switch picks an outgoing channel, the even…

Event misclassification in HTLC event stream (forward reported as receive)Blinded/node-ID forwarding path introduced prior to this fixFailure and resolution packets dropped next-hop metadata before fix
a4844ef5by bitromortac+149−04 files
No security note in commit
Low 29 AI analysisMessage 68 · Adequate
LL Lightning LabsLND BitcoinLightning Network

htlcswitch/hop: decode next_node_id blinded hops

This commit adds support in LND for a different way of identifying the next hop in a private ('blinded') Lightning payment route. Previously LND expected the next hop to be identified by a channel ID; now it also accepts the next node's pu…

New validation enforces BOLT 4 mutual exclusivity of short_channel_id and next_node_id in blinded route dataPreviously ambiguous or unhandled next_node_id forwarding case now explicitly decodedNo memory-safety, cryptographic, or authorization changes observed
4fd4289aby bitromortac+471−86 files
No security note in commit
Moderate 60 AI analysisMessage 78 · Adequate
LL Lightning LabsLND BitcoinLightning Network

lnwire: cap decoded short channel IDs

This commit tightens a safety limit in LND's Lightning wire protocol parser. Previously, a compressed network message could decompress into an unbounded number of short channel IDs, potentially consuming far more memory than the wire messa…

Resource-limit bypass: compressed-input bound did not bound decoded outputMemory-exhaustion risk from zlib decompression of peer-supplied dataTruncated/corrupt zlib streams previously accepted as valid partial results
d1622919by Olaoluwa Osuntokun+271−502 files
No security note in commit
Informational 18 AI analysisMessage 85 · Strong
LL Lightning LabsLND BitcoinLightning Network

lnrpc/routerrpc: add outgoing_node_id to HTLC intercept request

This commit only updates the API definition and auto-generated code for LND's HTLC interceptor. It adds a new optional field, outgoing_requested_node_id, and documents that when a blinded route uses a node ID instead of a channel ID, the e…

No runtime logic changed; only protobuf schema and generated stubsNew field is explicitly documented as unpopulated until later commitsSentinel value (MaxUint64) introduced to prevent misclassification of final receive vs node-addressed forward
14640a50by bitromortac+48−73 files
No security note in commit
Informational 18 AI analysisMessage 73 · Adequate
LL Lightning LabsLND BitcoinLightning Network

multi: represent the blinded forwarding next hop as an fn.Either

This commit is a behind-the-scenes code cleanup in the LND Lightning node. It changes how the 'next hop' for forwarding payments is stored internally so that, in the future, blinded routes can identify the next hop by a node's public key i…

Refactor of core HTLC forwarding data structure (ForwardingInfo.NextHop)Preparation for blinded route next-hop identification by node public keyEncapsulation of Either type behind IsExit() and NextHopChannel() to centralize exit-hop detection
d28a7176by bitromortac+83−2612 files
No security note in commit
Low 44 AI analysisMessage 73 · Adequate
LL Lightning LabsLND BitcoinLightning Network

htlcswitch: key the aux traffic shaper on the evaluated channel

This commit fixes a routing bug in LND's Lightning payment forwarding. When a payment could take any of several parallel channels to the same next peer, the node was accidentally asking an optional 'auxiliary traffic shaper' about the chan…

Logic error: wrong channel identifier used for auxiliary policy/bandwidth checkPotential information disclosure: real SCID could leak if passed to shaper-driven wire messages; commit explicitly prevents thisParallel-channel forwarding correctness issue
b1667800by bitromortac+133−12 files
No security note in commit
Informational 15 AI analysisMessage 68 · Adequate
LL Lightning LabsLND BitcoinLightning Network

github: bump gateway code-review to v0.6.0

This commit updates a GitHub Actions workflow that runs an optional code-review bot called 'gateway'. It only changes two pinned version numbers (SHA hashes) for the bot's action and its runtime, moving from v0.5.0 to v0.6.0. There is no c…

17a4d42fby Suheb+4−41 file
No security note in commit
Moderate 58 AI analysisMessage 68 · Adequate
LL Lightning LabsLND BitcoinLightning Network

channeldb: recover missing db version

This patch fixes a database migration bug in LND's channel database. Some databases were created without recording their schema version number, which could cause future mandatory upgrades to be skipped. The fix detects that missing version…

Database schema version key can be absent due to an init-ordering regressionMissing version key previously caused migration selection to treat DB as latest, potentially skipping mandatory migrationsFix recovers baseline from last mandatory version before the regression (33)
68264c70by Elle Mouton+176−33 files
Vendor flagged security relevance
Informational 22 AI analysisMessage 73 · Adequate
LL Lightning LabsLND BitcoinLightning Network

channeldb: make waiting proof migration repeatable

This commit fixes a database migration in LND so it can safely run twice. Previously, if a certain recovery process re-ran migration 35 on a database that already had newer-format 'waiting proof' records, the migration would likely fail or…

Database migration idempotency/robustness fixPotential data corruption or node startup failure if migration re-run against mixed-format bucketNo input validation of attacker-controlled data; issue is local/state-recovery only
3aff61aeby Elle Mouton+93−02 files
No security note in commit
Moderate 54 AI analysisMessage 76 · Adequate
LL Lightning LabsLND BitcoinLightning Network

channeldb: preserve db version during init

This commit fixes a database initialization bug in LND's channel database. Previously, creating an empty metadata bucket during setup could trick the code into thinking an old or partially-created database was already fully up-to-date, pot…

Database version detection logic flawPotential migration skip due to incorrect initialized-state detectionNew explicit error for missing DB version key
619913bfby Elle Mouton+111−104 files
No security note in commit
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 queuedlnwallet: define helper func to coop close conf scalingby Olaoluwa Osuntokun · 09c813a6 · Jan 16, 2026 · 2 filesMessage 65 · AdequateInformational 17Details
Commit message · Olaoluwa Osuntokun

lnwallet: define helper func to coop close conf scaling

We have two versions: for itests, we just use one conf, but in prod,
we'll scale the number of confirmations.

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

This commit adds a small helper function that decides how many blockchain confirmations LND should wait before treating a channel close as final. In production it returns at least 3 confirmations, scaling up with larger channel capacities; in integration tests it always returns 1 to keep tests fast. There is no direct security bug here—it is a defensive reorg-protection measure and a code-organization change.

AI review queuedlnwallet: add tests for new conf scaling helper funcsby Olaoluwa Osuntokun · 4f43717d · Jan 16, 2026 · 1 fileMessage 60 · AdequateInformational 15Details
Commit message · Olaoluwa Osuntokun

lnwallet: add tests for new conf scaling helper funcs

60/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Mentions testing or verification! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit only adds a new test file (lnwallet/confscale_test.go) with unit and property-based tests for existing confirmation-scaling helper functions. It does not change any production code, introduce new functionality, or modify security-relevant behavior. There is no indication of a security fix or vulnerability being addressed.

Lower-prioritydocs/release-notes: add release notes entryby Olaoluwa Osuntokun · 4aef4d00 · Jan 16, 2026 · 1 fileMessage 45 · ThinInformational 15Details
Commit message · Olaoluwa Osuntokun

docs/release-notes: add release notes entry

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
documentation-only discount
AI analysis · Informational 15/100

This commit only adds documentation to the release notes file. It describes two prior code changes: one that adjusts confirmation requirements for cooperative channel closes, and another that increases a minimum time-lock safety parameter (MinCLTVDelta) from 18 to 24 blocks. There are no code changes in this commit, so it cannot by itself introduce or fix a security bug.

Lower-prioritylntest: add new wait for conf helper method to ChainNotifierby Olaoluwa Osuntokun · 0f59756b · Jan 16, 2026 · 2 filesMessage 50 · ThinInformational 15Details
Commit message · Olaoluwa Osuntokun

lntest: add new wait for conf helper method to ChainNotifier

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

This commit only adds a new helper method to a test mock and improves an error message in test code. It does not change any production code, network behavior, or security-sensitive logic. There is no security issue here.

Lower-prioritycontractcourt: update close logic to handle re-orgs of depth n-1, where n is num confsby Olaoluwa Osuntokun · 12668b8a · Jan 16, 2026 · 1 fileMessage 83 · StrongHigh 71Details
Commit message · Olaoluwa Osuntokun

contractcourt: update close logic to handle re-orgs of depth n-1, where n is num confs

In this commit, we update the close logic to handle re-ogs up to the
final amount of confirmations. This is done generically, so we're able
to handle events such as: coop close confirm, re-org, breach confirm,
re-org, force close confirm, re-org, etc.

The upcoming set of new tests will exercise all of these cases.

We modify the block beat handling to unify the control flow. As it's
possible we get the beat, then see the spend, or the oher way around.

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

This commit changes how LND watches for channel-closing transactions on the Bitcoin blockchain. Previously, the code might act immediately when it saw a spend, which could be risky if the blockchain later reorganized (a 're-org') and removed that transaction. Now it waits for a configurable number of confirmations before processing the close, and can reset cleanly if a re-org happens. This reduces the chance of LND taking wrong actions (for example, failing to punish a breach or incorrectly marking a channel closed) during temporary blockchain reorganizations.

Lower-prioritypeer+rpcserver: use new conf scaling for notificationsby Olaoluwa Osuntokun · 931b54e8 · Jan 16, 2026 · 2 filesMessage 50 · ThinLow 32Details
Commit message · Olaoluwa Osuntokun

peer+rpcserver: use new conf scaling for notifications

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

This change adjusts how many Bitcoin block confirmations LND waits before telling users a Lightning channel is successfully closed. For cooperative closes, it now scales the wait based on the channel's size (larger channels wait more confirmations) instead of always using 1 confirmation. For force closes, it keeps 1 confirmation for user notifications because a separate internal safety mechanism handles the real security waiting. This is a defensive hardening improvement, not a fix for an active exploit.

Lower-priorityrouting: increase MinCLTVDelta from 18 to 24 blocksby Olaoluwa Osuntokun · 4bce4ebe · Jan 16, 2026 · 1 fileMessage 73 · AdequateLow 33Details
Commit message · Olaoluwa Osuntokun

routing: increase MinCLTVDelta from 18 to 24 blocks

This increases the minimum CLTV delta allowed for invoice creation to
provide more headroom above DefaultFinalCltvRejectDelta (19 blocks).
The previous value of 18 was below the reject threshold, which could
allow users to create invoices with CLTV deltas that would be rejected
when receiving payments.

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

This commit tightens a safety setting in LND, the Lightning Network Daemon. It raises the minimum allowed CLTV delta—the time buffer built into Lightning invoices—from 18 to 24 blocks. The old minimum of 18 was below LND's own 19-block rejection threshold, so users could create invoices that other nodes would refuse to pay. The change prevents that mismatch but is a policy adjustment, not a fix for a code vulnerability that lets an attacker steal funds directly.

Lower-prioritycontractcourt: add unit tests for rbf re-org casesby Olaoluwa Osuntokun · b6b4cefd · Jan 16, 2026 · 1 fileMessage 83 · StrongInformational 12Details
Commit message · Olaoluwa Osuntokun

contractcourt: add unit tests for rbf re-org cases

This set of new tests ensures that if have created N RBF variants of the
coop close transaction, that any of then can confirm, and be re-org'd,
with us detecting the final spend once it confirms deeploy enough.

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

This commit only adds new automated unit tests for how LND's chain watcher behaves when a cooperative channel-close transaction is affected by a Bitcoin blockchain reorganization (re-org). It does not change any production code, so by itself it cannot introduce or fix a live security vulnerability. The tests verify that if one version of a cooperative close transaction is reorganized out, the watcher can detect an alternative version and confirm the correct final spend.

Lower-prioritycontractcourt: add new chainWatcherTestHarnessby Olaoluwa Osuntokun · ce779a97 · Jan 16, 2026 · 1 fileMessage 60 · AdequateInformational 15Details
Commit message · Olaoluwa Osuntokun

contractcourt: add new chainWatcherTestHarness

We'll use this for all the upcoming tests.

60/100 · AdequateMessage clarity
✓ Descriptive subject✓ Provides an explanatory body✓ Mentions testing or verification
AI analysis · Informational 15/100

This commit only adds a new test helper file for the contractcourt package. It contains no production code changes, no bug fixes, and no security-sensitive logic. It is purely test infrastructure to make future chain-watcher tests easier to write.

Lower-prioritypeer: send out a notification after the 1st conf, then wait for the restby Olaoluwa Osuntokun · 6553b61a · Jan 16, 2026 · 1 fileMessage 73 · AdequateLow 26Details
Commit message · Olaoluwa Osuntokun

peer: send out a notification after the 1st conf, then wait for the rest

We wnt to add better handling, but not break any UIs or wallets. So
we'll continue to send out a notification after a single confirmation,
then send another after things are fully confirmed.

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

This commit changes how LND notifies wallets and user interfaces about a cooperative channel close. Previously, LND waited for a variable number of confirmations based on the channel's capacity before sending any success notification. Now it sends an initial notification after just one confirmation, then a final notification after the full required confirmations. It also adds a hidden configuration override for testing. The change is described as a UI-compatibility improvement, not a security fix.

Lower-prioritylncfg: add new dev config option for scaling channel close confsby Olaoluwa Osuntokun · 622fa447 · Jan 16, 2026 · 2 filesMessage 65 · AdequateInformational 15Details
Commit message · Olaoluwa Osuntokun

lncfg: add new dev config option for scaling channel close confs

This'll be useful for the set up upcoming itests.

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

This commit adds a new developer-only configuration option that lets tests force a specific number of blockchain confirmations for channel closes. It is gated behind integration/dev builds and does not change production behavior. There is no security issue visible in this patch.

Lower-prioritymulti: add new ChannelCloseConfs param, thread thru as neededby Olaoluwa Osuntokun · c0f48d23 · Jan 16, 2026 · 4 filesMessage 73 · AdequateInformational 18Details
Commit message · Olaoluwa Osuntokun

multi: add new ChannelCloseConfs param, thread thru as needed

In this commit, we add a new param that'll allow us to scale up the
number of confirmations before we act on a new close. We'll use this
later to improve the current on chain handling logic.

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

This commit adds a new internal setting called ChannelCloseConfs that lets developers override how many blockchain confirmations LND waits for before acting on a channel close. It is explicitly marked as only for dev/integration builds and testing. There is no actual logic change in this commit—it only threads the new parameter through several configuration structs so it can be used later.

AI review queuedcontractcourt: add sync dispatch fast-path for single confirmation closesby Olaoluwa Osuntokun · ebefe63f · Jan 16, 2026 · 2 filesMessage 95 · StrongLow 25Details
Commit message · Olaoluwa Osuntokun

contractcourt: add sync dispatch fast-path for single confirmation closes

In this commit, we add a fast-path optimization to the chain watcher's
closeObserver that immediately dispatches close events when only a single
confirmation is required (numConfs == 1). This addresses a timing issue
with integration tests that were designed around the old synchronous
blockbeat behavior, where close events were dispatched immediately upon
spend detection.

The recent async confirmation architecture (introduced in commit f6f716ab7)
properly handles reorgs by waiting for N confirmations before dispatching
close events. However, this created a race condition in integration tests
that mine blocks synchronously and expect immediate close notifications.
With the build tag setting numConfs to 1 for itests, the async confirmation
notification could arrive after the test already started waiting for the
close event, causing timeouts.

We introduce a new handleSpendDispatch method that checks if numConfs == 1
and, if so, immediately calls handleCommitSpend to dispatch the close event
synchronously, then returns true to skip the async state machine. This
preserves the old behavior for integration tests while maintaining the full
async reorg protection for production (where numConfs >= 3).

The implementation adds the fast-path check in both spend detection paths
(blockbeat and spend notification) to ensure consistent behavior regardless
of which detects the spend first. We also update the affected unit tests to
remove their expectation of confirmation registration, since the fast-path
bypasses that step entirely.

This approach optimizes for the integration test scenario without compromising
production safety, as the fast-path only activates when a single confirmation
is sufficient - a configuration that only exists in the controlled test
environment.

95/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
Why it was queued
second-pass: broader security terminology
AI analysis · Low 25/100

This commit adds a special fast-path in LND's channel close watcher. When only one confirmation is needed (which only happens in integration tests), it immediately processes a channel close instead of waiting for the normal multi-confirmation safety check. This is described as a test-only optimization to fix flaky tests, not a production security fix. In normal production use, the code still waits for multiple confirmations before treating a channel close as final, preserving protection against blockchain reorganizations.

AI review queuedlncfg: add deprecated no-experimental-endorsement config optionby ziggie · 04dab619 · Jan 14, 2026 · 3 filesMessage 73 · AdequateInformational 19Details
Commit message · ziggie

lncfg: add deprecated no-experimental-endorsement config option

Re-adds the old no-experimental-endorsement config option as a hidden,
deprecated alias for no-experimental-accountability. This ensures
backward compatibility for users who have the old option in their
config files after the rename it.

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

This commit is a simple backward-compatibility rename. It brings back an old configuration option name ('no-experimental-endorsement') as a hidden alias for the new name ('no-experimental-accountability'), so users with the old option in their config files won't have their node fail to start after the rename. There is no security bug or behavior change beyond the alias.

Lower-priorityfn: fix printf vet check in TestSomeToOkf Go 1.24+by ziggie · 7085f470 · Jan 13, 2026 · 1 fileMessage 73 · AdequateInformational 15Details
Commit message · ziggie

fn: fix printf vet check in TestSomeToOkf Go 1.24+

See also https://github.com/golang/go/issues/60529. Now we need
to use a constant.

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Links an issue, advisory, or supporting reference
AI analysis · Informational 15/100

This is a minor test-only code change that updates a unit test to satisfy a stricter Go compiler/static analysis rule introduced in Go 1.24. It does not change any production code, user-facing behavior, or security-sensitive logic.

Lower-priorityrpcserver: use protocol max for fundMax, not maxChanSizeby Yash Bhutwala · 0764f27b · Jan 13, 2026 · 1 fileMessage 81 · StrongLow 40Details
Commit message · Yash Bhutwala

rpcserver: use protocol max for fundMax, not maxChanSize

The maxChanSize config option is documented to only apply to incoming
channel requests. However, when using fundMax with OpenChannel, the code
was incorrectly using maxChanSize as the upper bound for the outgoing
channel size.

This commit fixes the issue by using the protocol-level maximum
(MaxBtcFundingAmount or MaxBtcFundingAmountWumbo depending on wumbo
support) as the upper bound for fundMax operations.

Fixes #10468.

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

This fix corrects a bug in LND's OpenChannel RPC when the 'FundMax' option is used. Previously, the code wrongly used a configuration setting meant only for incoming channels (maxChanSize) as the upper limit for outgoing channels opened with FundMax. Now it uses the proper protocol-level maximum, which prevents users from accidentally being limited to a smaller channel size than the network actually allows. This is a correctness/availability issue rather than a direct theft-of-funds vulnerability, but it could cause unexpected channel-opening behavior or failed transactions.

Lower-priorityitest: add fundMax with maxChanSize testby Yash Bhutwala · 73e7708f · Jan 13, 2026 · 2 filesMessage 78 · AdequateInformational 12Details
Commit message · Yash Bhutwala

itest: add fundMax with maxChanSize test

Add integration test to verify that fundMax uses the protocol-level
maximum channel size instead of the user-configured maxChanSize. The
test uses a table-driven approach to cover both non-wumbo and wumbo
scenarios, creating nodes with restrictive maxChanSize (5M sats) and
verifying that fundMax still creates channels at the protocol maximum.

78/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
AI analysis · Informational 12/100

This commit only adds a new automated integration test. It does not change any production code, so it cannot introduce a runtime security vulnerability by itself. The test checks that a feature called 'fundMax' opens a channel at the protocol-level maximum size rather than a smaller user-configured limit. The commit message and code comments explain the intended behavior, but there is no patch to the actual funding logic here.

Lower-prioritydocs: update release notes for fundMax fixby Yash Bhutwala · f48e6ba1 · Jan 13, 2026 · 1 fileMessage 57 · ThinInformational 15Details
Commit message · Yash Bhutwala

docs: update release notes for fundMax fix

57/100 · ThinMessage clarity
✓ 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 release notes document. It adds a description of a previously fixed bug related to the `fund_max` option when opening a Lightning channel. The actual code fix happened in an earlier pull request, so this commit does not change any program behavior or fix any vulnerability itself.

Lower-prioritymod: update the minimum go version to 1.24.11by ziggie · e26a114c · Jan 13, 2026 · 14 filesMessage 60 · AdequateInformational 15Details
Commit message · ziggie

mod: update the minimum go version to 1.24.11

We update the minimum required go version to build the LND
exectuable to the latest minor release of go 1.24.11.

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

This commit simply updates the minimum required Go programming language version from 1.24.9 to 1.24.11 across LND's build files and installation instructions. It is a routine maintenance change, not a security fix or vulnerability patch. There is no indication in the commit that this addresses any specific security issue.

Lower-prioritybuild: update CI+release version to Go 1.25.5by ziggie · 61d82fd1 · Jan 13, 2026 · 12 filesMessage 72 · AdequateInformational 15Details
Commit message · ziggie

build: update CI+release version to Go 1.25.5

This updates the toolchain which we require to build the LND
executable.

72/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body
AI analysis · Informational 15/100

This commit simply updates the version of the Go programming language used to build LND from 1.25.3 to 1.25.5 across CI, release, and Docker configuration files. It is a routine build/toolchain maintenance change with no direct security-relevant code modifications visible in the diff.

Lower-prioritydiscovery: fix new usetesting linter issuesby ziggie · 35260fc4 · Jan 13, 2026 · 1 fileMessage 45 · ThinInformational 15Details
Commit message · ziggie

discovery: fix new usetesting linter issues

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

This commit only updates test code to satisfy a new Go linter rule. It replaces context.Background() with t.Context() inside four unit tests. There is no change to production code and no security relevance.

Lower-prioritylinter: update usetesting linter to match old behaviorby ziggie · e05ee9a8 · Jan 13, 2026 · 1 fileMessage 50 · ThinInformational 15Details
Commit message · ziggie

linter: update usetesting linter to match old behavior

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

This commit only changes a linter configuration file. It tells the project's Go linting tool to enforce a specific style rule about test code. There is no change to the actual LND software that runs on nodes, and no security issue is present.

Security candidatediscovery: add panic recovery for serial announce signatures processingby Olaoluwa Osuntokun · bcb65f5a · Jan 13, 2026 · 1 fileMessage 73 · AdequateModerate 57Details
Commit message · Olaoluwa Osuntokun

discovery: add panic recovery for serial announce signatures processing

In this commit, we extend the panic recovery mechanism to cover the
serial processing path for AnnounceSignatures1 messages. Unlike other
gossip messages which are processed in parallel goroutines, announcement
signatures are processed serially in the main networkHandler loop.

A panic during this serial processing would previously crash the entire
gossiper. This change wraps the processing in an anonymous function with
a deferred panic recovery, ensuring resilience without changing the
serial processing semantics.

Since AnnounceSignatures bypass the validation barrier, we pass nil for
the jobID parameter.

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
signing boundary
AI analysis · Moderate 57/100

This update adds a safety net around a specific message-handling path in LND's gossip subsystem. Previously, a crash while handling an AnnounceSignatures1 message could bring down the whole gossip component; now the code catches such crashes and keeps running. The change is defensive hardening rather than a fix for a known active attack.

Lower-prioritydocs/release-notes: add release notesby Olaoluwa Osuntokun · 7da41cb3 · Jan 13, 2026 · 1 fileMessage 45 · ThinInformational 15Details
Commit message · Olaoluwa Osuntokun

docs/release-notes: add release notes

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
documentation-only discount
AI analysis · Informational 15/100

This commit only adds a line to the release notes describing a previously merged code change (panic recovery in the gossiper). It does not modify any program code, so it cannot by itself introduce or fix a security vulnerability.

AI review queueddiscovery: add panic recovery for gossip message processingby Olaoluwa Osuntokun · caf4850f · Jan 13, 2026 · 2 filesMessage 73 · AdequateLow 46Details
Commit message · Olaoluwa Osuntokun

discovery: add panic recovery for gossip message processing

In this commit, we add a centralized panic recovery mechanism for gossip
goroutines. This increases the robustness of message processing in the
gossiper, as now we are able to keep on trucking in the face of logic
errors that may lead to panics.

We ensure that any deps are freed and we log the panic trace to help
catch bugs in the future.

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

This commit adds a safety net around the Lightning node's gossip message handling. Previously, a programming bug (panic) while processing network gossip could crash the whole goroutine or leave related tasks waiting forever. The new code catches such panics, logs them, frees resources, notifies waiting tasks, and reports an error back so the node keeps running. It is a defensive hardening change, not a fix for a known active exploit.