Skip to content

Storage ​

Pond keeps its state in one folder on your Mac, plus a few Keychain items. It reads your repos and Claude Code's session files. It does not keep task text, prompts or terminal output on disk.

The Pond folder ​

The folder is ~/.pond, or the path in POND_HOME when that is set.

  • It must be a real directory owned by you, not a symlink.
  • Its mode is 0700. If group or other bits are set, Pond removes them. If the folder belongs to someone else or is a symlink, Pond refuses to use it.
  • Files inside are mode 0600.
  • Pond never shares this folder, its socket or its lock with other apps.

What is in it ​

FileWhat it holds
pond-pty.sock, pond-pty.lockThe terminal helper's socket and its single-instance lock.
browser.sock, computer.sock, feed.sock, preview.sockThe other local sockets (see Processes and IPC).
projects.jsonThe repos Pond may start tasks in, with per-project settings such as the test, run and setup commands.
sessions.jsonFor each agent: its agent id, Claude Code session id and terminal id, with project, worktree, branch and start time. The last 200 are kept. No text.
sessions/<agent id>.jsonOne session's hook settings. The helper deletes it when the agent exits.
settings.jsonApp settings. Its safety switches are sealed (below).
stage.jsonWhich terminal tiles were open, for a relaunch.
ports.jsonThe port each worktree's dev server uses with Run.
prs.jsonDraft PRs Pond opened, so a second push does not open a second PR.
telemetry.jsonYour crash-report and usage choices and a random install id.
updates.jsonWhether the daily update check is on.
review-viewed.jsonThe files you marked Viewed in the diff tile, per worktree. Each mark holds a fingerprint of the file's content, so an edit clears it. At most 100 worktrees and 3000 marks per worktree. No file text.
usage/samples.jsonThe 5-hour usage readings Claude Code gives Pond's sessions: a percentage and a reset time for the current window, with when each was read, at most 400 points. No project, session, model or transcript. Its folder is mode 0700.
agents-meta/<session id>.jsonPer session, from the same status line: the context size in tokens, the model's short name and the effort level. Numbers and a short fixed set of words only. Files older than 2 days are removed when a new one is written. Pond does not show these yet.
panes.jsonFor a tile split into two panes: the shell's terminal id, the direction, the divider position and which pane has the focus.
permission-modes.jsonThe permission mode last used in each project. Bypass is never stored.
fanouts.jsonThe worktrees, branches and agent ids of each group of tries. Never the task text.
editor.jsonThe editor you chose in Settings for Open in.
friends-*.json, roster.jsonFriends state, only when Friends is on.

Pond writes these files atomically, at mode 0600.

Reads outside the folder ​

  • Your repos. Git reads them through /usr/bin/git with a short fixed environment and no prompts.
  • Claude Code's transcripts. To draft a friends task summary, Pond reads the tail of that session's transcript under ~/.claude/projects/: read-only, at most the last 256 KB, and only the session's own replies. It never writes there. The draft is scrubbed and capped before you see it.
  • Kadans. When Kadans is installed, Pond reads its small usage-line file. It never changes Kadans' files. A fresh Kadans file wins over Pond's own usage readings.

Sealed settings ​

An agent runs as your macOS user, so it could edit a JSON file in the Pond folder. To stop an agent from turning on a safety switch that way, those files are sealed.

A sealed file looks like this:

json
{"v":1,"gen":3,"mac":"<hex>","payload":"<base64>"}
  • The MAC is HMAC-SHA256 over a fixed prefix, the file name, the generation and the payload. A signed file therefore cannot be copied over another file.
  • The key and the latest generation of every sealed file live in a Keychain item, one per Pond folder.
  • A hand edit, a swapped payload, an older signed copy put back, a deleted file that was sealed before, or a missing key all read as unverified.
  • Every caller maps unverified to its safe value. Settings shows one quiet line: "Pond reset a setting it could not verify."
  • Only Pond.app writes sealed files. The CLI and Pond Computer read them with a read-only store that never creates a key and never shows a Keychain prompt.
SettingSafe value when unverified
Computer use on or offoff
Background input for computer useoff
Browser tools for new tasksoff
Friends on or offoff
Showing project names to friendsno names
Take mode per group, project and memberAsk everywhere
Automatic starts used todayused up until tomorrow
Post results automaticallyoff
Friends feed sharing and postingall off
Crash-report and usage choicesusage off, and the first-run privacy screen asks again

Keychain use ​

ItemUsed for
The settings seal keySealing the files above. One item per Pond folder.
Friends identity keysSigning and opening friend items. Created only when you turn Friends on.

Items are stored as this-device-only and are not synchronizable. Pond prefers the data-protection Keychain, and uses the login keychain with the same attributes when the build cannot reach it. Reads never show a prompt.

Pond never reads or stores a GitHub token. Git and gh use your own sign-in.

Permissions ​

Pond.app asks macOS for Notifications only. It never needs Accessibility, Screen Recording, Finder automation or access to your Desktop folder. macOS may ask for folder access the first time Pond opens a repo on an external volume or in Documents.

Computer use is the one exception, and it is optional. Accessibility and Screen Recording then go to the separate Pond Computer.app, never to Pond.app. See Computer use.

Pond is not released yet. These docs describe the current build.