Skip to content
VediramVediramSupport

Audit Events

Every Levee audit event type, grouped by channel, with the fields each one fills and what is never recorded

Levee writes an audit event each time the AI agent asks for something Levee controls, and for what Levee decided: a website, a model call, a database query, a file, a plugin call, an approval. This page lists every event type, so auditors and security teams can search the trail, build reports, and set alerts.

For where the events are stored, who can read them, and how to forward them, see Activity and audit. The same events appear in the app's Activity tab and in levee audit tail.

What does every event contain?

Each event says when it happened, what kind of event it is, what it concerns, what was decided, and who and which machine it belongs to.

Record format

FieldContent
TimestampUTC time of the event
EventTypeThe event category (for example NetworkRequest, AccessDenied)
EventTypeStringThe precise event name, when more specific than the category (for example http.denied, llm.request)
ResourceWhat the event is about
DetailThe decision, reason, or measurement
UserNameThe Windows user the action is attributed to
MachineNameThe workstation
ContainerIdThe sandbox session, when the event belongs to one

In the SQLite database (levee-audit.db) the event_type column holds the precise name when there is one, otherwise the category. In the JSON-lines file (levee-audit.jsonl) both fields are present. When you search, match on EventTypeString first and fall back to EventType.

What is never recorded?

The audit trail records decisions and metadata, not content.

  • Model prompts and responses
  • Cookie values, passwords, API keys, tokens, and connection strings
  • Office document and email content
  • Search results and web response bodies
  • Plugin call arguments and results

Some events do record what the agent asked for, such as a web search query or a SQL statement. Those are noted in the tables below.

Event reference

Sandbox lifecycle and administration

EventResource / Detail
ContainerStartedA project's sandbox started.
ContainerStoppedA project's sandbox stopped.
PolicyReloadedA new policy took effect on the machine (local file change or cloud sync).
tool.enable.approvedA user approved and enabled an AI tool for a project, including its network hosts.
tool.upgradedA user upgraded a project's tool to a newer published version.
tool.disabledA user disabled a tool for a project.
RuntimeProvisioningThe sandbox image was downloaded, verified, or loaded, or provisioning failed.
EngineLifecycleThe container engine changed state (started, stopped, became unavailable).
HostFeatureEnabledAn administrator enabled the Windows Containers feature from the Levee app.
HostFeatureEnableDeniedA non-administrator tried to enable it.
CaCertInstalled / CaCertRemovedThe certificate the sandbox trusts for web inspection was installed or removed for a session.
AgentChat (agent.<kind>)Easy mode chat activity: the agent's tool calls, auto-approved in-sandbox permissions, and turn completion. Chat text itself is not in the audit trail.
AgentChat (agent.readProjectFile)The user previewed a project file in the chat. Resource is the project. Detail is the outcome (Ok, Refused, NotFound, TooLarge) and the file path.

Tool changes are recorded like every other event: the change does not wait for its record to be stored, so a failure of the audit store can leave a change without a stored record.

Approvals

EventResource / Detail
AccessRequestedA request was paused for a human decision. Resource is what was requested.
AccessApprovedApproved. Detail includes scope=once or scope=persist.
AccessDeniedDenied, dismissed, or timed out. Detail includes the scope, for example scope=timeout.
AccessEscalatedA request was escalated for review by policy.
AccessRevokedA remembered decision was revoked.

Web access

Web events have the category NetworkRequest and a precise name starting with http..

EventMeaning
http.requestA request was allowed. Resource is host:port/path (or CONNECT host:443 for HTTPS). Detail is the method and outcome, for example GET - allowed.
http.deniedA request was refused. Detail gives the reason, for example policy deny, method not in whitelist, CONNECT denied for non-443 port, or a user denial.
http.access_requested / http.access_approvedA request matched an escalate rule and went to the user.
http.upstream_failedThe destination couldn't be reached.
http.security.dns_rebindThe host name resolved to a private, loopback, or reserved address and was refused.
http.security.sni_mismatchThe TLS connection named a different host than the one requested, and was refused.
http.security.session_overflowThe number of remembered web approvals hit its limit and was cleared.
http.identity.injectA connected identity's session was attached to a request (host and cookie count only).
http.identity.escalationA request needed a sign-in.

With web inspection enabled for a host, allowed requests also carry method, content type, and size for each request and response.

Model access

EventResourceDetail
llm.requestprovider/modelRequested model, prompt and completion token counts, latency, status code, whether streamed
llm.denied.modelRequested modelThe model isn't permitted by policy
llm.denied.userModelThe user denied (or didn't answer) the first-use prompt
llm.denied.budgetModelWhich budget was hit (session, daily, concurrency), tokens used, and the cap
llm.denied.protocolModelThe agent used an API format the model's provider doesn't accept
llm.denied.authModelNo provider credential is configured on the host
llm.prompt_blockedModelA prompt filter term matched. The term itself is never recorded, only a short non-reversible marker.
llm.upstream_errorprovider/modelThe provider returned an error, with status and latency
llm.internal_error / llm.startup_failureThe model channel failed internally

Prompts and responses are never recorded.

Database access

EventDetail
odbc.connectThe agent opened a connection to a permitted data source alias.
odbc.connect.deniedThe connection was refused (unknown or unauthorized alias).
odbc.queryA query was permitted and is about to run. Detail is the SQL text.
odbc.query.deniedA query was refused. Detail is the reason followed by the SQL text.
odbc.query.timeoutA query exceeded the policy's time limit and was terminated.
odbc.security.dangerous_patternA query contained a blocked pattern such as xp_cmdshell or OPENROWSET.
odbc.metadataThe agent listed tables or columns.
odbc.disconnectThe connection closed.
odbc.policy.partial / odbc.policy.rejectedPart or all of a pushed database policy was invalid (see Database access).

SQL text is truncated to 500 characters. Connection strings and credentials are never recorded.

EventResourceDetail
SearchRequestedThe query textA search was requested.
SearchApprovedThe query textThe user approved it.
SearchExecutedThe query textSent to the provider. Detail is provider:resultCount.
SearchDeniedThe query textDenied by the user, timed out, or couldn't be confirmed in the audit trail.
SearchProviderErrorThe query textThe provider failed.
denied:selectSearch is disabled, or the provider isn't allowed (search-disabled, provider-not-allowed, ...).
denied:validationThe query broke a rule: empty-query, too-many-domains, invalid-domain, prohibited-term, session-quota-exceeded.
denied:credentialThe provider's API key isn't configured on the host.

Search queries are recorded in full. Search results are not.

Connected identities

EventMeaning
WebIdentityEscalatedThe agent needed a sign-in and the user was prompted.
WebIdentityCapturedThe user completed a sign-in.
WebIdentityDeniedPolicy refused the sign-in, or the user declined.
WebIdentityRevokedThe user revoked an identity.
WebIdentityStoreCorruptedStored sessions couldn't be read and were discarded.

Cookie values are never recorded.

Package registry credentials

EventMeaning
UpstreamCredentialSet / UpstreamCredentialClearedAn administrator stored or removed a registry credential (manager and scheme only).
UpstreamCredentialDeniedA non-administrator tried to.
UpstreamCredentialStoreCorruptedStored credentials couldn't be read and were discarded.

Microsoft 365 (preview)

EventDetail
M365OperationAn Office operation was requested and decided. Detail is a JSON summary: the tool (for example m365.excel.read_range), a hash of its arguments, the scope (sheet, range, cell count, folder, recipient count), the policy rule, the outcome, and latency.
AccessRequested / AccessApproved / AccessDeniedOffice approval prompts, as for other channels.

Document content, email content, and recipients' addresses are never recorded, only hashes and counts.

Packages (preview)

EventDetail
package.allowedA package download was permitted. Resource is manager:scope/package@version. The package is only served once this record is stored.
package.deniedRefused, with a reason such as no-policy-for-manager, method-not-allowed, upstream-unreachable, or invalid-upstream-auth.
package.stream_interruptedA download stopped partway (client-aborted, idle-read-timeout, transport-error).

decision-aborted-by-client usually means someone pressed Ctrl+C during an install; exclude it from deny-rate alerts.

File access

These events cover the files and folders a user shares with a project. Events from the LeveeFS file-system service carry an fs. or file. name, with the category shown in brackets.

EventDetail
FileGranted (grant.added) / FileRevoked (grant.removed)A folder or file grant was added to or removed from a project. Resource is the host path. Detail is the project and the access (read, readwrite, or deny).
grant.skipped (AccessDenied)A grant could not be offered to the sandbox, for example because the path is neither on a local fixed drive nor a \\server\share path. Resource is the path. Detail is the project and the reason.
fs.read / fs.dir (FileGranted)The agent was allowed to read a file or list a folder. Resource is the host path. Detail is the operation and the reason.
fs.write (FileModified)The agent was allowed to change a file.
fs.denied (AccessDenied)An operation was refused. Detail is the operation, the action, and the reason.
fs.approval_requested (AccessRequested)An operation needs the user's approval, and the user was asked.
file.readThe first read of a file in each open.
file.mutatedA change was applied: create, write, append, rename, delete, truncate.
file.closeClosing a file failed. Only failures are recorded.
policy.denied / transport.refusedLeveeFS refused an operation because the policy changed under it, or because its connection to the user's session was gone.
FileModifiedA file changed through Levee file access.

A denied path looks to the agent exactly like a path that doesn't exist; the real reason is recorded here.

Plugins (preview)

Plugin events come from the MCP plugin runner. They have the category NetworkRequest. Resource is the plugin as <pluginId>@<version>. See Plugins.

EventDetail
mcp.callThe agent called a plugin. Detail is the plugin's short name (slug), the method, the tool, prompt, or resource name, the outcome (ok, tool-error, protocol-error, crash, revoked, cancelled, unavailable), the duration, and request and response sizes.
server.start / server.readyA plugin server is starting, and is ready.
server.stopA plugin server stopped. Detail gives the reason.
server.start_failedA plugin server could not start. Detail gives the reason.
server.crashA running plugin server ended unexpectedly.
server.parkedA plugin server failed repeatedly, and Levee stopped restarting it.
server.version_changeA plugin server moved to another version of the plugin. Detail gives both versions.
server.client_request_rejectedA plugin server sent a request the runner does not allow, and it was refused.
channel.violationA plugin server broke the communication protocol. The server.crash that follows records its end.

Plugin call arguments and results are never recorded, only names, outcomes, sizes, and durations.

Security events

These indicate Levee blocked or detected something that deserves attention. Consider alerting on all of them.

EventMeaning
SecurityDnsRebindA destination resolved to a private or local address and was refused.
SecuritySniMismatchA connection tried to reach a different host than it claimed.
SecurityCertRejectedA certificate failed validation.
SecuritySignatureInvalidA Levee component failed its signature check and was not started.
SecuritySymlinkDetectedA link that pointed outside an allowed folder was refused.
SecurityPipeDeniedA local connection to a Levee component was refused because its caller couldn't be verified.
SecurityFsAttachRefusedA file-access connection from a sandbox couldn't be verified and was refused.
SecurityWfpDegradedNetwork enforcement for a sandbox couldn't be confirmed. The sandbox is kept blocked.
SecurityAuditOverflowAudit events arrived faster than they could be stored. Affected actions were refused.
SecurityAuditWriteFailedThe audit store failed to write one or more events. Because the store is what failed, this alert is raised in the service log and, when forwarding is on, in Vediram Cloud rather than in the local audit files.

Suggested alerts

AlertQuery idea
Any security eventEventType starts with Security or EventTypeString contains .security.
Spike in denialsCount of http.denied, llm.denied.*, odbc.query.denied per user per hour
Standing exceptionsAccessApproved with detail containing scope=persist
Destructive SQL attemptsodbc.query.denied or odbc.security.dangerous_pattern
Budget exhaustionllm.denied.budget