Skip to main content

Event Types

OpenBox classifies agent operations into 24 semantic event types. These types enable precise policy writing and meaningful analytics.

Event Categories

LLM Operations

TypeDescriptionRisk Level
LLM_CALLCall to language model for completion/chatMedium
LLM_EMBEDDINGGenerate embeddings from textLow

Data Operations

TypeDescriptionRisk Level
DATABASE_READRead from databaseLow-Medium
DATABASE_WRITEWrite/update/delete database recordsMedium-High
FILE_READRead from filesystemLow-Medium
FILE_WRITEWrite to filesystemMedium-High
CACHE_READRead from cache layerLow
CACHE_WRITEWrite to cache layerLow

External Operations

TypeDescriptionRisk Level
EXTERNAL_API_CALLCall to external APIMedium-High
WEBHOOK_SENDSend webhook to external systemMedium-High
EMAIL_SENDSend emailMedium

Messaging Operations

TypeDescriptionRisk Level
MESSAGE_QUEUE_SENDPublish to message queueMedium
MESSAGE_QUEUE_RECEIVEConsume from message queueLow

Authentication Operations

TypeDescriptionRisk Level
AUTH_REQUESTRequest authentication/authorizationLow
AUTH_GRANTAuthentication grantedLow
AUTH_DENYAuthentication deniedLow

Workflow Operations

TypeDescriptionRisk Level
WORKFLOW_STARTWorkflow execution beginsLow
WORKFLOW_COMPLETEWorkflow execution endsLow
ACTIVITY_STARTActivity execution beginsLow
ACTIVITY_COMPLETEActivity execution endsLow

Agent Operations

TypeDescriptionRisk Level
AGENT_GOAL_SETAgent goal definedLow
AGENT_GOAL_UPDATEAgent goal modifiedMedium
AGENT_DECISIONAgent makes autonomous decisionMedium
AGENT_ACTIONAgent takes actionVariable

Using Event Types

In Policies

Reference event types in OPA policies:

package openbox

import rego.v1

default result := {"decision": "CONTINUE", "reason": ""}

# Allow all read operations
result := {"decision": "CONTINUE", "reason": "Database read allowed"} if {
input.operation.type == "DATABASE_READ"
}

# Require approval for external calls
result := {"decision": "REQUIRE_APPROVAL", "reason": "External API calls require review"} if {
input.operation.type == "EXTERNAL_API_CALL"
}

# Block file writes for low-trust agents
result := {"decision": "BLOCK", "reason": "File writes blocked for lower-tier agents"} if {
input.operation.type == "FILE_WRITE"
input.agent.trust_tier >= 3
}

In Monitoring

Filter sessions by event type:

  • View all EXTERNAL_API_CALL events
  • Track DATABASE_WRITE frequency
  • Alert on AUTH_DENY spikes

Event Metadata

Each event includes:

{
"event_id": "evt_abc123",
"type": "DATABASE_WRITE",
"timestamp": "2026-02-26T09:14:32.001Z",
"session_id": "ses_xyz789",
"agent_id": "agt_def456",

"target": "customers.update",
"parameters": {
"table": "customers",
"operation": "update",
"record_count": 1
},

"governance": {
"decision": "ALLOW",
"policies_evaluated": ["default", "customer-data"],
"trust_score_at_time": 87
},

"telemetry": {
"duration_ms": 45,
"trace_id": "abc123def456"
}
}