Privacy policy
ConversationDeck runs locally on your Mac. The plugin has no backend and makes no internet requests. We add no analytics scripts, advertising, or tracking to the plugin or this website.
At a glance
- Reads: Local Codex task names, records, and status so your keys can show what needs attention. Task records can include your prompts and replies.
- Stores: Your pinned tasks, key labels, Inbox preferences, and which completions you have seen in Stream Deck settings.
- Stays local: The plugin passes task data between Codex and Stream Deck on your Mac. It doesn’t upload task data to us or anyone else. Website visits and support emails are handled separately below.
- Reset: “Mark completions as seen” starts a fresh Inbox baseline. It does not delete task history or pinned keys. Removal steps are below.
What this policy covers
This policy covers ConversationDeck and this website, provided by Verdin Studio, based in Ontario, Canada. Elgato’s Stream Deck and Marketplace, OpenAI’s services, Cloudflare, and email providers have their own data practices.
Your task data
ConversationDeck reads local Codex task records and status to display your tasks on Stream Deck. Those records can contain task content, including prompts and replies. Pressing a key opens the selected task in Codex.
The plugin stores task IDs, last known names, optional key labels, and Inbox settings through Stream Deck. Task names appear on keys and in settings. The plugin does not change Codex’s task records or create a transcript archive. Temporary reading and status information stays in memory while the plugin runs; the Stream Deck SDK may also write local operational error logs.
Stream Deck and OpenAI may use their own network services independently. Exporting a Stream Deck profile can include saved task names, IDs, and labels, so review a profile before sharing it.
Resetting and removing data
To start with a clean Inbox, open an Inbox key’s settings, expand Start with a clean Inbox, and choose Mark completions as seen. This marks current completions as seen. It keeps your pinned keys, Codex history, and Stream Deck backups.
To remove saved key assignments, delete ConversationDeck actions from each Stream Deck profile, including actions inside folders and Multi Actions. To stop the plugin, uninstall ConversationDeck from Stream Deck’s plugin preferences. Elgato provides uninstall instructions.
Stream Deck controls settings retention. We have not verified that uninstalling removes every saved setting. The Technical details section lists local storage locations and manual cleanup steps. Backups and exported profiles can retain earlier settings even after you remove the live keys.
This website and third parties
Cloudflare hosts the public website and processes request data, such as IP addresses, to deliver and protect it. Cloudflare may also provide aggregate traffic and security metrics from those requests.
We set no cookies and add no analytics scripts or browser storage in the website’s code. Cloudflare may set strictly necessary security cookies or run security challenges. Fonts and images are served with the site. See Cloudflare’s cookie information and privacy policy for its handling of visitor data.
Elgato operates Stream Deck and the Marketplace. Visits to Marketplace pages and any Marketplace purchases fall under Elgato’s privacy policy. OpenAI’s handling of data in Codex is covered by OpenAI’s privacy policy. Our local-only promise covers the plugin, not those services.
Support and privacy requests
If you email us, we use your email address and the information you provide to respond to your request. Email providers process those messages. We keep support emails only as long as needed to help you, and delete them on request. Please redact sensitive task names and screenshots; do not send transcripts, databases, API keys, session files, or other secrets.
For privacy questions or to request access, correction, or deletion of information you have sent us, contact Verdin Studio’s owner, responsible for privacy, at support@verdinstudio.dev. Include enough information to identify the relevant correspondence, without sending additional task data.
Changes to this policy
We will publish revisions on this page and update the date above. Material changes to how we handle personal information will be explained in a notice on this page.
Technical details
Local reads and status
The plugin opens the local Codex task index read-only to obtain task IDs, names, record paths, and update times. A background worker reads bounded portions of task records. Initial reads are limited to 4 MiB per pass; the Inbox starts with a smaller 512 KiB pass. Later checks read newly appended data. Local process and app metadata help identify the compatible desktop app.
For live working and approval status, the worker connects to the existing Codex desktop connection belonging to the same macOS user, for up to 64 tasks. This is an internal desktop interface, which can change with Codex updates. Incoming snapshots can contain task content and are limited to 32 MiB per frame. Only runtime status, stream revision, owner ID, and an approval event identity are retained from these snapshots. The plugin does not take ownership of tasks, grant approvals, submit answers, or send commands to start turns.
The worker reads the desktop’s local preferences file, up to 4 MiB, to obtain unread-task status. Other preferences are discarded after parsing. Only per-task unread status is passed on from the worker, and it stays on your Mac. Account identifiers are not passed on. When that format is unavailable or ambiguous, completions use plugin key-press receipts instead. The optional external-completion setting also uses plugin receipts.
Task names, IDs, status, and settings pass to Stream Deck over a loopback connection on the same Mac. The worker returns display metadata, not transcript bodies or record paths. Opening a task passes its ID to the desktop app in a deep link.
Stored metadata
Stream Deck action settings hold pinned task IDs, last known titles, optional labels, and settings revisions. Global settings hold an Inbox baseline, up to 300 acknowledgement event hashes, bounded task-observation metadata, and the external-completion preference. File offsets, partial records, and inferred status stay in memory while the plugin runs. The plugin avoids logging transcript bodies and uses generic source-read errors.
Local files and manual cleanup
On macOS, Stream Deck keeps application data under ~/Library/Application Support/com.elgato.StreamDeck/. Profile action settings are in ProfilesV3; local profile backups are in BackupV3. Exported profiles and other backups can be stored elsewhere.
- Remove ConversationDeck actions through Stream Deck before uninstalling. This avoids manually editing profiles shared with your other plugins.
- Quit Stream Deck completely. In Finder, choose Go → Go to Folder and enter
~/Library/Application Support/com.elgato.StreamDeck/Plugins/. Ifdev.verdinstudio.conversationdeck.sdPluginremains after uninstalling, move that folder to the Trash. It contains the plugin and its local SDK logs. - Remove old exported profiles and backups containing ConversationDeck settings if you no longer need them. Check
BackupV3as well as locations where you saved exports. A profile backup can contain other plugins’ settings too; deleting it removes that entire backup. - Empty the Trash when you are ready to permanently remove those files. Copies retained by Time Machine, cloud backup services, or other devices must be managed separately.
These steps address profile assignments, the installed plugin, its logs, and selected backups. They do not guarantee removal of Stream Deck’s plugin-wide settings; their storage and uninstall behaviour have not been verified. Contact us for help with remaining settings rather than deleting the whole Stream Deck data folder, which also holds your other plugins and profiles. Codex task history is separate and must be managed in Codex.