Draft, not reviewed by counsel

What Peek stores and sends

Last updated 17 October 2026

Peek works on your Mac. Your screen, its text and your voice go only to the AI you chose, after secrets are removed. Nothing about your captures is ever sent to Peek's developer.

Kept on your Mac

WhatWhereHow long
Settings (shortcuts, format, toggles, tmux pane)~/Library/Preferences/dev.peek.Peek.plistUntil you change them
Claude and Gemini API keysLogin KeychainUntil you remove them
Peek Pro key, this Mac's activation id, purchase emailLogin KeychainUntil you deactivate
Trial start dateLogin KeychainKept, so reinstalling doesn't restart the trial
Last 20 captures: blurred image, masked text, AI description, masked voice note~/Library/Application Support/Peek/History/14 days
Usage counts waiting to be sent (only if you turned them on)~/Library/Application Support/Peek/usage-queue.jsonUntil sent, at most 500
Peek's log (content marked private by macOS)macOS unified logAs macOS decides

Settings › Privacy › Clear History removes captures. Uninstalling with brew uninstall --zap peek removes the rest except Keychain items.

Sent off your Mac

ToWhatWhen
The AI you chose (Anthropic, Google, or your claude login)The blurred image, the masked text, and if you turned them on: window text, voice note and coding-session excerpt, all maskedEach capture
Lemon Squeezy (api.lemonsqueezy.com)Your license key and this Mac's nameWhen you activate, about once a week, and when you deactivate
PostHog EU (eu.i.posthog.com), only if you turned on usage countsThe events listed belowAbout every 10 minutes
PostHog EU, only if you agree each time or chose "Always send"Where in Peek's code a crash happened, under a one-time random id (not the usage-counts id)The launch after a crash

Usage counts

Off unless you turn them on, in the setup screen or Settings › Privacy. Each event has a name and only these kinds of fields: a fixed list of values (such as chat or timeout), numbers, and yes or no. It also carries the app and macOS versions and a random id that you can reset. PostHog is told not to build a profile and not to keep your IP address.

It never carries your screen, any text from it, voice, window titles, file paths, project or branch names, coding-session content, URLs, API or license keys, email addresses, or your Mac's name. Peek's code has no way to attach free text to an event, and a test checks every field name that can be sent.

EventFields
app_launchedplan (free, trial or pro)
onboarding_stepstep number
permission_grantedwhich permission
capture_completedkind of capture, kind of destination, which AI service, OCR and AI time, number of secrets hidden, success
capture_failedkind of capture, kind of failure (such as timeout or offline)
agent_requestwhich peek or MCP command
pro_gate_hit, upsell_shownwhich Pro feature
buy_clicked, trial_started, trial_ended, license_activated, license_revokednothing else

Crash reports

After a crash, Peek asks before sending anything. Settings › Privacy › Crash reports sets it to Ask each time, Always send or Never send. A report holds the exception type, the signal, Peek's version and up to 30 code locations (library name, function, offset) from the crashed thread. It gets its own random id, so it can't be linked to usage counts or to another crash.

This website

peekhq.app sets no cookies and runs no analytics. Vercel hosts it and processes request data such as your IP address to serve pages. Purchases go through Lemon Squeezy, which acts as the seller and handles payment details; Peek never sees them.

Diagnostics

Settings › About › Copy Diagnostics copies your setup and Peek's recent log to the clipboard, with secrets and your user name removed. Nothing is uploaded: you decide where to paste it.

Questions

Write to support@peekhq.app.