Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Logging

cicd-sensor logs are delivered as gzip-compressed JSONL batches. The log schema is maintained in Protocol Buffers, and the source of truth is proto/cicd_sensor/log/v1beta1.

With manager delivery, the Agent sends these JSONL batches to the manager. The manager delivers each batch to the configured sink.

Log types

Each log entry’s log_type field uses the dotted form cicd_sensor.<short>. This is the routing key for downstream consumers. Manager-side configuration keys and sink object paths use the short form (summary, detection, runtime_event).

log_type valueShort namePurposeTiming
cicd_sensor.summarysummaryFinal job summary. Entry point for reviewing runtime results per job.Generated when the job finalizes.
cicd_sensor.detectiondetectionPer-rule-hit log for real-time detection and triage. Includes both detect and collect actions.Streamed while the job is running.
cicd_sensor.runtime_eventruntime_eventDetailed runtime events for incident response and forensics.Streamed while the job is running.

Common fields

Every log entry carries these top-level fields, regardless of log type.

FieldDescription
timestampUTC, RFC 3339
log_typeOne of the log types listed above (e.g. cicd_sensor.summary)
service_nameIdentifies the emitter of this log. Currently always cicd-sensor
service_versionAgent build version (e.g. v0.0.27)
schema_versionSchema version of this log_type. Bumped on breaking changes
log_idUUID(v7) per log row
scopehost for self-hosted configuration, project for GitHub Action invocations
runner_typeRunner type, such as machine

Job context

Every log entry includes a job object. Use these fields to group logs for the same CI job. Other fields add useful context for search, reports, and triage.

FieldDescription
providergithub or gitlab
provider_hostgithub.com, gitlab.com, or a self-managed host
project_pathRepository / project path
job_linkJob URL in the provider
commit_shaTarget commit
ref_nameBranch or tag
triggerCI event or trigger
actor_idProvider actor ID
actor_nameProvider actor name
github_run_idGitHub Actions run ID
github_jobGitHub Actions job id/key from GITHUB_JOB
github_run_attemptGitHub Actions run attempt
github_runner_tracking_idGitHub runner tracking ID
github_workflow_refGitHub Actions workflow file ref
github_workflow_shaGitHub Actions workflow file commit SHA
github_workflowGitHub Actions workflow name
gitlab_job_idGitLab CI job execution ID
gitlab_job_nameGitLab CI job name
gitlab_config_ref_uriGitLab CI config provenance URI

Runtime event format

Both the detection and runtime_event logs include an event object. This object describes the runtime behavior that triggered a rule hit or was emitted as a runtime event.

FieldDescription
idRuntime event UUID(v7). Unique per captured event
typeprocess_exec, network_connect, file_open, domain, and other event types
tagsTags attached to the event
processPID, executable path, argv, and ancestor processes
event-specific payloadFields for the specific event type, such as network destination, file path, or domain

argv output sanitization

process.argv and process.ancestors.argv can contain credentials. Rules are evaluated against the captured process context, but logs and reports use an output-sanitized form.

In output, argv values that look like tokens, passwords, secrets, credential material, or auth headers are replaced with <redacted>. Long argv values are shortened and marked with <truncated, N bytes>.

This means a rule can match full argv content even when the corresponding log entry shows only a redacted or shortened value.

How to use the logs

QuestionFirst log to check
What happened across the job?summary
Which rules hit?detection
Which process / network / file events happened around a detection?runtime_event
How do I follow a detection through the rest of the job?Join the detection’s job fields to runtime_event and read by timestamp to trace the job’s full activity.

When building a compatible log consumer, use the linked proto schema as the exact field reference.

For build verification rather than detailed log consumption, see Attestation predicate.