Principles
- 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. - 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. - No telemetry. Oobo does not phone home, collect analytics, or send any data without explicit user action.
- 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.| Tool | What’s read | Location |
|---|---|---|
| Cursor | SQLite databases, workspace state | ~/Library/Application Support/Cursor/, ~/.cursor/ |
| Claude Code | JSONL session files | ~/.claude/projects/ |
| Gemini CLI | JSON session files | ~/.gemini/tmp/ |
| OpenCode | SQLite database | ~/.local/share/opencode/ |
| Codex CLI | SQLite + JSONL files | ~/.codex/ |
| Aider | Markdown chat history | {project}/.aider.chat.history.md |
| Copilot | JSON session files | VS Code workspace storage |
| Windsurf | Protobuf files (metadata only) | ~/.codeium/windsurf/ |
| Zed | SQLite + JSONL telemetry | ~/Library/Application Support/Zed/ |
| Trae | VSCode state DB (metadata only) | ~/Library/Application Support/Trae/ |
What oobo writes
| Location | What | When |
|---|---|---|
~/.oobo/config | Configuration (TOML) | On oobo setup or config changes |
~/.oobo/tmp/hook-buffer/ | Active session JSON state | During agent lifecycle hooks (cleaned up on commit) |
~/.oobo/aider-analytics.jsonl | Aider native telemetry | Only if user configures analytics-log in .aider.conf.yml |
~/.oobo/logs/oobo.log | Debug log (daily rolling) | Only when OOBO_DEBUG=1 or OOBO_DEBUG=2 |
.git/hooks/ | Git hook scripts | On oobo setup |
oobo/anchors/v1 (orphan branch) | Anchor metadata + redacted transcripts (if transparency=on) | On every commit (unless project is disabled) |
Data flow
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 ison), content is redacted:
- gitleaks (if installed): comprehensive secret detection using gitleaks patterns
- Regex fallback: catches API keys, tokens, passwords, AWS credentials, Bearer tokens
[REDACTED].
Network requests
Oobo makes network requests only in these cases:| Action | Destination | When |
|---|---|---|
git push (via pre-push hook) | Your git remote | On every git push |
oobo recall (remote) | API server (api.oobo.ai or custom) | Only when API key is configured |
oobo delta | API server | Only when API key is configured |
oobo update | GitHub Releases API | On explicit oobo update |