Keeploop Privacy Policy

Effective date: November 2, 2026

Keeploop is offered by Keeploop App ("we", "us"). Keeploop App is operated by Zach Moss Productions, LLC.

Applies to: the Keeploop app for macOS, its keeploop-mcp connector, the Keeploop Claude Desktop extension (Keeploop.mcpb), the Keeploop Claude Code plugin, and the Keeploop connection service at mcp.keeploop.app that web and phone AI apps use to reach your Mac.

The short version

What Keeploop reads

Other sources are off until you turn them on in Settings > Sources. Each is read on your Mac:

Messages, Calls, Notes, WhatsApp and Notifications need Full Disk Access.

What Keeploop writes

What Where When
Drafts and reply drafts your Drafts mailbox in Apple Mail only when an agent asks and the Pro drafts feature is on
Deleted or replaced drafts your Drafts mailbox in Apple Mail only when an agent asks and your permissions allow it (Pro)
Saved attachments a copy in ~/Downloads only when an agent calls save_attachment
Settings ~/Library/Application Support/Keeploop/settings.json when you change a setting
Monitors and their matches ~/Library/Application Support/Keeploop/keeploop.db when an agent creates a monitor
Promises found in mail you sent ~/Library/Application Support/Keeploop/keeploop.db when a promise monitor is on or you confirm one
Voice profile (statistics and cards) ~/Library/Application Support/Keeploop/voice/ when you build a voice profile
Cached account list ~/Library/Application Support/Keeploop/mail_accounts.json refreshed about hourly
Logs ~/Library/Logs/Keeploop/ while running, for troubleshooting; they stay on your Mac
API keys you enter the macOS Keychain when you save a key in Settings > Voice and AI models
Client registrations each agent's own config file only when you press that agent's Connect button
Calendar events your calendar, through the Keeploop app only when you press Add on an event an agent proposed
Texts sent through the Messages app only when Messages is set to Read and write (Pro)
Notes a new note, or text added to the end of one, in Apple Notes only when Notes is set to Read and write (Pro); never deletes or rewrites a note
Slack posts posted as you through your Keeploop Slack app only when Slack is set to Read and write (Pro)
Copies of Slack messages and notifications ~/Library/Application Support/Keeploop/keeploop.db while those sources are on

Nothing is sent unless you allow it. Keeploop can send mail through Apple Mail only when your permissions (Settings > Permissions) allow it for that person, account, label and app. The default is Always ask: you see the whole message on your Mac and press Allow or Deny, and no answer means no. Every send then waits a few seconds so you can cancel it. Keeploop keeps a log of each decision and send on your Mac (~/Library/Logs/Keeploop/audit.jsonl): who, when and the subject, never the message body. The same permissions apply to texts, notes and Slack posts. Writes to Messages, Notes and Slack come only from AI apps on this Mac, never from a remote AI app.

What can leave your Mac, and only when you turn it on

Keeploop itself makes no network connection unless you enable one of the features below, apart from the Pro trial check-in and the revoked-key list described under License checks.

Feature What is sent To whom Default
The AI agent you connect (Claude Code, Claude Desktop, Cursor, Codex, VS Code or another MCP client) whatever the agent asks for from the sources and accounts you allowed: mail, attachments, events, contacts, texts, notes, calls, WhatsApp chats, notifications or Slack messages that agent, and from there to its model provider under that provider's terms nothing is connected until you press Connect
Keeploop connection service (remote access for web and phone AI apps) each request from an AI app you approved, and your Mac's answer, with likely one-time and sign-in codes hidden; when you pair and each time this Mac connects, this Mac's license key (the service keeps only a one-way hash) passed through Keeploop's service on Cloudflare to the AI app you chose; never stored (see "The connection service") off until you sign in, pair this Mac (needs Keeploop Pro or a running trial) and approve an AI app on it
Your own tunnel (advanced remote access: Tailscale Funnel or a Cloudflare tunnel) the same requests and answers, with likely one-time and sign-in codes hidden through your tunnel provider to the AI app you chose; no Keeploop server is in the path, and your provider's terms apply off
Your Keeploop Slack app (Slack as a source) requests for the messages it can read, and the posts you allow Slack, under your workspace's terms off until you connect the Slack app
Phone notifications (ntfy) the monitor's name, and the sender and subject of the matching message the ntfy server you choose (ntfy.sh unless you change it), on a random private topic off
Webhook destinations, including Slack and Discord webhooks the monitor's name and filter, and the matching message's sender, subject, account, mailbox, IDs and a short text snippet (about 400 characters); for Reply notices, the thread's Message-IDs and your reply's IDs and address the URL you enter, and no other: redirects are never followed off
Voice profile cards samples of recent mail you sent from that address, trimmed the model you pick in Settings > Voice and AI models: your own claude or codex command-line tool (and so that tool's provider, under your own subscription), Anthropic or OpenAI with your own API key, or a custom endpoint you enter only when you press Build, Refresh or Test
Update checks a standard request for the update feed, including the app version and macOS version the Keeploop update server on unless you turn it off at setup or in Settings > General
Health reports (Settings > General > Help) a random install ID, app and macOS versions, CPU type, each setup check's result and a short error code, crash signatures (the error type and the top app functions), and counts (monitors, accounts, sources, AI apps); see "Health reports and problem reports" Keeploop's connection service; kept 90 days off until you turn it on
Report a problem what you type, your app and macOS versions and CPU type, and, if you leave Include diagnostics on, the same setup results, crash signatures and counts a health report carries Keeploop's connection service; kept 90 days sent only when you press Send

These stay on your Mac:

Statistics and examples used by the voice feature (greetings, sign-offs, typical length) are computed on your Mac and never call a model.

How your AI apps reach Keeploop

There are three paths. You choose which ones to use.

Path Who is in between Keeploop server in the path
On this Mac (the local connector: plugins, the Claude Desktop extension, stdio) nobody: the app talks to Keeploop on your Mac none
Keeploop connection service (the default for web and phone AI apps, one address: https://mcp.keeploop.app/mcp) Keeploop's service, running on Cloudflare yes; it passes requests and results through and never stores them
Your own tunnel (advanced: Tailscale Funnel or a Cloudflare tunnel you run) your tunnel provider. Tailscale Funnel ends encryption on your Mac. A Cloudflare tunnel ends it at Cloudflare's edge, so Cloudflare can read the traffic there none; your tunnel provider's terms apply

Every remote request, through either the connection service or your own tunnel, is checked on your Mac against the same Remote access settings and permissions. In remote results, Keeploop hides likely one-time and sign-in codes from your mail and messages. The local connector is unchanged.

Remote AI apps get results only from the sources you turned on, as Settings > Remote access and any access profile for remote apps allow. They can never send texts, write notes or post to Slack.

The connection service

The connection service lets a web or phone AI app (for example Claude on the web, ChatGPT or Grok) use Keeploop on your Mac through one address. Your Mac opens an outbound connection to the service. When an AI app you approved sends a request, the service passes it to your Mac, Keeploop answers it on your Mac under your settings, and the service passes the answer back.

What it processes. Each request and its result pass through the service in memory while they are forwarded. Keeploop runs the service, so it can technically see that content while it passes through. It does not log, store, queue or cache it. When your Mac is offline, a request fails with a message; nothing waits to be delivered later.

Who receives your data.

What it keeps. Your account email address; your browser session; your paired Mac's name, public key and last connection time; which AI apps you approved; OAuth records, stored as hashes or encrypted; for each paired Mac, its license key fingerprint (a one-way hash, never the key or the email inside it), key id, tier and expiry; which account a Pro license is linked to; short-lived sign-in, pairing and anti-replay records that expire within minutes; and security events (such as sign-ins, pairings, approvals, denials, revocations and failed sign-ins), kept for 30 days. Health and problem reports you chose to send are kept 90 days (see "Health reports and problem reports"). It also keeps counts that are not linked to you or your Mac: how many requests failed in each 15-minute window, by kind of failure, and for a server error which part of the service it happened in and the error's type name (for example "/mcp" and "TypeError"). They hold no request content, account, Mac, AI app or IP address, and are deleted after 7 days. The service also fetches Keeploop's public list of refunded license fingerprints.

Phone buttons. When ntfy approvals are on and this Mac uses the connection service, the Approve, Deny and Wake anyway buttons on your phone send their one-time answer token to the service, which passes it to your Mac and returns your Mac's reply. The token carries no mail content: it names the waiting request, its kind, your answer, when it expires and a one-way hash of what is being approved. The service reads those fields to refuse an expired token or a permissions change, and checks your Mac's signature on it. It does not store or log the token.

What it never keeps. Request or result content, tool names or arguments, search terms, sender names, subjects, or tokens and sign-in codes in clear text.

Deleting it. Signing out deletes your browser session. Removing an AI app or unpairing this Mac (Keeploop > Settings > Remote access) revokes access at once, and those records are deleted within 30 days. Delete your account from the connection service account page, or email help@keeploop.app: the account, its Macs, approvals and tokens are deleted, and security events age out within 30 days.

Health reports and problem reports

Health reports help us find setup problems and crashes we would otherwise never see. They are off until you turn on Share health reports in Settings > General > Help, and "See what's sent" there shows the exact report. When on, Keeploop sends one at most once a day, and one after a crash.

Report a problem sends what you type to us, only when you press Send. Include diagnostics (on by default, shown before you send) adds the same setup results, crash signatures and counts as a health report. Email Instead opens an email to help@keeploop.app instead, which you send yourself.

What they carry. A random install ID that Keeploop makes when you turn health reports on (a problem report carries it only while health reports are on); your app, macOS and CPU type; the ID and result (pass, warning or fail) of each Check my setup row with a short error code; for each recent Keeploop crash, the error type and the names of the top functions on the crashing thread (Keeploop's own code first); and how many monitors, mail accounts, sources and connected AI apps you have. A report is checked against a fixed list of allowed fields before it leaves your Mac and again when it arrives, and anything else is refused.

What they never carry. Your mail, subjects, message text, attachments, names, email addresses, contacts, calendar events, notes, texts, Slack data, tokens, keys, your license key, file paths with your username, crash messages, or the sentences Check my setup shows you. A problem report carries only what you type yourself, with your home folder path shortened.

Where they go. Keeploop's connection service on Cloudflare stores each report with the time it arrived. It does not store your IP address, and reports are not linked to a Keeploop account. Reports are deleted after 90 days.

Your control. Turn health reports off at any time: Keeploop deletes the install ID on your Mac and sends nothing more. "New ID" in "See what's sent" replaces it. To have your reports deleted sooner, email help@keeploop.app with the install ID shown there.

API keys and credentials

Your control

Purchases

Keeploop Pro is sold through Stripe Managed Payments. Link, a Stripe company, is the merchant of record: it takes your payment and handles sales tax, under Stripe's privacy policy. Keeploop never sees or stores your card number. The app itself never contacts Stripe.

What we keep for each order. When a payment completes, Stripe tells us, and we store an order record: your email address, your license key, its key ID and fingerprint (a one-way hash), the Stripe checkout and payment IDs, whether it was paid, free or refunded, whether you bought in the app or on the website, whether the license email went out, the date, and the coarse source described under "The keeploop.app website". No name, address or card details. A checkout started in the app also keeps its checkout ID and a hash of a secret only your app holds, so only your app can collect the key. If you redeem a Keeploop coupon, we keep the same kind of record with a hash of the code.

The license email. We email your license key to the address on the order. Resend sends it for us and receives your email address, the key and its key ID. If Resend is not set up, Cloudflare's email service sends it instead and receives the same.

How long. We keep order and coupon records with no end date. We need them to resend a lost key, to handle refunds and chargebacks, and to keep a refunded key revoked. The public list of revoked keys holds only key fingerprints, never an email address.

Referrals

When you buy Pro, we give your email address a referral code. If someone buys through your referral link, we record that order's checkout ID, your email address, the buyer's email address in a normalized form (lowercase, without a + tag, and for Gmail without dots) and the time. This is attribution only: no reward or payout is created. Referral records are kept with no end date, like orders.

The keeploop.app website

The website sets no cookies for visitors and runs no analytics or ad trackers. Its server keeps anonymous daily counts of page visits, download clicks, checkouts started, trials started and purchases, by country and by referring website (the domain only) or campaign tag in the link you followed. Automated fetches, such as search engines and AI assistants reading a page, are counted separately by crawler family (for example "claude-user" or "googlebot") and format; the browser or user agent string itself is not stored. It stores no IP addresses and nothing else that identifies you. When you start a trial or buy Pro, that same coarse source (a referring website, a campaign tag or "direct") is saved with the trial or order.

Update checks and downloads go through keeploop.app, which keeps anonymous daily counts. To count each Mac once a day it keeps a one-way hash of the IP address, changed and deleted daily; no IP address is stored. The only cookie the site sets is for its owner, to leave out their own downloads; visitors never get it.

Because the website does not track you, it treats a Do Not Track signal the same as any other visit.

Who handles data for us

Service What it does What it gets
Cloudflare hosts keeploop.app, its database and the connection service the records described in this policy: orders, referrals, trials, connection service accounts and security events, and health and problem reports; requests and results for web and phone AI apps pass through it in memory
Resend sends our email your email address and the email: your license key and sign-in codes
Stripe (Link) sells Keeploop Pro as merchant of record and takes payment what you enter at checkout, under Stripe's privacy policy; it sends us your email address and the order details above
Slack gets our own notice of each sale and refund the amount, tax, country and the end of the key ID; never your email address

The AI apps, tunnels, ntfy servers and webhooks you choose are listed under "What can leave your Mac". They are your choices, not services we use.

Your rights

You can ask for a copy of the data we hold about you, ask us to correct it, or ask us to delete it. Email help@keeploop.app from the address in question. If you ask us to delete an order, we keep only what stops a refunded key from working again. Data on your Mac is yours to delete at any time (see "Your control"). If you think we got something wrong, you can also complain to the data protection authority where you live.

Children

Keeploop is not directed at children under 13. The connection service keeps only the account, license and security records described under "The connection service".

Changes

If this policy changes, the new version is published at the same address with a new effective date. A future change that makes Keeploop send anything off your Mac beyond what this policy describes will be off by default and described in the release notes.

Contact

Questions about privacy: help@keeploop.app.

Postal address: Zach Moss Productions, LLC, c/o Registered Agent Solutions, Inc., 901 S 2nd St, Ste 201, Springfield, IL 62704-7909