Privacy and data
What Waltz reads, what it keeps, what it never keeps, and why it describes systems rather than people.
Last updated
Waltz integrates; it doesn't hoard. It reads the systems you already use, keeps the facts it derives and what Briefs cite, and drops the rest.
What Waltz keeps
| Source | Kept | Never kept |
|---|---|---|
| Source control | Repository metadata, pull requests and reviews, links | Source code; diffs outside the analysis sandbox |
| CI/CD and deploys | Run metadata, outcomes, durations | Logs, artifacts, secrets |
| Work tracking | Keys, types, statuses, transitions, links, titles a Brief cites | Descriptions and comments, unless a Brief cites an excerpt |
| AI coding agents | Counts, tokens, cost, session ids, commit links, model names | Prompts, responses, tool inputs and outputs, commit messages, branch names |
| Security scanners | Rule, severity, location, state, dates | Secret values, code snippets |
| Slack | Waltz's own delivery receipts | Any other message |
Each integration applies its projection before anything is stored or logged, so raw payloads never reach logs or traces.
Source code is never stored
Code is analysed where it lives or in a short-lived sandbox:
- A container starts with a read-only token for one repository, valid for an hour.
- It clones the default branch onto temporary storage, analyses it, and deletes the clone.
- It uploads only derived facts, plus the short excerpts a Brief may quote (at most 40 lines each).
- The container and its storage are removed, whether the run succeeded or failed.
A test plants a marker in a repository's code, comments and files, runs the whole path, and checks that the marker appears in no table and no stored object.
Systems, not people
- Nothing models how skilled a person is. Waltz describes how your software is built and how it evolved.
- Delivery numbers are team, service and org numbers, never individual ones.
- Briefs describe teams and systems. Whether a Brief names individuals is your org's decision, by Brief type, never ours; VP and above default to teams.
- Identity matching is about identities. A suggestion's confidence says how sure Waltz is that an identity is someone's, nothing about them.
- Engagement is counted per Brief type, not per person. Opening a Brief records nothing about who read it.
- Bots and agents are never people, and never count as seats.
Your data stays yours
One org's data never appears in, or helps write, another org's Brief. Facts, text, names, memory and annotations are per org. Model responses are cached per org and never shared. Only anonymized aggregates may improve Waltz for everyone, and never one org's content.
Models
Waltz calls models on its own account by default; Enterprise can bring its own provider and key. What may reach a model: facts, pull request and commit titles, ticket text, documentation excerpts and short code excerpts. Every model call is logged without its content. A model writes only from the findings it is given, and never adds a fact.
Agent sessions from the CLI
The CLI uploads facts about a finished session: counts, ids, times and the commits it made. Never your prompts, the agent's answers, file paths or code. Automatic upload is off until an admin turns it on, and waltz sessions upload -dry-run prints exactly what would be sent (CLI).
Access and security
- Brief links are signed for one recipient and one edition, and expire after 14 days. Admins can require sign-in.
- Data is encrypted at rest and in transit. Integration secrets are kept in a vault and decrypted only by the process that needs them.
- Every admin action is written to an audit log.
- Integrations ask for read access only, except posting to Slack.