Skip to content

Data Handling

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 origin remote)
  • 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.

All data lives on your machine in the Omnodex home directory (default ~/.omnodex, or OMNODEX_HOME):

PathContents
event-log/Append-only event log, one JSONL file per session (source of truth)
traces.dbSQLite read model (derived, rebuildable)
config.jsonLocal 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.

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

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:

KindCounts findings that
would_blockWould have stopped or held their call
in_forceYour settings make stop or hold the call
heldDid 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:

KindYou
action_block, action_holdBlocked or held calls like this one
action_allow, action_muteAllowed or muted findings like this one
action_severity_lower, action_severity_raiseLowered or raised the severity
label_expected, label_not_expectedSaid whether the finding was expected

The path, host or command you chose stays in your encrypted policy; it is not part of the count.

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.

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.