Governance Inheritance
/install governance-inheritance
Governance Inheritance
This skill provides a hierarchical policy inheritance system that allows policies to be defined at multiple levels and automatically inherited by child contexts.
Policy Hierarchy Levels
Policies cascade from broad to specific:
Organization (broadest)
↓
Team
↓
Project
↓
Session (most specific)
Inheritance Rules
- Child overrides parent: More specific policies override broader ones
- Additive by default: Policies merge unless explicitly overridden
- Explicit deny wins: A
denyat any level blocks the action - Require explicit allow: Actions without an explicit allow are blocked in strict mode
Policy Structure
Each level contains a policies.yaml file:
# policies.yaml
version: "1.0"
level: organization # organization | team | project | session
parent: null # path to parent policy (null for root)
# Policy blocks
policies:
http:
- pattern: "*.internal.company.com"
action: allow
scope: ["GET", "POST"]
- pattern: "*"
action: deny
reason: "External HTTP requires approval"
shell:
- command: "git *"
action: allow
- command: "rm -rf /*"
action: deny
reason: "Destructive command blocked"
- command: "*"
action: require_approval
file:
read:
- path: "~/workspace/*"
action: allow
- path: "/etc/*"
action: deny
write:
- path: "~/workspace/*"
action: allow
- path: "*"
action: require_approval
# Inheritance configuration
inheritance:
mode: merge # merge | override | isolate
exceptions: # Policies that don't inherit
- shell.sudo
extensions: # Child can extend these
- http.allowlist
Quick Start
1. Initialize Organization Policies
python scripts/init_governance.py --level organization --path ~/.openclaw/governance
2. Create Team-Level Override
python scripts/init_governance.py --level team --name engineering --parent ~/.openclaw/governance/organization
3. Evaluate Policy for Action
const result = await context.tools.governanceInheritance.evaluate({
action: "http",
details: { method: "GET", url: "https://api.example.com/data" },
context: {
sessionId: "sess_123",
project: "my-project",
team: "engineering"
}
});
// result: { allowed: true } | { allowed: false, reason: "...", level: "organization" }
Policy Resolution
When evaluating an action, the system:
- Collects all applicable policies from root to leaf
- Merges according to inheritance rules
- Evaluates against the most specific matching rule
- Returns decision with provenance (which level decided)
Conflict Resolution
| Parent | Child | Result |
|---|---|---|
| allow | allow | allow |
| allow | deny | deny (child wins) |
| allow | require_approval | require_approval |
| deny | allow | deny (deny always wins) |
| deny | deny | deny |
Session Context Integration
Policies automatically load based on session context:
# Session inherits from project → team → organization
session_context:
organization: "acme-corp"
team: "engineering"
project: "api-gateway"
session: "sess_abc123"
# Policy resolution path:
# ~/.openclaw/governance/organizations/acme-corp/policies.yaml
# ~/.openclaw/governance/teams/engineering/policies.yaml
# ~/.openclaw/governance/projects/api-gateway/policies.yaml
# ~/.openclaw/governance/sessions/sess_abc123/policies.yaml
Available Tools
evaluate
Evaluates an action against the inherited policy chain.
Parameters:
action(string): Action type (http, shell, file, browser)details(object): Action-specific detailscontext(object): Session context for policy resolution
Returns:
{
allowed: boolean,
reason?: string,
level: string, // Which policy level made the decision
policy?: string, // Specific policy that matched
requiresApproval?: boolean
}
initPolicyLevel
Initializes a new policy level.
Parameters:
level(string): organization, team, project, or sessionname(string): Identifier for this levelparent(string, optional): Path to parent policypath(string): Where to create the policy
validatePolicyChain
Validates a policy chain for conflicts or errors.
Parameters:
context(object): Session context to validate
Returns:
{
valid: boolean,
errors: string[],
warnings: string[]
}
Configuration
Set the governance root in your environment:
export GOVERNANCE_ROOT="~/.openclaw/governance"
Or in openclaw.json:
{
"skills": {
"governance-inheritance": {
"env": {
"GOVERNANCE_ROOT": "~/.openclaw/governance"
}
}
}
}
Policy Examples
Organization Level (Restrictive Base)
level: organization
policies:
http:
- pattern: "*.company.internal"
action: allow
- pattern: "*"
action: require_approval
shell:
- command: "*"
action: require_approval
Team Level (Engineering - More Permissive)
level: team
parent: ../organization
inheritance:
mode: merge
policies:
http:
- pattern: "*.github.com"
action: allow
- pattern: "*.npmjs.com"
action: allow
shell:
- command: "git *"
action: allow
- command: "npm *"
action: allow
- command: "docker *"
action: allow
Project Level (Specific Overrides)
level: project
parent: ../engineering
inheritance:
mode: merge
policies:
http:
- pattern: "api.stripe.com"
action: allow # This project uses Stripe
file:
write:
- path: "./dist/*"
action: allow
Integration with GovernClaw
This skill works alongside governclaw-middleware:
// governclaw-middleware calls governance-inheritance for policy resolution
const policyResult = await context.tools.governanceInheritance.evaluate({
action: "http",
details: { method, url, headers },
context: sessionContext
});
if (!policyResult.allowed) {
return { blocked: true, reason: policyResult.reason };
}
Best Practices
- Start restrictive at organization level - Require approval for everything
- Grant specific permissions at lower levels - Teams/projects opt into what they need
- Document exceptions - Use
reasonfield to explain why policies exist - Regular audits - Run
validatePolicyChainto catch conflicts - Version your policies - Use the
versionfield to track changes
Error Handling
Always check for policy evaluation errors:
const result = await context.tools.governanceInheritance.evaluate({...});
if (result.error) {
// Policy chain misconfiguration
console.error("Policy error:", result.error);
return { error: "Governance misconfigured" };
}
if (!result.allowed) {
// Policy blocked the action
console.log("Blocked by", result.level, "policy:", result.reason);
}
See Also
references/policy-schema.md- Complete policy YAML schemareferences/inheritance-algorithm.md- Detailed inheritance logicscripts/init_governance.py- Initialize policy levelsscripts/validate_chain.py- Validate policy chains
- 确保已安装 OpenClaw(本地或 Docker 部署)
- 在对话框中输入安装命令:
/install governance-inheritance - 安装完成后,直接呼叫该 Skill 的名称或使用
/governance-inheritance触发 - 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
Governance Inheritance 是什么?
Hierarchical policy inheritance system for OpenClaw agents. Enables policies to be defined at organization, team, project, and session levels with automatic... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 141 次。
如何安装 Governance Inheritance?
在 OpenClaw 或 Claude Code 对话框中运行命令「/install governance-inheritance」即可一键安装,无需额外配置。
Governance Inheritance 是免费的吗?
是的,Governance Inheritance 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。
Governance Inheritance 支持哪些平台?
Governance Inheritance 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。
谁开发了 Governance Inheritance?
由 aakash2289(@aakash2289)开发并维护,当前版本 v1.0.0。