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
- Make sure OpenClaw is installed (local or Docker)
- Run the install command in chat:
/install governance-inheritance - After installation, invoke the skill by name or use
/governance-inheritance - Provide required inputs per the skill's parameter spec and get structured output
What is Governance Inheritance?
Hierarchical policy inheritance system for OpenClaw agents. Enables policies to be defined at organization, team, project, and session levels with automatic... It is an AI Agent Skill for Claude Code / OpenClaw, with 141 downloads so far.
How do I install Governance Inheritance?
Run "/install governance-inheritance" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.
Is Governance Inheritance free?
Yes, Governance Inheritance is completely free, licensed under MIT-0. You can download, install and use it at no cost.
Which platforms does Governance Inheritance support?
Governance Inheritance is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).
Who created Governance Inheritance?
It is built and maintained by aakash2289 (@aakash2289); the current version is v1.0.0.