policy tool subcommand.
Reference data
Before creating policies, pull the available user groups, models, guardrails, and tool types:Generic commands (Cost / Model / Security)
Use the type-specific commands —
policy cost create, policy security create, and the policy tool family below — for guided, flag-based create and update. Each also has an update <id> that changes only the fields you pass.Cost policies
Set a monthly spend limit per user group:policy security create.
See Cost Policies for all configuration options.
Security policies
Apply guardrails for PII and secrets detection:Tool policies
Tool policies control shell commands and MCP tool calls. They use a separate backend and are reached viaunbound policy tool.
List and inspect
Discover available targets
Create a terminal command policy
Describe it in plain English
If you don’t know the family or the field to match on, describe what you want and let Unbound author the policy:--prompt run creates exactly one policy, so describe one rule at a time. Add --yes to skip the confirmation (the preview still prints), or --no-ai to use the raw classification flags instead.
--prompt can’t be combined with --command-family, --field, or --config. You can still pass --name, --description, --action, --custom-message, --group, --disabled, --yes and --json.
create-terminal and create-mcp need you to pick a mode: either --prompt "<description>" for AI assist, or --no-ai to pass the raw classification flags. Running either with neither exits 2.--no-ai is refused when the CLI runs inside Claude Code, so an agent can’t bypass AI assist. Set UNBOUND_ALLOW_NO_AI_UNDER_CLAUDE=1 if you’re driving the terminal yourself.Whenever the resolved action is BLOCK or WARN, --custom-message is required — those policies always need a user-facing message.Match a command we don’t classify
Most commands fall into a family (filesystem, cloud_destroy, git_action, …). When yours doesn’t, or you want to match one exact command rather than a category, use the custom family and give it the whole command pattern:
custom takes a single command field — the pattern is matched against the whole command line. Run unbound policy tool families to see every family and the fields each one accepts.
Create an MCP tool policy
BLOCK, WARN, AUDIT, REQUIRE_SLACK_APPROVAL
Update a tool policy
Only the fields you pass are changed:
The cost and security policy types each have an
update <id> too. policy cost update takes --monthly-budget plus --name, --group, --priority and --enabled / --disabled. policy security update takes those shared flags, but guardrail and routing changes go through --config '<json>' — the create-time --sub-type / --guardrail / --route flags aren’t accepted on update:
See Tool Policies for the full list of actions, NL rules, and canonical group targeting. Every list, get, create and update command supports
--json for machine-readable output. delete doesn’t — it takes only --yes.
Tool Policies
Dashboard reference for actions, NL rules, and Slack approvals
Cost Policies
Dashboard reference for budget limits and spend controls

