Skip to content

Audit log

Every request that passes through Arbitex Gateway produces an audit log entry. The audit log is a tamper-evident record of what happened: which user sent a request, which provider received it, what the 3-tier DLP pipeline detected, what the Policy Engine decided, and what action was taken. Log entries are immutable — no user role, including account owner, can modify or delete them.

The audit log is a 90-day buffer. Your security information and event management (SIEM) system is the record of truth for long-term retention. Arbitex provides the real-time pipeline and the integrity verification mechanism; your infrastructure owns the archive.

Each audit log entry contains the following fields:

FieldTypeDescription
request_idstringUnique identifier for the request — present in the X-Request-ID response header
timestampstringUTC timestamp with millisecond precision (ISO 8601)
org_idstringOrganization identifier
user_idstringIdentity of the user who sent the request, from the authentication context
providerstringThe AI provider that received the request (e.g., anthropic, openai)
modelstringThe model identifier used to serve the request
routing_modestringRouting mode: Single, Compare, or Summarize
FieldTypeDescription
outcomestringFinal outcome: ALLOW, BLOCK, CANCEL, REDACT, or ROUTE_TO
matched_pack_idstringID of the policy pack containing the matching rule; null if no rule matched
matched_rule_idstringID of the specific rule that matched; null if no rule matched
matched_sequenceintegerSequence position of the matching rule in its pack
match_reasonstringHuman-readable explanation of why the rule matched
action_takenstringThe enforcement action that was executed
applies_tostringWhether the match was on input, output, or both
FieldTypeDescription
dlp_findingsarrayList of findings from the 3-tier DLP pipeline. Each finding includes: entity_type, tier (1, 2, or 3), confidence, action, and bundle_id if the finding triggered a Compliance Bundle rule
entity_types_detectedstring[]Deduplicated list of entity types detected across all DLP tiers
FieldTypeDescription
credint_enabledbooleanWhether Credential Intelligence was active for this request
credint_hitbooleanWhether credential material in the request matched the breach corpus
frequency_bucketstringExposure severity: Critical, High, Medium, Low, or null if no match
context_typestringContext in which the credential appeared: password, api_key, connection_string, or similar
sha1_prefixstring8-character SHA-1 prefix used for corpus lookup — not the full credential hash
credint_confidencefloatDetection confidence score (0.0–1.0)
FieldTypeDescription
src_ipstringClient IP address, from X-Forwarded-For or direct connection
src_country_codestring2-letter country code for the source IP
src_country_namestringCountry name for the source IP
src_regionstringRegion or state
src_citystringCity
src_ispstringISP name
src_asnstringAutonomous system number
src_asn_orgstringOrganization name for the ASN
src_arin_orgstringARIN organization (when available)
dst_ipstringIP address of the model provider endpoint
dst_country_codestringCountry code for the provider endpoint
dst_asnstringASN for the provider endpoint
dst_asn_orgstringOrganization name for the provider endpoint ASN

GeoIP enrichment happens at event time using offline datasets loaded into memory at startup. If a dataset is unavailable, the corresponding GeoIP fields are null — the audit entry is still written.

FieldTypeDescription
stage_latenciesobjectMilliseconds for each pipeline stage: intake, payload_analysis, policy_evaluation, provider_call
total_latency_msintegerEnd-to-end latency for the request in milliseconds
FieldTypeDescription
siem_forwardedbooleanWhether the entry was forwarded to your configured SIEM connector
hmacstringHash-based message authentication code (HMAC) for this entry — used for tamper-evidence verification
prev_hmacstringHMAC of the preceding audit entry — the chain link

Audit log entries are chained using HMAC to provide tamper evidence. Each entry’s HMAC is computed over a fixed set of 17 fields including all request metadata, source and destination IP addresses, and the preceding entry’s HMAC value.

This chain means that modifying or deleting any single audit entry invalidates the HMAC of every subsequent entry in the sequence.

Fields included in HMAC computation:

  • All request metadata fields (request_id, timestamp, org_id, user_id, provider, model, routing_mode)
  • src_ip, dst_ip (observed network facts)
  • Policy evaluation fields (outcome, matched_pack_id, matched_rule_id, action_taken)
  • prev_hmac (the chain link from the preceding entry)

Fields excluded from HMAC computation:

  • GeoIP enrichment fields (derived from datasets that may be updated between verifications)
  • CredInt enrichment fields (derived, not observed)

This separation means that upgrading your GeoIP datasets does not invalidate existing HMAC chains.

flowchart LR
IV["Init Vector"] --> E1["Entry 1\nHMAC₁ = HMAC(fields + IV)"]
E1 --> E2["Entry 2\nHMAC₂ = HMAC(fields + HMAC₁)"]
E2 --> E3["Entry 3\nHMAC₃ = HMAC(fields + HMAC₂)"]
E3 --> EN["Entry N\nHMACₙ = HMAC(fields + HMACₙ₋₁)"]
style E2 fill:#fdd,stroke:#c33
linkStyle 1 stroke:#c33

If any entry is tampered with, every subsequent HMAC in the chain becomes invalid, making the point of modification immediately detectable.

To verify the integrity of your audit log:

  1. Export the audit log for a time range using the export API
  2. Sort entries by timestamp in ascending order
  3. Starting from the first entry (where prev_hmac is the initialization vector), recompute the HMAC for each entry using the HMAC secret available in Settings > Audit > HMAC Keys
  4. Compare each computed HMAC against the stored hmac field
  5. Any mismatch indicates tampering or corruption at that point in the chain — all entries after the mismatch are suspect

The HMAC algorithm is HMAC-SHA256. The initialization vector for the first entry in a sequence is documented in the HMAC key metadata.

Important: Store your HMAC keys outside the Arbitex platform. If the platform were compromised, an attacker with access to both the log entries and the HMAC keys could recompute a valid-appearing chain. Your SIEM is the appropriate location for HMAC key escrow.

Arbitex retains audit logs for 90 days. After 90 days, entries are purged from the platform database. The 90-day window covers quarterly compliance review cycles and typical incident response timelines.

For long-term retention, configure SIEM integration to stream audit events in real time. Your SIEM becomes the record of truth for any audit period beyond 90 days. Arbitex does not offer extended retention within the platform.

Export audit log entries via the admin API:

Terminal window
GET /api/admin/orgs/{org_id}/audit-log?start=2026-03-01T00:00:00Z&end=2026-03-08T23:59:59Z
Authorization: Bearer your-arbitex-api-key
Accept: application/json
{
"entries": [
{
"request_id": "req_01HZ8X9K2P3QR4ST5UV6WX7YZ",
"timestamp": "2026-03-08T14:32:01.847Z",
"org_id": "org_acme",
"user_id": "usr_alex_johnson",
"provider": "anthropic",
"model": "claude-sonnet-4-20250514",
"routing_mode": "Single",
"outcome": "ALLOW",
"matched_pack_id": null,
"matched_rule_id": null,
"dlp_findings": [],
"credint_hit": false,
"siem_forwarded": true,
"hmac": "a3f8d2...",
"prev_hmac": "b1c9e4..."
}
],
"cursor": "eyJ0aW1lc3RhbXAiOiIyMDI2LTAzLTA4VDE0OjMyOjAxLjg0N1oifQ=="
}

Use the cursor parameter in subsequent requests to paginate through large result sets. The cursor is opaque — do not parse or construct it manually.

Query parameters:

ParameterTypeDescription
startstringISO 8601 timestamp — start of the time range (inclusive)
endstringISO 8601 timestamp — end of the time range (inclusive)
limitintegerMaximum entries per page. Default: 100. Maximum: 1000.
cursorstringPagination cursor from a previous response
outcomestringFilter by outcome value: ALLOW, BLOCK, CANCEL, REDACT, ROUTE_TO
user_idstringFilter by user identifier

Arbitex streams audit events to external SIEM platforms using the Open Cybersecurity Schema Framework (OCSF) format and a connector framework. Events are forwarded in near-real-time, typically within seconds of the originating request.

OCSF is an open standard that provides a normalized event schema compatible with major SIEM platforms. Arbitex audit events are mapped to OCSF event classes:

Event typeOCSF classClass ID
DLP findingsSecurity Finding2001
Authentication eventsAuthentication3002
Configuration changesConfiguration State5002
Compliance bundle activationsCompliance5004

Each event includes the OCSF metadata envelope (version, product, vendor, event time) alongside the Arbitex-specific fields. The full Arbitex OCSF field mapping is available in the API reference.

PlatformConnector mechanism
SplunkHTTP Event Collector (HEC)
Microsoft SentinelLog Analytics API
IBM QRadarLog Source API
Elastic SecurityElasticsearch ingest API
Sumo LogicHTTP Source
DatadogLogs API

SIEM integration is configured at the organization level through the admin API:

Terminal window
POST /api/admin/orgs/{org_id}/siem/connectors
Content-Type: application/json
{
"platform": "splunk",
"endpoint": "https://your-splunk-instance.example.com:8088/services/collector",
"auth": {
"type": "hec_token",
"token": "your-hec-token"
},
"format": "ocsf",
"enabled": true
}
{
"connector_id": "con_splunk_01",
"platform": "splunk",
"status": "active",
"created_at": "2026-03-08T14:00:00Z"
}

You can configure one connector per SIEM platform per organization. Multiple platforms may be active simultaneously — for example, streaming to both Splunk and Sentinel concurrently.