Last updated: 2026-09-30

IronClaw Skills, Tools & Allowlisting

⚠️ This page documents IronClaw 0.29.x, not the current 1.1.0

Current stable is 1.1.0 — a ground-up rebuild with no migration path from 0.29.x. This page is the one most affected by that rewrite: in 1.x, skills is list-only from the CLI, production and migration deployment modes return errors for extensions and skills, and the capability model moved to 12 first-party extensions embedded in the binary plus IronHub installs and custom hosted MCP servers. The ironclaw allowlist commands below are 0.29.x-only.

For a clean 1.1.0 install, see the 1.1.0 quick start. Background: the 1.0.0 rearchitecture · 1.1.0 stable and 1.1.1-rc.1. This page is queued for a 1.x rewrite.

IronClaw separates two kinds of extension. Skills are Markdown instructions injected into the model's context. Tools are code that does things. Each has its own guard rail: skills get a trust level that controls whether the model can pull them in on its own, and tools run in a WebAssembly sandbox that can reach only the hosts listed in their capabilities.json. That's IronClaw's allowlisting.

This page was rewritten on 2026-09-27

The previous version described an ~/.ironclaw/allowlist.json file with per-skill "authorised" grants and ironclaw allowlist add/grant/revoke commands. IronClaw has no such file or command. Everything below is checked against IronClaw's own documentation and release notes.

Skills: trusted vs installed

Where the skill livesTrustWhat the model can do with it
~/.ironclaw/skills/<name>/SKILL.md or a workspace skills/ folderTrustedSees the full body; can auto-select it (skill_activate)
Installed from IronHub (~/.ironclaw/installed_skills/)InstalledSees only the description; can't self-activate. It runs only when you name it ($name or /name)

A skill activates when the scorer matches its activation keywords, tags or regex patterns (no model involved), or when you mention it explicitly. Each activation is limited by max_context_tokens (default 2,000). exclude_keywords vetoes a match, and auto_activate: false means explicit mentions only. A skill with no activation criteria never auto-activates, which is the usual reason one shows up in ironclaw skills list but never gets used.

The trust rule that matters: a skill in ~/.ironclaw/skills/ has the same power as you. Review an IronHub skill before moving it into a trusted folder.

IronHub: signed catalogue, provenance and pinning

ironclaw ironhub search github
ironclaw ironhub list --kind skill
ironclaw ironhub info <name> --kind tool          # provenance, version, SHA-256 digest
ironclaw ironhub install <name> --kind tool --expected-artifact-digest "sha256:…"
ironclaw ironhub install <name> --kind skill --expected-version "1.2.3"

Community entries (provenance "New") need an explicit --acknowledge-unverified from the operator. The agent can't install them, even if you approve in chat. You can ask the agent to search and install reviewed entries, and it asks your approval first.

Tools: the network allowlist lives in capabilities.json

WASM tools run under wasmtime (Wasmtime and WASI 48.0.3 since 1.4.1, which fixed recent guest fuel-accounting vulnerabilities), with fuel metering (default 100M instructions), a memory cap (default 16 MB) and per-tool rate limits. Everything beyond logging, time and the workspace must be declared:

{
  "name": "my-tool",
  "network":    { "allowed_hosts": ["api.example.com"] },
  "filesystem": { "read": ["/workspace/data/*"], "write": ["/workspace/output/*"] },
  "credentials": [ { "name": "example_api_key", "inject_as": "Authorization", "format": "Bearer {value}" } ],
  "rate_limit": { "requests_per_minute": 30, "requests_per_day": 500 }
}
  • Hosts not in allowed_hosts are refused at the network proxy before a connection opens.
  • Credentials never enter the tool. The proxy adds the header on the way out, so a compromised tool can't read your key.
  • No filesystem access unless paths are declared.

Since 1.4.0, sandboxed code on the local-Docker profile runs in persistent per-user containers behind a managed per-user egress proxy, with credential bindings declared in the manifest.

MCP servers and other extensions

Tools arrive as extension packages (ironclaw extension search / install / remove). MCP servers are wrapped as extensions too, reached only over HTTP(S). stdio MCP servers are rejected, because process-level egress controls aren't in place for them yet. MCP servers are treated as untrusted: their outbound requests go through the host's egress controls, and credentials are injected at that boundary and redacted from results.

See also: IronClaw security and the cross-platform skill allowlisting guide.

Sources: IronClaw's official docs in github.com/nearai/ironclaw/docs and the release notes (1.4.1 stable, 2026-09-29; 1.4.0 stable, 2026-08-28). Checked 2026-09-30.

← Back to IronClaw hub · See also: Security Architecture · OpenClaw Skills Guide · 53 Official Skills Database

📬 Weekly Digest — In Your Inbox

One email a week: top news, releases, and our deepest new guide. No spam. Same content via RSS if you prefer.