Applies to: the VaultaMark Chrome extension (all versions) Last updated: 2026-08-24
Published at https://zyndata.github.io/vaulta-mark/PRIVACY, which is the URL given to the Chrome
Web Store and must stay stable across releases. GitHub Pages serves it from this file on the main
branch, so it always shows the policy as of the last release rather than as of the latest commit —
see RELEASE §8. The content has not changed since it was
written in Phase 9; only its address is new.
VaultaMark collects nothing.
There is no VaultaMark server. There is no account. There is no telemetry, no analytics, no crash reporting, no update ping, and no unique identifier of any kind. Nobody — including the developer — can see your bookmarks, your usage, or that you installed the extension at all.
Your bookmarks stay on your own devices, encrypted. If you choose to turn on Google Drive sync, they also go to your own Google Drive, still encrypted, where the developer has no access.
Everything VaultaMark stores is encrypted with a key derived from your master password, which is never stored and never transmitted.
| Data | Where it lives | Encrypted? |
|---|---|---|
| Bookmark URLs, titles, folder names, tags, notes, timestamps | chrome.storage.local on your device |
✅ Yes |
| Page preview images (thumbnails), when enabled | chrome.storage.local, and your Google Drive if connected |
✅ Yes |
| The same bookmark data, for syncing | chrome.storage.sync (your Chrome profile sync) or a file in your own Google Drive — whichever you chose |
✅ Yes |
| Vault header: encryption parameters, a random salt, your wrapped key, revision counters | Alongside the vault | ⚠️ Plaintext by necessity — see below |
| Settings: theme, idle-lock timeout, which sync tier is active, feature toggles | chrome.storage.local |
Plaintext, contains no bookmark data |
| Setup progress: which of the five first-run screens you reached | chrome.storage.local |
Plaintext — a step number and two yes/no answers, nothing else |
| Your master password | Nowhere. Not stored, not transmitted, not recoverable. | — |
| The unlocked key, while the vault is unlocked | chrome.storage.session — memory only, never written to disk, cleared when Chrome exits |
— |
The vault header is plaintext and cannot be otherwise: the extension must read the encryption parameters before it can derive a key from your password. The header reveals that a vault exists and roughly how large it is. It reveals nothing about its contents. Ciphertext length is padded to a 256-byte boundary to blunt size-based inference, but padding reduces the leak rather than removing it.
Technical detail — the exact key hierarchy, cipher, and wire format — is public in ARCHITECTURE §4 and ARCHITECTURE §8.
By default: nothing at all. Browsing your vault, searching it, opening a bookmark, and adding one generate zero network requests from the extension. This is enforced by an automated test that fails the build if any request is observed.
There are exactly two exceptions, both under your control:
Google Drive sync — only if you turn it on. You grant access once via Google’s own OAuth
screen, using the drive.file scope. That scope means VaultaMark can only see files it created
itself; it cannot read anything else in your Drive. It uploads and downloads one encrypted vault
file (and, if thumbnails are enabled, one encrypted file per thumbnail) to
https://www.googleapis.com/. The contents are encrypted before they leave your device —
Google stores ciphertext and cannot read your bookmarks. Your use of Google Drive is governed by
Google’s Privacy Policy. You can disconnect at any time in
Settings, and delete the file yourself from your Drive.
The page’s own preview image, at the moment you save a bookmark — and only if thumbnails are enabled. The image is fetched by a script running in that page’s own context, from the origin that just served you the page. No new party learns anything, and the extension itself makes no third-party request. The image is downscaled, encrypted, and stored. It is never re-fetched afterwards, so viewing your vault later contacts nobody.
Site icons (favicons) come from Chrome’s local favicon cache. VaultaMark never uses a third-party favicon service — doing so would hand that service a list of every domain you have vaulted.
Permissions marked optional are not granted at install time. Chrome asks you the first time you use the feature that needs one, and you can revoke it afterwards.
| Permission | Why | When |
|---|---|---|
storage |
Stores the encrypted vault and your settings, and syncs the encrypted vault between your own Chrome profiles. | Always |
activeTab |
Reads the title and URL of the current tab when you explicitly save it, plus that page’s preview metadata at that moment. | On your action only |
scripting |
Injects one small script into the current tab, only when you save it, to read that preview metadata. | On your action only |
contextMenus |
Adds the “Save to VaultaMark” right-click entry. | Always |
alarms |
Locks the vault automatically after your configured idle timeout. | Always |
favicon |
Shows each bookmark’s site icon from Chrome’s local cache, so no icon request goes to a third party. | Always |
identity + https://www.googleapis.com/* |
Obtains an OAuth token for the drive.file scope and transfers the encrypted vault file. |
Optional — only if you enable Drive sync |
history |
Removes history entries so vaulted URLs stop appearing in address-bar autocomplete. | Optional — only when you run the cleanup tool or switch on one of the history settings |
bookmarks |
Imports your existing Chrome bookmarks into the vault, and deletes the originals afterwards only if you separately ask it to. | Optional — only during import |
idle |
Locks the vault when your system goes idle. | Optional — only if you enable it |
VaultaMark requests no host permissions at install time.
Saving a page to your vault does not remove it from Chrome’s browsing history, and history
autocompletes in the address bar on its own. VaultaMark offers three ways to close that gap. All
three are off until you turn them on, all three need the optional history permission, and all
three delete real browsing history — not merely entries related to VaultaMark.
There is a fourth thing VaultaMark cannot do for you: Chrome’s own “Autocomplete searches and URLs” setting sends what you type to your default search engine and can suggest addresses from signals no extension can see. The setup guide and Settings → Privacy explain it and give you the address of the Chrome setting page. Extensions are not permitted to open or change Chrome’s settings pages, so this one is yours to do, and we say so rather than leaving you to assume it is handled.
Vaulted links open in an incognito window by design, so the pages you open from the vault leave no history, cache, or cookies behind in your normal profile. For this to work you must allow the extension in incognito mode — Chrome shows that setting on the extension’s details page, and VaultaMark explains it during setup. That setting grants nothing to the developer; it affects only how the extension behaves in your own browser.
VaultaMark is not directed at children and knowingly collects no information from anyone, of any age.
There is no password recovery. The master password is never stored or transmitted, and no recovery key exists — not held by the developer, not by Google, not by anyone. If you forget it, your vault is permanently unreadable. That is the design. Use the encrypted export as your backup.
VaultaMark is licensed GPL-3.0-only, its cryptography is fully documented and its source is public. It has not had a formal third-party security audit. Report vulnerabilities privately: see SECURITY.md.
Material changes are recorded in CHANGELOG.md and reflected in the “Last updated” date above. Because the extension collects nothing, no change to this policy can retroactively expose data that was never gathered.
Questions about this policy: open an issue at https://github.com/zyndata/vaulta-mark/issues. Security reports go privately to https://github.com/zyndata/vaulta-mark/security/advisories/new instead.