Privacy policy
Last updated 2026-09-29
- Everything runs on your computer. No accounts, no servers, no tracking.
- Your voice is turned into text on your computer and never sent anywhere.
- The only download is the speech model, once. You can skip it.
- The plugins read what Claude Code or Codex already reports on your computer, and type only what you ask them to.
- Vizhi for ChatGPT reads the ChatGPT app's window on your Mac to show your chats and press its buttons. It keeps none of your conversations.
- Claude Code, Codex and ChatGPT themselves still talk to Anthropic and OpenAI, under their own terms.
Applies to the keypad plugins built from one engine: Claude Console (for Claude Code) and Vizhi for Codex (for OpenAI Codex CLI) on macOS and Windows, and the Vizhi for ChatGPT preview (for the ChatGPT desktop app) on macOS. Everything below is true of all of them except where a product or platform is named.
These plugins run entirely on your own computer. They have no servers and no accounts, and they never transmit your prompts, audio, screenshots, or session data anywhere. There is exactly one network request, ever: a one-time download of the offline speech model (see below).
Voice and microphone
- When you press a voice key, audio is recorded by the plugin's bundled voice helper
(
ClaudeVoiceHelper.appon macOS,claude-console-tools.exeon Windows) and transcribed on-device by whisper.cpp. - Your audio never leaves your computer. It is not uploaded, streamed, or sent to any server, including Anthropic or OpenAI. There is no cloud speech service involved.
- The recording is written to a temporary file (
/tmp/<product>/voice/capture.wav, or%TEMP%\<product>\voice\on Windows) only long enough to transcribe it, and is overwritten on the next use. The transcript is likewise temporary, and both are deleted automatically once stale. You may delete them at any time. - The microphone is used only while a voice key is actively recording.
The one network request
The first time you press a voice key, the plugin downloads the base.en speech model
(about 142 MB) from Hugging Face so transcription can run offline from then on:
https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-base.en.bin
This is a plain file download. It sends no information about you, your prompts, or your machine
beyond what any download requires, and it is verified against a known checksum before use. It happens
once; after that the plugin makes no network requests at all. To avoid it entirely,
place ggml-base.en.bin at ~/.claude/claude-console/whisper/ yourself before
first use.
Session state
- The plugin stores what the keys display (model name, cost and token counts where the agent reports
them, context percentage, activity, and the project directory) under a directory it owns:
/tmp/claude-console/or/tmp/codex-console/(%TEMP%\…on Windows), one per product. - This data is owner-only. The directory is created with
0700permissions and its files with0600, so no other user account can read your prompts, dictation, or session state. Files from closed sessions are deleted automatically. On Windows the equivalent per-user location is used. - On Windows the same directory also holds small health records (times and outcomes only, no content) that tell the plugin whether its hook helper is running.
- Nothing in this directory is transmitted anywhere. It is read only by the plugin.
What the plugin reads from the agent
To display live state, each plugin reads what its agent already writes on your machine:
- Claude Code. The status line and lifecycle hooks it produces, which the plugin wires
by adding entries to
~/.claude/settings.json, only when you turn the live keys on (a press, confirmed); nothing is written on install. Any status line you already had is chained, not replaced, and a backup of the file is written before each change. Turning them off (a long press) removes exactly the plugin's entries, and so does uninstalling (on macOS shortly after the plugin is removed; on Windows from Claude Console 2.3.1). - Codex CLI. Lifecycle hooks, installed as the plugin's own
~/.codex/hooks.json, on macOS and Windows. Yourconfig.tomlis never edited. Codex asks you to trust these hooks before they run. The plugin also reads Codex's own local session transcript (~/.codex/sessions/**/rollout-*.jsonl) for the context-percentage key, and on Windows as a fallback while the hooks are not yet trusted. It reads only the events it needs and stores none of the conversation. - ChatGPT desktop app (Vizhi for ChatGPT). Through macOS Accessibility, the plugin reads what the ChatGPT window shows: the titles of your recent chats, button labels, whether an answer is running, and the wording of a permission request so it can mark risky ones. It reads the text of an answer only when you press Copy Reply, and a search's results only when you use Find Chat. It stores none of it on disk, does not log it, and sends it nowhere. It presses the app's own buttons only when you press a key.
Files kept on your computer
Besides the temporary state above, the plugins keep these in your home folder. None of them is transmitted, and you can delete them at any time (the setup guides list them under Uninstall):
~/.claude/claude-console/: Claude Console's scripts, voice helper, the speech model (shared by both plugins), yourprompts.jsonand optionalproject-rootslist.~/.codex/codex-console/,~/.codex/vizhi-runtime/and~/.codex/vizhi/: Vizhi for Codex's hook launcher, voice helper andprompts.json.- Vizhi for ChatGPT, also under
~/.claude/claude-console/: theVizhiAxBridgehelper,desktop-captures/(your screenshots), your saved prompts and tasks (desktop-workflows.json,desktop-chatgpt-workflows.json).
Screenshots
The Screenshot key captures a screen region you select, using the system's own picker
(screencapture -i on macOS, the Windows snip overlay). The image is saved to the plugin's own
directory (above) and its file path is typed into your agent session so the agent can open it. The
image is never uploaded by the plugin. Vizhi for ChatGPT attaches it to the ChatGPT chat you are in, where
it is sent to OpenAI only when you press Send, like any image you attach yourself; what your agent does with a file you point it at is governed by
that agent's own terms. Captures are not deleted automatically. You may remove them at any time.
Permissions used
macOS
- Microphone: granted to the voice helper, for local transcription only.
- Accessibility: granted to the Logi Plugin Service, so the plugin can type text and keystrokes into your agent's Terminal tab, and (Vizhi for ChatGPT) read the ChatGPT window and press its buttons.
- Screen Recording: required by macOS for the Screenshot key; used only while you are capturing.
Windows
- Microphone: enabled for desktop apps in Settings, for local transcription only.
- The plugin grants Codex's sandbox user group (
CodexSandboxUsers, created by Codex's own setup) read access to its install directory and write access to its own state directory, so Codex can launch and feed the plugin's state hooks. No other permissions on your system are modified.
Data collection
These plugins collect no analytics, telemetry, or personal data, and transmit nothing off your device.
Claude Code and Codex CLI communicate with Anthropic and OpenAI respectively, under Anthropic's and OpenAI's own terms and privacy policies. These plugins only read the local state those tools already produce on your machine, and type input into them as you direct.
Contact
Questions about this policy, or about data held about you, go to support@rshankar.com. You can also open an issue, though anything you write there is public.