Work
CLI Security Wrapper

Meerkat

Local-first, agent-agnostic CLI security wrapper: auto-approves safe commands, blocks risky ones, logs every decision, so AI coding agents run without blind trust.

RoleSolo build
Timeline2025
StackGo · JavaScript · Seatbelt · bubblewrap · WSL2
Meerkat — project visual
01Problem

Vibe coding without blind trust.

Autonomous coding agents, Claude Code, Codex, aider, goose, execute real terminal commands on your machine. Letting them run unsupervised is dangerous; approving every command by hand defeats the point of automation.

Meerkat sits between the agent and the shell: a secure-by-default local policy runner that keeps the machine awake, auto-approves what is safe and scoped, blocks what is not, and records every decision.

02Approach

Agent-agnostic policy at the hook layer.

It wraps any command-line tool, `meerkat run -- npm test`, or installs directly into Claude Code as a `/meerkat` slash command with PreToolUse / SessionStart / Stop hooks. Every session auto-approves safe shell commands per a `meerkat.yml` policy and blocks `sudo`, `curl`, `git push origin main`, and `--force` pushes.

It hardens with OS-level backends, Seatbelt on macOS, bubblewrap on Linux, WSL2 on Windows, when opted in, while staying honest about what it is: a policy runner, not a kernel sandbox.

03Decisions

Be explicit about the threat model.

The README documents exactly what is and is not covered, supervised Claude Code sessions and direct wrappers are; subprocess behavior inside already-approved commands, kernel exploits, and packet-level egress are not. For high-risk workloads it points users to containers or VMs rather than overpromising.

Decisions are logged as JSONL so any auto-approval or block is auditable after the fact.

04Outcome

Installable in one line, shipping with CI/release automation.

Distributed as a single Go binary via an install script, `npx meerkat-cli`, or `go install`, with GitHub Actions CI and release pipelines and branch/tag protection, built like a tool meant to be used, not a demo.

Next projectOmniCore-Local