Legal
Privacy policy
Draft — pending attorney review
This policy covers Rooted Reality for coding agents and this website.
Effective date: not set yet. This draft isn’t in effect; the date is set on the day the final version is published.
Who we are
Rooted Reality LLC, a Michigan limited liability company (“Rooted Reality”, “we”)PO Box 5001, Muskegon, MI 49445
hello@rootedreality.com
Coding agents
Rooted Reality for coding agents
These sections cover the recorder and the desktop app on Mac, where the private beta is forming now.
The desktop app and the recorder, in short
Draft — pending attorney review
The short version. The sections after this one give the detail.
- What they keep
- The recorder keeps a record of what your coding agents do, including which programs they start, and when each one starts and stops; the names of files that change while an agent chat is open, including changes you or other apps make, and when; and which addresses those programs connect to, and when. What the recorder records lists all of it. The desktop app keeps the labels and notes you add, and a note of what you agreed to and when. All of it stays on your Mac. Nothing from the record is sent to us.
- What they never keep
- Your conversations with the agent, what’s inside your files, or the contents of network traffic.
- Update checks
- The desktop app checks for updates only after you agree to the beta agreement, and after that when you open it. Each check sends the app’s version and your Mac’s chip type to rootedreality.com. Our website runs on Vercel, so, like any web request, each check also shows your network address to Vercel, which keeps it in its request logs. We don’t read those logs. The app doesn’t install updates itself during the beta. If a newer version exists, it tells you; you then download it from rootedreality.com and replace the app.
- Downloads
- The installer and the updates are stored on GitHub. The download links on rootedreality.com send your browser on to GitHub, which serves the file and, like any web request, sees your network address.
- Stopping and deleting
- To stop recording, press Stop recording in the desktop app. To delete the record, follow the steps in How long it’s kept, and deleting it. Moving the app to the Trash doesn’t delete the record.
What the recorder records
Draft — pending attorney review
The recorder runs on your Mac and writes a record there. It records:
- Agent chats: which agent it is, such as Claude Code, the folder the chat works in, the agent’s own chat ID and settings folder, when the chat starts and ends, and the model named in its launch settings, if one is.
- Programs: the ones it ties to an agent chat, and some it sees but can’t tie to one. For each, its name, its location on disk, a fingerprint of the program file (SHA-256) and its code-signing details, the folder it starts in, whether it has a terminal, when it starts and stops, and how it ended.
- From a program’s command line, only the program’s name, with three exceptions: the model name given to a known agent program (such as the value after
claude --model); one word after an administrator or system tool (such as the subcommand afterlaunchctl, or forsudo, the name of the program it ran); and fixed labels the recorder picks after reading the next word or two in memory, such as which package manager was installing, which package tool a program was running under (anodeprocess running npm is labellednpm), or whether a command was building, testing or packaging. The words it reads for those labels aren’t kept. - Environment variables: only names from a fixed list that coding agents, editors and terminals set, and the values of some of them, such as the terminal app’s name, the agent’s chat ID, its settings folder and model names. Every other variable is left out.
- File names: while an agent chat is open, the names of files created, changed, renamed or removed in the places it watches: your home folder, the system’s temporary folders,
/private/etc, and the folders for launch agents and launch daemons. It keeps a change even when it can’t tell which program made it, so the record can include changes you or other apps made during that time. It skips some busy folders it treats as noise. - While an agent chat is open, sensitive places, such as shell startup files (like
~/.zshrc), SSH keys (~/.ssh) and cloud credential files (like~/.aws): changes to them, and a note when a program it tracks has one open at the moment the recorder checks. Other files that programs only read are not recorded. - Administrator and system tools: when a program uses tools such as
sudo,launchctl, the keychain command-line tool,ssh-add,crontaborosascript. - Network connections made by the programs it tracks: the protocol, the remote address and port, the local port, when the connection was first and last seen, and a host name where the recorder can put one. Also the ports programs listen on. For a connection made by a package tool, such as npm or pip, or a program running under one, it also records the folders the tool had files open in at that moment, and how many files in each, never the files’ names. It does not record how much data a connection carried.
- The recorder itself: when it started and stopped, gaps in its recording, its own crashes, each round of host-name lookups, and an ID for this install, made on your Mac from the time it was created and random numbers.
It keeps names and places, never what’s inside them.
What it doesn’t record
Draft — pending attorney review
- Your conversations with the agent
- What's inside your files
- The contents of network traffic
- The rest of a command line after the program’s name, apart from the three exceptions above
- Environment variables outside its fixed list
- How much data a connection carried
The desktop app can ask the recorder to read an agent’s own transcript, but only when you click for it. The next section says what that reads and keeps.
Reading an agent’s transcript, only when you ask
Draft — pending attorney review
Claude Code keeps its own transcript of each chat on your Mac. The desktop app has three controls that ask the recorder to read it: one compares a single session with its transcript, one compares every session of a day, and one shows an open chat’s last tool call in the Right now view. Each is off until you click it, and nothing remembers the choice.
When you click, the recorder opens that chat’s transcript files and keeps, in memory, only: each tool call’s name, timings and ID; one detail per tool (the file path for tools that write or read a file, the program name of a shell command, the host of a web address); and the model’s name. It drops everything else as it reads, including what you and the agent wrote and what each tool returned.
Nothing from the transcript is written to the record. The app shows the answer and doesn’t save it, with one exception: if you label a model change the comparison found, the desktop app’s label store keeps that change’s time and its kind (model.switch) with your label.
Where the record lives
Draft — pending attorney review
Nothing from the record leaves your machine.
The record is a database file on your Mac. If the recorder is installed to start when you log in, it is ~/Library/Application Support/Blackbox/blackbox.sqlite3. If you start recording from the desktop app, it is in the app’s own folder, ~/Library/Application Support/com.rootedreality.agents/blackbox.
The desktop app reads the record where it is. We don’t upload it.
Three other things stay on your Mac. The recorder keeps a log of its own running at ~/Library/Logs/Blackbox/blackbox.log (and, when it starts at login, two more log files beside it). The desktop app keeps the labels and notes you add in labels.sqlite, in its own folder; a label or note can’t contain a slash or a backslash, so it can’t hold a folder path. It also keeps a small note in that folder of which version of the beta agreement and of the recording consent you agreed to, and when. That note isn’t sent anywhere.
Rooted Reality doesn’t add its own encryption to these files. They are ordinary files in your Mac user folder.
What does go out
Draft — pending attorney review
Two things go out today, and a third is planned. None of them carries the record’s contents; the planned one, which isn’t built yet, would name only a category, such as “left running”.
- Host-name lookups
- To put names on addresses, the recorder looks up a fixed list of 38 well-known host names, such as api.anthropic.com, api.openai.com, github.com and registry.npmjs.org. It asks your Mac’s own resolver, so the lookups go to whichever DNS servers your Mac uses, from your network address. It looks up the whole list when it starts and again every five minutes. It never looks up an address or a name it saw a program use. Each round of lookups is noted in the record. Starting the recorder with
--no-dnsturns the lookups off; the desktop app’s Start recording button doesn’t use that option. The data handling page lists every name. - Update checks
- The desktop app checks for updates only after you agree to the beta agreement, and after that when you open it. The request goes to
rootedreality.com/api/releases/agents/update/, followed by your system (darwin), your Mac’s chip type (aarch64on Apple silicon) and the app’s version number. It carries a user agent naming the updater (tauri-plugin-updater) and its version. It carries no account, no install ID and nothing from the record. Like any web request, it shows your network address to the host of our website, Vercel, which keeps it in its request logs. We don’t read those logs. There is no setting to turn it off. The app doesn’t install updates itself during the beta. If a newer version exists, it tells you; you then download it from rootedreality.com and replace the app. The app’s Download button opens that download in your browser. It is the newer version’s installer: the download link sends your browser on to GitHub, where it is stored. - A ping on your phone (planned)
- Not built yet, so nothing is sent for it. The plan is a “needs your attention” note that names only a category, like “left running”, with no program names, files, folders or addresses, sent through Apple’s or Google’s push service. The details aren’t settled.
The desktop app has no analytics, crash reporting, accounts or sign-in, and its window loads nothing from the internet. Apart from its lookups, the recorder has no network code.
How long it’s kept, and deleting it
Draft — pending attorney review
The record stays on your Mac until the recorder deletes it or you do. The recorder deletes events and connections after 14 days, and chats, programs and daily summaries after 365 days. There is no control to change these yet. It does this once an hour while it is running. The data handling page lists what it keeps longer.
To delete the record, first stop the recorder: click Stop recording in the desktop app if you recorded from there, or, if the recorder is installed to start at login, run blackbox watch --uninstall. The wipe command refuses while the recorder is recording, and the login item starts the recorder again if it stops. Then use the recorder’s wipe command, blackbox wipe --yes (add --data-dir and the folder above if you recorded from the desktop app), or delete that folder yourself. The desktop app runs a copy of the recorder kept beside the app or, if there is none, the one the recorder’s install command put at ~/.local/bin/blackbox. How the recorder will ship with the desktop app isn’t settled yet.
The wipe command removes the database, its working files and any exports in its default exports folder. It keeps its log, the lists you edit and your labels, and an export you wrote to another folder with --out stays there. The desktop app has no button that deletes the record; in the app you can delete a label you added.
Because the record never reaches us, we can’t see, export or delete it for you.
Questions and requests
Draft — pending attorney review
Write to hello@rootedreality.com with any question about this policy, or to ask about what we hold about you.
If you are in the EU or the UK, the GDPR page lists the rights you have and how to use them. What this website’s database holds is stored in the United States; the GDPR page says more.
Wherever you live, you can email hello@rootedreality.com to ask for a copy of the personal data we hold about you, or to have it corrected or deleted. We don’t sell personal data, and we don’t share it for advertising.
Rooted Reality for coding agents and this website aren’t meant for anyone under 18, and we don’t knowingly collect personal data from anyone under 18. If you think someone under 18 has joined the waitlist, email hello@rootedreality.com and we’ll delete the entry.
Changes to this policy
Draft — pending attorney review
If we change this policy, we’ll publish the new version on this page and change the effective date at the top of it. If a change is material, we’ll also email the people on our waitlist, and anyone on our update list who hasn’t unsubscribed, when we publish it.
This website
This website: email lists, analytics and logs
Separately from the product, this website has sign-up forms where you can type in your email address. What you type into those forms is stored in our database, as described here.
The email-lists section below was part of our earlier privacy policy. It moved here and was updated to match what the code does. While the new wording is under review, the earlier section’s commitments still hold: the waitlist isn’t added to any other list, every digest has a one-click unsubscribe link, and we delete your entry when you ask.
Email lists and waitlists
Draft — pending attorney review
Coding-agent beta waitlist
The waitlist form on the homepage and at /agents stores your email address, which coding agents you use daily, which computer you use them on, whether you are open to a 15-minute call, and when you signed up. We use it to email you about the beta, about a call only if you ticked that box, and about material changes to our legal pages. It is not added to any other list, and it does not receive the weekly digest. Signing up doesn’t send you an email. We keep it until you ask us to remove it.
Updates on laws and apps
The update sign-ups elsewhere on this site store your email address, which page you signed up on, and the web address of the page that linked you there (without its query string), if your browser passed it along. Those addresses receive the weekly digest, and every digest has a one-click unsubscribe link. Until you unsubscribe, we also email them about material changes to our legal pages. Unsubscribing marks your address as unsubscribed so no more digests go to it; the entry itself stays until you ask us to delete it.
Limiting repeat sign-ups
To limit repeated sign-ups from one network, each form submission, and a few other requests to this site, records a SHA-256 hash of your IP address, with the name of the form or request and the time. It is not stored with your email address. Entries more than two hours old are deleted when a later request is allowed. A hash like this can be matched back to an IP address by trying every address, so we treat it as personal data.
Sending email
Email from this website is delivered through our email delivery provider, Resend, which receives the address it is delivering to.
To be removed from any list, email hello@rootedreality.com from the address you signed up with, and we will delete it. Our database host keeps restore points for a limited time, so a deleted entry can stay in them until they expire.
Analytics, hosting logs and cookies
Draft — pending attorney review
- Analytics
- This website uses Vercel Web Analytics. For each page view it sends Vercel the page’s address without any query string and the time, and it can include the address of another site that linked you here. Pages under /admin and /api are left out.
- Speed measurements
- It also uses Vercel Speed Insights. For about one visit in five, it sends Vercel measurements of how fast the page loaded and responded, the page’s address without any query string, which element of the page was involved (such as one you clicked), and your connection type (such as 4g). Pages under /admin and /api are left out.
- Hosting logs
- Vercel hosts this website. It receives every request, including your IP address, your browser’s user agent and the page’s address, and keeps request logs for a limited period set by our Vercel plan. That includes the desktop app’s update checks, and downloads of the app through our download links. We don’t read the update checks’ logs.
- Downloads
- The desktop app’s installer and its updates are stored on GitHub. A download link on rootedreality.com sends your browser on to GitHub, which serves the file. Like any web request, the download shows your network address and user agent to Vercel, which hosts this website, and to GitHub.
- Cookies
- The public pages of this website set no cookies, and our analytics are not set up to use them. Signing in to an account on this website sets cookies that keep you signed in.
- Email you send us
- Email to hello@rootedreality.com arrives in our Google Workspace mailbox.