DorkOS
Guides

The record

DorkOS keeps a permanent record of what happened on your computer, readable by you and your agents, and anyone can check it for edits

The record

DorkOS keeps a record of what happened: who did what, to what, and when. It covers people, agents and DorkOS itself.

The record is kept forever. Nothing in DorkOS can change a line or remove one once it is written.

What is in it

Everything that shows in Activity is also in the record. That includes:

  • agents being added, changed or removed
  • chats and scheduled tasks starting and finishing
  • actions an agent asked to take, and what you answered
  • permission changes
  • messages delivered between agents and chat apps

The record also holds things that never show in Activity:

  • every DorkOS tool an agent runs that changes something, after it ran, and whether it worked
  • every setting that changed, with its old and new value
  • packages installed, updated or removed, and updates that failed
  • agents being paused and resumed, who did it and why, and each piece of work a pause held back
  • work merged into a room's files, and who merged it
  • API keys created or revoked, and the sign-in tokens DorkOS gives agents
  • sign-ins, sign-outs, sign-ins that expired or were revoked, and failed sign-ins
  • the tools an agent uses inside DorkOS, Claude Code, Codex or OpenCode: the command it ran, the file it changed, the page it fetched, and whether it worked
  • any other change made through the app or its API that nothing above covers: who did it, which kind of change, and whether it worked. These lines can name what was changed, such as a package or a setting, but never what was sent with it. Chat messages and room posts are talk, not changes, so they never appear here.

Sign-in lines also note the device and network they came from, so they are marked as the owner's alone.

Each line says who acted. An agent is named by an id that stays the same if you rename or move it. You are named by your account, or by this computer when you haven't made an account.

The record never holds message text. A changed setting that holds a secret shows its name only. Anything in a line that looks like a password or key is replaced with [redacted] before it is saved. That last part is best effort: it catches the usual shapes, not every possible one.

A tool line names what the tool acted on, not its whole input or output. A web address keeps only its site and first folder. The full detail stays in the chat, and the line points to it.

A tool can still be running when a reply ends, such as a long command left going in the background. It gets a "began" line then. If DorkOS later sees it finish, a second line says how it went. A tool stopped by an interrupt, or one that finishes while DorkOS is restarting, may never get that second line.

Helpers are the smaller agents an agent can start for part of a job. In DorkOS and Claude Code, every tool a helper uses is recorded too, marked as a helper's. In Codex and OpenCode, the record shows that a helper started, but not each tool it used. Those runtimes don't share that detail with DorkOS yet.

Chats you start with claude or codex outside DorkOS never pass through it, so their tools are not recorded.

Who can see what

The record is open to everyone in your space: you and every one of your agents. Your agents can read what each other did, so one agent can check another's work.

WhatYouYour agents
Actions anyone took, including actions an agent took inside your own chatsYesYes
What your agents said and did in their own work: scheduled tasks, messages between agents or chats, work an extension or a connected app startedYesYes
Replies in a team channelYesOnly the channel's agents
What you and an agent said in your own chats: in the app, in a direct message with an agent, or from a chat app like Telegram or SlackYesNo
Sign-in lines, which note the device and networkYesNo

DorkOS's agent tools and API keep your own chats from other agents. An agent asking for one is told it doesn't exist. The actions the agent took in that chat are still in the record for everyone, so nothing it did is hidden. What you said is not shown, and neither is which chat it happened in.

There is one exception. When one of your chats starts another chat, that new chat can read back the one that started it. That is how a helper reads what it was asked to do. Sending a message is not enough: an agent that writes to your chat and gets a reply still can't read the rest of it. No other agent can.

A chat started before this release, or with claude outside DorkOS, counts as your own unless DorkOS knows it was agent work, such as a scheduled task or a reply in a team channel.

What this does not cover

DorkOS knows a request comes from an agent only when the agent says so, as its DorkOS tools do. A request that doesn't, such as a plain web request to DorkOS or dorkos call run from a terminal, is treated as you. And your chats are saved as files on your computer, which any program running there can open, agents included. So this keeps your chats out of what your agents see through DorkOS. It is not a lock against a program on your computer that sets out to read those files.

Reading it

In the app, open Activity and switch to All actions to see every line of the record, newest first. An agent's profile has an Activity page with everything that agent did, or had done to it.

From the command line:

dorkos call audit.query --input '{"action":"config.","limit":20}'
dorkos call audit.account_timeline --input '{"accountId":"<agent id>"}'

Your agents have the same reads as tools: audit_query to search the record, audit_get for one line and what it points to, account_timeline for one agent's or person's history, and transcript_read to read an agent's work chat.

Acting on what you see

If the record shows an agent doing something it shouldn't, you can stop it everywhere at once: pause it from its profile, or ask any of your agents to. See Pausing an Agent.

The record then shows who paused it and why, each piece of work the pause held back, and who lifted the pause. An agent can't lift its own pause, and the record keeps a line when one tries.

Activity and the record

Activity is the short, readable feed you scroll in the app. The record is the complete list behind it.

Activity now keeps a year of history, up from 30 days. Permission changes stay in Activity for good. The record keeps everything for good, whatever Activity keeps.

To keep Activity for a different number of days, change the setting:

dorkos config set activity.retentionDays 90

Any number from 1 to 3650 works. The new number takes effect the next time DorkOS starts. On a server you run headless, the DORKOS_ACTIVITY_RETENTION_DAYS environment variable wins over the setting.

Checking it for edits

Each line in the record carries a fingerprint of itself and of the line before it. Change a line, or take one out of the middle, and the fingerprints stop matching from that point on.

Anyone can run the check, you or any of your agents:

dorkos call audit.verify

An agent can also ask for it with the audit_verify tool. The answer says how many lines were checked. If something was changed, it names the first line that doesn't match. A long record is checked 100,000 lines at a time, and the answer says where to pick up.

DorkOS also checks the most recent 1,000 lines each time it starts, and writes a warning to its log if they don't match.

What the check can and can't catch

DorkOS refuses to change or remove a line. But your agents run as you, on your computer, so an agent could open the database file directly.

The check catches a line that was changed, or taken out of the middle. It does not catch:

  • lines taken off the end of the record
  • a change where every line after it was rebuilt with new fingerprints

Both need a copy of the fingerprints kept somewhere your agents can't reach, which is planned for a later release. The check also can't undo an edit or tell you what a line said before.