An audit log for a shared coding agent is an append-only record with one line per request and one line per approval, held by the machine’s owner and exportable by them. It answers, after the fact, who asked the agent to do what, who allowed it, what actually ran, and what it cost. If the agent is only ever used by its owner, the runtime’s own transcript is enough. The moment a second person can send requests, it isn’t.
This post lists the fields, in the order a reader needs them, then the things that must stay out.
The request line
Every request produces exactly one line when it reaches a terminal state.
The approval line
Approvals get their own line because they are decisions, and decisions have different readers than runs.
Request lines and approval lines, with an approved push in amber and an expired deletion in red.
What must not be in the log
- Secrets. A credential approval records that a key was accessed, not the key.
- File contents. Diffs are paths and line counts. The change is in the repository, where the repository’s own access control applies.
- Full command output. The tail is enough to explain a failure. Whole logs can contain anything.
- Other rooms. Each room’s log is scoped to that room. The owner sees across rooms; members see their room.
Properties, not just fields
Append-only. Nobody edits the log, including the owner. Corrections are new lines.
Owner-held. The person whose machine ran the work holds the record and can export it. Requesters see their own lines in the room.
Complete under revocation. Revoking a grant or a machine cancels queued work and lets running work finish, so the log never has a gap where “something ran but we stopped watching”.
Owner actions included. The owner is not subject to approvals on their own agent, but their requests are logged the same way. A log that only records outsiders is a log that only records half the risk.
Reading the log
Three questions come up most, and the fields above answer each in one filter.
- “Who pushed that?” Filter approval lines by rule = push, read who asked and who decided.
- “Why did this request take an hour?” Compare created and started; the approval wait is usually the answer.
- “What did lending my agent cost this month?” Sum usage on request lines where who asked is not the owner.
Frequently asked questions
Is the room timeline the audit log? The timeline is the detailed, human-readable record of one run. The audit log is the one-line-per-event summary across runs, designed for filtering and export. muti keeps both; the log is derived from the same events the daemon uploads. See what the daemon uploads.
How long is it kept? Request and approval lines are kept for the life of the room. Deleting a room soft-deletes it; the record stays for the owner.
Can a requester see other people’s lines? They see the room’s timeline, which includes everyone’s requests in that room. Export is the owner’s.
Do owner requests need approval to be logged? No. Owner runs are logged without approvals, with rule = owner.
The log is what makes “you can revoke it later” a real promise. Give your agent a room and it comes with one.
Published