This policy covers the direct-download Mac edition and Dusk for Chrome. It does not cover Dusk for Mac from the App Store; read the App Store edition's separate privacy policy.
Dusk: Privacy Policy
Last updated 21 September 2026. Applies to the Dusk app for macOS and the "Dusk for Chrome" extension.
The short version
Dusk switches your Mac and your websites between light and dark. It does this entirely on your computer. Dusk has no accounts, analytics, advertising, automatic crash reporting, or browsing-data collection. Appearance processing and optional Mac profile sharing happen locally. Configured release builds can contact their update feed to check for and download updates. You control automatic checks in Updates; manual checks also contact the feed. As with any download, its host receives normal connection data, including your IP address and request headers. Builds without valid updater configuration do not check.
What the Mac app reads
To tell you which apps will follow the switch, Dusk looks at:
- The list of apps installed in your Applications folders, and each app's bundle information and program header, to see whether it was built with dark mode support.
- Which apps are running, and which one is in front, to mark them in the list and to avoid reopening an app while you are using it.
- Whether a microphone or camera is in use right now. This is a yes-or-no flag that macOS publishes. Dusk reads it so it never reopens an app in the middle of a dictation or a call. Dusk never opens the microphone or camera, cannot hear or see anything, and needs no permission for this.
- One theme setting inside three other apps' own settings files, read-only:
- Google Chrome: the appearance mode, and whether "Dusk for Chrome" is in its extension list.
- Claude: the appearance choice.
- Visual Studio Code: two appearance keys.
- Any app you sync (see below): its one theme value.
- Apps listed in
Recipes.jsonwith a "read" entry (currently Logi Options+): the one or two keys that record its appearance choice. For Logi this is inside a database, which Dusk opens strictly read-only.
Those files contain other information that belongs to those apps. Dusk reads the files on your Mac, looks only for the keys named above, keeps nothing else, and never copies, stores or transmits their contents.
What the Mac app changes
- The macOS appearance (light, dark, or automatic at sunset), which is the purpose of the app.
- Visual Studio Code's settings file, only when you press a button asking for it. Dusk changes the appearance keys and keeps a backup copy of the original next to it.
- One appearance setting in an app you choose to keep light. When you pick "Always light" for an app,
Dusk writes a single standard macOS key (
NSRequiresAquaSystemAppearance) into that app's preferences, and removes it when you choose "Follow Dusk" again. Dusk keeps a list of every app it did this to, so "Remove all" removes every one. It writes nothing else into other apps. - The theme setting of an app you sync. A few apps have no "System" option of their own. When you press
"Sync with Dusk" for one, Dusk changes that app's own theme value in its settings file (for example
Wispr Flow's
config.json), and again each time your Mac switches. It changes only that one value, keeps a backup of the original file next to it, and stops when you choose otherwise or press "Remove all". Which apps this applies to, and exactly which value, is listed in the app'sRecipes.json. - Quitting and reopening an app, only with your permission. A few apps read their look only when they open. For each such app you choose whether Dusk may reopen it automatically, must ask you each time, or never may. Dusk always quits an app the polite way, so the app can still ask you to save, and gives up if it does not quit. It never does this while a microphone or camera is in use.
- Its own preferences (your schedule, trigger choice, per-app choices, reopen permissions and skipped setup items), stored by macOS in your user account.
- Saved appearance profiles in
~/Library/Application Support/Dusk/profiles.json. Profiles contain names, appearance/schedule choices, app identifiers and website hostname rules. They stay on your Mac. - An optional Chrome native-host registration at
~/Library/Application Support/Google/Chrome/NativeMessagingHosts/com.dusk.profiles.json, created only when you press Connect Mac. The read-only helper returns the active profile's browser settings to Dusk's authorized extension. It does not accept commands to change apps or read arbitrary files. - A copy of the Chrome extension in
~/Library/Application Support/Dusk/, when you ask to install it.
Dusk does not request Screen Recording, Accessibility, Input Monitoring, Camera, Microphone, Contacts, Location or Full Disk Access.
What the Chrome extension does
- It runs on the websites you visit so it can darken the ones that have no dark mode. To decide, it reads the colours of the page: background colours, text colours, and how much text an element paints (a character count, never the characters themselves). It does not read, collect or store the text, forms, passwords, cookies or any other content of pages.
- It stores, only in your browser: your chosen mode, your per-site choices (always dark, always light, or off), and two lists of up to 300 hostname/appearance entries each with whether a page was light or dark, so repeat visits decide instantly. Oldest entries are dropped automatically, and the popup's "Forget remembered sites" button clears the list at any time.
- Private (incognito) windows: Chrome keeps extensions out of them unless you allow it. If you allow it, automatic detection does not remember those visits. Settings you explicitly save in the popup are browser preferences and may persist after a private window closes.
- Optional Mac profiles: after you connect, the extension reads a local profile snapshot roughly every 30 seconds. It stores that snapshot and any local override rules in browser storage. The helper receives only a fixed request for the active profile, not your current URL or page content.
- Problem reports are previewed locally and copied only when you press Copy. A hostname is optional. No full URL, page text, screenshot or query string is included, and nothing is submitted automatically.
- Permissions in the Chrome Web Store build:
storagefor settings,activeTabfor the popup's current website and status, andscriptingto apply the same bundled page scripts to tabs that were already open when Dusk is installed or updated (on the same websites those scripts already run on). A build that includes the optional local Mac connection additionally declaresnativeMessaging(to talk to the Dusk app on this computer) andalarms(to refresh that connection). It loads no remote code. The extension does not make network requests.
Removing your data
- Mac app: delete
~/Library/Application Support/Dusk/and rundefaults delete dev.calvin.dusk. Press "Remove all" under Exceptions first, so any app you kept light goes back to normal. Restore any*.dusk-backupfile if you want an app's original settings back. - Remove the optional native-host registration by deleting
~/Library/Application Support/Google/Chrome/NativeMessagingHosts/com.dusk.profiles.json. - Extension: removing it from Chrome deletes its stored profiles, settings and remembered appearances.
Children
Dusk collects no personal information from anyone, including children.
Changes and contact
If this policy changes, the date above changes and the new text ships with the app. Contact: duskformac@gmail.com, or open an issue at https://github.com/calvinkim85/dusk-site/issues