symbiont
// AI-native agent runtime with typestate-enforced ORGA reasoning loop, Cedar policy authorization, knowledge bridge, zero-trust security, multi-tier sandboxing, webhook verification, markdown memory, skill scanning, metrics, scheduling, and a declarative DSL
Symbiont Governance for OpenClaw
Bring Symbiont's zero-trust AI agent governance to your OpenClaw workflow. Enforce Cedar authorization policies, verify MCP tool integrity with SchemaPin, scan skills with ClawHavoc, maintain cryptographic audit trails, and manage governed agents.
This skill is the OpenClaw counterpart to symbi-claude-code and symbi-gemini-cli. All three deliver the same Symbiont governance capabilities, adapted for each platform's skill/extension format.
A companion SOUL.md for the Symbiont governance agent personality is available separately on onlycrabs.ai.
Prerequisites
- OpenClaw installed
jqfor JSON parsing (apt install jq/brew install jq)symbibinary on PATH (optional; skill degrades gracefully without it)
Install symbi:
# Via Homebrew (recommended)
brew tap thirdkeyai/tap && brew install symbi
# Or from source
cargo install symbi
# Or via Docker
docker pull ghcr.io/thirdkeyai/symbi:latest
Quick Start
After installing this skill:
- Tell the agent: "Initialize a Symbiont-governed project"
- Define agents in
agents/*.dsl - Create Cedar policies in
policies/*.cedar - Ask the agent: "Check Symbiont status"
Capabilities
This skill provides six governed workflows. Invoke them by describing what you need; the agent will follow the appropriate procedure.
1. Initialize a Governed Project
Trigger: "Set up Symbiont governance", "Initialize a governed project", "Add agent governance to this repo"
Create the governed project scaffold in the current directory:
- Check if
symbiont.tomlalready exists. If it does, confirm before overwriting. - Create directory structure:
agents/ # Agent DSL definitions policies/ # Cedar policy files .symbiont/ # Local governance config and audit logs .symbiont/audit/ # Audit log output - Write
symbiont.tomlwith defaults:[runtime] security_tier = "tier1" log_level = "info" [policy] engine = "cedar" enforcement = "strict" [schemapin] mode = "tofu" - Write a starter agent at
agents/assistant.dsl:metadata { version = "1.0.0" description = "Default governed assistant" } agent assistant(input: Query) -> Response { capabilities = ["read", "analyze"] policy default_access { allow: read(input) if true deny: write(any) if not approved audit: all_operations } with memory = "session" { result = process(input) return result } } - Write a starter Cedar policy at
policies/default.cedar:permit( principal, action == Action::"read", resource ); forbid( principal, action == Action::"write", resource ) unless { principal.approved == true }; - Write
.symbiont/local-policy.tomlwith default deny rules:[deny] paths = [".env", ".ssh/", ".aws/", ".gnupg/", "credentials"] commands = ["rm -rf", "git push --force", "mkfs", "dd if="] branches = ["main", "master", "production"] - Write
AGENTS.mdmanifest. - Report what was created and suggest next steps.
2. Create or Edit Cedar Policies
Trigger: "Create a Cedar policy", "Edit authorization policy", "Add a policy for X"
Steps:
- Ask what the policy should govern (read/write access, tool invocation, sandbox tier, etc.).
- Check existing policies in
policies/*.cedar. - Write or update the
.cedarfile using Cedar syntax. - If
symbiis on PATH, validate withsymbi policy validate policies/. - Explain what the policy permits and forbids.
Reference: Read references/cedar-patterns.md for common Cedar policy patterns.
3. Verify MCP Tool Schemas (SchemaPin)
Trigger: "Verify this MCP tool", "Check tool schema", "Is this tool signed?"
Steps:
- Identify the tool name and domain.
- If
symbiis on PATH, runsymbi verify --tool <tool_name> --domain <domain>. - Otherwise, explain SchemaPin's ECDSA P-256 verification model and suggest manual steps.
- Report verification result: signature valid/invalid, TOFU pin status, revocation status.
4. Query Audit Logs
Trigger: "Show audit logs", "What did the agent do?", "Review tool usage"
Steps:
- Check for
.symbiont/audit/tool-usage.jsonl. - Parse JSONL entries and summarize: tool name, timestamp, action, result, policy decision.
- If
symbiis on PATH, usesymbi audit queryfor richer queries. - Highlight any denied or flagged operations.
5. Write or Validate DSL Agent Definitions
Trigger: "Create an agent definition", "Write a DSL agent", "Validate my agent DSL"
Steps:
- Determine agent purpose, capabilities, and policy requirements.
- Write or edit the
.dslfile inagents/. - If
symbiis on PATH, validate withsymbi dsl parse agents/<name>.dsl. - Update
AGENTS.mdmanifest.
Reference: Read references/dsl-guide.md for DSL syntax and patterns.
6. Scan Skills for Malicious Patterns (ClawHavoc)
Trigger: "Scan this skill", "Is this skill safe?", "Check for malicious patterns", "ClawHavoc scan"
Steps:
- Identify the skill directory or SKILL.md to scan.
- Run
scripts/clawhavoc-scan.sh <skill-path>to check against 40+ built-in detection rules. - Report findings by severity: Critical, High, Medium, Warning, Info.
- Critical or High findings mean the skill should NOT be loaded.
- Suggest remediation for any findings.
The scanner covers: reverse shells, credential harvesting, network exfiltration, process injection, privilege escalation, symlink/path traversal, and downloader chains.
Governance Tiers
This skill provides three progressive levels of protection, matching symbi-claude-code and symbi-gemini-cli:
Tier 1: Awareness (default)
All tool calls proceed. State-modifying actions are logged to .symbiont/audit/tool-usage.jsonl for post-hoc review.
No symbi binary required. The scripts/audit-log.sh script handles logging.
Tier 2: Protection
Create .symbiont/local-policy.toml to block dangerous patterns:
[deny]
paths = [".env", ".ssh/", ".aws/"]
commands = ["rm -rf", "git push --force"]
branches = ["main", "master", "production"]
The scripts/policy-guard.sh script checks tool calls against this deny list. Built-in patterns (destructive commands, force pushes, writes to sensitive files) are always blocked regardless of config.
No symbi binary required. The same .symbiont/local-policy.toml works across symbi-claude-code, symbi-gemini-cli, and this skill.
Tier 3: Governance
If symbi is on PATH and policies/ exists, Cedar policies are evaluated for formal authorization decisions on every tool call.
Dual-Mode Architecture
Mode A: Standalone (Skill-First)
Developer installs this skill into OpenClaw. The skill provides advisory policy checking, audit logging, and access to Symbiont MCP tools if symbi is on PATH.
Developer -> OpenClaw + symbiont skill -> symbi mcp (stdio)
Best for: individual developers adding governance awareness to their workflow.
Mode B: ORGA-Managed (Runtime-First)
Symbiont's CliExecutor spawns OpenClaw as a governed subprocess. The skill detects SYMBIONT_MANAGED=true and connects back to the parent runtime's MCP server instead of spawning a new one. The outer ORGA Gate provides hard enforcement that cannot be bypassed.
Symbiont Runtime (ORGA Loop)
-> CliExecutor (sandbox + budget enforcement)
-> OpenClaw (with symbiont skill)
-> Skill connects back to parent MCP server
Best for: automated pipelines, dark factory deployments, enterprise governance.
Rules
- ALWAYS check
.symbiont/local-policy.tomlbefore executing commands that modify files, run shell commands, or interact with git branches. - ALWAYS log state-modifying tool calls to
.symbiont/audit/tool-usage.jsonl. - NEVER execute commands matching deny patterns in the local policy.
- NEVER write to paths listed in the deny list (
.env,.ssh/,.aws/, etc.). - NEVER force-push to protected branches.
- If
SYMBIONT_MANAGED=trueis set in the environment, defer all policy decisions to the parent Symbiont runtime via MCP. - When scanning skills with ClawHavoc, ALWAYS refuse to load skills with Critical or High findings.
- When verifying tools with SchemaPin, ALWAYS warn the user if a tool's signature is invalid or its key has been revoked.
File Conventions
| Path | Purpose |
|---|---|
agents/*.dsl | Agent DSL definitions |
policies/*.cedar | Cedar authorization policies |
symbiont.toml | Symbiont runtime configuration |
AGENTS.md | Agent manifest |
.symbiont/audit/ | Audit log output |
.symbiont/local-policy.toml | Local deny list (Tier 2) |
Comparison with Other Symbiont Plugins
| Aspect | Claude Code | Gemini CLI | OpenClaw |
|---|---|---|---|
| Format | Plugin (.claude-plugin/) | Extension (gemini-extension.json) | Skill (SKILL.md) |
| Commands | Markdown files | TOML files | Natural language triggers |
| MCP tool prefix | mcp__symbi__ | symbi__ | symbi__ (when connected) |
| Native policies | No | Yes (policies/*.toml) | No |
| Tool restriction | Allow list | Deny list (excludeTools) | Deny list (.symbiont/local-policy.toml) |
| Context file | CLAUDE.md | GEMINI.md | SOUL.md (via onlycrabs.ai) |
| Skill scanning | Via hook | Via hook | Built-in ClawHavoc scanner |
Links
License
Apache 2.0
Disclaimer
This project is not affiliated with, endorsed by, or sponsored by Anthropic PBC, Google LLC, or the OpenClaw project. "OpenClaw" and "ClawHub" are trademarks of their respective owners. "Symbiont" and "ThirdKey" are trademarks of ThirdKey AI.