Data Handling
What Gets Stored
Section titled “What Gets Stored”Omnodex stores structured records of agent activity:
- Prompts you submit to Claude Code, in full
- Tool calls (tool name, owning server, parameters, timing, status, and response size; tool output itself is not stored)
- Subagents the agent starts (type, timing, and the size of the final message, not its text) and permission requests and denials
- File access events (which files were read or written)
- Session metadata (start and end time, working directory, agent, and the repository the working directory belongs to, as its git
originremote) - Detection findings (which rules fired, on which tool calls), and in shadow or guardrails mode whether each would have stopped its call
The repository is recorded as host/owner/repo (for example github.com/acme/api), read from the working directory’s .git/config when the session starts. Any user name, password or token in the remote URL is dropped, and a remote that points at a local path is not recorded. It names the same project on every machine, whatever its folder is called there.
Prompts and parameters can contain sensitive values, such as text you paste into a prompt or file contents an agent writes. For MCP servers routed through the Omnodex proxy, set redact_parameters to keep parameter values out of the log.
Where It Is Stored
Section titled “Where It Is Stored”Free Tier (Local Only)
Section titled “Free Tier (Local Only)”All data lives on your machine in the Omnodex home directory (default ~/.omnodex, or OMNODEX_HOME):
| Path | Contents |
|---|---|
event-log/ | Append-only event log, one JSONL file per session (source of truth) |
traces.db | SQLite read model (derived, rebuildable) |
config.json | Local configuration |
You own these files completely. Recording and local analysis make no network calls; nothing leaves your machine unless you connect to the hosted dashboard. The CLI does check for updates in the background, which you can turn off with OMNODEX_NO_UPDATE_CHECK=1.
Hosted/Cloud Tiers
Section titled “Hosted/Cloud Tiers”When cloud sync is enabled:
- Events are encrypted locally before upload (see Encryption)
- Encrypted blobs are stored in cloud object storage
- On Pro, results the dashboard works out from your data (such as which hosts and tools a project has used before) are encrypted with the same key and stored beside it, so the next load can reuse them. They are deleted with the data they came from
- The encryption key leaves your machine only wrapped under a key your password unlocks
- We cannot read your encrypted data. The metadata we can read is listed in What Omnodex Can See
Rule Counts
Section titled “Rule Counts”In shadow or guardrails mode, a machine connected to the hosted dashboard also sends counts that tell us which rules would stop calls, so we can tune them. Each count is a day, a rule ID, a kind and a number:
| Kind | Counts findings that |
|---|---|
would_block | Would have stopped or held their call |
in_force | Your settings make stop or hold the call |
held | Did stop or hold the call |
Counts are sent at most every 15 minutes. They never include paths, commands, hosts, parameters or anything else from the call, so they are sent as plain counts over HTTPS rather than inside your encrypted data. Muted findings, and anything recorded while recording or uploads are paused, are not counted. In monitor mode, or on a machine that is not connected, nothing is sent.
The hosted dashboard can also count what you do with a finding, once you have agreed. The first time you act on one, it shows what would be sent and asks; your answer is kept in that browser. Each count is again a day, a rule ID, a kind and a number:
| Kind | You |
|---|---|
action_block, action_hold | Blocked or held calls like this one |
action_allow, action_mute | Allowed or muted findings like this one |
action_severity_lower, action_severity_raise | Lowered or raised the severity |
label_expected, label_not_expected | Said whether the finding was expected |
The path, host or command you chose stays in your encrypted policy; it is not part of the count.
Data Retention
Section titled “Data Retention”You control retention. Events accumulate in the event log until you delete them. Remove a single session with omnodex clear <session-id>, or everything with omnodex clear --all --confirm. Both need you at a terminal; see clear.
Encrypted event data is retained according to your plan:
- Hosted: 90 days
- Pro: 120 days
- Enterprise: Configurable (up to unlimited)
If your subscription ends or your account is terminated, its cloud data is removed 30 days later. Your local event log is not affected.
Deletion is permanent. When data is purged from cloud storage, it is gone - we do not hold backup copies of customer data.
Data Portability
Section titled “Data Portability”The event log is standard JSONL, documented in the Event Schema. You can:
- Copy it to another machine
- Process it with any tool that reads JSON (
jq, Python, etc.) - Import it into your own systems
- Archive it to your own storage
There is no lock-in. Your data is always yours in a standard, documented format.
Next Steps
Section titled “Next Steps”- Encryption - How end-to-end encryption works
- What Omnodex Can See - The metadata the hosted service can read
- Security Model - The overall security architecture