How Pinodock handles your data β concisely, honestly, and completely. Short version: it doesn't leave your machine.
Pinodock does not collect, transmit, or store any personal data on external servers. All data described below is stored exclusively in your browser's local storage on your own device and is never sent to PencilCard or any third party.
/clip command. Never transmitted./note command./save command.Pinodock uses two Chrome storage mechanisms:
chrome.storage.localUsed for sensitive or large data: clipboard history, todos, habits, scratch pad, search history, reading list, usage stats. This data exists only on your current device and is not synced anywhere. It is cleared when you uninstall the extension or clear browser data.
Note: chrome.storage.local is sandboxed to the extension and not accessible by other extensions or websites. It is not encrypted at rest beyond the protection provided by your operating system's user account.
chrome.storage.syncUsed for non-sensitive preferences only: theme choice, layout preset, custom URL aliases, and non-sensitive text snippets. If you are signed into Chrome and have sync enabled, Google will sync these preferences across your devices using your Google account β this is a Google service, not a PencilCard service. We have no access to or visibility into this sync. You can disable Chrome sync at any time in Chrome settings.
chrome.storage.local mode (configurable in Settings β Data). Snippets stored in sync mode may be transmitted to Google's servers as part of Chrome's normal sync infrastructure.
Pinodock makes network requests only when you explicitly enable the relevant feature. All requests are made directly from your browser β PencilCard operates no servers that proxy or receive this data.
When you enable these plugins, Pinodock calls their public APIs directly from your browser. No personal data is included in these requests.
wttr.in with your configured city name to retrieve current weather. Disabled by default.hacker-news.firebaseio.com to retrieve the current top story IDs and metadata. No user data is sent.api.coingecko.com for BTC, ETH and SOL prices. No user data is sent.www.reddit.com's public JSON feed for the subreddit you configure. No account credentials are used.api.mymemory.translated.net when you use the /translate command. Only the text you submit for translation is sent.When you enable a session-connected plugin (Spotify, Gmail, Google Calendar, YouTube Studio, AWS Console, GitHub, or Todoist), Pinodock uses the scripting permission to inject a small, read-only JavaScript function into a tab you already have open for that service. The function reads specific DOM elements or localStorage values that are already present in your authenticated session β it does not make any additional network requests, does not modify the page, and does not write or delete any data.
The data read (e.g. your unread email count, now-playing track, today's calendar events) is stored temporarily in chrome.storage.local with a 5-minute cache. It is never transmitted to PencilCard or any third party. The injection only occurs into the specific host you have consented to by enabling the plugin.
If the relevant tab is not open, no injection occurs and no data is read.
If you sign in to Pinodock, your Firebase ID token is verified and your subscription tier (Free / Pro / Enterprise) is fetched from firestore.googleapis.com. Only your Firebase UID is transmitted β no browsing data, clipboard content, or extension state is included. This call occurs once on sign-in and on periodic session refresh. Entitlement is cached locally so subsequent launches do not require a network call.
Launcher, clipboard history, todos, habits, Pomodoro, calculator, QR code generation, URL aliases, tab search, bookmark search, download listing, scratch pad, and ambient sounds β all operate entirely offline.
The following permissions are declared in Pinodock's manifest.json. Each permission is used exclusively for the feature described β never for tracking or analytics.
| Permission | Why it is needed |
|---|---|
| storage | Stores all extension data (todos, habits, clipboard, preferences, plugin cache) locally using chrome.storage.local and chrome.storage.sync. Nothing leaves your device via this API. |
| bookmarks | Searches your Chrome bookmarks by title and URL when you type in the launcher. No bookmarks are stored, modified, or transmitted outside your device. |
| downloads | Powers the /dl command β lists your recent completed downloads by filename so you can locate or reveal them. No download data is stored or transmitted. |
| history | Powers the // prefix in the launcher β searches your browser history by keyword so you can re-open recently visited pages. No history data is stored by Pinodock or transmitted anywhere. You can disable this in Settings β Launcher. |
| tabs | Powers the > tab-search prefix and Usage dashboard. Also used by session-connected plugins to locate a specific open tab (e.g. finding your open Gmail tab) before reading data from it. Tab titles and URLs stay local and are never transmitted. |
| scripting | Used for two purposes: (1) injects a small read-only content script into every tab to power the Cmd+K global palette command from any page; (2) used exclusively by opt-in session-connected plugins (Spotify, Gmail, Google Calendar, YouTube Studio, AWS Console, GitHub, Todoist) β when you enable a plugin, Pinodock injects a read-only function into the specific tab you have open for that service to read data already present in your authenticated session. All injection is read-only and makes no additional network requests. |
| activeTab | Supports the scripting permission above, allowing the injection to target the currently active tab when a plugin refresh is triggered from the new tab page. |
| idle | Pauses the Pomodoro timer and usage tracking when your machine becomes idle, preventing inaccurate time statistics. |
| alarms | Schedules Pomodoro session end events so the timer fires reliably even when the new tab page is not in focus. |
| notifications | Fires a desktop notification when a Pomodoro session ends. No notification content is transmitted anywhere. |
| clipboardWrite | Required to copy launcher results, command palette selections, and clipboard history entries to the system clipboard when you click a "Copy" action. Content scripts in MV3 require this permission to call the Clipboard API from a message listener. The clipboard content is never stored beyond what you already explicitly copied. |
| browsingData | Powers the /clear-cache command and privacy tools in the command palette, which let you clear browser cache and site data on demand. Pinodock only performs these actions after you explicitly request them β nothing is cleared automatically or transmitted anywhere. |
| tabGroups | Powers the /tabs merge command, which groups matching open tabs into a named Chrome tab group. Used only when you explicitly run this command β tab group data is never stored or transmitted outside your device. |
| contextMenus | Adds two right-click menu items to selected text: "Save to Pinodock notes" (saves your selection as a sticky note in local storage) and "Highlight with Pinodock" (highlights the selection on the page and saves it to your local highlights list). These menu items appear only because you have the extension installed, and no text is ever transmitted. |
| host: *://*/* | Pinodock declares access to all URLs. This single broad permission covers three uses: (1) the content script injected into every tab for the global palette command; (2) the > tab-search prefix reading tab titles from any open tab; (3) opt-in session-connected plugins injecting into specific service tabs (Spotify, Gmail, Google Calendar, YouTube Studio, AWS Console, GitHub, Todoist) when you enable them. Within this permission, the specific services Pinodock actually contacts are: wttr.in (weather), api.mymemory.translated.net (translation), hacker-news.firebaseio.com (Hacker News plugin), api.coingecko.com (Crypto Prices plugin), and www.reddit.com (Reddit Feed plugin). No other external requests are made. |
pd (this is an extension feature, not provided by the PencilCard website). Typing pd followed by a space in the Chrome address bar opens the Pinodock launcher pre-filled with your search. The text you type is never sent to PencilCard β it is handled locally by the extension.
Optional host permissions: Pinodock requests optional host access only for the specific third-party services you enable (weather, Hacker News, crypto prices, translation, and opt-in session-connected plugins such as Spotify, Gmail, Calendar, YouTube Studio, AWS Console, GitHub, and Todoist). These permissions are opt-in and used only when you enable the related plugin; no data is transmitted to PencilCard and any injected code is read-only and scoped to the consenting host.
PencilCard does not sell, rent, trade, or otherwise share your personal data with any third party. PencilCard operates no servers that receive data from the extension.
The following data transmissions may occur depending on which features you enable:
/translate command is sent to api.mymemory.translated.net. Only triggered on explicit user action.Because the core product does not store user data on our servers, we cannot be compelled to share it. If you enable optional cloud features, those providersβ policies will apply to any transmitted data.
Because all data is stored locally on your device, you have complete control at all times.
Open Pinodock β Settings β Data β "Clear all extension data". This permanently deletes all todos, habits, clipboard history, search history, scratch pad, and preferences from your device.
Individual data types can be cleared separately in Settings β Data. Clipboard history can be cleared from the clipboard panel. Search history can be disabled or cleared in Settings β Dashboard.
Uninstalling Pinodock from Chrome removes all locally stored data automatically. Chrome may offer to keep sync preferences β you can decline.
All data Pinodock stores is directly inspectable in Chrome DevTools β Application β Storage β Extension Storage, or by using the Settings β Data export feature.
Because Pinodock stores all data locally on your device and transmits nothing personal to PencilCard servers, you already hold complete control. Under UK GDPR and EU GDPR, you have the right to:
The only personal data PencilCard processes is your Firebase UID for sign-in and subscription entitlement. To request deletion of your account, email privacy@pencilcard.com. For data held by third-party providers (Google Chrome sync, Firebase, AI providers you configure), exercise your rights directly with those services.
Pinodock does not knowingly collect any information from children under 13. As no personal data is collected or transmitted to any server, the extension is suitable for all ages. Parents should be aware that if Chrome sync is enabled on a shared device, non-sensitive preferences may sync via the signed-in Google account.
We will update this page if the privacy practices of Pinodock change. Significant changes β such as any new data collection or new external network connections β will be communicated via a notice in the extension update and an update to the "Last updated" date above. For minor clarifications we update the effective date only. We will not retroactively apply material changes to data already collected without notifying you first.
The current version of this policy is always accessible at pencilcard.com/privacy-pinodock.
For privacy-related questions about Pinodock, contact us at:
We aim to respond within 5 business days.