Roles and permissions
Policy management is gated by workspace role. EgisAI uses four built-in roles:
The
manage_policies permission resolves to Owner + Admin. Every
state-changing endpoint on policies requires this permission; reads
require workspace membership. Role assignments are managed from the
Team page on the dashboard and are themselves audit-logged whenever
they change (user.role_changed).
For Enterprise customers running SAML / OIDC SSO, the workspace role is
the per-user role inside EgisAI. Group-based role provisioning via the
SSO provider’s group claims is on the near-term roadmap.
What’s recorded on every change
Every create, update, toggle, and delete of a policy writes an operator-action audit row to theaudit_log_entries table. The row is
append-only and carries:
A dedicated
policy.toggle action is emitted when a state change is a
pure enable / disable flip (priority, config, name, targets all
unchanged). This lets a reviewer separate one-click on/off flips from
substantive content edits.
How the dashboard surfaces this
The Audit log page shows the operator-action stream live, with filters for action category, actor, resource type, and date range. Every row is clickable; the detail drawer shows the capturedmetadata_json so a
reviewer can see what changed without leaving the page.
Operators with manage_policies permission can also restrict their view
to policy-touching actions only by filtering by resource_type = "policy".
How changes reach your processes
Policies are not pushed; they are pulled by ETag. The SDK in your process holds a cached snapshot of the active policy set and re-polls the control plane periodically with an If-None-Match header carrying the cached ETag. When an operator commits a change on the dashboard, the control plane bumps the ETag and the next poll receives the new snapshot. In practice this means changes propagate to every running SDK process within seconds of an operator clicking Save, without any redeploy or SDK restart on your side. The propagation lag is what an operator should plan for when rolling out a tight new rule — there’s typically a few-second window where in-flight calls are still being evaluated against the previous snapshot.Pausing an agent
Beyond editing a policy, an operator can flip an agent into a paused state from the dashboard’s Agents page. While paused, the SDK refuses every call attributed to that agent before any policy phase runs — no tokens are spent, no prompt text is hashed. The pause is delivered on the same ETag-aware refresh channel as policies, so it takes effect within seconds. Pausing and resuming are themselves audit-logged (agent.pause / agent.resume).
What’s in policies.csv at export time
The Audit-evidence export ZIP carries
a policies.csv inventory snapshot of every policy in your workspace at
the moment of export, including type, phase, priority, enabled state, and
the full config_json. Joined against audit_log.csv (which records
which user edited which policy, when), an auditor has a complete
change-management evidence pack:
- Who is allowed to author policies? →
users.csv(role) + the table above. - When did each policy change, and to what? →
audit_log.csvrows whereresource_type = "policy". - What was the policy set on day X? →
policies.csvsnapshot + the audit-log trail back to day X (the export’s window). - What did each policy do to traffic? →
request_logs.csvrows joined tomatched_policy.
CC8.1 (change management) and ISO 27001 A.8.16 (information
security event monitoring).
What’s on the near-term roadmap
We treat the items below as known gaps and are tracking them as product work, not as marketing claims. Specifically:- Policy version history with one-click restore. A
policy_versionstable that snapshots the full configuration on every change, with a “Restore this version” button on the policy detail drawer that creates a new version equivalent to the old payload. This makes “show me the prior version” a one-click operation instead of a manual reconstruction from the audit metadata. - Two-person approval flow. A tenant-flagged mode where a policy
edit lands as
draft, requires a second authorised user to approve, and is applied only after approval. Operators who don’t enable the flag retain today’s single-approver workflow. - Reviewer-only role. A role between Viewer and Admin that can flag anomalies and request reviews but cannot author policies.
Auditing checklist
When you hand this control set to an internal or external reviewer, the artefacts to deliver are:- Policy authoring scope. The list of users with the
manage_policiespermission (fromusers.csv, filtered to Owner + Admin). - Policy edit history.
audit_log.csvfiltered toresource_type = "policy"for the audit window. - Policy inventory at the close of the window.
policies.csv. - Live verdict on traffic.
request_logs.csvjoined tomatched_policyso the reviewer can confirm each policy actually fired on traffic — the “configured vs enforced” distinction the dashboard already shows. - Agent pause history.
audit_log.csvfiltered toaction LIKE 'agent.%'.
What’s next
Audit-evidence export
The ZIP that carries the change-management evidence pack.
Audit-event schema
The per-call audit row that proves a policy actually fired on traffic.
Contesting a block
Operator review workflow when a decision was wrong.
Trust Center
Live certifications, security posture, and downloadable evidence.