Keepace 简 繁 EN

Privacy

Covers the Keepace Mac app and the “Keepace · AI status” browser component · Last updated 6 October 2026

In one line: Keepace reads the names of a few buttons beside an AI's input box (and, on Codex's website and in the ChatGPT desktop app, the running markers in the task list) to tell whether it is busy. On the Mac, to find AI windows, input boxes and conversations and tell them apart, it also reads a few other things: the position and size of AI windows, input boxes and those buttons, and the input box's own ID and class names; the address of the page each Safari (or other browser) window is showing, only to tell whether it is an AI site and which conversation, so one click takes you back to that conversation (any other site's address is dropped on the spot); and from 2.7.0, AI windows' numbers and whether they are on the current desktop (when checking desktops, only the numbers of other apps' windows), plus, in the Claude desktop app, the address of the page in its window and the class name of the frame around its input box (see “What the Mac app stores” below). Codex / Claude Code terminal sessions started from Keepace also hand their official events to Keepace: it keeps only things like the session ID and the project folder, and drops the prompts, commands and output those events carry on the spot (see below too). Beyond that, your conversations, what you type, page titles and accounts are never read, never recorded and never uploaded. Your to-dos and plans live on your own Mac. From 2.8.0, on a Mac with Apple silicon that doesn't have the on-device organizing model yet, Keepace downloads it on its own from ModelScope (modelscope.cn) or Hugging Face when conditions are right; to decide whether and where to download it, it reads on this Mac how much disk space is free, whether the network is metered or in Low Data Mode, whether Low Power Mode is on, and the system's region and time zone, without recording or uploading any of it (see “When it goes online” below).

What the browser component reads

The component runs only on the AI sites you have open (listed below), and there it does one thing: it looks at whether a button near the input box is marked Stop or similar, and from that tells whether the conversation is generating, waiting for you, or finished; on Codex's website it also counts how many tasks in the task list are running (see below).

The sites it runs on: ChatGPT, OpenAI Codex, Claude, Gemini, Grok, DeepSeek, Perplexity, Copilot, Mistral, Kimi, Doubao, Qwen, Yuanbao and Poe. It does not run anywhere else.

Where that goes

To exactly one place: the Keepace app running on this computer, handed over directly through Chrome's native messaging channel without touching the network. That channel accepts only Keepace's own component; other extensions cannot connect. The status lives in memory and is gone when the app closes.

Only two things travel the other way: a receipt saying whether Keepace received the message (the component's pop-up uses it to show whether it is connected to Keepace on this Mac), and, from component 2.6.0, the AI button-name list: the Keepace app fetches it from the website, checks its signature, and hands it to the component over the same local channel. The component only compares the list exactly (ignoring case and extra spaces) with button names and IDs and with the name of Codex's small “running” icon, and never uses it to read anything else; the component never goes online itself and never runs anything from the list — the list is text only, no code.

No server receives any of it. There is no analytics, no third-party SDK and no advertising. This website carries no tracking code or third-party scripts either.

What the Mac app stores

WhatWhereUploaded?
To-dos, plans, mind maps, the words you dictated, work recordsYour Mac: ~/Library/Application Support/KeepaceNo
DictationPrefers on-device macOS recognition; the local sorting model runs entirely offlineNo
AI status observations (what is seen in desktop apps and on web pages)In memory; after a restart they count as unknown. A “Progress to check” reminder you haven't dealt with is noted on this Mac with the AI's name, whether it was the desktop app or a web page, and the time (desktop-return-checkpoints.json), and after a restart it is still under “All AI” for up to a day; older ones are removed the next time Keepace opens (added here in October 2026. Before 2.7.0, a single reminder from a web AI such as Gemini made the whole record unreadable, and it was no longer cleaned up; the first time 2.7.0 opens, it reads the record and cleans it up). Terminal sessions: see the next rowNo
Codex / Claude Code terminal sessions started from Keepace (optional: you turn this on yourself under More › AI Session & Connection… › “Advanced: precise events for terminal sessions”. It has always been this way; added here in October 2026): when a session starts or ends, a turn starts, a tool finishes, it needs your OK, or a turn ends, Codex / Claude Code hands an official event (a hook) to a small helper that comes with Keepace. The event may carry your prompt, commands and their output; the helper takes only what it needs to tell the state (such as the event type, the session and turn IDs, which tool it is waiting on, and the project folder) and drops the rest in memory on the spotYour Mac: ~/Library/Application Support/Keepace. The same database as your to-dos keeps the session ID, turn ID, linked task, project folder path, Codex's session link (codex://threads/…), status and times; if the linked task has no project folder yet, this folder is noted for it too. In the same place, bridge-state/ holds a small file per session (turn, last event, the name of the tool it is waiting on), launchers/ keeps the script of each launch (with the project folder path and the task ID); events are first written to events/ and deleted once read. Prompts, commands and output are never storedNo
What the Mac app reads through Accessibility to tell whether an AI is busy and to find AI windows and conversations (it has always been this way; added here in October 2026): about every 2 seconds, the position and size of AI windows and input boxes, the accessibility names, IDs, enabled state and position of the buttons beside an AI's input box, and the input box's own ID and class names (never the text in it); in the ChatGPT desktop app and on Codex's website, it also looks across the whole window (page) for “running” markers to count running tasks: the names of elements marked as a status (only compared with “running”) and the class names of images inside links (only looking for the spinner; the rest are dropped on sight); and the address of the page each Safari window is showing, whether or not it is an AI site (likewise in Chrome, Edge and Brave when the browser component isn't installed or isn't reporting)The buttons, running markers, the position and size of windows and input boxes, and the input box's ID and class names are used in memory only: to tell whether the AI is busy and how many tasks are running, and to make sure it is an AI's input box and find the buttons beside it. Page addresses are used only to tell whether this is one of the listed AI sites and which conversation. An address may carry words you searched for or a question you asked (a search results page, or a question on Perplexity, for example). For a site that isn't on the list, the whole address is dropped on the spot; for a listed AI site, only the domain and conversation ID are kept, by the same allowlist as the browser component (only the home page for Perplexity), in memory only, so one click takes you back to that conversation. Apart from what an address itself carries, Keepace never reads page titles, the conversation or what you typeNo
With the floating status beside the notch: where the pointer is on the screen, and which trackpad a pointer or scroll movement came from (from 2.4.0)Used in memory only, to tell whether you are pointing at the notch and which trackpad to give a light tap; never recorded, no history kept. What you click or type is never looked atNo
When the ChatGPT desktop app's window contents can't be read (from 2.5.0): Keepace asks it, the way screen readers do, to open its window contents to Accessibility, at most once every 15 seconds and no more once they can be read. Once opened they stay open until ChatGPT quits, even if Keepace quits firstThis only turns on ChatGPT's own accessibility mode; nothing is clicked, typed or read from the conversation. ChatGPT may use more CPU while writing long answers, and window-management tools may move its windows a little more slowlyNo
The address of the page in the Claude desktop app's window (from 2.7.0): nearly every time Keepace checks a Claude window (about every 2 seconds), it reads the address of the web page holding the input box; when only a Send button sits beside the input box and the address can't tell whether this is a Code session, it also reads the class names of the few elements around the input box (style names the page gives its elements)Used in memory only: the address only tells whether this is a chat, a task in Home or a Code session, and which conversation it is — the conversation ID is scrambled with a random value that changes at every launch and used only to tell conversations apart; the address itself is never kept. The class names are only searched for the one that marks Code's input box, then dropped. Window titles, the conversation and what you type are never readNo
To find AI windows on other desktops or in full screen (from 2.7.0): whenever the Claude or ChatGPT desktop app is open, every check (about every 2 seconds) also asks these apps which window they used last; at launch, when you switch desktops or switch to one of these AI apps, and when a window is missing from the app's own window list or none can be reached at all (on another desktop, minimized or all closed, say), Keepace asks the system for two lists of window numbers, every app's: the windows placed on any desktop, and those on the current desktop (numbers only; not which desktop each is on), and looks up the numbers of the windows not listed; when an AI app has no window Keepace can reach, it also asks the system for these AI apps' window numbers, which process each window belongs to, its layer, transparency and size, and whether it is on screen (more often while the detection log is on, to record the counts); and it gets the system's notice when you switch desktopsUsed in memory only: once a window is found, the buttons beside its input box are read as usual (the same things as on the current desktop); if none can be found, Keepace says plainly that the app is on another desktop or in full screen. The desktop-switch notice is only used to look again right away and is not recorded. The system hands over its window list whole, with every app's name in it (Keepace does not ask for Screen Recording permission, so the system leaves out other apps' window titles): Keepace takes only the items above, and only from these AI apps' rows, never takes out a window title or an app name, and drops the rest on the spot; what it takes, and the desktop lists, are kept for at most 10 secondsNo
An optional detection log (off by default, for troubleshooting)Your Mac: ~/Library/Caches/Keepace — control names, times and a few counts only, never conversations or what you type (a button beside the input box that Keepace doesn't recognise is noted by its name: a short one as it is, which may carry a name of your own such as a folder's; a long one, or one that looks like a file name or path, only as a scrambled code from 2.7.0 — earlier versions noted those as they were too, up to 60 characters each. What is already in the log isn't rewritten; to clear it, delete detection-log.jsonl there. This was added here on 2 October 2026); from 2.7.0 it also notes, in the Claude desktop app, whether this is a Code session and whether the input box holds text not yet sent (never the text), and how many AI windows on other desktops were found (numbers and reason codes only)No
AI button-name list fetched from the website (from 2.6.0)Your Mac: ~/Library/Application Support/Keepace/detection-rules.json, only button names, IDs and a version number; the browser component keeps it in memory onlyNo (it is a public file from the website to begin with)
To decide whether to download the on-device organizing model on its own, and where from (from 2.8.0, only on a Mac with Apple silicon that doesn't have the model yet): how much space is left on this disk; whether the network is available, metered (like a phone hotspot) or in Low Data Mode; whether Low Power Mode is on; and the region and time zone in System SettingsUsed on this Mac, in memory only, for this decision; not recorded, not uploaded. Keepace's settings also note whether you chose “Not now” or paused the download, how many times in a row it failed and when it last failed, how many times it had to start over because the network couldn't resume (and whether resuming worked again after those tries ran out), which download address a half-finished file last came from, and whether the last downloaded file failed the check and which address to avoid next time (each just the ModelScope or Hugging Face address itself). A half-finished download is kept in ~/Library/Caches/Keepace/LocalModelDownloads, and the installed model in ~/Library/Application Support/Keepace/LocalModelNo
When you click “Organize plan” and the local model is about to be used (from 2.7.0): this Mac's memory situation, as three numbers from the system (memory pressure level, percentage available, total memory)Read once, in memory only, to decide whether to warn you first that memory is tight; not recordedNo

When it goes online

Nothing else goes online. There is no account, nothing to register, and we collect no name, email or contacts.

What you can do

The data is on your own computer. Settings › Data exports all of it to a single file in one click, and you can delete single items, clear the list, or simply delete the folder above (if you started a terminal session from Keepace without choosing a folder, the AI works in the Workspace folder inside it by default, so move out anything you want to keep first). To uninstall, drag the app to the Trash; remove the browser component on your browser's extensions page. We hold no copy of your to-dos, plans or other data, so there is nothing to ask us to delete; the license service keeps only what “Trial and activation” above describes.

Children

Keepace is a productivity tool for adults. It is not directed at children under 13, and we do not knowingly collect their information — apart from what is described under “Trial and activation”, we collect no one's.

If this changes

Any change updates the date at the top of this page; if a change means reading anything new, the app's release notes will say so plainly.

Contact

Questions and comments: open the activation card from the More menu or Settings › Activation (or, while not activated, the trial label at the top of the window) and scan the seller's WeChat code; once activated, open “Contact the seller” on the card.