openclaw

An integration between OpenClaw, an open-source AI-agent framework, and Bulwark, a gateway that controls access to connected tools.

In plain words
What is it for?
Use it to govern OpenClaw’s MCP connections to services such as filesystems, GitHub, Slack, and databases.
Why use it?
It places policy checks, credential handling, audit records, content inspection, and rate limits between the agent and its tools.

Agent

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add agents/claudius-ars/bulwark/openclaw
Clone the repo
git clone --depth 1 https://github.com/claudius-ars/bulwark
Per session 0 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 5,674 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00000 $0.05674
Opus 5 $0.00000 $0.02837
Sonnet 5 $0.00000 $0.01135
Haiku 4.5 $0.00000 $0.00567

Measured 2d ago against content hash 4a367a5b1301, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

openclaw scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

docs/agents/openclaw.md · 918 lines

How it starts

The opening of the file, as written. The whole thing — 918 lines — stays where its author put it; the contents beside it link to each section on GitHub.

OpenClaw Integration

OpenClaw is an open-source AI agent framework that uses the Model Context Protocol (MCP) for tool integration. Bulwark integrates with OpenClaw via the MCP gateway to add governance, policy enforcement, and audit logging.

Overview

Bulwark provides OpenClaw with:

  • Policy enforcement: Control which tools OpenClaw can use
  • Credential management: Securely inject API keys and tokens
  • Audit logging: Track all tool calls and decisions
  • Content inspection: Scan for secrets, PII, and security issues
  • Rate limiting: Control request rates and costs
  • Governance metadata: Rich policy information in tool responses

Architecture

OpenClaw Agent
    |
    | (MCP stdio/JSON-RPC)
    |
Bulwark MCP Gateway
    |
    | (Policy, Credentials, Audit, Content Inspection)
    |
MCP Servers (filesystem, github, slack, database, etc.)

OpenClaw connects to Bulwark's MCP gateway, which enforces policies and forwards approved requests to the configured MCP servers.

Configuration

1. Configure Bulwark MCP Gateway

Create or edit ~/.bulwark/bulwark.yaml:

mcp:
  enabled: true
  mode: gateway

  # MCP servers to proxy
  servers:
    - name: filesystem
      command: npx
      args:
        - "-y"
        - "@modelcontextprotocol/server-filesystem"
        - "/home/user/workspace"
      env:
        NODE_ENV: production

    - name: github
      command: npx
      args:
        - "-y"
        - "@modelcontextprotocol/server-github"
      env:
        GITHUB_PERSONAL_ACCESS_TOKEN: "{{ credential:github-token }}"

    - name: slack
      command: npx
      args:
        - "-y"
        - "@modelcontextprotocol/server-slack"
      env:
        SLACK_BOT_TOKEN: "{{ credential:slack-token }}"

    - name: postgres
      command: npx
      args:
        - "-y"
        - "@modelcontextprotocol/server-postgres"
      env:
        DATABASE_URL: "{{ credential:postgres-url }}"

# Enable policy enforcement
policy:
  enabled: true
  policy_file: ~/.bulwark/policies.yaml

# Enable credential vault
vault:
  enabled: true
  vault_dir: ~/.bulwark/vault

# Enable audit logging
audit:
  enabled: true
  database_path: ~/.bulwark/audit/audit.db

# Enable content inspection
content_inspection:
  enabled: true
  scan_requests: true
  scan_responses: true
  rules:
    # Block credential leaks
    - id: aws-key
      action: Block
    - id: gcp-key
      action: Block
    - id: github-token
      action: Block
    - id: private-key
      action: Block

    # Redact PII
    - id: ssn
      action: Redact
    - id: credit-card
      action: Redact

# Enable rate limiting
rate_limiting:
  enabled: true
  operator:
    requests_per_minute: 300
    burst: 30
  session:
    requests_per_minute: 100
    burst: 10

Read the full file on GitHub · 918 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 2d ago First seen · 918 lines · 0 tokens per session scan A 4a367a5b1301

Subscribe to this mod's changes

openclaw is an agent published in the GitHub repository claudius-ars/bulwark (4 stars, last pushed 6mo ago), licensed Apache-2.0. It costs nothing until one of its globs matches a file; then it loads 5,674 tokens. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.