What gets exported
An export destination is scoped to one record source:- Alerts — the alerts Oso raises, enriched with the policy decision and approval outcome behind each one.
- Events — the raw agent activity Oso ingests (tool calls, messages, responses).
How it works
Oso writes each new record to your bucket as its own gzipped JSON object:- Key:
<prefix>/<environment>/<alert|event>/<record-id>.json.gz— you choose the key prefix (required);<environment>is your Oso environment id and<alert|event>is the record source. - Headers:
Content-Type: application/jsonandContent-Encoding: gzip.
Record schema
Every object is a flat JSON envelope of the record’s own fields, tagged withrecord_type (alert or event), with the record’s full detail nested under data. Fields marked optional are omitted when empty.
Alert record
An alert is a deduplicated detection — itscount is how many times it fired.
Alert
Event record
An event is a single raw agent activity — the firehose you correlate in your SIEM. For atool.request event, data is the tool call itself, including its parameters.
Event
Prerequisites
- An Oso for Agents environment with alerts or events flowing.
- An S3 bucket (or S3-compatible store) you control.
- Permission to manage connections in the Oso environment.
Create an export destination
1
Open Connections
In Oso, open your environment and go to Connections, where export destinations are configured.
2
Add the destination
Add an export destination, choose the record source (Alerts or Events) and destination type Amazon S3, and enter the bucket, region, and a key prefix (the bucket and prefix are both required).
3
Choose authentication
Pick an authentication method (below) and save.
Authentication
Role assumption
Oso assumes an IAM role in your AWS account to write objects, so no long-lived credentials ever leave your account. Oso generates anExternalId that you must use to restrict your trust policy, preventing other users from using Oso to send unauthorized events by guessing your role ARN.
When you set up a role-assumption destination, Oso shows two policies for you to apply, with the exact principal ARN, ExternalId, and bucket filled in:
1
Copy the policies
Copy the trust policy and the permissions policy Oso displays.
2
Create the role
Create an IAM role in your account using the trust policy as its trust relationship, and attach the permissions policy.
3
Bind the role
Paste the role’s ARN back into Oso and save. Oso verifies the role can only be assumed with the
ExternalId before it enables delivery.Trust policy
Permissions policy
The console scopes this to your chosen key prefix (
<bucket>/<prefix>/*) so Oso can write only under that prefix. The bucket and prefix are both required.Access keys
For S3-compatible object stores (such as MinIO or Ceph), or where role assumption isn’t available, provide an access key ID and secret access key for a principal that cans3:PutObject to your bucket. Oso encrypts the secret at rest.
On the managed Oso Cloud service, role assumption is the supported method for AWS. Access keys are available on self-hosted deployments and for S3-compatible stores.