Skip to main content

Principles

  1. Read-only data access. Oobo never modifies any AI tool’s conversation history or databases. During oobo setup, it writes hook configuration files (e.g. ~/.cursor/hooks.json, ~/.claude/settings.json) to register lifecycle events.
  2. Local by default. Config lives in ~/.oobo/, anchors on a local orphan branch. Anchor metadata is pushed only to your existing git remote (alongside your code) via the pre-push hook. The optional search/delta API requires a separate key and explicit configuration.
  3. No telemetry. Oobo does not phone home, collect analytics, or send any data without explicit user action.
  4. Config protection. When API keys are present, config file permissions are set to 0600 (owner read/write only).

What oobo reads

Oobo reads local files from AI coding tools to discover sessions, extract conversations, and compute token stats. All reads are read-only.
ToolWhat’s readLocation
CursorSQLite databases, workspace state~/Library/Application Support/Cursor/, ~/.cursor/
Claude CodeJSONL session files~/.claude/projects/
Gemini CLIJSON session files~/.gemini/tmp/
OpenCodeSQLite database~/.local/share/opencode/
Codex CLISQLite + JSONL files~/.codex/
AiderMarkdown chat history{project}/.aider.chat.history.md
CopilotJSON session filesVS Code workspace storage
WindsurfProtobuf files (metadata only)~/.codeium/windsurf/
ZedSQLite + JSONL telemetry~/Library/Application Support/Zed/
TraeVSCode state DB (metadata only)~/Library/Application Support/Trae/

What oobo writes

LocationWhatWhen
~/.oobo/configConfiguration (TOML)On oobo setup or config changes
~/.oobo/tmp/hook-buffer/Active session JSON stateDuring agent lifecycle hooks (cleaned up on commit)
~/.oobo/aider-analytics.jsonlAider native telemetryOnly if user configures analytics-log in .aider.conf.yml
~/.oobo/logs/oobo.logDebug log (daily rolling)Only when OOBO_DEBUG=1 or OOBO_DEBUG=2
.git/hooks/Git hook scriptsOn oobo setup
oobo/anchors/v1 (orphan branch)Anchor metadata + redacted transcripts (if transparency=on)On every commit (unless project is disabled)
Oobo does not maintain a local database. All persistent state lives on the git orphan branch or in the TOML config file.

Data flow

Local tool storage → oobo reads sessions (read-only)
                   → builds anchor (local)
                   → writes to orphan branch (local)
                   → pre-push hook pushes orphan branch to git remote
Anchor data travels the same path as your code: to your git remote on git push. If you push to GitHub, your anchors go to GitHub. If you don’t push, nothing leaves your machine. The optional remote API (/anchors/search, /anchors/delta) is a separate system that requires explicit configuration of an API key. It is never called without one.

Secret redaction

Before any session transcript is written to the orphan branch (when transparency is on), content is redacted:
  1. gitleaks (if installed): comprehensive secret detection using gitleaks patterns
  2. Regex fallback: catches API keys, tokens, passwords, AWS credentials, Bearer tokens
Secrets are replaced with [REDACTED].

Network requests

Oobo makes network requests only in these cases:
ActionDestinationWhen
git push (via pre-push hook)Your git remoteOn every git push
oobo recall (remote)API server (api.oobo.ai or custom)Only when API key is configured
oobo deltaAPI serverOnly when API key is configured
oobo updateGitHub Releases APIOn explicit oobo update
There is no background sync, no outbox, no cloud upload pipeline.

Disabling oobo for a repo

oobo disable    # stops tracking, no hooks fire, no anchors written
oobo enable     # re-enables

Reporting vulnerabilities

Please report security vulnerabilities to security@oobo.ai or via GitHub Security Advisories. Do not report security vulnerabilities through public GitHub issues.