boxxkite

Capability

Command allowlist

An opt-in, per-account allowlist that restricts which commands exec is allowed to run — across the CLI, both SDKs, and any hosted API caller. Set it once and it applies automatically to every future call; empty or unset (the default for every account) means unrestricted.

Get, set, clear

Each rule is either a plain command-name string (unconstrained arguments) or an object with args_allow/args_deny regex patterns matched against the joined argument string.

allowlist.py
client.get_allowed_commands()          # {"rules": [...]} -- [] means unrestricted
client.set_allowed_commands([
    "git",
    {"command": "python3", "args_allow": [r"^-c .*"]},
])
client.clear_allowed_commands()        # back to unrestricted

There's no MCP tool for managing this allowlist — deliberately. See why below.

Why no MCP tool

The MCP server (see the MCP server guide ↗) has no tool for reading or changing this allowlist. Its tools are called by the agent itself— exposing allowlist management as one of them would let a compromised or malicious agent simply widen its own restrictions through its own tool surface, defeating the point. Manage it from outside the agent's tool set: the CLI or either SDK, run by a human or a separate trusted process.

Opt-in guardrail, not a sandbox-escape boundary

Restricts by command name/argument pattern only. Allowing a general-purpose interpreter (python3, bash, node) through the allowlist still permits arbitrary code to run once it starts — the sandbox pod's own isolation is what actually constrains what that code can do, not this allowlist. A blocked command raises an error with code command_not_allowed. Full rationale in the root README's The boxxkite CLI ↗ section.