XMR
← All projectsMonero Project

Monero GUI

Official graphical Monero wallet and its release-build integration.

MoneroPrivacy protocolsSoftware walletsNormal
Repository coverage

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

12security candidates46second-pass queue58AI analyses
34commits · 30 days
43commits · 60 days
110commits · 180 days
138commits · 365 days
Backfill bands
Sep 27 → Mar 3127 seen0 candidatesComplete
Mar 31 → Jul 2961 seen8 candidatesComplete
Jul 29 → Aug 287 seen2 candidatesComplete
Aug 28 → Sep 2715 seen1 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.

49/100 average clarity
6Strong · 80–100
14Adequate · 60–79
101Thin · 40–59
17Opaque · 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.
Thomas636178
selsta81628048
tobtoht2328052
Cole Munz111073
SChernykh10010028
jpk68902046
plowsof403051
наб100081
munzzyy100083
reservedbytes100050
Balló György100068
Analysis record

Published AI watches

Last scanned 4 minutes ago

Moderate 59 AI analysisMessage 51 · Thin
XMR Monero ProjectMonero GUI MoneroPrivacy protocolsSoftware wallets

Merge pull request #4645

This change fixes a bug in the Monero wallet setup wizard. Previously, when restoring or creating a wallet from seed/keys, the wallet was first saved with a blank or temporary password before the user's chosen password was applied. If appl…

Wallet file created with empty/blank password before user password is appliedFailure to set user password does not prevent wallet file from being savedSensitive on-disk artifact (wallet file) may be protected by weaker credentials than intended
d7c2f13dby tobtoht+14−93 files
No security note in commit
Informational 17 AI analysisMessage 51 · Thin
XMR Monero ProjectMonero GUI MoneroPrivacy protocolsSoftware wallets

Merge pull request #4687

This commit updates the Monero GUI wallet's message-signing screen so that when a user verifies a signature, the app now reports extra details: whether the signature is valid, which key type was used (spend key, view key, or unknown), and …

UI-only change to signature verification feedbackNo modification to cryptographic verification logicNew method exposes already-existing signature metadata (key type, version, old algorithm flag)
485a102cby tobtoht+50−133 files
No security note in commit
Low 35 AI analysisMessage 51 · Thin
XMR Monero ProjectMonero GUI MoneroPrivacy protocolsSoftware wallets

Merge pull request #4709

This change adjusts how the Monero GUI wallet stores and passes login credentials for remote daemon connections. Previously, daemon username/password and 'trusted daemon' status were kept as persistent properties on the wallet object and r…

Credential scoping/lifetime reductionRemoval of persistent daemon login state from wallet objectDefense against cross-connection credential reuse
a5c305deby tobtoht+7−63 files
No security note in commit
Informational 19 AI analysisMessage 59 · Thin
XMR Monero ProjectMonero GUI MoneroPrivacy protocolsSoftware wallets

Merge pull request #4693

This commit fixes a display bug in the Monero GUI wallet's transaction history. Previously, when sorting transactions by block height, failed transactions were incorrectly treated like pending ones and shown at the top of the list. The fix…

UI display logic correction for transaction state classificationTightened conditional for treating transactions as pendingNo memory safety, cryptographic, or authorization changes observed
baef8be9by tobtoht+14−52 files
No security note in commit
Informational 15 AI analysisMessage 51 · Thin
XMR Monero ProjectMonero GUI MoneroPrivacy protocolsSoftware wallets

Merge pull request #4692

This commit is a user-interface improvement for the Monero GUI wallet's transaction history screen. It changes how outgoing payments with multiple recipients are displayed, searched, and copied. There is no security vulnerability here; it …

0f8a1cf4by tobtoht+84−185 files
No security note in commit
Moderate 58 AI analysisMessage 51 · Thin
XMR Monero ProjectMonero GUI MoneroPrivacy protocolsSoftware wallets

Merge pull request #4690

This update fixes a timing bug in the Monero wallet's send screen. If a user quickly changed or cancelled a payment while a transaction was still being prepared in the background, the wallet could accidentally show or use the wrong transac…

Race condition between asynchronous transaction creation and UI state changesUse-after-free / dangling pointer risk from stale PendingTransaction objectsPotential wrong-transaction confirmation or commit due to stale async result
c72adf62by tobtoht+57−243 files
No security note in commit
Informational 21 AI analysisMessage 51 · Thin
XMR Monero ProjectMonero GUI MoneroPrivacy protocolsSoftware wallets

Merge pull request #4665

This commit adds a feature that lets users scan a QR code to restore a Monero wallet from its secret keys. The change itself is a feature addition, not a fix for a known vulnerability. There is one minor security-relevant detail: the QR co…

New QR URI parser handles secret keys (secret_view_key, secret_spend_key) and restore heightAddress validation is performed before accepting parsed restore URIScheme changed from monero_wallet: to monero-wallet:
68327c0aby tobtoht+52−13 files
No security note in commit
Informational 15 AI analysisMessage 28 · Opaque
XMR Monero ProjectMonero GUI MoneroPrivacy protocolsSoftware wallets

p2pool v4.18.1

This commit simply updates the Monero GUI wallet's built-in downloader to fetch a newer version of the bundled P2Pool mining software (from v4.18 to v4.18.1) and updates the matching file hashes. There is no indication in the commit itself…

8d95b8a4by SChernykh+12−121 file
No security note in commit
Low 34 AI analysisMessage 50 · Thin
XMR Monero ProjectMonero GUI MoneroPrivacy protocolsSoftware wallets

Wallet: keep daemon credentials scoped to each connection

This commit changes how the Monero GUI wallet stores and uses login credentials for remote nodes (servers that help the wallet talk to the Monero network). Previously, the wallet kept daemon username/password as persistent wallet-level set…

Credential scoping change: daemon username/password no longer stored as persistent wallet state for connection reuseRemoval of setDaemonLogin() call from QML remote-node selection pathDaemon credentials now captured per-init and passed directly to underlying wallet implementation
10b08b3bby selsta+7−63 files
No security note in commit
Informational 19 AI analysisMessage 50 · Thin
XMR Monero ProjectMonero GUI MoneroPrivacy protocolsSoftware wallets

TransactionHistoryModel: only place pending tx first

This commit fixes a display bug in the Monero GUI wallet's transaction history list. Previously, failed transactions were being shown at the top of the list alongside pending transactions, because any transaction without a confirmed block …

UI presentation bug, not a memory-safety or cryptographic issueNo attacker-controlled input parsing changedNo privilege escalation, authentication, or authorization logic modified
27328f36by selsta+6−51 file
No security note in commit
Informational 15 AI analysisMessage 50 · Thin
XMR Monero ProjectMonero GUI MoneroPrivacy protocolsSoftware wallets

History: improve display of transactions with multiple recipients

This commit is a user-interface improvement for the Monero GUI wallet's transaction history screen. It changes how outgoing payments to multiple recipients are displayed, searched, and copied. There is no security vulnerability here; it is…

a3dc3882by selsta+84−185 files
No security note in commit
Low 42 AI analysisMessage 50 · Thin
XMR Monero ProjectMonero GUI MoneroPrivacy protocolsSoftware wallets

Wallet: fix send confirmation stale transaction race

This patch fixes a race condition in the Monero GUI wallet's send screen. If a user quickly changed send details or canceled a transaction while an earlier transaction was still being prepared in the background, the wallet could mix up the…

Race condition between asynchronous transaction creation and UI state changesPotential use of stale PendingTransaction object after cancellation/replacementMemory leak via undisposed PendingTransaction objects on rejection paths
3f2d9794by selsta+57−243 files
No security note in commit
Informational 15 AI analysisMessage 35 · Opaque
XMR Monero ProjectMonero GUI MoneroPrivacy protocolsSoftware wallets

workflows: fix Windows build

This is a routine GitHub Actions CI fix for the Windows build. It adds the 'rust:p' package to the list of MSYS2 packages installed during the build. There is no security-relevant change visible in the diff.

dc9f980bby selsta+1−11 file
No security note in commit
Moderate 59 AI analysisMessage 45 · Thin
XMR Monero ProjectMonero GUI MoneroPrivacy protocolsSoftware wallets

updater: use proxy for signed hash downloads

This change fixes a privacy leak in the Monero GUI wallet's update checker. Previously, when the wallet checked for updates and downloaded the signed list of official file hashes, it did not route that request through the user's configured…

Privacy leak: update metadata fetch bypassed user-configured proxyProxy setting now propagated to signed hash download pathPotential deanonymization of users who rely on proxy for network privacy
5e5ea68fby selsta+19−67 files
No security note in commit
Informational 15 AI analysisMessage 28 · Opaque
XMR Monero ProjectMonero GUI MoneroPrivacy protocolsSoftware wallets

p2pool v4.18

This commit simply updates the Monero GUI's built-in downloader to fetch a newer version (4.18) of the bundled P2Pool mining software. It changes download URLs and the expected file hashes to match the new release. There is no indication o…

ddd080e3by SChernykh+12−121 file
No security note in commit
Moderate 58 AI analysisMessage 50 · Thin
XMR Monero ProjectMonero GUI MoneroPrivacy protocolsSoftware wallets

Transfer: disable offline signing for hardware wallets

This commit removes the 'Sign (offline)' button for hardware wallets in the Monero GUI wallet. The change prevents users from attempting an unsupported operation that could lead to failed or unsafe transactions when using a Ledger/Trezor-l…

UI control disabled for hardware-wallet-backed walletsReported by external party (zkao / zkSecurity)Prevents use of an operation likely unsupported by hardware wallet signing flow
66fab82cby selsta+1−11 file
No security note in commit
Informational 15 AI analysisMessage 45 · Thin
XMR Monero ProjectMonero GUI MoneroPrivacy protocolsSoftware wallets

wizard: simplify restore QR scanner layout

This commit is a straightforward user-interface cleanup in the Monero wallet restore wizard. It replaces a third radio-button option ('Restore from QR Code') with a dedicated QR scan button, simplifying the layout. There is no security-rel…

88324856by selsta+14−151 file
No security note in commit
Low 27 AI analysisMessage 50 · Thin
XMR Monero ProjectMonero GUI MoneroPrivacy protocolsSoftware wallets

wizard: support key-based monero-wallet restore QR codes

This commit adds a feature to the Monero GUI wallet that lets users scan a QR code to restore a wallet from its secret keys. The change itself is a feature addition, not a direct security fix. However, it handles extremely sensitive data (…

Parsing of URI-encoded secret key material from QR codesManual URI/query-string parsing instead of using a hardened parserUse of decodeURIComponent on untrusted QR code data
a33f2421by selsta+52−13 files
No security note in commit
Informational 23 AI analysisMessage 68 · Adequate
XMR Monero ProjectMonero GUI MoneroPrivacy protocolsSoftware wallets

wizard: fix restore from QR code

This commit fixes a broken feature in the Monero wallet's setup wizard that restores a wallet by scanning a QR code. The feature had been completely non-functional since a prior redesign because the code that processes the scanned QR code …

No security-relevant signals in the diff or commit messageFixes a broken user-facing feature (restore from QR code)Adds null-safety for extra_parameters to prevent crashes on bare-address QR codes
fbe4c084by Thomas+18−252 files
No security note in commit
Informational 15 AI analysisMessage 55 · Thin
XMR Monero ProjectMonero GUI MoneroPrivacy protocolsSoftware wallets

tests: add QML wallet wizard coverage

This commit adds automated user-interface tests for the Monero wallet setup wizard. It does not change how real users create or open wallets; it only adds test code and exposes a few internal UI control names so the tests can interact with…

0eef8dacby selsta+686−217 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.

Security candidateMerge pull request #4709by tobtoht · a5c305de · Sep 23, 2026 · 3 filesMessage 51 · ThinLow 35Details
Commit message · tobtoht

Merge pull request #4709

10b08b3 Wallet: keep daemon credentials scoped to each connection (selsta)

ACKs: jpk68, plowsof, PyXMR2025

51/100 · ThinMessage clarity
✓ Subject identifies a change✓ Provides an explanatory body✓ Links an issue, advisory, or supporting reference
Why it was queued
credential or privilege statesigning or wallet pathmerge-commit duplicate discount
AI analysis · Low 35/100

This change adjusts how the Monero GUI wallet stores and passes login credentials for remote daemon connections. Previously, daemon username/password and 'trusted daemon' status were kept as persistent properties on the wallet object and reused across connections. The patch scopes those credentials to each individual connection instead, passing them as parameters when initializing a connection rather than storing them on the wallet. This reduces the risk that credentials or trust settings from one remote node could accidentally be reused for a different node later.

Security candidateWallet: keep daemon credentials scoped to each connectionby selsta · 10b08b3b · Sep 14, 2026 · 3 filesMessage 50 · ThinLow 34Details
Commit message · selsta

Wallet: keep daemon credentials scoped to each connection

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
credential or privilege statesigning or wallet path
AI analysis · Low 34/100

This commit changes how the Monero GUI wallet stores and uses login credentials for remote nodes (servers that help the wallet talk to the Monero network). Previously, the wallet kept daemon username/password as persistent wallet-level settings. Now those credentials are passed fresh each time a connection is initialized, so they are scoped to that specific connection instead of lingering on the wallet object. This is a defensive cleanup that reduces the risk of credentials being reused for the wrong node or leaking across connections, but the commit message does not frame it as a security fix.

Security candidateupdater: use proxy for signed hash downloadsby selsta · 5e5ea68f · Aug 23, 2026 · 7 filesMessage 45 · ThinModerate 59Details
Commit message · selsta

updater: use proxy for signed hash downloads

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing or wallet pathboot or update path
AI analysis · Moderate 59/100

This change fixes a privacy leak in the Monero GUI wallet's update checker. Previously, when the wallet checked for updates and downloaded the signed list of official file hashes, it did not route that request through the user's configured proxy. This could expose the user's real IP address to the update server and any network observer, even if the user had set a proxy for other wallet traffic. The patch now passes the configured proxy address through to the update check so those hash downloads also go through the proxy.

Security candidateTransfer: disable offline signing for hardware walletsby selsta · 66fab82c · Aug 3, 2026 · 1 fileMessage 50 · ThinModerate 58Details
Commit message · selsta

Transfer: disable offline signing for hardware wallets

Reported by zkao, a tool by zkSecurity

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing boundary
AI analysis · Moderate 58/100

This commit removes the 'Sign (offline)' button for hardware wallets in the Monero GUI wallet. The change prevents users from attempting an unsupported operation that could lead to failed or unsafe transactions when using a Ledger/Trezor-like device. The issue was reported by zkao using a tool from zkSecurity, suggesting it was found during a security review, but the commit message does not explain the exact attack or failure scenario.

Security candidateReceive: fix stale subaddress selection after switching accountsby Cole Munz · 6cbdb9f3 · Jul 15, 2026 · 1 fileMessage 73 · AdequateLow 25Details
Commit message · Cole Munz

Receive: fix stale subaddress selection after switching accounts

subaddressListView.currentIndex was only reset when it equaled -1
(the initial sentinel), so switching to an account with fewer
addresses left the Receive page showing the old index and its label
while the QR/address itself already reflected the new account's
primary address. onPageCompleted also hardcoded index 0 when setting
current_address instead of using the selected index, so the shown
address could disagree with the selected row's label even within the
same account after revisiting the page.

Validate currentIndex against the current account's address count on
page load, and share the address/label sync logic between the
selection handler and onPageCompleted so both stay consistent.

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
defensive validationprivacy or spend-authorization protocol
AI analysis · Low 25/100

This is a user-interface bug fix in the Monero wallet's Receive page. When a user switched between accounts, the page could show a label and QR code from one account while the displayed address belonged to another account, because the selected list row was not updated to match the new account. The fix makes sure the selected row and displayed address/label stay in sync. It is a consistency bug, not a cryptographic or network vulnerability.

Security candidateMerge pull request #4192by tobtoht · 7b286f48 · Jul 14, 2026 · 503 filesMessage 51 · ThinInformational 15Details
Commit message · tobtoht

Merge pull request #4192

53b5fa1 fix overlap in certain languages (SNeedlewoods)

ACKs: jpk68, selsta

51/100 · ThinMessage clarity
✓ Subject identifies a change✓ Provides an explanatory body✓ Links an issue, advisory, or supporting reference
Why it was queued
seed or entropy pathsigning or wallet pathboot or update pathauthentication pathparser or protocol pathmerge-commit duplicate discount
AI analysis · Informational 15/100

This commit is a large merge of pull request #4192 into the Monero GUI repository. The actual code change within that PR is a single, minor user-interface fix by contributor SNeedlewoods to prevent text overlap in certain languages. The rest of the diff is the initial population of the repository with the full Monero GUI source tree, build files, translations, images, and CI workflows. There is no security-relevant code change here.

Security candidatesrc: replace deprecated Qt APIsby selsta · f58ec9d5 · Jul 5, 2026 · 4 filesMessage 45 · ThinInformational 15Details
Commit message · selsta

src: replace deprecated Qt APIs

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing or wallet pathboot or update path
AI analysis · Informational 15/100

This commit is a routine code cleanup that swaps out old Qt programming interfaces for their newer replacements. It does not fix a security bug and does not introduce any obvious security weakness. The changes are purely about keeping the code compatible with newer versions of the Qt toolkit.

Security candidatemain: hide update popup during device passphrase promptby selsta · 8290f5a5 · Jul 1, 2026 · 1 fileMessage 50 · ThinInformational 18Details
Commit message · selsta

main: hide update popup during device passphrase prompt

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
access control
AI analysis · Informational 18/100

This tiny change stops a software-update notification window from appearing while the user is entering their hardware wallet passphrase. The most likely real-world effect is avoiding a confusing or annoying overlap of two popups, not a serious security flaw. There is no direct evidence in the commit that this fixes an exploitable vulnerability.

Security candidateDockerfiles: pin Qt to a commit hashby Thomas · 5564db67 · Jun 23, 2026 · 3 filesMessage 76 · AdequateModerate 66Details
Commit message · Thomas

Dockerfiles: pin Qt to a commit hash

Qt was cloned with -b ${QT_VERSION} --depth 1 but, unlike every other
dependency in these files, never reset to a commit, so a moved upstream
tag would silently change the Qt source built into the release.

Pin the qt5 superproject to its v5.15.19-lts-lgpl commit and let it
resolve the submodules (git submodule update on linux/windows,
init-repository on android), so only the qt5 hash is hardcoded. qt5
records the exact submodule commits, and the relative .gitmodules URLs
keep the fetches on https.

Follow-up to #4613.

76/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
Why it was queued
access control
AI analysis · Moderate 66/100

This change tightens how the Monero GUI's build containers fetch the Qt user-interface library. Previously, the build scripts downloaded Qt using only a version tag (like 'v5.15.19-lts-lgpl'), which could silently point to different code if Qt's maintainers ever moved or re-created that tag. Now the scripts reset the downloaded Qt source to a specific, fixed commit hash, so every release build uses the exact same Qt code. This is a supply-chain hardening fix: it prevents a malicious or accidental tag change from slipping modified Qt code into Monero's official wallets.

Security candidateTransactionHistory: prevent CSV formula injection in writeCSVby Thomas · 0fbb1716 · Jun 18, 2026 · 1 fileMessage 73 · AdequateHigh 70Details
Commit message · Thomas

TransactionHistory: prevent CSV formula injection in writeCSV

writeCSV wrote the transaction note and subaddress label into the CSV
stripping only the quote character. A cell beginning with =, +, - or @
can be interpreted as a formula by spreadsheet software on open, which
CSV quoting does not prevent.

The transaction note can be attacker-controlled: a payment request's
tx_description is stored as the note when the payment is sent, so a
crafted note can run a spreadsheet formula when the user later exports
and opens their history, potentially enabling data exfiltration or
command execution.

Prefix affected fields with a single quote so they are treated as text;
fields beginning with whitespace or a control character are prefixed too.

Co-authored-by: selsta <selsta@sent.at>

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
explicit security languageprivacy or spend-authorization protocolsigning or wallet path
AI analysis · High 70/100

This update fixes a security flaw in the Monero GUI wallet's export feature. When users exported their transaction history to a CSV file, the wallet stripped quote marks from transaction notes and address labels but did nothing else. If an attacker tricked a user into sending a payment with a specially crafted note beginning with =, +, -, or @, that note could become a spreadsheet formula. When the victim later exported and opened the CSV in Excel or similar software, the formula could run, potentially stealing data or running commands. The fix prefixes risky fields with a single quote so spreadsheets treat them as plain text.

Security candidateqml: escape untrusted text in remaining RichText viewsby Thomas · 3d3a391e · Jun 18, 2026 · 4 filesMessage 85 · StrongModerate 66Details
Commit message · Thomas

qml: escape untrusted text in remaining RichText views

Extends the escaping from commit 23ec5eb6 to the RichText sinks it did
not cover: the transaction note in the tx details popup (History), the
wallet name and account label in the send confirmation
(TxConfirmationDialog), the address label on the merchant page
(Merchant), and the wallet path on the info page (SettingsInfo). These
were interpolated unescaped, so a value containing markup is rendered as
rich text.

The transaction note is the notable case: it can be set from a payment
request's tx_description, so it is attacker influenced.

Escape these fields with Utils.htmlEscape. Set the send confirmation
From field to Text.RichText explicitly so the escaped entities decode in
both of its branches; the single-account branch contains no tag and
would otherwise render as plain text and show the raw entity.

85/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode
Why it was queued
explicit security language
AI analysis · Moderate 66/100

This commit fixes a bug where user-controlled text was being displayed as rich text in several places in the Monero wallet app. Rich text can include hidden instructions, fake links, or misleading formatting. The most important case is the transaction note, which can be supplied by someone sending you a payment request, so an attacker could potentially use it to trick you. The fix escapes that text so it is shown as plain characters rather than interpreted as formatting or code.

Security candidateTransfer: disable offline tx creation with long payment idby selsta · b31fae76 · Apr 21, 2026 · 1 fileMessage 50 · ThinLow 33Details
Commit message · selsta

Transfer: disable offline tx creation with long payment id

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
privacy or spend-authorization protocol
AI analysis · Low 33/100

This change updates the Monero GUI wallet so that users can no longer create offline transaction files when a long payment ID is involved. Long payment IDs are an older, privacy-weaker way to label a Monero payment. The patch also refactors the send/offline-tx enable logic into clearer conditions. The direct security risk is modest: it mainly prevents users from accidentally using an obsolete, less-private feature in a specific workflow, rather than fixing an active exploit or remote code flaw.