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.
Message quality measures whether a commit identifies its scope, purpose, rationale, testing, and supporting references. It does not change the security-severity score.
This commit only edits the wording of a changelog entry for BTCPay Server 2.4.2. It does not change any code, configuration, or executable files. The edit makes the release sound more urgent, but the commit itself is purely documentation a…
Changelog language changed to describe a critical, actively exploited vulnerability in release 2.4.2No code, configuration, or dependency changes present in the commitSecurity issue is referenced but not fixed or explained in this diff
This commit marks several public methods on ASP.NET Core controllers with [NonAction], which prevents them from being exposed as web-accessible HTTP routes. Without this attribute, these helper methods could be reached directly via URL, po…
Public controller methods exposed as unintended HTTP routesRouting-level access-control hardeningPotential bypass of intended controller action flow
This commit is a version bump and changelog for BTCPay Server 2.4.2. The changelog describes two security-related changes: disabling Basic authentication by default shortly after account creation, and fixing a TOTP two-factor authenticatio…
Vendor describes security fixes in changelogTOTP two-factor authentication bypass via Greenfield Basic authenticationBasic authentication disabled by default after account creation
This commit only adds, removes, and reorders English text strings used for translations and user-interface labels in BTCPay Server. There are no code logic changes, no security settings being enabled or disabled, and no behavior changes. I…
This commit updates several third-party software libraries and a test Docker image to newer versions. It also removes one library (AngleSharp) that was no longer needed. Dependency updates can fix security bugs in those external packages, …
Dependency version bumps for packages that handle HTML sanitization (HtmlSanitizer) and Bitcoin protocol parsing (NBitcoin/NBXplorer)Removal of unused AngleSharp package referenceNo commit-level description of security fixes or CVEs
This change makes BTCPay Server's Greenfield API stop accepting username-and-password 'Basic' authentication by default for existing users. New accounts can still use it for only the first five minutes after creation to set up an API key. …
Disables Basic authentication by default after a 5-minute onboarding windowAdds per-user opt-in flag for Basic auth in data model, API, and UITightens rate-limit bypass to require a recently created account
This commit is a user-interface redesign, not a security fix. It wraps store settings pages in new visual 'section' containers, updates headings and spacing, and adjusts CSS styling. No code behavior, permissions, or data handling changed.
BTCPay Server fixed a bug where accounts protected only by TOTP-based two-factor authentication (2FA) could access the Greenfield API using just an email and password, skipping the second factor. The change now blocks Basic authentication …
This commit adds a user-facing preference feature to BTCPay Server's wallet transactions table: a dropdown that lets users show, hide, and reorder columns. Preferences are saved in the browser's localStorage. The change is a routine UI enh…
No security-relevant keywords in commit title or messagePure client-side UI feature using localStorageNo changes to authentication, authorization, or input processing
This commit changes how BTCPay Server decides whether a Bitcoin transaction input is a SegWit (witness) type when building PSBTs (Partially Signed Bitcoin Transactions). Previously the code only recognized three specific SegWit formats: na…
Broadens SegWit detection from a fixed allow-list to any ScriptType.Witness, mitigating future-version compatibility issuesAdds missing WitnessUtxo population in two wallet PSBT creation pathsWitness UTXO data reduces reliance on NonWitnessUtxo (full previous transaction) for SegWit inputs, which is a known PSBT hardening recommendation
This commit removes a single line that automatically added witness UTXO data to SegWit inputs when decoding a PSBT. The change is titled 'Preserve imported PSBTs,' suggesting the previous behavior was modifying user-supplied transaction da…
PSBT mutation behavior changedWitness UTXO data no longer auto-injected for SegWit inputsPotential data-integrity / non-repudiation consideration for imported PSBTs
This commit fixes a bookkeeping bug in BTCPay Server's multisig (multi-signature) transaction tracker. Previously, a pending transaction could silently collect enough signatures to be finalized, but the system would still label it as 'Pend…
State-machine inconsistency: persisted transaction state could diverge from actual signature countMultisig workflow: incorrect 'Pending' label for a transaction that is actually ready to broadcastNo input validation or authorization changes in the diff
This commit changes BTCPay Server so that when it builds or decodes Partially Signed Bitcoin Transactions (PSBTs), it explicitly adds a compact 'witness UTXO' record for any SegWit inputs. Previously, some SegWit PSBTs may only have carrie…
PSBT data completeness change for SegWit inputsPotential prior state: SegWit PSBTs may have been distributed without witness UTXOsHardware-wallet compatibility / BIP-174 compliance improvement
This commit is a follow-up code review patch for BTCPay Server's pending Bitcoin transaction (multisig) signing feature. It tightens when the service logs a warning versus a debug message after a failed finalization attempt, and it removes…
Logging level change reduces false-warning noise but could mask real finalization failures if SignaturesNeeded is incorrectly zeroRemoval of additionalPsbt parameter prevents accidental combination of an unvalidated extra PSBT into the effective PSBTPer-input signature progress tracking refined to avoid prematurely counting aggregate signatures
This commit is a minor code cleanup that simplifies how BTCPay Server writes log messages when a pending multi-signature transaction fails to finalize. It removes the list of failed input indexes from the log and merges two nearly identica…
This change tightens how BTCPay Server stores signature attempts for multi-signature Bitcoin transactions. Previously, every submitted PSBT (a partially signed transaction file) was kept in history, even if it added no real progress. Now o…
Unbounded history/list growth bounded by logical retention gateResource consumption / storage abuse vector mitigatedLogic change in multi-signature signature collection path
This commit only adds more detailed logging when a pending multi-signature Bitcoin transaction fails to finalize. It does not change how transactions are validated, authorized, or executed. There is no security vulnerability being fixed he…
This commit fixes a bug in BTCPay Server's multisig transaction handling. Previously, the service could get stuck in a 'Pending' state even when enough valid signatures had been collected, because it discarded new signature submissions tha…
Logic flaw in multisig signature collection could leave transactions permanently pending despite sufficient valid signaturesPreviously ignored distinct PSBTs that did not immediately increase signature progressMissing retry of transaction finalization after collecting additional signatures
This commit changes one word in the project's changelog, adding the word 'the' to a bullet point. It is a grammatical typo fix with no effect on software behavior, security, or user data.
This commit changes how BTCPay Server stores invoice comments and metadata. Previously, comments were saved in a separate field and could be updated with a method that was not safe when multiple requests happened at the same time. The patc…
Commit title explicitly describes a race condition fixReplaced read-modify-write metadata update with atomic PostgreSQL jsonb_set operationRemoved dedicated API 'comment' field, narrowing update surface
Expand any commit for its author, full message, clarity score, changed files, triage signals, analysis, and source link.
AI review queuedbumpby Nicolas Dorier · a3aaba15 · Apr 24, 2026 · 1 fileMessage 0 · OpaqueInformational 15Details
Commit message · Nicolas Dorier
bump
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 only changes a single version number in a build file from 2.3.8 to 2.3.9. There is no code change, no bug fix, and no security-related content visible in the diff.
AI review queuedBump 2.3.9by Nicolas Dorier · 33913243 · Apr 24, 2026 · 1 fileMessage 0 · OpaqueInformational 15Details
Commit message · Nicolas Dorier
Bump 2.3.9
0/100 · OpaqueMessage clarity
! Very short subject! No meaningful explanatory body
This commit only updates the changelog file to add release notes for version 2.3.9. It does not change any source code, configuration, or executable files. There is no security-relevant change in the diff itself.
AI review queuedFix: Server not recovering after a plugin crash (#7335)by Nicolas Dorier · e21e1b73 · Apr 24, 2026 · 1 fileMessage 70 · AdequateLow 40Details
Commit message · Nicolas Dorier
Fix: Server not recovering after a plugin crash (#7335)
70/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Links an issue, advisory, or supporting reference! No meaningful explanatory body
Why it was queued
second-pass: broader security terminology
AI analysis · Low 40/100
This commit fixes a bug where BTCPay Server would not properly recover after a plugin crashed. The server tries to identify which plugin caused an exception by looking at the stack trace. The old code only checked the main assembly name and did not look inside nested/inner exceptions, so it sometimes failed to find the culprit plugin. The fix makes the search walk through inner exceptions and also maps all assemblies loaded by each plugin, not just the plugin's primary assembly. A second small fix prevents malformed plugin commands from crashing the command parser.
Lower-priorityFix: Xpub became unparseable in 2.3.8 (#7334)by Nicolas Dorier · 67bd8797 · Apr 24, 2026 · 4 filesMessage 65 · AdequateTriage 0Details
Commit message · Nicolas Dorier
Fix: Xpub became unparseable in 2.3.8 (#7334)
65/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Links an issue, advisory, or supporting reference! No meaningful explanatory body
✓ Descriptive subject✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference! No meaningful explanatory body
AI review queuedfix(API): add storeId-less routes for invoices, payment requests, and pull payments (#7313)by Abhijay Jain · ad6fa344 · Apr 24, 2026 · 21 filesMessage 70 · AdequateModerate 51Details
Commit message · Abhijay Jain
fix(API): add storeId-less routes for invoices, payment requests, and pull payments (#7313)
70/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Links an issue, advisory, or supporting reference! No meaningful explanatory body
Why it was queued
second-pass: unusually broad change
AI analysis · Moderate 51/100
This commit changes several BTCPay Server API endpoints so that callers no longer need to supply a store ID when working with existing invoices, payment requests, and pull payments. The server now looks up the store automatically from the invoice/payment-request/pull-payment record. The old store-scoped routes are kept alongside the new shorter routes. The change is described as a convenience/cleanup fix, not as a security patch, and the diff does not show any new authorization checks being added.
AI review queuedImprove test speedby Nicolas Dorier · 53b85dd2 · Apr 23, 2026 · 3 filesMessage 38 · OpaqueInformational 15Details
Commit message · Nicolas Dorier
Improve test speed
38/100 · OpaqueMessage clarity
✓ Subject identifies a change✓ Mentions testing or verification! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
AI analysis · Informational 15/100
This commit only changes test configuration files for the BTCPay Server project. It adds the Bitcoin setting `unsafesqlitesync=1` to the docker-compose files used during automated testing. This setting makes test execution faster by relaxing how safely Bitcoin Core writes its SQLite wallet data to disk. It does not affect production BTCPay Server code or live deployments, and there is no indication it fixes or introduces a security vulnerability.
✓ Descriptive subject✓ Names a concrete action or component✓ Links an issue, advisory, or supporting reference! No meaningful explanatory body
AI review queuedFix buildby Nicolas Dorier · 08f13ad9 · Apr 21, 2026 · 1 fileMessage 0 · OpaqueInformational 15Details
Commit message · Nicolas Dorier
Fix build
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 fixes a typo in a package version number. The version string for the NBXplorer.Client package had an extra stray backtick character (`), which would break the build. Removing the backtick restores the intended version 5.0.6 and allows the project to compile normally. There is no security issue here.
AI review queuedUpdate translationsby Nicolas Dorier · 784e5df0 · Apr 21, 2026 · 2 filesMessage 18 · OpaqueInformational 15Details
Commit message · Nicolas Dorier
Update translations
18/100 · OpaqueMessage clarity
✓ Subject identifies a change! 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 translation and localization update. It adds, removes, and updates user-visible text strings in BTCPay Server. There is no code logic change, no security fix, and no vulnerability introduced in the diff itself.
AI review queuedbump nbxby Nicolas Dorier · a5e7f7a0 · Apr 21, 2026 · 1 fileMessage 0 · OpaqueInformational 15Details
Commit message · Nicolas Dorier
bump nbx
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 simply updates a software dependency (NBXplorer.Client) from version 5.0.5 to 5.0.6. There is no information in the commit itself about what changed in the new version or whether it fixes any security issue. Based only on this diff, no security problem can be identified.
AI review queuedbump libsby Nicolas Dorier · 509c86c6 · Apr 21, 2026 · 7 filesMessage 0 · OpaqueLow 25Details
Commit message · Nicolas Dorier
bump libs
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 · Low 25/100
This commit updates several third-party software libraries and Docker base images to newer patch versions. It does not change BTCPay Server's own code. Such updates are routine maintenance and often include bug fixes or security fixes from upstream vendors, but the commit message gives no specific security reason and no vulnerability details are visible in the diff.
AI review queuedBump 2.3.8by Nicolas Dorier · 28fa4f44 · Apr 21, 2026 · 2 filesMessage 0 · OpaqueInformational 15Details
Commit message · Nicolas Dorier
Bump 2.3.8
0/100 · OpaqueMessage clarity
! Very short subject! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
AI analysis · Informational 15/100
This commit is a routine version bump from 2.3.7 to 2.3.8. It only updates the version number and the changelog. There are no code changes that fix or introduce any security issue in this commit itself.
Lower-priorityfix: use AmountReceived instead of Amount in lightning invoices (#7323)by raiday · c119ca10 · Apr 21, 2026 · 1 fileMessage 70 · AdequateTriage 0Details
Commit message · raiday
fix: use AmountReceived instead of Amount in lightning invoices (#7323)
70/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Links an issue, advisory, or supporting reference! No meaningful explanatory body
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Links an issue, advisory, or supporting reference! No meaningful explanatory body
Why it was queued
credential or privilege state
AI analysis · Low 49/100
This commit refactors an existing "login code" feature into a new optional plugin called Impersonation. The feature lets an already-logged-in user generate a short-lived QR code/login code that can be used on another device to sign in as the same user. The commit adds a new permission, btcpay.impersonation.canimpersonate, and rules that try to limit impersonation: a user can impersonate themselves, and server admins can impersonate non-admin users but not other admins. The code is a refactor rather than a reported vulnerability fix, but it moves a sensitive authentication capability behind a plugin and a permission check, which is a security-relevant design change.
Refactor: Prefer Path.Combine instead of Path.Join (#7326)
70/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Links an issue, advisory, or supporting reference! No meaningful explanatory body
AI review queuedFix: Phoenixd incorrectly marks payment as partial (#7325)by Nicolas Dorier · 90e211b0 · Apr 20, 2026 · 7 filesMessage 70 · AdequateLow 34Details
Commit message · Nicolas Dorier
Fix: Phoenixd incorrectly marks payment as partial (#7325)
70/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Links an issue, advisory, or supporting reference! No meaningful explanatory body
Why it was queued
signing or wallet pathparser or protocol pathsecond-pass: security-sensitive path
AI analysis · Low 34/100
This commit updates several software libraries and changes how BTCPay Server reads Bitcoin wallet descriptors (the strings that define which addresses belong to a wallet). The title says it fixes a bug where Phoenixd lightning payments were wrongly marked as partial, but the actual code changes mostly replace an older output-descriptor parser with a simpler one and update documentation examples. The security relevance is unclear from the diff alone: it could be a routine bug fix, or the library updates could include security patches. There is no direct evidence in the commit of an exploit or a disclosed vulnerability.
Fix double translation of already localized view content (#7315)
* Fix double translation of already localized view content
* Removed redundant translation in XPubSelect
---------
Co-authored-by: Sanya <0laf8@proton.me>
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 review queuedMake NBXplorer service classes extensible for plugins (#7308)by Andrew Camilleri · d171df4d · Apr 16, 2026 · 3 filesMessage 81 · StrongInformational 15Details
Commit message · Andrew Camilleri
Make NBXplorer service classes extensible for plugins (#7308)
* feat: Make NBXplorer service classes extensible for plugin overrides
Mark ExplorerClientProvider methods as virtual and _Clients as protected, WalletHistogramService.GetHistogram as virtual, and NBXplorerConnectionFactory.OpenConnection as virtual, allowing plugins to substitute alternative blockchain backends without reflection hacks.
* feat: Add protected constructor to ExplorerClientProvider for subclasses
Allows plugins to subclass without needing dummy IHttpClientFactory, NBXplorerOptions, or Logs instances just to satisfy the base constructor.
81/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100
This commit is a routine software-engineering change: it marks several internal service methods and fields as virtual or protected so that third-party plugins can extend them more easily. There is no security bug being fixed and no new vulnerability being introduced in the diff itself.
Lower-priorityAllow qr-code login expiry after a day (#7293)by Chukwuleta Tobechi · 170b11a2 · Apr 13, 2026 · 1 fileMessage 68 · AdequateTriage 0Details
Commit message · Chukwuleta Tobechi
Allow qr-code login expiry after a day (#7293)
* Allow qr-code login expiry after a day
* coderabbit suggestion
68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Links an issue, advisory, or supporting reference
Fix reserved addresses after wallet replacement (#7304)
* fix(wallet): validate reserved addresses against nbxplorer
* test(playwright): cover reserved addresses after wallet replacement
91/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference
Why it was queued
defensive validationsigning or wallet pathsecond-pass: near security thresholdsecond-pass: security-sensitive path
AI analysis · Moderate 59/100
This commit fixes a bug where BTCPay Server's 'reserved addresses' list could show addresses from a previously replaced wallet. After a user swaps one wallet for another, the old reserved addresses are now filtered out by checking which addresses actually belong to the current wallet's derivation scheme in the NBXplorer database. The commit also adds a Playwright test that verifies old addresses disappear after wallet replacement and reappear if the original wallet is restored.
* include test for reporting to ensure it doesnt crash
* fix report test
98/100 · StrongMessage clarity
✓ 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
second-pass: broader security terminology
AI analysis · Informational 15/100
This commit adds two new read-only reports to the Subscriptions plugin in BTCPay Server: one listing subscribers and another showing credit history. It is a straightforward feature addition with no visible security changes, no permission changes, and no fixes to existing behavior. The included test simply verifies the reports load without crashing.
Lower-priorityRefactor: Move DynamicDNS in own plugin folder (#7310)by Nicolas Dorier · 80908afb · Apr 13, 2026 · 15 filesMessage 70 · AdequateTriage 0Details
Commit message · Nicolas Dorier
Refactor: Move DynamicDNS in own plugin folder (#7310)
70/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Links an issue, advisory, or supporting reference! No meaningful explanatory body