> ## Documentation Index
> Fetch the complete documentation index at: https://docs.oobo.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Privacy & Security

> How oobo handles your data, what it reads, and what it never does.

## 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.

| 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/v2` (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:

| 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`       |

There is no background sync, no outbox, no cloud upload pipeline.

## Disabling oobo for a repo

```bash theme={null}
oobo disable    # stops tracking, no hooks fire, no anchors written
oobo enable     # re-enables
```

## Reporting vulnerabilities

Please report security vulnerabilities to **[security@oobo.ai](mailto:security@oobo.ai)** or via [GitHub Security Advisories](https://github.com/ooboai/oobo/security/advisories/new).

Do not report security vulnerabilities through public GitHub issues.
