Is Nautilus Wallet safe?
We analyzed Nautilus Wallet version 1.3.3's actual code and gave it a 78/100 trust score. Nautilus Wallet is broadly present on websites for dApp…
Bottom line
Nautilus Wallet is broadly present on websites for dApp connections, but the package shows user-approved wallet actions and no established misuse.
What it can access
It runs on every website and frame for wallet connections and stores sensitive wallet data locally, which is broad but fits its stated purpose.[Q1][Q2][Q4]
Security weaknesses
Any website can detect the wallet connector and request privileged wallet operations, though stored-origin checks and approval screens limit access.[Q16][Q21]
Signs of misuse
The package sends public wallet and market data for wallet functions, with no evidence of stealing browser data, tracking visits, or altering websites.[Q6][Q12][Q14][Q17]
Code findings
What access does this extension ask for, and does that access make sense for what it claims to do?
It requests storage, tabs and side-panel access and runs in every frame on every website; the broad page access supports its dApp connector, while storage holds wallet state.
Declares storage, tabs and sidePanel plus an all_frames content script matching <all_urls>. — manifest.json:2
Injects the packaged Nautilus API and relays its defined wallet operations to the background worker. — src/extension/content-scripts/contentScript.js:1
Which websites can it run on, and can it read or change what appears on those pages?
A connector runs on every site, but it reads only the current origin and explicit wallet-services messages rather than scraping page contents or changing the page.
The content script is installed at document_start in all frames on <all_urls>. — manifest.json:2
Uses location.origin to namespace a message channel, injects a packaged script, and registers only the defined Ergo wallet operations. — src/extension/content-scripts/contentScript.js:1
Adds window.ergoConnector.nautilus and, only after connection, window.ergo; no DOM-reading or page-editing feature is present. — src/extension/content-scripts/injected.js:1
Can it see sensitive information you type, such as passwords, payment details, messages, or form entries?
Its own wallet UI accepts recovery phrases and spending passwords, but the all-sites page script does not read values typed into website forms.
Collects a new wallet password and generated mnemonic before calling the local wallet creation routine. — CreateWalletView.js:120-190
Accepts a mnemonic and password for local wallet import. — ImportWalletView.js:2095-2160
The website-facing bridge contains no input, keypress or form-value collection. — src/extension/content-scripts/contentScript.js:1
Can it access private browser data such as cookies, signed-in sessions, browsing history, bookmarks, or downloads?
It stores wallet records, encrypted recovery phrases, public addresses, assets, connected origins and pending transaction state locally; it does not access browser cookies, history or bookmarks.
Defines IndexedDB tables for wallets, addresses, assets, connected dApps and UTXOs and decrypts stored mnemonics only with the supplied password. — browser.js:23660-23780
Encrypts a standard wallet's mnemonic with the user's password before saving it. — browser.js:25570-25610
No cookies, history or bookmarks permission is declared. — manifest.json:2
Can it access anything else on your device, such as files, location, camera, microphone, clipboard, or installed applications?
It can communicate with a Ledger hardware wallet through a user-mediated WebUSB flow; it does not access files, location, camera, microphone or clipboard.
Provides the Ledger connection UI and transport selection. — LedgerConnectView.js:1-740
Routes Ledger wallets through the configured hardware transport while software wallets decrypt the local mnemonic. — signing.js:4440-4480
No file, geolocation, camera, microphone or clipboard permission is requested. — manifest.json:2
Does it send information outside your browser? If so, what information is sent, where does it go, and why?
It sends public wallet addresses, asset IDs, balance/chain queries and signed transactions to Ergo infrastructure and fetches prices and token data; no secret key material is included.
Queries configured GraphQL services with public addresses and token IDs and submits signed transactions. — browser.js:23870-24020
Fetches exchange prices, DEX market data and a GitHub-hosted token blacklist. — browser.js:31280-31420
Decrypts the mnemonic locally, derives signing keys and returns proofs/signed transactions without an upload of the mnemonic or password. — signing.js:4420-4480
Does it download or run code, settings, or instructions supplied by a remote server?
It downloads blockchain state, prices, token metadata, artwork and blacklist data, but no remote executable code or operational command script.
Remote GraphQL responses are mapped into address balances, boxes, headers and token metadata. — browser.js:23870-24020
Remote price, DEX and blacklist responses are parsed as JSON data. — browser.js:31280-31520
Extension pages restrict scripts to self and permit packaged WebAssembly compilation, not remote scripts. — manifest.json:2
Can it take actions without a clear user request, such as opening pages, redirecting searches, downloading files, or sending requests?
Once an origin is approved, it can automatically request public addresses, balances and boxes or submit an already signed transaction; fresh signatures still require a visible approval flow.
Requires the user to select a wallet and confirm before storing the requesting origin. — ConnectView.js:62-83
Connected-origin handlers expose balances, addresses, UTXOs and submission, while signing/auth requests are queued into a connector window. — src/extension/background/background.js:4
Displays the requesting origin and routes approval or refusal through a dedicated transaction-signing view. — TransactionSignView.js:140-220
Can it change important browser settings, including your proxy, search engine, homepage, privacy settings, or other extensions?
No evidence of this behavior was found in the reviewed package.
No settings, proxy, search-provider or privacy permission is declared. — manifest.json:2
Is any important behavior difficult to inspect because the code is hidden, heavily obfuscated, dynamically generated, or supplied by third parties?
The content bridge and background worker are minified bundles and the package includes a WebAssembly cryptography module, although many UI chunks remain readable.
A minified roughly 245 KB service-worker bundle combines routing, storage and network logic. — src/extension/background/background.js:1-4
The all-sites bridge is a one-line minified bundle. — src/extension/content-scripts/contentScript.js:1
Packaged WebAssembly implements Ergo cryptographic and transaction primitives. — ergo_lib_wasm_bg.wasm:binary
Does it use eval(), new Function(), or string-based timers to turn text into executable code?
No evidence of this behavior was found in the reviewed package.
A JSON-viewer dependency constructs property-access functions from node paths for optional copy/edit actions; all Nautilus call sites leave actions disabled and editable false. — JsonViewer.js:839, 1194
The generated WebAssembly import bridge exposes a new Function helper to the packaged module. — signing.js:3458-3470
CSP allows self and wasm-unsafe-eval but not unsafe-eval, so normal string compilation is blocked in extension pages. — manifest.json:2
Does it track the websites, pages, searches, or links you visit?
No evidence of this behavior was found in the reviewed package.
The all-sites script uses the current origin to isolate the local dApp channel and does not report page visits. — src/extension/content-scripts/contentScript.js:1
Persists an origin only when the connection approval view calls put. — connectedDAppsDbService.js:16-31
No browser history permission is requested. — manifest.json:2
Does it create a persistent ID or browser fingerprint to recognize you?
No evidence of this behavior was found in the reviewed package.
Generates short random endpoint/session fingerprints for the local webext-bridge connection. — src/extension/content-scripts/contentScript.js:1
Reviewed network payloads contain wallet/public-chain query data rather than an installation ID. — browser.js:23870-24020, 31280-31420
Does it send cookies, session details, authentication data, or page contents elsewhere?
No evidence of this behavior was found in the reviewed package.
Recovery phrases are encrypted for local storage and decrypted locally with the supplied password. — browser.js:23746-23759, 25570-25610
Mnemonic-derived keys are used locally to create proofs or signed transactions. — signing.js:4420-4480
No cookies permission is declared. — manifest.json:2
Does it record typing, form entries, clipboard contents, or screenshots?
No evidence of this behavior was found in the reviewed package.
Website-facing code registers wallet RPC methods but no keyboard, clipboard, form or screen-capture listener. — src/extension/content-scripts/contentScript.js:1
No clipboard or capture permission is present. — manifest.json:2
Can a website or remote server send commands that make the extension take actions?
A user-approved website can issue wallet services requests, including signature and transaction-submission requests; connection and signing are protected by explicit user approval.
Exposes connect, balance, address, UTXO, signing, authentication and submission methods to page scripts. — src/extension/content-scripts/injected.js:1
Looks up the caller's stored origin-to-wallet connection before serving privileged data and opens approval UI for signing/auth requests. — src/extension/background/background.js:4
Only persists the origin connection after the user selects a wallet and confirms. — ConnectView.js:62-83
Does it alter links, referral codes, advertisements, shopping carts, or search results?
No evidence of this behavior was found in the reviewed package.
The page integration injects only the wallet connector and does not modify host-page links or commerce content. — src/extension/content-scripts/contentScript.js:1
Does it redirect or modify web traffic, request headers, downloads, or proxy settings?
No evidence of this behavior was found in the reviewed package.
No webRequest, declarativeNetRequest, downloads or proxy permission is declared. — manifest.json:2
Transaction submission is a direct request to the selected Ergo backend, not interception of browser traffic. — browser.js:23920-23980
Can it communicate with software on the computer or services running on localhost?
No evidence of this behavior was found in the reviewed package.
No nativeMessaging or localhost host permission is declared. — manifest.json:2
Allows the user to edit the GraphQL, explorer and IPFS service URLs after validation. — SettingsView.js:699-752
Does it decode, decrypt, or unpack hidden data and then execute or inject it?
No evidence of this behavior was found in the reviewed package.
CSP permits packaged self scripts and packaged WebAssembly rather than remote script origins. — manifest.json:2
Remote responses are treated as blockchain, price, market, metadata or blacklist data. — browser.js:23870-24020, 31280-31420
Can ordinary websites access privileged extension features through messaging or exposed files?
Every website can detect and call the injected Nautilus connector, while privileged results remain gated by an approved origin; two packaged bridge scripts are web-accessible on all sites.
Makes contentScript.js and injected.js web-accessible to <all_urls> and runs the content script everywhere. — manifest.json:2
Publishes window.ergoConnector.nautilus for page scripts. — src/extension/content-scripts/injected.js:1
Checks the locally stored connected origin before returning wallet-specific data. — src/extension/background/background.js:4
Does suspicious behavior activate only for certain users, websites, dates, or remote settings?
No evidence of this behavior was found in the reviewed package.
The same connector is declared for all URLs and frames. — manifest.json:2
Initialization is based on normal HTML-document checks and the current origin, not an external target list. — src/extension/content-scripts/contentScript.js:1
Does it perform hidden resource-intensive work, such as cryptocurrency mining?
No evidence of this behavior was found in the reviewed package.
Polls chain height and reconciles pending transactions as ordinary wallet maintenance. — browser.js:25480-25640
Caches price and blacklist updates on bounded intervals. — browser.js:31280-31520
Does it change form fields or where a form sends its information?
No evidence of this behavior was found in the reviewed package.
The only page-facing behaviors are packaged-script injection and wallet message bridging; no host form manipulation exists. — src/extension/content-scripts/contentScript.js:1