Skip to main content
Outcome: You can find Control Plane audit logs by source, search them, and restrict who can view logs. Prerequisites: Access to the Formal console, or an API key with Logs access. See Permissions.

Overview

Every authenticated request to Formal’s is written as an audit log. That includes calls from the , the public API, Terraform, and machine auth such as AWS SigV4. Control Plane logs share the same Logs experience as Connector, Endpoint, and workflow activity. Use the Source filter to switch streams. See Logs for search, aggregations, export, and retention.

Log Sources

Formal tags every log with a source field. Choose a source in the Formal console, or filter with Quickwit (source:control-plane).
Prefer source over event_type when filtering Control Plane activity. Control Plane logs use source:control-plane and fields under control_plane_request.*. Connector and Endpoint logs use event_type values such as request or session-start.
Log configurations (encryption and policy-input retention) apply to Connector and Endpoint sources only. They do not change Control Plane API audit logs.

What Gets Logged

Formal records a Control Plane log for each authenticated API call after the handler returns. Unauthenticated traffic (for example health checks) is not logged. Each entry includes: control_plane_request.policy_action audits whether that API call was allowed. It is separate from who may view logs later (see Permissions for Viewing Logs).

View Control Plane Logs

1

Open Logs

Go to Logs in the Formal console.
2

Select Control Plane

Set Source to Control Plane. The table columns switch to command, service, user, method, and policy action.
3

Inspect an entry

Click a row to open the details panel. Review arguments, identity, and any error.
Verify: Run a Control Plane change (for example update a policy), then confirm a matching row appears under Source → Control Plane.

Search Examples

Control Plane Field Reference

Permissions for Viewing Logs

There is no separate permission per log source. Access to Connector, Desktop, Control Plane, and workflow logs is gated by the Logs application in Control Plane permissions. If a user cannot open Logs or call Logs APIs, they cannot view Control Plane audit logs in Formal. Formal returns HTTP 403 for blocked requests.

Restrict Logs to Security Admins

Users outside security-admins cannot list or manage logs. Everyone else keeps allow-by-default access to other applications.

Allow Read-Only Logs Access

Auditors can search and view logs (List, Get) but cannot change log configurations or related write commands.

Useful Logs Commands

Permissions evaluate the Logs application as a whole. They do not filter by source. A user who can read Logs can query Control Plane, Connector, Desktop, and workflow logs (subject to any query they run).

Forwarding Control Plane Logs

When you configure a Log Integration, Formal forwards Control Plane logs with every other source. For object storage (S3, GCS, Azure Blob), Control Plane objects use this key prefix:
Other sources use the same layout with connector, desktop, or workflow in place of control-plane.

Best Practices

Alert on control_plane_request.policy_action:deny in Formal or your SIEM. Spikes often mean misconfigured permissions or probing.
Restrict the Logs application to security or audit groups. Control Plane logs include API arguments and identity context.
Use Control Plane logs to audit who changed policies, connectors, and users. Filter by control_plane_request.command.type:update or :delete.
Keep console search for day-to-day work. Forward to S3 or your SIEM for multi-year compliance archives.

Next Steps

Logs

Search, aggregations, export, and retention

Permissions

Configure OPA access to Formal applications

Log Integration

Forward logs to S3, Datadog, or Splunk

Logs API

Query logs with the public API (LogsService)