ApiKeyScope
AgentPrism.Abstractions.dllAn authority scope an API key may open.
[JsonConverter(typeof(JsonStringEnumConverter<ApiKeyScope>))]public enum ApiKeyScopeFields
Section titled “Fields”AgentsAdmin = 3
Definition writes, version rollback.
AgentsRead = 2
Catalog and definition reads.
AuditRead = 16
Audit trail reads.
EvalsAdmin = 10
Eval suite/case writes: saving, deleting, promoting a case from a run. Triggering a run is not included in this scope — see ApiKeyScope.RunsWrite.
EvalsRead = 9
Eval suite/case/run reads: listing, single fetch, online evaluation summary.
ExperimentsAdmin = 12
Experiment writes: saving, deleting, starting/stopping, canary policy.
ExperimentsRead = 11
Experiment reads: listing, single fetch, results, canary status.
ExternalInvoke = 4
The external surface (MCP server, A2A). Kept separate: an internal automation key must not open the externally exposed surface on its own.
KnowledgeAdmin = 6
Knowledge-base writes: document upload, deletion.
KnowledgeRead = 5
Knowledge-base reads: collection listing, semantic search.
PlatformAdmin = 14
Platform operations configuration writes and running retention cleanup.
PlatformRead = 13
Platform operations configuration and health reads: tenant registration, quotas, retention, scheduling, webhooks, diagnostics, provider health.
RunsRead = 0
Run reads, event stream, statistics.
RunsWrite = 1
Starting a run, cancelling, giving approval.
SecurityAdmin = 15
Surfaces that generate/extend authority: API keys, skill script grants, MCP OAuth start. The only self-elevating scope — should be granted rarely.
WorkflowsAdmin = 8
Workflow definition writes: saving, deleting. Running is not included in this scope — see ApiKeyScope.RunsWrite.
WorkflowsRead = 7
Workflow definition reads: catalog listing, graph, checkpoint/request listing.
Remarks
Section titled “Remarks”A scope does not replace role policies, it narrows them.
A key’s effective authority is the role ∩ scope set.
The scope list is closed: free-text scopes are not accepted, an unknown value is rejected at creation time. Adding a new member to this type is not a breaking change; making the list extensible from the UI requires a separate, deliberate decision (an authority language is a security surface).