Install
openclaw skills install @cleitonaugusto/cleimesh-mcpPut the MCP tools an agent already uses behind CleiMesh, so each tool call runs under a signed, narrowable token and leaves a replayable receipt — a prompt injection cannot widen the grant, and you can prove afterwards what every tool did. Use when the user runs MCP servers in Claude Code, Cursor or another MCP client and wants to limit what a tool may touch, stop an injected tool call from reaching keys or the network, or produce an auditable, replayable record (audits, GDPR, LGPD). Also use after wrapping, when a CleiMesh-guarded MCP call is refused.
openclaw skills install @cleitonaugusto/cleimesh-mcpMost guardrails decide at the door and then let the tool run with full access, and their logs ask you to trust whoever signed them. CleiMesh is different on two points no gateway offers: the token becomes the sandbox (default-deny, and it can only narrow as it is delegated), and every call leaves a signed receipt you can re-run to check the result byte for byte. This skill puts the MCP tools an agent already uses behind that.
Project: https://github.com/cleitonaugusto/cleimesh
serve runs tools in the WASM sandbox (fully contained); wrap puts a native MCP server behind the token (checked and receipted, but not sandboxed — it still reaches whatever its own OS user can). Say which one applies.curl -fsSL https://github.com/cleitonaugusto/cleimesh/releases/latest/download/install.sh | sh
Check: cleimesh --version.
A node issues a root token to a holder (a PeerId); each holder can derive a narrower one offline, never wider (Attenuating Agent Tokens). The holder here is the key the MCP server runs under (default ~/.config/cleimesh/client.key).
cleimesh id --client # the holder's PeerId (run on the holder's machine)
cleimesh token issue <HOLDER_PEERID> \
--tool file_read --read ./project \
-o agent.json # grants file_read over ./project, nothing else
Flags that matter: --tool <name> (repeatable; a tool with no --read/--write/--network sees no directory at all), --read/--write <DIR>, --network, --taints (the tool brings in outside content → taints the chain), --clean-only (the tool acts on the world → refused while tainted). Delegate further with cleimesh token derive <chain> <HOLDER_PEERID> --tool ... -o narrower.json.
Keep grants narrow: never the home folder, never ~/.ssh, ~/.aws, or .env folders. Confirm the directories with the user — do not guess. Full flags: cleimesh token issue --help.
serve — CleiMesh's own tools, in the WASM sandbox (fully contained)Register CleiMesh as an MCP server; every tools/call presents the token chain with a fresh proof of possession, runs under its grants in WASM, and leaves a receipt. Without --token, every call is refused.
claude mcp add cleimesh -- cleimesh mcp serve --token agent.json
wrap — put an existing (native) MCP server behind the tokenThe wrapped server's client sees only the tools the token grants; each call is checked against the token's argument constraints and taint, and leaves a signed receipt. The wrapped server is NOT sandboxed — it reaches whatever its OS user can, so a token granting it directories or network is a real limit only to the extent the server honours those arguments. Say this to the user.
claude mcp add fetch -- cleimesh mcp wrap --token fetch.json -- uvx mcp-server-fetch
(Cursor and other MCP clients: same cleimesh mcp serve|wrap ... command, registered their way.)
After the agent has run, the signed receipt log (default ~/.local/share/cleimesh/receipts/receipts.jsonl) is the evidence:
cleimesh audit verify # check every signature and the hash chain (non-zero on failure)
cleimesh audit tail # read the recent calls, allowed and refused
cleimesh audit replay <step-id> # re-run a call from its receipt, compare the outcome byte for byte
cleimesh audit report --subject <id> # privacy report per data subject / agent (GDPR, LGPD)
cleimesh audit suggest # the narrower token the agent actually needed
audit verify catches a tampered or truncated log; audit replay catches a node that signed a false result (only calls without directories or network replay). Keep a log head off the machine (cleimesh audit head) and pass it to verify to detect a rolled-back log.
A refusal is the guard working. Read why with cleimesh audit tail. Common causes: the tool asked for a path outside its grant, the token doesn't cover that tool, or the agent is tainted (it read untrusted content, so writes and network are refused until a human runs cleimesh taint clear ... --reason "<why>"). Do not route around it — surface the reason to the user and let them decide.
CleiMesh governs each tool call and proves it; agent sandboxes (NVIDIA OpenShell, AWS Strands Box, Anthropic sandbox-runtime) contain the process. They complement each other: run the agent in one of those, and route the MCP tools that touch the user's data through CleiMesh. For putting an agent's own file/shell tools (not MCP) behind CleiMesh, use the cleimesh-setup skill.