Dome Systems

Rules

Control which tools and models each agent is allowed to use

Rules are Cedar permit and forbid policies Dome evaluates on every governed tool or model request. They decide which calls an admitted agent may make after Gateway access.

Refer to Rules for how to write, validate, simulate, and apply Cedar bundles. All tools require workspace context.

Rules

dome_rules_deploy

Deploy a bundle of Cedar authorization rules. Each file has a name and Cedar policy content. Defaults to workspace scope if scope_kind/scope_id are omitted. Use dome_agents_assign_policy for agent-scoped rules.

ParameterTypeRequiredDescription
filesarrayYesArray of {name, content} objects — Cedar rule files
namestringNoOptional friendly display name for this rule bundle
scope_kindstringNoScope kind: tenant, workspace, agent (defaults to workspace if a workspace context is active)
scope_idstringNoScope ID (workspace or agent UUID)
Requires rules.deploy.
Example tool call
{
  "name": "dome_rules_deploy",
  "arguments": {
    "files": [
      {
        "name": "allow-code-search.cedar",
        "content": "permit(\n  principal,\n  action == Dome::Action::\"mcp:call\",\n  resource == Dome::MCPTool::\"code-search\"\n);"
      }
    ],
    "name": "allow-code-search"
  }
}

Cedar policies use a declarative syntax. Use dome_rules_validate to check syntax before deploying.

The response includes an advisory warnings array. After a successful deploy, the control plane walks every policy for Dome::MCPTool references and cross-checks each (connection, tool) pair against the workspace's persisted MCP tool catalog. Mismatches surface as ValidationWarning entries (file + message) — a typo or rename is flagged, but the deploy still succeeds. Warnings are only emitted for workspace- and agent-scoped bundles; tenant-scoped deploys skip this check because the catalog is workspace-keyed.

dome_rules_get_active

Get the currently active rule bundle at the specified scope. Defaults to workspace scope. For agent-specific rules, use scope_kind="agent" and scope_id=<agent-id>, or use dome_agents_get_policies.

ParameterTypeRequiredDescription
scope_kindstringNoScope kind: tenant, workspace, agent
scope_idstringNoScope ID
Requires rules.view.

dome_rules_validate

Validate Cedar rule files without deploying. Returns errors and warnings.

ParameterTypeRequiredDescription
filesarrayYesArray of {name, content} objects — Cedar rule files
Requires rules.view.
Example tool call
{
  "name": "dome_rules_validate",
  "arguments": {
    "files": [
      {
        "name": "draft.cedar",
        "content": "permit(\n  principal,\n  action == Dome::Action::\"mcp:call\",\n  resource\n);"
      }
    ]
  }
}

dome_rules_generate

Generate starter Cedar authorization rules. Returns a Cedar policy with blanket mcp:discover permit and comments explaining how backend tool availability works.

ParameterTypeRequiredDescription
———No parameters
Requires rules.view.

Simulate

dome_rules_simulate

Simulate an authorization decision against the active rules without actually performing the action.

ParameterTypeRequiredDescription
agent_idstringYesAgent ID (or name — resolved to UUID) to simulate as the caller
actionstringYesAction to evaluate (e.g., mcp:call, mcp:discover)
resourcestringYesResource identifier
resource_typestringYesResource type: mcp_tool, llm_model, resource
contextobjectNoAdditional context key-value pairs
actas_substringNoAct-as subject identifier (end-user the agent acts on behalf of)
actas_emailstringNoAct-as email
actas_rolesstringNoAct-as roles (comma-separated)
actas_groupsstringNoAct-as groups (comma-separated)
Requires rules.view.
Example tool call
{
  "name": "dome_rules_simulate",
  "arguments": {
    "agent_id": "code-reviewer",
    "action": "mcp:call",
    "resource": "mcp_tool/code-search",
    "resource_type": "mcp_tool"
  }
}

dome_rules_simulate_result

Get the result of a rule simulation run. If the simulation is still running, the status is pending or running — call again after a moment to check for completion.

ParameterTypeRequiredDescription
idstringYesSimulation ID
Requires rules.view.

Versions

dome_rules_list_versions

List historical rule bundle versions at the specified scope. Defaults to workspace scope.

ParameterTypeRequiredDescription
scope_kindstringNoScope kind: tenant, workspace, agent
scope_idstringNoScope ID
limitnumberNoMaximum results (default: 20)
Requires rules.view.

Returns each version with its bundle ID, name, deploy timestamp, and deployer.

dome_rules_rollback

Rollback to a previously deployed rule bundle by its ID. The server reads the bundle's scope from the stored row — no scope_kind/scope_id needed.

ParameterTypeRequiredDescription
bundle_idstringYesBundle ID (UUID) from dome_rules_list_versions
Requires rules.rollback.

Rollback immediately changes the active rules. All subsequent authorization decisions use the rolled-back bundle.

Agent policies

dome_agents_assign_policy

Deploy Cedar rules scoped to a specific agent. These rules are evaluated in addition to workspace-level rules. Cedar forbid at workspace scope overrides permit at agent scope.

ParameterTypeRequiredDescription
agent_idstringYesAgent ID to assign rules to
filesarrayYesArray of {name, content} objects — Cedar rule files
Requires rules.deploy.
Example tool call
{
  "name": "dome_agents_assign_policy",
  "arguments": {
    "agent_id": "code-reviewer",
    "files": [
      {
        "name": "agent-policy.cedar",
        "content": "permit(\n  principal,\n  action == Dome::Action::\"mcp:call\",\n  resource == Dome::MCPTool::\"code-search\"\n);"
      }
    ]
  }
}

dome_agents_get_policies

Get the Cedar rules currently assigned to a specific agent (agent-scope only; does not include inherited workspace/tenant/org rules). To see workspace rules, use dome_rules_get_active.

ParameterTypeRequiredDescription
agent_idstringYesAgent ID
Requires rules.view.

Next steps

Write and simulate from Govern. Evaluation semantics and Cedar catalogs sit under Concepts and Reference:

On this page

Was this page helpful?