Skip to content

The audit log

Every recorded action in the log with the sentence it writes, the filter over it — and what the log is not.

The Audit screen, for the admin role: who did what and when. Every row carries the time, the actor, the action, the subject, the address the request came from, and one short sentence besides — never JSON, never a diff.

What is recorded

Every action Runjet knows, and the sentence it writes for it. The sentences are quoted as they appear in the log.

ActionWhenSentence
job.createa new jobschedule …, enabled/disabled
job.updateediting a jobwhat changed: schedule a → b, renamed from …, command, catch-up on, alerts off, long-run alert …
job.deletedeleting a jobcommand "…", and its run history
job.runrunning by handqueued on N agent(s), M skipped
job.untagremoving a tagremoved a tag
agent.createenrolling an agentissued a one-time enrollment token
agent.enable, agent.disablethe switch on an agentreceives work again, stops receiving work
agent.reseta resetrevoked its key; every job on that host stops until it re-enrols
agent.deletedeleting an agentand its run history
agent.plan_lockchoosing an agent during a downgradewhat was chosen — the decision, not the doing
user.createthe first account at registration—
user.invitean invitation, or a resendas role; resent; the previous link stopped working
user.acceptaccepting an invitationset their own password
user.namea change of name, your own or somebody else'sthe new name
user.rolea change of roleviewer → operator
user.block, user.unblockblockingblocked, can sign in again
user.passwordchanging your own password; a password set by codechanged their own
user.reset_requesteda request for a codea code was sent; sent by an administrator
user.deletedeleting an accounttheir sessions ended; what they did stays on record
user.plan_lockchoosing an account during a downgradewhat was chosen
workspace.exportan export—
workspace.timezonethe zone schedules fire inboth zones: UTC → Europe/Prague
billing.capacitybuying extra agentsextra agents 10 → 12
auth.login, auth.logoutsigning in, signing outauthenticated
auth.login_faileda failed sign-inwrong email or password
token.create, token.revokeAPI tokens (switched off today)it stops working now

A change of plan is not in the log; it is in Runjet's own log and on the invoice.

The actor

Three kinds: an account, a token and the system — the last for rows with nobody behind them, such as a workspace's first account or a failed sign-in. The names of actors and subjects are stored in the row, not referenced: the row "X deleted job Y" is worth having after both X and Y are gone, and that is exactly the case the log exists for.

The filter

The Actor field searches in the actor's name; the Action picker offers every action from the table above. It pages by scrolling.

What the log is not

A row is written after the action, not inside it, so that the record cannot block the thing it records — and a process killed exactly between the action and the write loses one row. This is operational history, not tamper-evident evidence. Nor is anything Runjet does by itself recorded: a cron tick, a swept output, a sent email, a change of plan. Who ran what and when is in the run history.